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()); }
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); }
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>()); }
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 }); } }