Exemplo n.º 1
0
def integrate_fs(args):
    dg = demes.load(args.yaml)

    final_demes = get_final_demes(dg)

    return moments.Spectrum.from_demes(dg, final_demes,
                                       [2 * args.nsam] * len(final_demes))
Exemplo n.º 2
0
def runsim(args, simseed, npseed):
    dg = demes.load(args.yaml)

    final_demes = get_final_demes(dg)

    demog = fwdpy11.discrete_demography.from_demes(dg, burnin=args.burnin)

    final_deme_ids = sorted([
        i for i in demog.metadata["deme_labels"]
        if demog.metadata["deme_labels"][i] in final_demes
    ])

    initial_sizes = [
        demog.metadata["initial_sizes"][i]
        for i in sorted(demog.metadata["initial_sizes"].keys())
    ]
    recrate = RHO / (4.0 * initial_sizes[0])

    pdict = {
        "nregions": [],
        "sregions": [],
        "recregions": [fwdpy11.PoissonInterval(0, 1, recrate)],
        "gvalue": fwdpy11.Multiplicative(2.0),
        "rates": (0.0, 0.0, None),
        "simlen": demog.metadata["total_simulation_length"],
        "demography": demog,
    }
    params = fwdpy11.ModelParams(**pdict)
    pop = fwdpy11.DiploidPopulation(initial_sizes, 1.0)

    # FIXME: need seed as input argument to this fxn
    rng = fwdpy11.GSLrng(simseed)
    np.random.seed(npseed)

    fwdpy11.evolvets(rng, pop, params, 100)

    nmuts = fwdpy11.infinite_sites(rng, pop, THETA / (4.0 * initial_sizes[0]))

    md = np.array(pop.diploid_metadata, copy=False)
    sample_nodes = []
    for i in final_deme_ids:
        w = np.where(md["deme"] == i)
        s = np.random.choice(w[0], args.nsam, replace=False)
        sample_nodes.append(md["nodes"][s].flatten())

    fs = pop.tables.fs(sample_nodes)

    return fs
Exemplo n.º 3
0
def run_ancestry(args):
    setup_logging(args)
    if args.demography is not None:
        graph = demes.load(args.demography)
        logger.debug(f"Loaded demes graph from {args.demography}")
        demography = msprime.Demography.from_demes(graph)
        samples = parse_sample_spec(args.samples)
    else:
        if len(args.samples) != 1:
            raise ValueError("Samples must be a single integer")
        demography = None
        samples = parse_sample_size(args.samples[0])
    tree_sequence = msprime.sim_ancestry(
        samples=samples,
        demography=demography,
        population_size=args.population_size,
        sequence_length=args.length,
        ploidy=args.ploidy,
        recombination_rate=args.recombination_rate,
        random_seed=args.random_seed,
    )
    tree_sequence.dump(args.output)
Exemplo n.º 4
0
#!/usr/bin/env python3
import demes
import demesdraw


def size_max(graph):
    return max(
        max(epoch.start_size, epoch.end_size) for deme in graph.demes
        for epoch in deme.epochs)


graph = demes.load("models/IM.yaml")
w = 0.8 * size_max(graph)
positions = dict(A=0, X=-w, Y=w)
fig, ax = demesdraw.utils.get_fig_axes(aspect=1)
ax = demesdraw.tubes(graph, ax=ax, positions=positions, seed=1, inf_ratio=0.4)
ax.figure.savefig(
    "fig/IM.pdf",
    # Save with a transparent background.
    transparent=True,
)
Exemplo n.º 5
0
    parser = argparse.ArgumentParser(
        description="validate demes_schedule_events() against the demes graph")
    parser.add_argument(
        "-Q",
        "--scaling_factor",
        type=float,
        default=1.0,
        help="Scaling factor that was applied to speed up the simulation",
    )
    parser.add_argument(
        "slim_out_filename",
        metavar="slim-states.out",
        help="Output from test_demes_schedule_events.slim",
    )
    parser.add_argument(
        "yaml_filename",
        metavar="model.yaml",
        help="The YAML-formatted demes model being simulated.",
    )
    return parser.parse_args()


if __name__ == "__main__":
    args = parse_args()
    graph = demes.load(args.yaml_filename)
    discrete_graph = graph_to_scaled_discrete(
        graph, scaling_factor=args.scaling_factor)
    states = parse_slim_states(args.slim_out_filename)
    check_states_against_graph(states, discrete_graph)
Exemplo n.º 6
0
def size_max(graph):
    return max(
        max(epoch.start_size, epoch.end_size) for deme in graph.demes
        for epoch in deme.epochs)


def get_axes(aspect, scale):
    fig_w, fig_h = plt.figaspect(aspect)
    fig, ax = plt.subplots(figsize=(scale * fig_w, scale * fig_h))
    fig.set_tight_layout(True)
    return ax


if __name__ == "__main__":
    if len(sys.argv) != 3:
        print("usage: {sys.argv[0]} in.yaml out.pdf")
        exit(1)

    yaml_file, plot_file = sys.argv[1:]
    graph = demes.load(yaml_file)
    w = 1.5 * size_max(graph)
    positions = dict(X=0, A=-w, B=w)
    ax = get_axes(aspect=3 / 4, scale=0.5)
    ax = demesdraw.tubes(graph,
                         positions=positions,
                         ax=ax,
                         inf_ratio=0.4,
                         seed=1)
    ax.figure.savefig(plot_file)
Exemplo n.º 7
0
def draw_model(args):
    dg = demes.load(args.yaml)
    outfile = os.path.basename(args.yaml).replace(".yml", "_draw.png")
    _ = demesdraw.tubes(dg)
    plt.savefig(outfile)
    return outfile