private void convertIndividual(Individual individual) { if (individual == null) { return; } _individualCalculationMethodsUpdater.AddMissingCalculationMethodsTo(individual); if (!individual.IsHuman) { return; } if (individual.Organism.Parameter(CoreConstants.Parameter.BSA) != null) { return; } var defaultHuman = _defaultIndividualRetriever.DefaultHuman(); var bsa = defaultHuman.Organism.Parameter(CoreConstants.Parameter.BSA); individual.Organism.Add(_cloner.Clone(bsa)); }
private void updateFractionOfBloodForSampling(Individual individual) { var defaultHuman = _defaultIndividualRetriever.DefaultHuman(); var oneStandardFractionOfBloodParameter = defaultHuman.GetAllChildren <IParameter>(x => x.IsNamed(FRACTION_OF_BLOOD_FOR_SAMPLING)).First(); var allFractionOfBloodParameters = individual.GetAllChildren <IParameter>(x => x.IsNamed(FRACTION_OF_BLOOD_FOR_SAMPLING)); allFractionOfBloodParameters.Each(x => { x.Info.UpdatePropertiesFrom(oneStandardFractionOfBloodParameter.Info); }); }
public void Visit(Individual individual) { _individualCalculationMethodsUpdater.AddMissingCalculationMethodsTo(individual); performCommonConversion(individual); Visit(individual.OriginData); foreach (var transporter in individual.AllMolecules <IndividualTransporter>().SelectMany(x => x.AllExpressionsContainers())) { var oldProcessNames = transporter.ProcessNames.ToList(); transporter.ClearProcessNames(); foreach (var processName in oldProcessNames) { transporter.AddProcessName(processName.Replace("_MM", "")); } } //change container type for molecules foreach (var molecule in individual.AllMolecules()) { molecule.ContainerType = ContainerType.Molecule; updateOntogeny(molecule); } //special parameters that need conversion by hand convertIndividualParameters(individual.Organism); convertIndividualForTwoPore(individual); var human = _defaultIndividualRetriever.DefaultHuman(); individual.Organism.Add(clone(human.Organism, CoreConstants.Parameters.ONTOGENY_FACTOR_ALBUMIN)); individual.Organism.Add(clone(human.Organism, CoreConstants.Parameters.ONTOGENY_FACTOR_AGP)); individual.Organism.Add(clone(human.Organism, CoreConstants.Parameters.PLASMA_PROTEIN_SCALE_FACTOR)); if (!individual.IsHuman) { individual.OriginData.AddCalculationMethod(_calculationMethodRepository.FindByName("MucosaVolume_Animals")); } else { individual.OriginData.AddCalculationMethod(_calculationMethodRepository.FindByName("MucosaVolume_Human")); individual.OriginData.GestationalAge = CoreConstants.NOT_PRETERM_GESTATIONAL_AGE_IN_WEEKS; individual.OriginData.GestationalAgeUnit = CoreConstants.Units.Weeks; var gestationalAge = human.Organism.Parameter(Constants.Parameters.GESTATIONAL_AGE); if (!individual.Organism.ContainsName(Constants.Parameters.GESTATIONAL_AGE)) { individual.Organism.Add(_cloner.Clone(gestationalAge)); } } }
private void addFractionEndosomalParametersTo(Individual individual) { var defaultHuman = _defaultIndividualRetriever.DefaultHuman(); var allFractionEndosomalParameters = defaultHuman.GetAllChildren <IParameter>(x => x.IsNamed(FRACTION_ENDOSOMAL)); allFractionEndosomalParameters.Each(x => { //Find container in the individual to convert var containerPath = new ObjectPath(x.ParentContainer.ConsolidatedPath()); var container = individual.Root.EntityAt <IContainer>(containerPath); //add clone of parameter container.Add(_cloner.Clone(x)); }); }
private void exportToFolder(string exportFolder) { var defaultIndividual = _defaultIndividualRetriever.DefaultHuman(); var batchSimulation = new Simulation(); batchSimulation.Individual = new Individual { Age = defaultIndividual.Age, Height = defaultIndividual.MeanHeight, Species = defaultIndividual.Species.Name, Population = defaultIndividual.Population.Name, }; batchSimulation.Compounds.Add(new Compound { Name = "Standard Molecule", Lipophilicity = 3, FractionUnbound = 0.1, MolWeight = 4E-7, SolubilityAtRefpH = 9999, RefpH = 7 }); var intrevanousBolus = new ApplicationProtocol { CompoundName = "Standard Molecule", ApplicationType = CoreConstants.Application.Name.IntravenousBolus, Dose = 1, DoseUnit = "mg/kg", DosingInterval = DosingIntervals.Single.ToString() }; batchSimulation.Configuration = new SimulationConfiguration { Model = CoreConstants.Model.FourComp }; batchSimulation.ApplicationProtocols.Add(intrevanousBolus); var fourCompIvBolusMgPerKg = configurationFrom(batchSimulation); batchSimulation.Configuration = new SimulationConfiguration { Model = CoreConstants.Model.TwoPores }; var twoPore = configurationFrom(batchSimulation); batchSimulation.ApplicationProtocols.Clear(); intrevanousBolus.DoseUnit = "mg"; batchSimulation.ApplicationProtocols.Add(intrevanousBolus); batchSimulation.Configuration = new SimulationConfiguration { Model = CoreConstants.Model.FourComp }; var fourCompIvBolusMg = configurationFrom(batchSimulation); twoPore.SpatialStructure.Name = "Human 2 Pores"; twoPore.PassiveTransports.Name = "2 Pores Passive Transports"; fourCompIvBolusMgPerKg.SpatialStructure.Name = "Human Standard"; fourCompIvBolusMgPerKg.PassiveTransports.Name = "Standard Passive Transports"; fourCompIvBolusMgPerKg.EventGroups.Name = "IV Bolus"; fourCompIvBolusMgPerKg.Molecules.Name = "Standard Molecule"; fourCompIvBolusMgPerKg.Observers.Name = "Standard Observer"; fourCompIvBolusMg.EventGroups.Name = "IV Bolus (mg)"; var defaultCompound = fourCompIvBolusMgPerKg.Molecules.First(); defaultCompound.Name = string.Empty; defaultCompound.Parameter(CoreConstants.Parameter.LIPOPHILICITY).Value = double.NaN; defaultCompound.Parameter(CoreConstants.Parameter.MOLECULAR_WEIGHT).Value = double.NaN; defaultCompound.Parameter(CoreConstants.Parameter.FractionUnbound).Value = double.NaN; defaultCompound.Parameter(CoreConstants.Parameter.SolubilityAtRefpH).Value = double.NaN; _moBiExportTask.UpdateObserverForAllFlag(fourCompIvBolusMgPerKg.Observers); var buildingBlocks = new IBuildingBlock[] { twoPore.SpatialStructure, twoPore.PassiveTransports, fourCompIvBolusMgPerKg.SpatialStructure, fourCompIvBolusMgPerKg.PassiveTransports, fourCompIvBolusMgPerKg.EventGroups, fourCompIvBolusMgPerKg.Molecules, fourCompIvBolusMgPerKg.Observers, fourCompIvBolusMg.EventGroups }; buildingBlocks.Each(bb => saveToPKML(bb, exportFolder)); }