public StackPanel CreateLocusSelector(IGeneBank registeredGenes, Grid parent, IWorld world)
 {
     var sp = new StackPanel
     {
         Orientation = Orientation.Horizontal,
         HorizontalAlignment = HorizontalAlignment.Right,
         VerticalAlignment = VerticalAlignment.Center,
         Name = "locusSelector"
     };
     sp.Margin = new Thickness(0, 5, 5, 0);
     var label = new Label
     {
         Name = "selectorLabel",
         Content = "Active Locus (for View)",
         HorizontalAlignment = HorizontalAlignment.Left
     };
     var cb = new LocusComboBox
     {
         Name = "selectorBox",
         ItemsSource = registeredGenes.Loci,
         MaxHeight = 23,
         Margin = new Thickness(0, 0, 0, 5)
     };
     sp.Children.Add(label);
     sp.Children.Add(cb);
     parent.Children.Add(sp);
     return sp;
 }
 public void CreatePopulation(int numberToCreate, IGeneBank loci)
 {
     for (int i = 0; i < numberToCreate; i++)
     {
         _populus.Add(_personFactory.CreateNewPerson(loci));
     }
     NotifyPropertyChanged("PopulationSize");
 }
Esempio n. 3
0
 public World(IPopulation pop, IPersonFactory pf, IRandomGenerator random, IMortalityCurve mc)
 {
     _mortalityCurve = mc;
     _registeredGenes = new GeneBank(this);
     WorldSeeds.BaseGenes(_registeredGenes, this);
     _population = pop;
     _personFactory = pf;
     _random = random;
     SeedWorld(1001);
 }
 public IPerson MakeBaby(IPerson initializer, List<IPerson> genderList, IGeneBank _registeredGenes)
 {
     var partner = FindPartner(initializer, genderList);
     if (partner != null)
     {
         var baby = CreateChild(initializer, partner, _registeredGenes);
         if (initializer.IsFemale) initializer.GetPregnant();
         return baby;
     }
     return null;
 }
 public static void BaseGenes(IGeneBank geneBank, IWorld world)
 {
     CreateMortalityCurve(world);
     var geneLocations = new List<ILocus>();
     geneLocations.Add(BloodTypeAlleles(world));
     geneLocations.Add(SecondAllele(world));
     // TODO generate the genes!
     foreach (var gene in geneLocations)
     {
         geneBank.AddToBank(gene);
     }
 }
Esempio n. 6
0
 public World(IPopulation pop, IPersonFactory pf, IMortalityCurve mortalityCurve, IRandomGenerator random)
 {
     if (pop?.Populus?.Count > 0) pop.Populus.Clear();
     _random = random;
     _population = pop;
     _registeredGenes = new GeneBank(this);
     _personFactory = pf;
     _mortalityCurve = mortalityCurve;
     WorldSeeds.BaseGenes(_registeredGenes, this);
     SeedWorld(1000);
     _population?.UpdatePopulus();
 }
        public Person CreateNewPerson(IGeneBank locusBank)
        {
            var genes = new List<IGene>();
            foreach (var locus in locusBank.Loci)
            {
                var gene = GenerateNewGene(locus);
                genes.Add(gene);
            }

            var person = new Person(_random, genes, CreateMaleOrFemale());
            return person;
        }
        public IPerson CreateChild(IPerson person, IPerson partner, IGeneBank locusbank)
        {
            var genes = new List<IGene>();
            foreach (var gene in person.Genes)
            {
                var alleles = new List<IAllele>();
                alleles.Add(locusbank.GetAlleleById(SelectAllele(gene)));
                var partnerGene = from g in partner.Genes
                    where g.LocusId == gene.LocusId
                    select g;
                var bob = partnerGene.ToList();
                    alleles.Add(locusbank.GetAlleleById(SelectAllele(bob[0])));

                genes.Add(new Gene(alleles[0], alleles[1], gene.LocusId));
            }
            var child = new Person(_random, genes, _random.BooleanGenerator(1000, 500));
            return child;
        }