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"); }
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); } }
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; }