示例#1
0
 private IEnumerable <IParameterStartValue> getMoleculeParameterValues(ISpatialStructure spatialStructure, IMoleculeBuilder moleculeBuilder)
 {
     return(moleculeBuilder.Parameters.Where(parameterValueShouldBeSet)
            //"Property"-Parameter are defined in the molecule itself
            .Where(x => x.BuildMode != ParameterBuildMode.Property)
            .SelectMany(x => getMoleculeParameterValue(spatialStructure, moleculeBuilder, x)));
 }
 protected override void Context()
 {
     base.Context();
     _objectBase       = new Container();
     _objectBase.Name  = _changedName;
     _spatialStructure = new SpatialStructure().WithName("Org").WithId("Org").WithTopContainer(_objectBase);
 }
示例#3
0
 private void updateForPKSimChanges(ISpatialStructure spatialStructure)
 {
     if (canAddNewParametersTo(spatialStructure))
     {
         var blood2PlasmaFormula = createBlood2PlasmaFormula();
         var mucosaPermeabilityScaleFactorTranscellularFormula = createMucosaPermeabilityScaleFactor_transcellularFormula();
         var defaultIntestinalPermeabilityTranscellularFormula = creteDefaultIntestinalPermeabilityTranscellularFormula();
         spatialStructure.AddFormula(blood2PlasmaFormula);
         spatialStructure.AddFormula(mucosaPermeabilityScaleFactorTranscellularFormula);
         spatialStructure.AddFormula(defaultIntestinalPermeabilityTranscellularFormula);
         spatialStructure.GlobalMoleculeDependentProperties.Add(createBlood2PlasmaRatioParameter(blood2PlasmaFormula));
         spatialStructure.GlobalMoleculeDependentProperties.Add(createMucosaPermeabilityScaleFactorTranscellularParameter(mucosaPermeabilityScaleFactorTranscellularFormula));
         spatialStructure.GlobalMoleculeDependentProperties.Add(createDefaultIntestinalPermeabilityTranscellularParameter(defaultIntestinalPermeabilityTranscellularFormula));
     }
     if (is2PoreModel(spatialStructure))
     {
         var moleculeProperties = spatialStructure.NeighborhoodsContainer.GetSingleChildByName <IContainer>("EndogenousIgG_int_EndogenousIgG_pls").GetSingleChildByName <IContainer>(Constants.MOLECULE_PROPERTIES);
         if (moleculeProperties == null)
         {
             return;
         }
         var partitionCoefficient =
             moleculeProperties.GetSingleChildByName <IParameter>("Partition coefficient (interstitial/plasma)");
         // Change Formula to Constant
         if (partitionCoefficient == null)
         {
             return;
         }
         partitionCoefficient.Formula = _objectBaseFactory.Create <ConstantFormula>().WithValue(1);
     }
 }
        protected override void Context()
        {
            base.Context();
            _organism            = new Organism();
            _anotherTopContainer = new Container().WithName("Another container");
            _spatialStructure    = new PKSimSpatialStructure();
            _spatialStructure.AddTopContainer(_organism);
            _spatialStructure.AddTopContainer(_anotherTopContainer);

            _ga     = DomainHelperForSpecs.ConstantParameterWithValue().WithName(Constants.Parameters.GESTATIONAL_AGE);
            _age    = DomainHelperForSpecs.ConstantParameterWithValue().WithName(CoreConstants.Parameters.AGE);
            _height = DomainHelperForSpecs.ConstantParameterWithValue().WithName(CoreConstants.Parameters.HEIGHT);

            _distributedParameter = DomainHelperForSpecs.NormalDistributedParameter(isDefault: false, distributionParameterIsDefault: false).WithName("Distributed");
            _p1 = DomainHelperForSpecs.ConstantParameterWithValue().WithName("P1");
            _p2 = DomainHelperForSpecs.ConstantParameterWithValue().WithName("P2");
            _organism.Add(_ga);
            _organism.Add(_age);
            _organism.Add(_height);
            _organism.Add(_p1);
            _anotherTopContainer.Add(_p2);
            _organism.Add(_distributedParameter);
            _mean      = _distributedParameter.Parameter(Constants.Distribution.MEAN);
            _deviation = _distributedParameter.Parameter(Constants.Distribution.DEVIATION);
        }
示例#5
0
 protected override void Context()
 {
     base.Context();
     _sourceSpatialStructure         = _buildConfiguration.SpatialStructure;
     _sourceSpatialStructure.Version = _buildingBlockVersion;
     _cloneManager = IoC.Resolve <ICloneManagerForBuildingBlock>();
 }
示例#6
0
 public void Visit(ISpatialStructure spatialStructure)
 {
     convert(spatialStructure);
     spatialStructure.TopContainers.Each(convertSpecialParametersIn);
     updateForPKSimChanges(spatialStructure);
     _converted = true;
 }
        public IParameterStartValuesBuildingBlock CreateFor(IBuildConfiguration buildConfiguration, Simulation simulation)
        {
            try
            {
                //default default parameter start values matrix
                _spatialStructure   = buildConfiguration.SpatialStructure;
                _defaultStartValues = _parameterStartValuesCreator.CreateFrom(_spatialStructure, buildConfiguration.Molecules);
                _formulaCache       = _defaultStartValues.FormulaCache;
                var individual = simulation.Individual;

                //set the relative expression values for each protein defined in individual
                foreach (var protein in individual.AllMolecules <IndividualProtein>())
                {
                    updateProteinParametersValues(protein);
                }

                foreach (var transporter in individual.AllMolecules <IndividualTransporter>())
                {
                    updateTransporterParameterValues(transporter);
                }

                updateSimulationParameters(simulation);

                return(_defaultStartValues.WithName(simulation.Name));
            }
            finally
            {
                _spatialStructure   = null;
                _defaultStartValues = null;
                _formulaCache       = null;
            }
        }
示例#8
0
        private void addVariabilityParameterIn(ISpatialStructure spatialStructure)
        {
            var organism = getOrganism(spatialStructure);

            if (organism == null)
            {
                return;
            }

            var lumen = organism.EntityAt <IContainer>("Lumen");

            if (lumen == null)
            {
                return;
            }

            var parameter = _objectBaseFactory.Create <IDistributedParameter>()
                            .WithName(EFFECTIVE_SURFACE_AREA_VARIABILITY_FACTOR)
                            .WithDescription("Effective surface area variability factor");

            parameter.WithGroup("GI_ANATOMY_AEFF_FACTOR");

            var meanParameter       = effectiveSurfaceAreaMeanParameter();
            var deviationParameter  = effectiveSurfaceAreaDeviationParameter();
            var percentileParameter = effectiveSurfaceAreaPercentileParameter();

            parameter.Add(meanParameter);
            parameter.Add(deviationParameter);
            parameter.Add(percentileParameter);
            parameter.Formula = _distributionFormulaFactory.CreateLogNormalDistributionFormulaFor(parameter, meanParameter, deviationParameter);

            lumen.Add(parameter);
        }
示例#9
0
 private void addMoleculeParameterValues(IParameterStartValuesBuildingBlock parameterStartValuesBuildingBlock,
                                         ISpatialStructure spatialStructure, IEnumerable <IMoleculeBuilder> moleculeBuilderCollection)
 {
     foreach (var paramValue in moleculeBuilderCollection.SelectMany(moleculeBuilder => getMoleculeParameterValues(spatialStructure, moleculeBuilder)))
     {
         parameterStartValuesBuildingBlock.Add(paramValue);
     }
 }
示例#10
0
 protected override void Context()
 {
     base.Context();
     _container     = new Container();
     _buildingBlock = new SpatialStructure();
     _buildingBlock.AddTopContainer(_container);
     _container.Add(_parameterOrganism);
     _buildingBlock.AddFormula(_parameterOrganism.Formula);
 }
示例#11
0
 protected override void Context()
 {
     sut = new ParameterResolver();
     _moleculeBuildingBlock = new MoleculeBuildingBlock();
     _spatialStructure      = new SpatialStructure {
         GlobalMoleculeDependentProperties = new Container()
     };
     _containerPath = new ObjectPath();
 }
        public SpatialStructureDTO MapFrom(ISpatialStructure spatialStructure)
        {
            var dto = Map <SpatialStructureDTO>(spatialStructure);

            dto.TopContainer       = spatialStructure.TopContainers.MapAllUsing(_containerToDTOContainerMapper);
            dto.Neighborhoods      = _containerToDTOContainerMapper.MapFrom(spatialStructure.NeighborhoodsContainer);
            dto.MoleculeProperties = _containerToDTOContainerMapper.MapFrom(spatialStructure.GlobalMoleculeDependentProperties);
            return(dto);
        }
示例#13
0
        public void RemoveContainerFrom(ISpatialStructure spatialStructure, IContainer containerToRemove)
        {
            var neighborhoodBuilderToRemove = AllNeighborhoodBuildersConnectedWith(spatialStructure, containerToRemove);

            foreach (var neighborhoodBuilder in neighborhoodBuilderToRemove.ToList())
            {
                spatialStructure.RemoveNeighborhood(neighborhoodBuilder);
            }
            containerToRemove.ParentContainer.RemoveChild(containerToRemove);
        }
示例#14
0
        public void UpdateDefaultFor(ISpatialStructure spatialStructure)
        {
            var organism = spatialStructure.TopContainers.FindByName(Constants.ORGANISM);

            if (organism == null)
            {
                return;
            }
            updateDefaultStateForOriginDataParameters(organism);
        }
        protected override void Context()
        {
            base.Context();
            IContainer topContainer = new Container();

            _testContainer = topContainer;
            _testStructure = new SpatialStructure().WithTopContainer(topContainer);
            _testStructure.NeighborhoodsContainer            = new Container();
            _testStructure.GlobalMoleculeDependentProperties = new Container();
        }
        public void TestComplexSpatialStructure()
        {
            SpatialStructure x1 = _buildConfiguration.SpatialStructure as SpatialStructure;

            Assert.IsNotNull(x1);

            ISpatialStructure x2 = SerializeAndDeserialize(x1);

            AssertForSpecs.AreEqualSpatialStructure(x2, x1);
        }
示例#17
0
        protected override void Context()
        {
            base.Context();

            _simulationToUpdate            = A.Fake <IMoBiSimulation>();
            _simulationToUpdate.Model.Name = "XX";
            _templateBuildingBlock         = A.Fake <ISpatialStructure>();
            _updatedBuildConfiguration     = A.Fake <IMoBiBuildConfiguration>();
            A.CallTo(() => _configurePresenter.BuildConfiguration).Returns(_updatedBuildConfiguration);
        }
示例#18
0
 public void Visit(ISpatialStructure spatialStructure)
 {
     foreach (var container in spatialStructure.PhysicalContainers.Where(x => !x.ContainsName(Constants.Parameters.VOLUME)).ToList())
     {
         container.Add(_parameterFactory.CreateVolumeParameter());
     }
     addVariabilityParameterIn(spatialStructure);
     addEffectiveSurfaceAreaParameter(spatialStructure);
     convertFormulaReferencingAeffIn(spatialStructure);
 }
示例#19
0
 public static bool IsInSpatialStructure <T>(this ISpatialStructure spatialStructure, T lookFor) where T : class, IEntity
 {
     if (spatialStructure.Any(c => c.Equals(lookFor)))
     {
         return(true);
     }
     return(spatialStructure.Aggregate(false,
                                       (current, topContainier) =>
                                       current || topContainier.GetAllChildren <T>().Contains(lookFor)));
 }
示例#20
0
        private void addNeighborhoods(ISpatialStructure spatialStructure, Organism organism, Individual individual, ModelProperties modelProperties, IFormulaCache formulaCache)
        {
            var neighborhoodList = _modelNeighborhoodQuery.NeighborhoodsFor(individual.Neighborhoods, modelProperties).ToList();

            foreach (var neighborhood in neighborhoodList)
            {
                addNeighborhood(neighborhood, spatialStructure, individual.OriginData, modelProperties, formulaCache);
            }

            _neighborhoodFinalizer.SetNeighborsIn(organism, neighborhoodList);
        }
示例#21
0
        private void updateParameterFromIndividual(ISpatialStructure spatialStructure, Individual individual)
        {
            //Update parameter values for parameter that have been changed in individual
            var allIndividualParameter    = new PathCache <IParameter>(_entityPathResolver).For(individual.GetAllChildren <IParameter>());
            var allContainerParameters    = new PathCache <IParameter>(_entityPathResolver).For(spatialStructure.TopContainers.SelectMany(x => x.GetAllChildren <IParameter>()));
            var allNeighborhoodParameters = new PathCache <IParameter>(_entityPathResolver).For(spatialStructure.Neighborhoods.SelectMany(x => x.GetAllChildren <IParameter>()));

            _parameterSetUpdater.UpdateValues(allIndividualParameter, allContainerParameters);
            _parameterSetUpdater.UpdateValues(allIndividualParameter, allNeighborhoodParameters);
            _parameterIdUpdater.UpdateBuildingBlockId(allContainerParameters, individual);
            _parameterIdUpdater.UpdateBuildingBlockId(allNeighborhoodParameters, individual);
        }
示例#22
0
        private bool canAddNewParametersTo(ISpatialStructure spatialStructure)
        {
            //spatialStructure has needed parameters, so it is assumed it is original from PK-Sim
            var organism = spatialStructure.TopContainers.FirstOrDefault(tc => tc.IsNamed("Organism"));

            if (organism == null)
            {
                return(false);
            }
            return
                (organism.ContainsNames(new[] { "Hematocrit", "Vf (lipid, blood cells)", "Vf (protein,blood cells)", "Vf (water,blood cells)" }));
        }
示例#23
0
        protected override void Context()
        {
            base.Context();
            _spatialStructure = new SpatialStructure();
            var organism = new Container().WithName(Constants.ORGANISM);

            _spatialStructure.AddTopContainer(organism);
            var gallbladder = new Container().WithName(Converter321To331.Gallbladder).WithParentContainer(organism);

            _param = new Parameter().WithName("Volume").WithParentContainer(gallbladder);
            _spatialStructure.GlobalMoleculeDependentProperties = new Container();
            _spatialStructure.NeighborhoodsContainer            = new Container();
        }
        public IMoleculeStartValuesBuildingBlock CreateFrom(ISpatialStructure spatialStructure, IMoleculeBuildingBlock moleculeBuildingBlock)
        {
            var moleculesStartValues = _objectBaseFactory.Create <IMoleculeStartValuesBuildingBlock>();

            moleculesStartValues.SpatialStructureId      = spatialStructure.Id;
            moleculesStartValues.MoleculeBuildingBlockId = moleculeBuildingBlock.Id;
            foreach (var container in spatialStructure.PhysicalContainers)
            {
                addMoleculesFrom(moleculesStartValues, container, moleculeBuildingBlock);
            }

            return(moleculesStartValues);
        }
 protected override void Context()
 {
     _spatialStructureFactory      = A.Fake <IPKSimSpatialStructureFactory>();
     _modelObserverQuery           = A.Fake <IModelObserverQuery>();
     _modelPassiveTransportQuery   = A.Fake <IModelPassiveTransportQuery>();
     _parameterStartValueCreator   = A.Fake <IPKSimParameterStartValuesCreator>();
     _moleculesAndReactionsCreator = A.Fake <IMoleculesAndReactionsCreator>();
     _eventBuildingBlockCreator    = A.Fake <IEventBuildingBlockCreator>();
     _moleculeStartValueCreator    = A.Fake <IPKSimMoleculeStartValuesCreator>();
     _moleculeCalculationRetriever = A.Fake <IMoleculeCalculationRetriever>();
     _distributedTableConverter    = A.Fake <IDistributedParameterToTableParameterConverter>();
     _parameterDefaultStateUpdater = A.Fake <IParameterDefaultStateUpdater>();
     _cm1        = new CoreCalculationMethod();
     _cm2        = new CoreCalculationMethod();
     _simulation = new IndividualSimulation {
         Properties = new SimulationProperties()
     };
     _simulation.SimulationSettings = new SimulationSettings();
     _simulation.ModelConfiguration = new ModelConfiguration();
     _individual                      = new Individual().WithName("MyIndividuyal");
     _compound                        = A.Fake <Compound>().WithName("MyCompound");
     _protocol                        = new SimpleProtocol().WithName("MyProtocol");
     _spatialStructure                = A.Fake <ISpatialStructure>();
     _passiveTransportBuilingBlock    = A.Fake <IPassiveTransportBuildingBlock>();
     _observerBuildingBlock           = A.Fake <IObserverBuildingBlock>();
     _eventBuildingBlock              = A.Fake <IEventGroupBuildingBlock>();
     _parameterValuesBuildingBlock    = A.Fake <IParameterStartValuesBuildingBlock>();
     _moleculeStartValueBuildingBlock = A.Fake <IMoleculeStartValuesBuildingBlock>();
     _simulation.AddUsedBuildingBlock(new UsedBuildingBlock("Individual", PKSimBuildingBlockType.Individual)
     {
         BuildingBlock = _individual
     });
     _simulation.AddUsedBuildingBlock(new UsedBuildingBlock("Compound", PKSimBuildingBlockType.Compound)
     {
         BuildingBlock = _compound
     });
     _simulation.AddUsedBuildingBlock(new UsedBuildingBlock("Protocol", PKSimBuildingBlockType.Protocol)
     {
         BuildingBlock = _protocol
     });
     A.CallTo(() => _moleculeCalculationRetriever.AllMoleculeCalculationMethodsUsedBy(_simulation)).Returns(new[] { _cm1, _cm2 });
     A.CallTo(() => _spatialStructureFactory.CreateFor(_individual, _simulation)).Returns(_spatialStructure);
     A.CallTo(() => _modelPassiveTransportQuery.AllPassiveTransportsFor(_simulation)).Returns(_passiveTransportBuilingBlock);
     A.CallTo(() => _modelObserverQuery.AllObserversFor(A <IMoleculeBuildingBlock> .Ignored, _simulation)).Returns(_observerBuildingBlock);
     A.CallTo(() => _eventBuildingBlockCreator.CreateFor(_simulation)).Returns(_eventBuildingBlock);
     A.CallTo(() => _parameterStartValueCreator.CreateFor(A <IBuildConfiguration> .Ignored, A <Simulation> .Ignored)).Returns(_parameterValuesBuildingBlock);
     A.CallTo(() => _moleculeStartValueCreator.CreateFor(A <IBuildConfiguration> .Ignored, A <Simulation> .Ignored)).Returns(_moleculeStartValueBuildingBlock);
     sut = new BuildConfigurationTask(_spatialStructureFactory, _modelObserverQuery, _modelPassiveTransportQuery, _parameterStartValueCreator,
                                      _moleculesAndReactionsCreator, _eventBuildingBlockCreator, _moleculeStartValueCreator, _moleculeCalculationRetriever,
                                      _distributedTableConverter, _parameterDefaultStateUpdater);
 }
示例#26
0
        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;
            }
        }
示例#27
0
        private void addChildrenFromSpatialStructure(List <IObjectBaseDTO> children, ISpatialStructure spatialStructure)
        {
            if (spatialStructure == null)
            {
                return;
            }

            children.AddRange(
                spatialStructure.TopContainers.ToEnumerable <IContainer, IObjectBase>()
                .OrderBy(x => x.Name)
                .MapAllUsing(_objectBaseDTOMapper));

            children.Add(_objectBaseDTOMapper.MapFrom(spatialStructure.NeighborhoodsContainer));
            addChildrenFromContainer(children, spatialStructure.GlobalMoleculeDependentProperties);
        }
示例#28
0
        private IEnumerable <IObjectPath> moleculesInvolvedInExpression(ISpatialStructure spatialStructure, IndividualMolecule molecule,
                                                                        IReadOnlyList <CompoundProperties> compoundPropertiesList)
        {
            foreach (var expressionContainer in _expressionContainersRetriever.AllContainersFor(spatialStructure, molecule))
            {
                var containerPath = _objectPathFactory.CreateAbsoluteObjectPath(expressionContainer);

                foreach (var compoundProperties in compoundPropertiesList)
                {
                    foreach (var moleculeName in compoundProperties.Processes.AllInducedMoleculeNames(molecule))
                    {
                        yield return(containerPath.Clone <IObjectPath>().AndAdd(moleculeName));
                    }
                }
            }
        }
示例#29
0
 protected override void Context()
 {
     base.Context();
     _spatialStructure  = A.Fake <ISpatialStructure>();
     _parent            = A.Fake <IContainer>();
     _containerToRemove = A.Fake <IContainer>();
     _containerToRemove.ParentContainer = _parent;
     _firstNeighborRemove  = new NeighborhoodBuilder().WithFirstNeighbor(_containerToRemove).WithSecondNeighbor(A.Fake <IContainer>());
     _secondNeighborRemove = new NeighborhoodBuilder().WithFirstNeighbor(A.Fake <IContainer>()).WithSecondNeighbor(_containerToRemove);
     A.CallTo(() => _spatialStructure.Neighborhoods).Returns(new[]
     {
         new NeighborhoodBuilder().WithFirstNeighbor(A.Fake <IContainer>()).WithSecondNeighbor(A.Fake <IContainer>()),
         _firstNeighborRemove,
         _secondNeighborRemove
     });
 }
示例#30
0
        public IParameterStartValuesBuildingBlock CreateFrom(ISpatialStructure spatialStructure, IMoleculeBuildingBlock moleculeBuildingBlock)
        {
            var paramsStartValues = _objectBaseFactory.Create <IParameterStartValuesBuildingBlock>();

            paramsStartValues.SpatialStructureId      = spatialStructure.Id;
            paramsStartValues.MoleculeBuildingBlockId = moleculeBuildingBlock.Id;

            addMoleculeParameterValues(paramsStartValues, spatialStructure, moleculeBuildingBlock);

            addTopContainersParameterValues(paramsStartValues, spatialStructure.TopContainers, moleculeBuildingBlock);

            addContainerListParameterValue(paramsStartValues, spatialStructure.Neighborhoods, moleculeBuildingBlock);

            addGlobalMoleculeParameterValues(paramsStartValues, spatialStructure.GlobalMoleculeDependentProperties, moleculeBuildingBlock);

            return(paramsStartValues);
        }