コード例 #1
0
        protected override ISpatialStructure CreateSpatialStructure()
        {
            var spatialStructure = _objectBaseFactory.Create <IMoBiSpatialStructure>();

            spatialStructure.DiagramManager = _diagramManagerFactory.Create <ISpatialStructureDiagramManager>();
            return(spatialStructure);
        }
コード例 #2
0
        protected override void Context()
        {
            _objectBaseFactory         = A.Fake <IObjectBaseFactory>();
            _rateObjectPathsRepository = A.Fake <IRateObjectPathsRepository>();
            _rateFormulaRepository     = A.Fake <IRateFormulaRepository>();
            _distributionFactory       = A.Fake <IDistributionFormulaFactory>();
            _dimensionRepository       = A.Fake <IDimensionRepository>();
            _timeDimension             = A.Fake <IDimension>();
            _idGenerator = A.Fake <IIdGenerator>();
            A.CallTo(() => _objectBaseFactory.Create <ExplicitFormula>()).Returns(new ExplicitFormula());
            A.CallTo(() => _objectBaseFactory.Create <ConstantFormula>()).Returns(new ConstantFormula());
            A.CallTo(() => _objectBaseFactory.Create <SumFormula>()).Returns(new SumFormula());
            A.CallTo(() => _dimensionRepository.Time).Returns(_timeDimension);
            _objectPathFactory          = new ObjectPathFactoryForSpecs();
            _dynamicFormulaCriteriaRepo = A.Fake <IDynamicFormulaCriteriaRepository>();

            _dynamicSumFormulaRateKey = new RateKey(CoreConstants.CalculationMethod.DynamicSumFormulas, "SomeFormula");

            _sumFormulaCriteria = new DescriptorCriteria();
            _sumFormulaCriteria.Add(new MatchTagCondition("xxx"));
            _sumFormulaCriteria.Add(new NotMatchTagCondition("yyy"));

            A.CallTo(() => _dynamicFormulaCriteriaRepo.CriteriaFor(_dynamicSumFormulaRateKey)).Returns(_sumFormulaCriteria);
            A.CallTo(() => _rateFormulaRepository.FormulaFor(_dynamicSumFormulaRateKey)).Returns("P_#i");
            sut = new FormulaFactory(_objectBaseFactory, _rateObjectPathsRepository, _rateFormulaRepository, _distributionFactory,
                                     _objectPathFactory, _dimensionRepository, _idGenerator, _dynamicFormulaCriteriaRepo);
        }
コード例 #3
0
ファイル: IndividualFactory.cs プロジェクト: valdiman/PK-Sim
        private Individual createStandardIndividual(OriginData originData, Func <IIndividualModelTask, Action <Individual> > createAction)
        {
            var individual = _objectBaseFactory.Create <Individual>();

            individual.OriginData = originData;

            //default icon for an individual is the name of the species
            individual.Icon = originData.Species.Name;
            var rootContainer = _objectBaseFactory.Create <IRootContainer>();

            rootContainer.Add(_objectBaseFactory.Create <Organism>());
            rootContainer.Add(_objectBaseFactory.Create <IContainer>()
                              .WithName(Constants.NEIGHBORHOODS)
                              .WithMode(ContainerMode.Logical));
            individual.Root = rootContainer;

            createAction(_individualModelTask)(individual);

            //Update parameters defined in origin data and also in individual
            setParameter(individual, CoreConstants.Parameter.AGE, originData.Age, originData.AgeUnit);
            setParameter(individual, CoreConstants.Parameter.GESTATIONAL_AGE, originData.GestationalAge, originData.GestationalAgeUnit, individual.IsPreterm);
            setParameter(individual, CoreConstants.Parameter.HEIGHT, originData.Height, originData.HeightUnit);

            //Do not update value for BMI and weight in individual as this parameter are defined as formula parameter
            setParameterDisplayUnit(individual, CoreConstants.Parameter.BMI, originData.BMIUnit);
            setParameterDisplayUnit(individual, CoreConstants.Parameter.WEIGHT, originData.WeightUnit);

            _ontogenyVariabilityUpdater.UpdatePlasmaProteinsOntogenyFor(individual);

            //update ontogeny parameters
            validate(individual);
            individual.IsLoaded = true;
            return(individual);
        }
コード例 #4
0
        public ISpatialStructure CreateFor(Individual individual, Simulation simulation)
        {
            var spatialStructure = Create().WithName(simulation.Name);
            var organism         = _objectBaseFactory.Create <Organism>();

            spatialStructure.AddTopContainer(organism);

            var eventContainer = _objectBaseFactory.Create <IContainer>()
                                 .WithName(Constants.EVENTS)
                                 .WithMode(ContainerMode.Logical);

            spatialStructure.AddTopContainer(eventContainer);

            //FIRST: Global molecule parameters
            addModelStructureTo(spatialStructure.GlobalMoleculeDependentProperties, individual.OriginData, simulation.ModelProperties, spatialStructure.FormulaCache);

            //SECOND: Then, individual structure
            addModelStructureTo(organism, individual.OriginData, simulation.ModelProperties, spatialStructure.FormulaCache);
            addNeighborhoods(spatialStructure, organism, individual, simulation.ModelProperties, spatialStructure.FormulaCache);

            //THIRD: update parameter values and ids
            updateParameterFromIndividual(spatialStructure, individual);

            return(spatialStructure);
        }
コード例 #5
0
        private void setupParticleBin(IApplicationBuilder applicBuilder, int binIndex, double binRadius, double binNumberOfParticlesFactor, IFormulaCache formulaCache)
        {
            var binName      = binContainerName(binIndex);
            var binContainer = applicBuilder.GetSingleChildByName <IContainer>(binName);

            var numberOfParticlesFactor = binContainer.Parameter(CoreConstants.Parameters.NUMBER_OF_PARTICLES_FACTOR);

            numberOfParticlesFactor.Value = binNumberOfParticlesFactor;

            var particleRadius = binContainer.Parameter(CoreConstants.Parameters.START_PARTICLE_RADIUS);

            particleRadius.Value = binRadius;

            // add application molecule in particle bin and set its formula
            var appMoleculeBuilder = _objectBaseFactory.Create <IApplicationMoleculeBuilder>().WithName(solubleMoleculeName(binIndex));

            appMoleculeBuilder.RelativeContainerPath = _objectPathFactory.CreateObjectPathFrom(binName);
            appMoleculeBuilder.Formula = particleDrugMassFormula(formulaCache);
            applicBuilder.AddMolecule(appMoleculeBuilder);

            // add insoluble molecule for particle bin
            appMoleculeBuilder = _objectBaseFactory.Create <IApplicationMoleculeBuilder>().WithName(insolubleMoleculeName(binIndex));
            appMoleculeBuilder.RelativeContainerPath = _objectPathFactory.CreateObjectPathFrom(binName, CoreConstants.ContainerName.InsolubleDrug);
            appMoleculeBuilder.Formula = insolubleDrugStartFormula(formulaCache);
            applicBuilder.AddMolecule(appMoleculeBuilder);
        }
コード例 #6
0
        public PopulationSimulationImport ImportFromPopulationFile(string simulationFile, string populationFile)
        {
            var populationSimulationImport = populationSimulationImportFrom(simulationFile);
            var cache = _individualPropertiesCacheImporter.ImportFrom(populationFile, populationSimulationImport);

            if (populationSimulationImport.Status.Is(NotificationType.Error))
            {
                return(populationSimulationImport);
            }

            var population = _objectBaseFactory.Create <MoBiPopulation>();

            population.SetNumberOfItems(cache.Count);

            var populationSimulation = populationSimulationImport.PopulationSimulation;
            var allParameters        = _parameterRetriever.ParametersFrom(populationSimulation);

            foreach (var parameterPath in cache.AllParameterPaths())
            {
                var parameter = allParameters[parameterPath];
                if (parameter != null)
                {
                    populationSimulation.ParameterValuesCache.Add(cache.ParameterValuesFor(parameterPath));
                    addAdvancedParameterIfRequired(parameter, populationSimulation);
                }
                else
                {
                    populationSimulationImport.AddWarning(PKSimConstants.Warning.ParameterPathNotFoundInSimulationAndWillBeIgnored(parameterPath));
                }
            }

            return(addPopulationToPopulationSimulation(populationSimulationImport, population));
        }
コード例 #7
0
 protected override void Context()
 {
     _objectBaseFactory = A.Fake <IObjectBaseFactory>();
     _simulationBuildingBlockUpdater = A.Fake <ISimulationBuildingBlockUpdater>();
     _simulationModelCreator         = A.Fake <ISimulationModelCreator>();
     _simulationParametersUpdater    = A.Fake <ISimulationParametersUpdater>();
     _modelPropertiesTask            = A.Fake <IModelPropertiesTask>();
     _cloner = A.Fake <ICloner>();
     _diagramModelFactory = A.Fake <IDiagramModelFactory>();
     _interactionTask     = A.Fake <IInteractionTask>();
     _individual          = A.Fake <Individual>();
     _compounds           = new List <Compound>();
     A.CallTo(() => _individual.BuildingBlockType).Returns(PKSimBuildingBlockType.Individual);
     _population = A.Fake <Population>();
     A.CallTo(() => _population.BuildingBlockType).Returns(PKSimBuildingBlockType.Population);
     _originData                = new OriginData();
     _modelProperties           = A.Fake <ModelProperties>();
     _individualSimulation      = A.Fake <IndividualSimulation>();
     _populationSimulation      = A.Fake <PopulationSimulation>();
     _objectIdResetter          = A.Fake <IObjectIdResetter>();
     _compoundPropertiesUpdater = A.Fake <ICompoundPropertiesUpdater>();
     A.CallTo(() => _objectBaseFactory.Create <IndividualSimulation>()).Returns(_individualSimulation);
     A.CallTo(() => _objectBaseFactory.Create <PopulationSimulation>()).Returns(_populationSimulation);
     _individual.OriginData = _originData;
     A.CallTo(() => _individual.Organism).Returns(A.Fake <Organism>());
     sut = new SimulationFactory(_objectBaseFactory,
                                 _simulationBuildingBlockUpdater, _simulationModelCreator, _objectIdResetter, _compoundPropertiesUpdater, _simulationParametersUpdater,
                                 _modelPropertiesTask, _cloner, _diagramModelFactory, _interactionTask);
 }
コード例 #8
0
        private IObserverBuilder createObserverBuilderByType(FlatObserver flatObserver)
        {
            if (flatObserver.BuilderType == ObserverBuilderType.Amount)
            {
                var amountObserverBuilder = _entityBaseFactory.Create <IAmountObserverBuilder>();

                addDescriptorConditions(amountObserverBuilder.ContainerCriteria,
                                        ObserverTagType.PARENT, flatObserver.Name);

                return(amountObserverBuilder);
            }

            if (flatObserver.BuilderType == ObserverBuilderType.Container)
            {
                var containerObserverBuilder = _entityBaseFactory.Create <IContainerObserverBuilder>();

                addDescriptorConditions(containerObserverBuilder.ContainerCriteria,
                                        ObserverTagType.PARENT, flatObserver.Name);

                return(containerObserverBuilder);
            }



            throw new ArgumentException(PKSimConstants.Error.UnknownObserverBuilderType);
        }
コード例 #9
0
ファイル: ApplicationFactory.cs プロジェクト: valdiman/PK-Sim
        /// <summary>
        ///    Add start formula for the drug molecule. Will be created in the root application container
        /// </summary>
        private void addDrugStartFormula(IApplicationBuilder applicationBuilder, IFormulaCache formulaCache)
        {
            var appMoleculeBuilder = _objectBaseFactory.Create <IApplicationMoleculeBuilder>().WithName(applicationBuilder.Name);

            appMoleculeBuilder.RelativeContainerPath = _objectPathFactory.CreateObjectPathFrom(ObjectPath.PARENT_CONTAINER, applicationBuilder.Name);
            appMoleculeBuilder.Formula = drugMassFormula(formulaCache);
            applicationBuilder.AddMolecule(appMoleculeBuilder);
        }
コード例 #10
0
        private SensitivityParameter createSensitivityParameter(ParameterSelection parameterSelection = null, string nameToUse = "")
        {
            var sensitivityParameter = _objectBaseFactory.Create <SensitivityParameter>().WithName(nameToUse);

            sensitivityParameter.ParameterSelection = parameterSelection;
            addParametersTo(sensitivityParameter);
            return(sensitivityParameter);
        }
コード例 #11
0
ファイル: SimulationFactory.cs プロジェクト: curdfu/PK-Sim
        private TSimulation create <TSimulation>() where TSimulation : Simulation
        {
            var simulation = _objectBaseFactory.Create <TSimulation>();

            simulation.Properties           = new SimulationProperties();
            simulation.ReactionDiagramModel = _diagramModelFactory.Create();
            simulation.IsLoaded             = true;
            return(simulation);
        }
コード例 #12
0
        private RandomPopulation createPopulationFor(RandomPopulationSettings populationSettings)
        {
            var randomPopulation = _objectBaseFactory.Create <RandomPopulation>();

            randomPopulation.Root     = _objectBaseFactory.Create <IRootContainer>();
            randomPopulation.Settings = populationSettings;
            randomPopulation.SetAdvancedParameters(_objectBaseFactory.Create <IAdvancedParameterCollection>());
            return(randomPopulation);
        }
コード例 #13
0
        private ImportPopulation createPopulationFor(Individual individual)
        {
            var importPopulation = _objectBaseFactory.Create <ImportPopulation>();

            importPopulation.Root = _objectBaseFactory.Create <IRootContainer>();
            importPopulation.SetAdvancedParameters(_objectBaseFactory.Create <IAdvancedParameterCollection>());
            importPopulation.Settings.BaseIndividual = _cloner.Clone(individual);
            importPopulation.IsLoaded = true;
            return(importPopulation);
        }
コード例 #14
0
ファイル: CompoundFactory.cs プロジェクト: yvkashyap/PK-Sim
        public Compound Create()
        {
            var compound = _objectBaseFactory.Create <Compound>();

            compound.Root = _objectBaseFactory.Create <IRootContainer>();
            readCompoundFromTemplate(compound);
            initializeCalculationMethods(compound);
            compound.IsLoaded = true;
            return(compound);
        }
コード例 #15
0
        public ParameterAlternative CreateAlternativeFor(ParameterAlternativeGroup compoundParameterGroup)
        {
            var alternative = createAlternativeFor(compoundParameterGroup);

            //for alternative that are not the default one, and if the groups requires it, we reset the formula to a constant value
            if (groupHasCalculatedAlternative(compoundParameterGroup))
            {
                alternative.AllParameters().Each(p => p.Formula = _objectBaseFactory.Create <ConstantFormula>().WithValue(0));
            }
            return(alternative);
        }
コード例 #16
0
        protected TMolecule CreateMolecule(string moleculeName)
        {
            var molecule = _objectBaseFactory.Create <TMolecule>().WithIcon(Icon.IconName).WithName(moleculeName);

            CreateMoleculeParameterIn(molecule, REFERENCE_CONCENTRATION, CoreConstants.DEFAULT_REFERENCE_CONCENTRATION_VALUE);
            CreateMoleculeParameterIn(molecule, HALF_LIFE_LIVER, CoreConstants.DEFAULT_MOLECULE_HALF_LIFE_LIVER_VALUE_IN_MIN);
            CreateMoleculeParameterIn(molecule, HALF_LIFE_INTESTINE, CoreConstants.DEFAULT_MOLECULE_HALF_LIFE_INTESTINE_VALUE_IN_MIN);
            CreateMoleculeParameterIn(molecule, DISEASE_FACTOR, CoreConstants.DEFAULT_DISEASE_FACTOR);

            return(molecule);
        }
コード例 #17
0
        public OutputInterval Create(double startTimeInMinute, double endTimeInMinute, double resolutionInPtsPerMin)
        {
            var interval = _objectBaseFactory.Create <OutputInterval>();

            interval.Add(createParameter(Constants.Parameters.START_TIME, Constants.Dimension.TIME, startTimeInMinute));
            interval.Add(createParameter(Constants.Parameters.END_TIME, Constants.Dimension.TIME, endTimeInMinute));
            interval.Add(createParameter(Constants.Parameters.RESOLUTION, Constants.Dimension.RESOLUTION, resolutionInPtsPerMin));
            interval.Resolution.MinIsAllowed = false;

            return(interval);
        }
コード例 #18
0
        private IParameter createParameter(string name)
        {
            var parameter = _objectBaseFactory.Create <IParameter>()
                            .WithName(name)
                            .WithFormula(_objectBaseFactory.Create <ConstantFormula>());

            parameter.Editable    = true;
            parameter.CanBeVaried = false;
            parameter.Visible     = true;

            return(parameter);
        }
コード例 #19
0
        protected override void Context()
        {
            base.Context();
            _returnedBuildingBlocks = new List <IBuildingBlock>();
            _childReactionBuilder   = new ReactionBuilder().WithName("Test").WithId("FindME");
            _reactionParameter      = new Parameter().WithName("Para").WithId("ReactionPara");
            _childReactionBuilder.AddParameter(_reactionParameter);
            _reactionBuildingBlock = new MoBiReactionBuildingBlock()
            {
                _childReactionBuilder
            };
            _allBuildingBlocks.Add(_reactionBuildingBlock);
            _moleculeBuilder   = new MoleculeBuilder();
            _moleculeParameter = new Parameter().WithName("para");
            _moleculeBuilder.AddParameter(_moleculeParameter);
            _moleculeBuildingBlock = new MoleculeBuildingBlock()
            {
                _moleculeBuilder
            };
            _allBuildingBlocks.Add(_moleculeBuildingBlock);
            _passiveTranportBuilder    = new TransportBuilder();
            _passiveTransportParameter = new Parameter().WithName("PTParameter");
            _passiveTranportBuilder.AddParameter(_passiveTransportParameter);
            _passiveTranportBuildingBlock = new PassiveTransportBuildingBlock()
            {
                _passiveTranportBuilder
            };
            _allBuildingBlocks.Add(_passiveTranportBuildingBlock);
            _applicationBuilder      = new ApplicationBuilder();
            _eventGroupBuildingBlock = new EventGroupBuildingBlock()
            {
                _applicationBuilder
            };
            _applicationBuilderParameter = new ApplicationBuilder().WithName("AppParameter");
            _applicationBuilder.Add(_applicationBuilderParameter);
            _allBuildingBlocks.Add(_eventGroupBuildingBlock);
            _parameter = new Parameter().WithName("Para");
            var container = new Container().WithName("Cont");

            container.Add(_parameter);
            _objectBaseFactory = A.Fake <IObjectBaseFactory>();
            _parameterFactory  = A.Fake <IParameterFactory>();
            A.CallTo(() => _objectBaseFactory.Create <IContainer>()).Returns(new Container());
            A.CallTo(() => _objectBaseFactory.Create <IMoBiSpatialStructure>()).Returns(new MoBiSpatialStructure());
            var diagramManagerFactory = A.Fake <IDiagramManagerFactory>();

            _spatialStructure = new MoBiSpatialStructureFactory(_objectBaseFactory, _parameterFactory, A.Fake <IIconRepository>(), diagramManagerFactory).Create() as IMoBiSpatialStructure;
            _spatialStructure.AddTopContainer(container);
            _allBuildingBlocks.Add(_spatialStructure);
            _formula = new ExplicitFormula();
            _moleculeBuildingBlock.AddFormula(_formula);
        }
コード例 #20
0
 protected override void Context()
 {
     _objectBaseFactory = A.Fake <IObjectBaseFactory>();
     _parameterFactory  = A.Fake <IParameterFactory>();
     _iconRepository    = A.Fake <IIconRepository>();
     _volumeParameter   = A.Fake <IParameter>().WithName(Constants.Parameters.VOLUME);
     A.CallTo(() => _parameterFactory.CreateVolumeParameter()).Returns(_volumeParameter);
     _spatialStructure = new MoBiSpatialStructure();
     A.CallTo(() => _objectBaseFactory.Create <IMoBiSpatialStructure>()).Returns(_spatialStructure);
     A.CallTo(() => _objectBaseFactory.Create <IContainer>()).ReturnsLazily(x => new Container());
     _diagramManagerFactory = A.Fake <IDiagramManagerFactory>();
     sut = new MoBiSpatialStructureFactory(_objectBaseFactory, _parameterFactory, _iconRepository, _diagramManagerFactory);
 }
コード例 #21
0
        private IReactionBuildingBlock getReactions()
        {
            var reactions = _objectBaseFactory.Create <IReactionBuildingBlock>();
            var R1        = _objectBaseFactory.Create <IReactionBuilder>()
                            .WithName("R1")
                            .WithKinetic(R1Formula(reactions.FormulaCache))
                            .WithDimension(_concentrationPerTimeDimension);

            R1.AddEduct(new ReactionPartnerBuilder("A", 1));
            R1.AddProduct(new ReactionPartnerBuilder("B", 1));
            reactions.Add(R1);
            return(reactions);
        }
コード例 #22
0
        public IObserverBuildingBlock AllObserversFor(IMoleculeBuildingBlock moleculeBuildingBlock, Simulation simulation)
        {
            var observerBuildingBlock = _objectBaseFactory.Create <IObserverBuildingBlock>().WithName(simulation.Name);

            addStandardObserversTo(simulation, observerBuildingBlock, moleculeBuildingBlock);

            addSimulationObservers(simulation, observerBuildingBlock);

            //now add dynamic observers for molecules needing one
            createFractionExcretedToUrineObserver(simulation, observerBuildingBlock);
            createFractionOfDoseExcretedToBileObserver(simulation, observerBuildingBlock);
            createFractionOfDoseExcretedToFecesObserver(simulation, observerBuildingBlock);

            //add fraction observers for metabolite and complex
            createFractionOfDoseObserver(simulation, observerBuildingBlock);

            foreach (var compound in simulation.Compounds)
            {
                foreach (var specificBinding in simulation.CompoundPropertiesFor(compound).Processes.SpecificBindingSelection.AllEnabledProcesses())
                {
                    var complexName = specificBinding.ProductName(CoreConstants.Molecule.Complex);
                    var protein     = moleculeBuildingBlock[specificBinding.MoleculeName];
                    var complex     = moleculeBuildingBlock[complexName];

                    createReceptorOccupancyObserver(observerBuildingBlock, protein, complex);
                }
            }

            return(observerBuildingBlock);
        }
コード例 #23
0
ファイル: ObserverMapperSpecs.cs プロジェクト: devhliu/PK-Sim
        protected override Task Context()
        {
            _descriptorConditionMapper = A.Fake <DescriptorConditionMapper>();
            _explicitFormulaMapper     = A.Fake <ExplicitFormulaMapper>();
            _moleculeListMapper        = A.Fake <MoleculeListMapper>();
            _objectBaseFactory         = A.Fake <IObjectBaseFactory>();
            _dimensionRepository       = A.Fake <IDimensionRepository>();
            _logger = A.Fake <ILogger>();

            _dimension = DomainHelperForSpecs.TimeDimensionForSpecs();

            _amountObserver = new AmountObserverBuilder {
                Dimension = _dimension
            };
            _containerObserver = new ContainerObserverBuilder {
                Dimension = _dimension
            };
            _formula = new OSPSuite.Core.Domain.Formulas.ExplicitFormula("1+2");
            _amountObserver.Formula    = _formula;
            _containerObserver.Formula = _formula;

            _moleculeListSnapshot = new MoleculeList();
            _snapshotFormula      = new ExplicitFormula();

            _newMoleculeList = new OSPSuite.Core.Domain.Builder.MoleculeList();
            _newMoleculeList.AddMoleculeNameToExclude("A");
            _newMoleculeList.AddMoleculeName("B");
            _newMoleculeList.ForAll = false;
            _newFormula             = new OSPSuite.Core.Domain.Formulas.ExplicitFormula("New");

            sut = new ObserverMapper(
                _descriptorConditionMapper,
                _explicitFormulaMapper,
                _moleculeListMapper,
                _objectBaseFactory,
                _dimensionRepository,
                _logger);

            A.CallTo(() => _explicitFormulaMapper.MapToSnapshot(_formula)).Returns(_snapshotFormula);
            A.CallTo(() => _explicitFormulaMapper.MapToModel(_snapshotFormula)).Returns(_newFormula);
            A.CallTo(() => _moleculeListMapper.MapToSnapshot(_amountObserver.MoleculeList)).Returns(_moleculeListSnapshot);
            A.CallTo(() => _moleculeListMapper.MapToSnapshot(_containerObserver.MoleculeList)).Returns(_moleculeListSnapshot);
            A.CallTo(() => _moleculeListMapper.MapToModel(_moleculeListSnapshot)).Returns(_newMoleculeList);

            A.CallTo(() => _dimensionRepository.DimensionByName(_dimension.Name)).Returns(_dimension);
            A.CallTo(() => _objectBaseFactory.Create <AmountObserverBuilder>()).Returns(new AmountObserverBuilder());
            A.CallTo(() => _objectBaseFactory.Create <ContainerObserverBuilder>()).Returns(new ContainerObserverBuilder());

            return(_completed);
        }
コード例 #24
0
ファイル: Converter341To351.cs プロジェクト: onwhenrdy/MoBi
        private void addEffectiveSurfaceAreaParameter(ISpatialStructure spatialStructure)
        {
            var organism = getOrganism(spatialStructure);

            if (organism == null)
            {
                return;
            }
            var lumen = organism.EntityAt <IContainer>("Lumen");

            if (lumen == null)
            {
                return;
            }

            var variabilityFactor = lumen.EntityAt <IParameter>(EFFECTIVE_SURFACE_AREA_VARIABILITY_FACTOR);
            var area = _dimensionFactory.Dimension("Area");

            foreach (var containerWithSurfaceArea in organism.GetAllChildren <IContainer>(c => c.ContainsName(EFFECTIVE_SURFACE_AREA_ENHANCEMENT_FACTOR)))
            {
                var effectiveSurfaceArea = _objectBaseFactory.Create <IParameter>()
                                           .WithName(EFFECTIVE_SURFACE_AREA)
                                           .WithDimension(area)
                                           .WithGroup("GI_ANATOMY_AREA")
                                           .WithDescription("Effective surface area of GI segment");

                var geometricSurfaceArea = containerWithSurfaceArea.EntityAt <IParameter>(GEOMETRIC_SURFACE_AREA);
                if (geometricSurfaceArea == null)
                {
                    continue;
                }

                var effectiveSurfaceAreaEnahncementFactor = containerWithSurfaceArea.EntityAt <IParameter>(EFFECTIVE_SURFACE_AREA_ENHANCEMENT_FACTOR);

                containerWithSurfaceArea.Add(effectiveSurfaceArea);

                var formula = spatialStructure.FormulaCache.FindByName("PARAM_EffectiveSurfaceArea") as ExplicitFormula;
                if (formula == null)
                {
                    formula = _formulaTask.CreateNewFormula <ExplicitFormula>(area).WithName("PARAM_EffectiveSurfaceArea");
                    formula.AddObjectPath(_objectPathFactory.CreateRelativeFormulaUsablePath(effectiveSurfaceArea, variabilityFactor).WithAlias("AeffVariabilityFactor"));
                    formula.AddObjectPath(_objectPathFactory.CreateRelativeFormulaUsablePath(effectiveSurfaceArea, geometricSurfaceArea).WithAlias("Ageom"));
                    formula.AddObjectPath(_objectPathFactory.CreateRelativeFormulaUsablePath(effectiveSurfaceArea, effectiveSurfaceAreaEnahncementFactor).WithAlias("AeffFactor"));
                    formula.FormulaString = "Ageom * AeffFactor * AeffVariabilityFactor";
                    spatialStructure.AddFormula(formula);
                }

                effectiveSurfaceArea.Formula = formula;
            }
        }
コード例 #25
0
        protected TMolecule CreateEmptyMolecule()
        {
            var molecule = _objectBaseFactory.Create <TMolecule>().WithIcon(Icon.IconName);

            createMoleculeParameterIn(molecule, CoreConstants.Parameters.REFERENCE_CONCENTRATION, CoreConstants.DEFAULT_REFERENCE_CONCENTRATION_VALUE, Constants.Dimension.MOLAR_CONCENTRATION);
            createMoleculeParameterIn(molecule, CoreConstants.Parameters.HALF_LIFE_LIVER, CoreConstants.DEFAULT_MOLECULE_HALF_LIFE_LIVER_VALUE_IN_MIN, Constants.Dimension.TIME);
            createMoleculeParameterIn(molecule, CoreConstants.Parameters.HALF_LIFE_INTESTINE, CoreConstants.DEFAULT_MOLECULE_HALF_LIFE_INTESTINE_VALUE_IN_MIN, Constants.Dimension.TIME);

            foreach (var parameterName in CoreConstants.Parameters.OntogenyFactors)
            {
                createMoleculeParameterIn(molecule, parameterName, 1, Constants.Dimension.DIMENSIONLESS, CoreConstants.Groups.ONTOGENY_FACTOR, canBeVariedInPopulation: false);
            }

            return(molecule);
        }
コード例 #26
0
        private RandomPopulation createPopulationFor(RandomPopulationSettings populationSettings, int?seed)
        {
            var randomPopulation = _objectBaseFactory.Create <RandomPopulation>();

            randomPopulation.Root     = _objectBaseFactory.Create <IRootContainer>();
            randomPopulation.Settings = populationSettings;
            randomPopulation.SetAdvancedParameters(_objectBaseFactory.Create <AdvancedParameterCollection>());

            if (seed != null)
            {
                randomPopulation.Seed = seed.Value;
            }

            return(randomPopulation);
        }
コード例 #27
0
        public IFormula BMIFormulaFor(IParameter weightParameter, IParameter heightParameter)
        {
            const string height = "Height";
            const string weight = "BW";

            var formula = _objectBaseFactory.Create <ExplicitFormula>()
                          .WithName(CoreConstants.Parameter.BMI)
                          .WithFormulaString($"{height}>0 ? {weight} / ({height})^2 : 0")
                          .WithDimension(_dimensionRepository.BMI);

            formula.AddObjectPath(pathInParentContainerFor(weightParameter, weight));
            formula.AddObjectPath(pathInParentContainerFor(heightParameter, height));

            return(formula);
        }
コード例 #28
0
        public Formulation MapFrom(FlatContainer flatContainer)
        {
            var formulation = _objectBaseFactory.Create <Formulation>();

            formulation.Root = _objectBaseFactory.Create <IRootContainer>();
            formulation.Name = flatContainer.Name;

            //save formulation name as formulation type too,
            //because name can be overwritten by user
            formulation.FormulationType = formulation.Name;
            foreach (var formulationRoute in _formulationRouteRepo.All().Where(fr => fr.Formulation.Equals(formulation.Name)))
            {
                formulation.AddRoute(formulationRoute.Route);
            }
            return(formulation);
        }
コード例 #29
0
ファイル: OntogenyRepository.cs プロジェクト: valdiman/PK-Sim
        protected override void DoStart()
        {
            var moleculeWithDefinedOntogenies = (from flatOntogeny in _flatOntogenyRepository.All()
                                                 select new
            {
                flatOntogeny.MoleculeName,
                flatOntogeny.SpeciesName,
                flatOntogeny.DisplayName,
            }
                                                 ).Distinct();

            foreach (var moleculeWithOntogeny in moleculeWithDefinedOntogenies)
            {
                var newOntogeny = _objectBaseFactory.Create <DatabaseOntogeny>().WithName(moleculeWithOntogeny.MoleculeName);
                newOntogeny.SpeciesName = moleculeWithOntogeny.SpeciesName;
                newOntogeny.DisplayName = moleculeWithOntogeny.DisplayName;
                _allOntogenies.Add(newOntogeny);

                //cache ontogeny values using {Enzyme name, species name} as key
                var ontogeny = moleculeWithOntogeny;

                var allOntogenies = from flatOntogeny in _flatOntogenyRepository.All()
                                    where flatOntogeny.MoleculeName.Equals(ontogeny.MoleculeName)
                                    where flatOntogeny.SpeciesName.Equals(ontogeny.SpeciesName)
                                    select flatOntogeny;

                _ontogenyValues.Add(ontogenyKey(ontogeny.MoleculeName, ontogeny.SpeciesName), allOntogenies.ToList());
            }
        }
コード例 #30
0
        protected override void Context()
        {
            var organism = new Container().WithName("Organism");

            _objectPathFactory = new ObjectPathFactory(new AliasCreator());
            _fuParameter       = new Parameter().WithName("fu").WithValue(0.5);

            organism.Add(_fuParameter);
            var liver       = new Container().WithName("Liver").WithParentContainer(organism);
            var liverVolume = new Parameter().WithName("Volume").WithValue(10).WithParentContainer(liver);
            var f_vas_liver = new Parameter().WithName("f_vas").WithValue(0.1);

            liver.Add(f_vas_liver);

            var kidney       = new Container().WithName("Kidney").WithParentContainer(organism);
            var kidneyVolume = new Parameter().WithName("Volume").WithValue(20).WithParentContainer(kidney);

            kidney.Add(new Parameter().WithName("f_vas").WithValue(0.2));

            sut               = new SumFormula();
            sut.Criteria      = Create.Criteria(x => x.With("Volume"));
            sut.Variable      = "V";
            sut.FormulaString = "fu * V_#i * f_vas_#i";
            sut.AddObjectPath(_objectPathFactory.CreateRelativeFormulaUsablePath(liverVolume, f_vas_liver).WithAlias("f_vas_#i"));
            sut.AddObjectPath(_objectPathFactory.CreateAbsoluteFormulaUsablePath(_fuParameter).WithAlias("fu"));

            sut.Dimension = new Dimension(new BaseDimensionRepresentation(), "dim1", "unit1");

            _allFormulaUsable = organism.GetAllChildren <IFormulaUsable>().ToEntityDescriptorMapList();

            _objectBaseFactory = A.Fake <IObjectBaseFactory>();
            A.CallTo(() => _objectBaseFactory.Create <ExplicitFormula>()).Returns(new ExplicitFormula());
        }