Exemplo n.º 1
0
        private async Task <ParameterRange[]> snapshotDiseaseStateParameters(Model.Individual individual, RandomPopulationSettings randomPopulationSettings)
        {
            var diseaseStateParameterRanges = individual.OriginData?.DiseaseStateParameters
                                              .Select(x => randomPopulationSettings.ParameterRange(x.Name))
                                              .ToList();

            if (diseaseStateParameterRanges == null)
            {
                return(null);
            }

            if (!diseaseStateParameterRanges.Any())
            {
                return(null);
            }

            var snapshotParameterRanges = new List <ParameterRange>();

            foreach (var parameterRange in diseaseStateParameterRanges)
            {
                var snapshot = await _parameterRangeMapper.MapToSnapshot(parameterRange);

                snapshot.Name = parameterRange.ParameterName;
                snapshotParameterRanges.Add(snapshot);
            }

            return(snapshotParameterRanges.ToArray());
        }
Exemplo n.º 2
0
        public ModelProperties MapFrom(SimulationConfiguration configuration, Model.Individual individual)
        {
            var modelProperties = _modelPropertiesTask.DefaultFor(individual.OriginData, configuration.Model);

            _batchLogger.AddDebug($"Using model method '{configuration.Model}'");
            return(modelProperties);
        }
Exemplo n.º 3
0
        private TMolecule addMoleculeTo <TMolecule>(Model.Individual individual, Molecule molecule) where TMolecule : IndividualMolecule
        {
            var proteinFactory = _moleculeFactoryResolver.FactoryFor <TMolecule>();
            var newMolecule    = proteinFactory.CreateFor(individual);

            newMolecule.ReferenceConcentration.Value = molecule.ReferenceConcentration;
            newMolecule.HalfLifeLiver.Value          = molecule.HalfLifeLiver;
            newMolecule.HalfLifeIntestine.Value      = molecule.HalfLifeIntestine;
            newMolecule.Name = molecule.Name;
            individual.AddMolecule(newMolecule);

            foreach (var expression in molecule.Expressions)
            {
                var expressionParameter = newMolecule.GetRelativeExpressionNormParameterFor(expression.Key);
                if (expressionParameter == null)
                {
                    _batchLogger.AddWarning($"Relative Expression container '{expression.Key}' not found for '{molecule.Name}'");
                    continue;
                }

                expressionParameter.Value = expression.Value;
                _batchLogger.AddDebug($"Relative Expression norm for container '{expression.Key}' set to {expression.Value}");
            }
            return(newMolecule.DowncastTo <TMolecule>());
        }
Exemplo n.º 4
0
        private void addPartialProcesses <TPartialProcess, TIndividualMolecule, TProcessSelection>(Model.Compound compound, Model.Individual individual, ProcessSelectionGroup processSelectionGroup)
            where TPartialProcess : Model.PartialProcess
            where TIndividualMolecule : IndividualMolecule
            where TProcessSelection : ProcessSelection, new()
        {
            //default mapping with processes: Mapping done only by name
            foreach (var process in compound.AllProcesses <TPartialProcess>())
            {
                var molecule = individual.MoleculeByName <TIndividualMolecule>(process.MoleculeName);
                //enzyme not found in individual
                if (molecule == null)
                {
                    _batchLogger.AddDebug($"Molecule '{process.MoleculeName}' not found in individual  but is defined in compound for process '{process.Name}'");
                    continue;
                }

                _batchLogger.AddDebug($"Adding process {process.Name} for molecule {molecule.Name}");
                processSelectionGroup.AddPartialProcessSelection(new TProcessSelection {
                    ProcessName = process.Name, MoleculeName = molecule.Name, CompoundName = compound.Name
                });
            }
        }