for freq in args.freqs: chr, idx, maf = freq maf = float(maf) chr, idx = int(chr), int(idx) # TODO: Sort out frequency semantics template.chromosomes[chr].frequencies[idx] = 1-maf # Simulation method if args.method.lower() == 'constrained': sim = ConstrainedMendelianSimulation(template, replications=args.replications) elif args.method.lower() == 'genedrop': sim = NaiveGeneDroppingSimulation(template, replications=args.replications) # Read effects file if args.effectfile: trait = Architecture.from_file(args.effectsfile) trait.name = 'affected' else: trait = Architecture('affected','dichotomous') # More effects. Specified effects override file effects. if args.effects: for effect in args.effects: chr, pos, a, k = effect locus = int(chr), int(pos) a, k = int(a), int(k) trait.add_effect(locus, a, k) if args.lthresh: trait.set_liability_threshold(args.lthresh) if args.effects or args.effectfile:
ninds = 5000 nloc = 1000 maf = 0.5 traitname = 'synthetic' # Create population pop = pyd.Population() # Create chromosomes for i in range(100): c = pyd.ChromosomeTemplate() c.add_genotype(maf, 0) pop.add_chromosome(c) # Create trait architecture trait = Architecture('synthetic', 'quantitative', chromosomes=pop.chromosomes) for i in range(100): trait.add_effect((i,0), 1 * (-1 if i % 2 else 1)) print('Locus mean genotypic value: {}'.format(trait.effects[0].expected_genotypic_value)) print('Locus variance: {}'.format(trait.effects[0].locus_additive_variance)) print('Expected trait mean: {}'.format(trait.expected_genotypic_value)) print('Expected trait variance: {}'.format(trait.additive_genetic_variance)) for i in range(ninds): i = pop.founder_individual() i.get_genotypes(linkeq=True) i.phenotypes[traitname] = trait.predict_phenotype(i) y = np.array([i.phenotypes[traitname] for i in pop.individuals]) print('Observed trait mean {}'.format(y.mean()))
import sys import time from pydigree import table from pydigree.simulation import Architecture nchrom = 1 popsize = 500 ngen = 100 pop = pydigree.Population(popsize) for x in range(nchrom): c = pydigree.ChromosomeTemplate() c.add_genotype(0.1,0) pop.add_chromosome(c) trait = Architecture('q','quantitative') for i in range(nchrom): trait.add_effect_liability((i,0), 0, 1) print(trait) pop.initialize_pool() for x in range(popsize): pop.add_founder_individual() def gen(popsize): pop.random_mating_generation(popsize) pop.get_genotypes() pop.remove_ancestry() return pop.allele_frequency((0,0),1) print([round(gen(popsize),2) for x in range(ngen)])