public void the_value_for_mean_body_weight_for_all_species_but_human_should_be_equal_to_the_weight_value() { var errorList = new List <string>(); foreach (var species in _speciesRepository.All().Where(x => x.Name != CoreConstants.Species.Human)) { var individualForSpecies = _individualRetriever.DefaultIndividualFor(species); double meanWeight = individualForSpecies.MeanWeight; double bodyWeight = individualForSpecies.Organism.Parameter(CoreConstants.Parameter.WEIGHT).Value; if (!ValueComparer.AreValuesEqual(meanWeight, bodyWeight, 1e-2)) { errorList.Add(string.Format("Mean Body weight not equal to weight for '{0}': MeanWeight = {1}, BodyWeight={2}", species.Name, meanWeight, bodyWeight)); } } errorList.Count.ShouldBeEqualTo(0, errorList.ToString("\n")); }
private void convertTransitTimeFor(IContainer individualToConvert) { if (!_defaultCache.Contains(_currentSpecies)) { _defaultCache.Add(_defaultIndividualRetriever.DefaultIndividualFor(_currentSpecies)); } var defaultIndividual = _defaultCache[_currentSpecies]; var defaultSITT = smallIntestineIn(defaultIndividual).Parameter(ConverterConstants.Parameter.SITT); var defaultSITT_factor = smallIntestineIn(defaultIndividual).Parameter(ConverterConstants.Parameter.SITT_factor); var defaultSITT_factor_slope = smallIntestineIn(defaultIndividual).Parameter(ConverterConstants.Parameter.SITT_factor_slope); var defaultSITT_factor_intercept = smallIntestineIn(defaultIndividual).Parameter(ConverterConstants.Parameter.SITT_factor_intercept); var defaultLITT = largeIntestineIn(defaultIndividual).Parameter(ConverterConstants.Parameter.LITT); var defaultLITT_factor = largeIntestineIn(defaultIndividual).Parameter(ConverterConstants.Parameter.LITT_factor); var defaultLITT_factor_slope = largeIntestineIn(defaultIndividual).Parameter(ConverterConstants.Parameter.LITT_factor_slope); var defaultLITT_factor_intercept = largeIntestineIn(defaultIndividual).Parameter(ConverterConstants.Parameter.LITT_factor_intercept); var defaultGET = gastricEmptyingTimeIn(defaultIndividual); var currentGET = gastricEmptyingTimeIn(individualToConvert); currentGET.Info.MaxValue = defaultGET.MaxValue; var smallIntestine = smallIntestineIn(individualToConvert); var largeIntestine = largeIntestineIn(individualToConvert); smallIntestine.Add(_cloner.Clone(defaultSITT)); smallIntestine.Add(_cloner.Clone(defaultSITT_factor_slope)); smallIntestine.Add(_cloner.Clone(defaultSITT_factor_intercept)); largeIntestine.Add(_cloner.Clone(defaultLITT)); largeIntestine.Add(_cloner.Clone(defaultLITT_factor_slope)); largeIntestine.Add(_cloner.Clone(defaultLITT_factor_intercept)); var SITT = smallIntestine.Parameter(ConverterConstants.Parameter.SITT); var SITT_fact_old = smallIntestine.Parameter(ConverterConstants.Parameter.SITT_factor).Value; var P1_sin = smallIntestine.Parameter(ConverterConstants.Parameter.SITT_factor_slope).Value; var P2_sin = smallIntestine.Parameter(ConverterConstants.Parameter.SITT_factor_intercept).Value; var LITT = largeIntestine.Parameter(ConverterConstants.Parameter.LITT); var LITT_fact_old = largeIntestine.Parameter(ConverterConstants.Parameter.LITT_factor).Value; var P1_lin = largeIntestine.Parameter(ConverterConstants.Parameter.LITT_factor_slope).Value; var P2_lin = largeIntestine.Parameter(ConverterConstants.Parameter.LITT_factor_intercept).Value; SITT.Value = (SITT_fact_old - P2_sin) / P1_sin; LITT.Value = (LITT_fact_old - P2_lin) / P1_lin; //last but not least remove parameter to update formula smallIntestine.RemoveChild(smallIntestine.Parameter(ConverterConstants.Parameter.SITT_factor)); largeIntestine.RemoveChild(largeIntestine.Parameter(ConverterConstants.Parameter.LITT_factor)); smallIntestine.Add(_cloner.Clone(defaultSITT_factor)); largeIntestine.Add(_cloner.Clone(defaultLITT_factor)); //removed unused parameters smallIntestine.RemoveChild(smallIntestine.Parameter(ConverterConstants.Parameter.ColonArrivalTime)); largeIntestine.RemoveChild(largeIntestine.Parameter(ConverterConstants.Parameter.ExcretionTime)); _converted = true; }
private Individual templateIndividualFor(Individual individual) { var species = individual.Species; if (!_defaultCache.Contains(species)) { _defaultCache.Add(_defaultIndividualRetriever.DefaultIndividualFor(species)); } var defaultIndividual = _defaultCache[species]; return(defaultIndividual); }
public ICache <Species, IParameter> VSSPhysChemFor(Compound compound) { var cache = new Cache <Species, IParameter>(); var protocol = _protocolFactory.Create(ProtocolMode.Simple); _speciesRepository.All().Each(species => { var defaultIndividual = _defaultIndividualRetriever.DefaultIndividualFor(species); var simulation = _simulationFactory.CreateForVSS(protocol, defaultIndividual, compound); cache[species] = VSSPhysChemFor(simulation, compound.Name); }); return(cache); }
private void addIndividualParameters(IContainer individual, Species species, string replaceRootName = null) { if (!_defaultCache.Contains(species)) { _defaultCache.Add(_defaultIndividualRetriever.DefaultIndividualFor(species)); } var defaultIndividual = _defaultCache[species]; var stomach = lumenStomachIn(individual); var defaultStomach = lumenStomachIn(defaultIndividual); stomach.Add(_cloner.Clone(defaultStomach.Parameter(ConverterConstants.Parameter.GET_Alpha_variability_factor))); stomach.Add(_cloner.Clone(defaultStomach.Parameter(ConverterConstants.Parameter.GET_Beta_variability_factor))); }
private void convertIndividualForTwoPore(Individual individual) { var endogenous = individual.Organism.Organ(CoreConstants.Organ.EndogenousIgG); //already converted if (endogenous.ContainsName(ConverterConstants.Parameter.Kass_FcRn_ligandEndo)) { return; } var defaultIndividual = _defaultIndividualRetriever.DefaultIndividualFor(individual.OriginData.SpeciesPopulation); var defaultEndogenous = defaultIndividual.Organism.Organ(CoreConstants.Organ.EndogenousIgG); endogenous.Add(clone(defaultEndogenous, ConverterConstants.Parameter.Kass_FcRn_ligandEndo)); endogenous.Add(clone(defaultEndogenous, ConverterConstants.Parameter.Kd_FcRn_LigandEndo)); endogenous.Add(clone(defaultEndogenous, ConverterConstants.Parameter.Kd_FcRn_ligandEndo_pls_int)); var endosome = endogenous.Compartment(ConverterConstants.ContainerName.IGG_ENDOSOME); endosome.Name = CoreConstants.Compartment.Endosome; endogenous.Compartment(CoreConstants.Compartment.Endosome) .Add(clone(defaultEndogenous.Compartment(CoreConstants.Compartment.Endosome), ConverterConstants.Parameter.Start_concentration_FcRn_endosome)); endogenous.Compartment(CoreConstants.Compartment.Plasma) .Add(clone(defaultEndogenous.Compartment(CoreConstants.Compartment.Plasma), ConverterConstants.Parameter.Start_concentration_endogenous_plasma)); foreach (var container in individual.Organism.GetAllChildren <IContainer>(x => x.IsNamed(ConverterConstants.ContainerName.ENDOSOMAL_CLEARANCE))) { if (container.ParentContainer.IsNamed(CoreConstants.Organ.EndogenousIgG)) { continue; } container.ParentContainer.RemoveChild(container); } var endsomeClearance = clone(defaultIndividual.Organism, ConverterConstants.ContainerName.ENDOSOMAL_CLEARANCE) as IContainer; individual.Organism.Add(endsomeClearance); foreach (var neighborhood in individual.Neighborhoods.GetChildren <INeighborhood>(neighborhoodIsEndosomalClearance)) { neighborhood.SecondNeighbor = endsomeClearance; } }
protected override void Context() { _executionContext = A.Fake <IExecutionContext>(); _compoundProcess = new EnzymaticProcessWithSpecies { InternalName = "CompoundProcess" }; _species = new Species { Name = "NEW_SPECIES" }; _compoundProcess.Species = new Species { Name = "OLD_SPECIES" }; sut = new SetSpeciesInCompoundProcessCommand(_compoundProcess, _species); _defaultIndividualRetriever = A.Fake <IDefaultIndividualRetriever>(); A.CallTo(() => _executionContext.Resolve <IDefaultIndividualRetriever>()).Returns(_defaultIndividualRetriever); _parameterMappingRepository = A.Fake <ICompoundProcessParameterMappingRepository>(); A.CallTo(() => _executionContext.Resolve <ICompoundProcessParameterMappingRepository>()).Returns(_parameterMappingRepository); _individualParameter = DomainHelperForSpecs.ConstantParameterWithValue(value: 25).WithName("Matching"); _individualParameter.ValueOrigin.Method = ValueOriginDeterminationMethods.Assumption; _individualParameter.ValueOrigin.Source = ValueOriginSources.ParameterIdentification; _organism = new Organism { _individualParameter }; _individual = new Individual { Root = new RootContainer { _organism } }; A.CallTo(() => _defaultIndividualRetriever.DefaultIndividualFor(_species)).Returns(_individual); _matchingIndividualParameter = DomainHelperForSpecs.ConstantParameterWithValue(isDefault: true).WithName("Matching"); _nonMatchingIndividualParameter = DomainHelperForSpecs.ConstantParameterWithValue(isDefault: true).WithName("NonMatching"); _compoundProcess.Add(_matchingIndividualParameter); _compoundProcess.Add(_nonMatchingIndividualParameter); _objectPath = new ObjectPath(_organism.Name, _individualParameter.Name); A.CallTo(() => _parameterMappingRepository.HasMappedParameterFor(_compoundProcess.InternalName, _matchingIndividualParameter.Name)).Returns(true); A.CallTo(() => _parameterMappingRepository.MappedParameterPathFor(_compoundProcess.InternalName, _matchingIndividualParameter.Name)).Returns(_objectPath); }