Ejemplo n.º 1
0
        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"));
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 3
0
        private Individual templateIndividualFor(Individual individual)
        {
            var species = individual.Species;

            if (!_defaultCache.Contains(species))
            {
                _defaultCache.Add(_defaultIndividualRetriever.DefaultIndividualFor(species));
            }

            var defaultIndividual = _defaultCache[species];

            return(defaultIndividual);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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)));
        }
Ejemplo n.º 6
0
        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);
        }