public ParameterValue[] CreateIndividual(OriginData matlabOriginData, IEnumerable <MoleculeOntogeny> moleculeOntogenies)
        {
            var originData              = originDataFrom(matlabOriginData);
            var individual              = _individualFactory.CreateAndOptimizeFor(originData);
            var individualProperties    = _individualPropertiesMapper.MapFrom(individual);
            var allIndividualParameters = individualProperties.ParameterValues.ToList();

            allIndividualParameters.AddRange(_ontogenyFactorsRetriever.FactorsFor(originData, moleculeOntogenies));
            return(allIndividualParameters.ToArray());
        }
        public Individual CreateBaseIndividualForPopulation(Individual originalIndividual)
        {
            //we need to create a new individual WITHOUT CKD and set all percentiles as in the original individuals. Other parameters, value wil be taken as is
            var originData = originalIndividual.OriginData.Clone();

            //remove the disease state to create a healthy Individual
            originData.DiseaseState = null;
            var healthyIndividual = _individualFactory.CreateAndOptimizeFor(originData, originalIndividual.Seed);

            var allCKDParameters = parametersChangedByCKDAlgorithmAsList(healthyIndividual);

            //Make sure we update the flags that might not be set coming from the database
            allCKDParameters.Each(x => x.IsChangedByCreateIndividual = true);

            //do not update parameters changed by CKD algorithm or that are not visible
            var allHealthyParameters  = _containerTask.CacheAllChildrenSatisfying <IParameter>(healthyIndividual, x => !allCKDParameters.Contains(x) && x.Visible);
            var allOriginalParameters = _containerTask.CacheAllChildren <IParameter>(originalIndividual);

            _parameterSetUpdater.UpdateValues(allOriginalParameters, allHealthyParameters);

            //we have a healthy individuals based on the CKD individual where all changes were all manual changes were accounted for
            //we now need to add the disease state contributions from the original individual
            originData.DiseaseState = originalIndividual.OriginData.DiseaseState;
            originalIndividual.OriginData.DiseaseStateParameters.Each(x => originData.AddDiseaseStateParameter(x.Clone()));

            return(healthyIndividual);
        }
Example #3
0
        private Individual createIndividual()
        {
            var originData = new OriginData
            {
                Species    = CoreConstants.Species.HUMAN,
                Population = CoreConstants.Population.ICRP,
                Age        = new Parameter
                {
                    Value = 30,
                    Unit  = "year(s)",
                },
                Weight = new Parameter
                {
                    Value = 75,
                    Unit  = "kg",
                },
                Height = new Parameter
                {
                    Value = 175,
                    Unit  = "cm",
                },
                Gender = CoreConstants.Gender.MALE
            };

            var modelOriginData = _originDataMapper.MapToModel(originData, new SnapshotContext()).Result;
            var individual      = _individualFactory.CreateAndOptimizeFor(modelOriginData);

            return(individual);
        }
Example #4
0
        public Model.Individual MapFrom(Individual batchIndividual)
        {
            var batchOriginData = new OriginData
            {
                Species        = batchIndividual.Species,
                Population     = batchIndividual.Population,
                Gender         = batchIndividual.Gender,
                Age            = batchIndividual.Age.GetValueOrDefault(double.NaN),
                Height         = batchIndividual.Height.GetValueOrDefault(double.NaN),
                Weight         = batchIndividual.Weight.GetValueOrDefault(double.NaN),
                GestationalAge = batchIndividual.GestationalAge.GetValueOrDefault(double.NaN),
            };

            var originData = _originDataMapper.MapFrom(batchOriginData);
            var individual = _individualFactory.CreateAndOptimizeFor(originData, batchIndividual.Seed).WithName("Individual");

            batchIndividual.Enzymes.Each(enzyme => addMoleculeTo <IndividualEnzyme>(individual, enzyme));
            batchIndividual.OtherProteins.Each(otherProtein => addMoleculeTo <IndividualOtherProtein>(individual, otherProtein));
            batchIndividual.Transporters.Each(transporter =>
            {
                var individualTransporter           = addMoleculeTo <IndividualTransporter>(individual, transporter);
                individualTransporter.TransportType = EnumHelper.ParseValue <TransportType>(transporter.TransportType);
                _batchLogger.AddDebug($"Transport type for transporter '{individualTransporter.Name}' is {individualTransporter.TransportType}");
            });

            return(individual);
        }
Example #5
0
        private void updateLiverStructure(Individual individual)
        {
            var templateIndividual = _individualFactory.CreateAndOptimizeFor(individual.OriginData);
            var originalLiver      = liverIn(individual);
            var newLiver           = _cloner.Clone(liverIn(templateIndividual));

            individual.Organism.RemoveChild(originalLiver);
            individual.Organism.Add(newLiver);

            updateContainerParameterValues(originalLiver, newLiver);

            addMissingNeighborhoods(individual, templateIndividual);
            removeOldNeighbhorhoods(individual);
        }
Example #6
0
        public override async Task <ModelIndividual> MapToModel(SnapshotIndividual individualSnapshot)
        {
            var originData = await _originDataMapper.MapToModel(individualSnapshot.OriginData);

            var individual = _individualFactory.CreateAndOptimizeFor(originData, individualSnapshot.Seed);

            MapSnapshotPropertiesToModel(individualSnapshot, individual);
            await updateIndividualParameters(individualSnapshot, individual);

            var molecules = await _moleculeMapper.MapToModels(individualSnapshot.Molecules, individual);

            molecules?.Each(individual.AddMolecule);
            return(individual);
        }
Example #7
0
        public override async Task <ModelIndividual> MapToModel(SnapshotIndividual individualSnapshot, SnapshotContext snapshotContext)
        {
            var originData = await _originDataMapper.MapToModel(individualSnapshot.OriginData, snapshotContext);

            var individual = _individualFactory.CreateAndOptimizeFor(originData, individualSnapshot.Seed);

            MapSnapshotPropertiesToModel(individualSnapshot, individual);

            await updateIndividualParameters(individualSnapshot, individual, snapshotContext);

            if (snapshotContext.IsV10FormatOrEarlier)
            {
                await convertMoleculesToExpressionProfiles(individualSnapshot, snapshotContext);
            }

            individualSnapshot.ExpressionProfiles?.Each(x =>
            {
                var expressionProfile = snapshotContext.Project.BuildingBlockByName <Model.ExpressionProfile>(x);
                _moleculeExpressionTask.AddExpressionProfile(individual, expressionProfile);
            });

            individual.Icon = individual.Species.Icon;
            return(individual);
        }
Example #8
0
 public PKSim.Core.Model.Individual MapFrom(IndividualSettingsDTO individualSettingsDTO)
 {
     return(_individualFactory.CreateAndOptimizeFor(_mapper.MapFrom(individualSettingsDTO)));
 }
 public Individual MapFrom(IndividualSettingsDTO individualSettingsDTO)
 {
     return(_individualFactory.CreateAndOptimizeFor(_originDataMapper.MapFrom(individualSettingsDTO)));
 }