protected override Task Context()
        {
            _advancedParameterMapper        = A.Fake <AdvancedParameterMapper>();
            _randomPopulationFactory        = A.Fake <IRandomPopulationFactory>();
            _randomPopulationSettingsMapper = A.Fake <RandomPopulationSettingsMapper>();
            sut = new PopulationMapper(_advancedParameterMapper, _randomPopulationSettingsMapper, _randomPopulationFactory);

            _advancedParameters = new AdvancedParameterCollection();
            _advancedParameter  = new AdvancedParameter
            {
                DistributedParameter = DomainHelperForSpecs.NormalDistributedParameter()
            };

            _advancedParameters.AddAdvancedParameter(_advancedParameter);
            _advancedParameterSnapshot = new Snapshots.AdvancedParameter();
            A.CallTo(() => _advancedParameterMapper.MapToSnapshot(_advancedParameter)).Returns(_advancedParameterSnapshot);


            _population = CreateRandomPopulation();

            _settingsSnapshot = new PopulationSettings();
            A.CallTo(() => _randomPopulationSettingsMapper.MapToSnapshot(_population.Settings)).Returns(_settingsSnapshot);

            return(Task.FromResult(true));
        }
        public RandomPopulationSettings MapFrom(PopulationSettings batchPopulationSettings)
        {
            var originData = originDataFrom(batchPopulationSettings);

            var individual         = _individualFactory.CreateStandardFor(originData);
            var populationSettings = _individualToPopulationSettingsMapper.MapFrom(individual);

            populationSettings.NumberOfIndividuals = batchPopulationSettings.NumberOfIndividuals;

            setRange(populationSettings, CoreConstants.Parameter.AGE, batchPopulationSettings.MinAge, batchPopulationSettings.MaxAge);
            setRange(populationSettings, CoreConstants.Parameter.MEAN_HEIGHT, batchPopulationSettings.MinHeight, batchPopulationSettings.MaxHeight);
            setRange(populationSettings, CoreConstants.Parameter.MEAN_WEIGHT, batchPopulationSettings.MinWeight, batchPopulationSettings.MaxWeight);
            setRange(populationSettings, CoreConstants.Parameter.BMI, batchPopulationSettings.MinBMI, batchPopulationSettings.MaxBMI);

            if (populationSettings.ContainsParameterRangeFor(CoreConstants.Parameter.GESTATIONAL_AGE))
            {
                setRange(populationSettings, CoreConstants.Parameter.GESTATIONAL_AGE, batchPopulationSettings.MinGestationalAge, batchPopulationSettings.MaxGestationalAge);
            }

            //in case of multiple gender, adjust the ration according to the feamales proportion
            if (individual.AvailableGenders().Count() > 1)
            {
                populationSettings.GenderRatio(_genderRepository.Female).Ratio = batchPopulationSettings.ProportionOfFemales;
                populationSettings.GenderRatio(_genderRepository.Male).Ratio   = 100 - batchPopulationSettings.ProportionOfFemales;
            }

            return(populationSettings);
        }
Beispiel #3
0
        public IParameterValueCache CreatePopulation(PopulationSettings matlabPopulationSettings, IEnumerable <MoleculeOntogeny> moleculeOntogenies)
        {
            var populationSettings = _populationSettingsMapper.MapFrom(matlabPopulationSettings);
            var population         = _randomPopulationFactory.CreateFor(populationSettings, new CancellationToken()).Result;

            foreach (var moleculeOntogeny in moleculeOntogenies)
            {
                var allOntogeniesForSpecies = _ontogenyRepository.AllFor(matlabPopulationSettings.Individual.OriginData.Species).ToList();
                if (!allOntogeniesForSpecies.Any())
                {
                    continue;
                }

                var ontogeny = allOntogeniesForSpecies.FindByName(moleculeOntogeny.Ontogeny);
                if (ontogeny == null)
                {
                    continue;
                }

                var molecule = _individualEnzymeFactory.CreateEmpty().WithName(moleculeOntogeny.Molecule);
                molecule.Ontogeny = ontogeny;

                population.AddMolecule(molecule);
            }

            _ontogenyVariabilityUpdater.UpdateAllOntogenies(population);

            return(population.IndividualPropertiesCache);
        }
Beispiel #4
0
        public IParameterValueCache CreatePopulation(PopulationSettings matlabPopulationSettings, IEnumerable <string> moleculeNames)
        {
            var populationSettings = _populationSettingsMapper.MapFrom(matlabPopulationSettings);
            var population         = _randomPopulationFactory.CreateFor(populationSettings, new CancellationToken()).Result;

            return(population.IndividualPropertiesCache);
        }
Beispiel #5
0
        protected override void Context()
        {
            base.Context();
            var originData = new OriginData
            {
                Species    = CoreConstants.Species.HUMAN,
                Population = CoreConstants.Population.ICRP,
            };

            originData.AddCalculationMethods("SurfaceAreaPlsInt_VAR1");

            _settings = new PopulationSettings
            {
                Individual = new Individual
                {
                    OriginData = originData
                },
                Age = new ParameterRange
                {
                    Min  = 0,
                    Max  = 80,
                    Unit = "year(s)",
                },
                Weight = new ParameterRange
                {
                    Min  = 70,
                    Unit = "kg",
                },
                NumberOfIndividuals = 10,
                ProportionOfFemales = 70
            };

            _moleculeOntogenies = new [] { new MoleculeOntogeny("CYP3A4", "CYP3A4"), new MoleculeOntogeny("CYP2D6", "CYP2D6") };
        }
        private Model.OriginData originDataFrom(PopulationSettings batchPopulationSettings)
        {
            //create default individual based on given data
            var batchOriginData = new OriginData
            {
                Species    = batchPopulationSettings.Species,
                Population = batchPopulationSettings.Population
            };

            batchPopulationSettings.AllCalculationMethods.KeyValues.Each(kv => batchOriginData.AddCalculationMethod(kv.Key, kv.Value));

            return(_originDataMapper.MapFrom(batchOriginData));
        }
 protected override void Context()
 {
     base.Context();
     _settings = new PopulationSettings
     {
         Species             = CoreConstants.Species.Human,
         Population          = CoreConstants.Population.ICRP,
         MinAge              = 0,
         MaxAge              = 80,
         MinWeight           = 70,
         NumberOfIndividuals = 10,
         ProportionOfFemales = 70
     };
     _settings.AddCalculationMethod("SurfaceAreaPlsInt", "SurfaceAreaPlsInt_VAR1");
 }
Beispiel #8
0
        public GeneticSimulator(PopulationSettings populationSettings, ScoreSettings scoreSettings, GameSettings gameSettings)
        {
            var gameFactory          = CreateGameFactory(gameSettings, scoreSettings, UpdateGameBoardAsync);
            var offspringGameFactory = CreateGameFactory(gameSettings, scoreSettings, null);

            _populationFitnessFunction = new SnakeGameFitnessFunction(gameFactory);
            _offspringFitnessFunction  = new SnakeGameFitnessFunction(offspringGameFactory);

            _population = new Population
                          (
                populationSettings,
                new PointBasedCrossoverOperator(),
                new SoftmaxSelectionOperator(),
                new MutationOperator(),
                () => (Individual)gameFactory.CreatePlayer()
                          );
            _population.GenerationCompleted += OnGenerationFinished;

            _tokenSource = new CancellationTokenSource();
        }
Beispiel #9
0
        protected override void Context()
        {
            base.Context();

            var originData = new OriginData
            {
                Species    = CoreConstants.Species.HUMAN,
                Population = CoreConstants.Population.PRETERM,
            };

            originData.AddCalculationMethods("SurfaceAreaPlsInt_VAR1");

            _settings = new PopulationSettings
            {
                Individual = new Individual
                {
                    OriginData = originData
                },
                Age = new ParameterRange
                {
                    Min  = 0,
                    Max  = 80,
                    Unit = "year(s)",
                },
                Weight = new ParameterRange
                {
                    Min  = 70,
                    Unit = "kg",
                },
                GestationalAge = new ParameterRange
                {
                    Min  = 30,
                    Max  = 35,
                    Unit = "week(s)",
                },

                NumberOfIndividuals = 10,
                ProportionOfFemales = 70
            };
        }