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())) print('Observed trait variance: {}'.format(y.var()))
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: sim.set_trait(trait) if args.constraintfile: sim.read_constraints(args.constraintfile) sim.prefix = args.prefix sim.run(verbose=args.verbosity, output_predicate=args.predicate, compression=args.compress, writeibd=args.ibd)