while parent is not None and parent.time < time: if parent.parent is not None and parent.parent.time < time: parent = parent.parent else: break if parent is None: return hit else: return parent def build_tree(f, args, chrom, pop_sizes): for line in f: # Skip over a line, which contains the seed for a simulation run. line = f.next() data = eval(line) for r in range(args.reps): generate_trees(data[chrom], args.size1, args.size2, pop_sizes, args.internal) if __name__ == '__main__': parser = parse_common_arguments('Construct gene tree.') parser.add_argument('-i', '--internal', action = 'store_true', help = 'output names of internal nodes') run(parser.parse_args(), build_tree)
if coal_gen.count(i) == 2][0] unchanged = [0, 0] for s1 in coal_gen[:size1]: if s1 < pop_size / 2 and s1 != merged: unchanged[0] += 1 for s2 in coal_gen[size1:]: if s2 < pop_size / 2 and s2 != merged: unchanged[1] += 1 merged1 = coal_gen.index(merged) merged2 = coal_gen.index(merged, merged1 + 1) if merged1 < size1 and merged2 < size1: ctype = 0 elif merged1 < size1: ctype = 1 else: ctype = 2 if merged < pop_size / 2: deme = 1 else: deme = 2 print('{}, {}, {}, {}, {}'.format( time, unchanged[0], unchanged[1], deme, ctype)) return True if __name__ == '__main__': run(parse_common_arguments('Summarize coalescence time and exit states').parse_args(), get_exit_states)