make_treeseq_svg = async (seed, mutseed) => {
await pyodide.loadPackage("msprime");
const msprime = await pyodide.pyimport("msprime");
const ts = msprime.sim_ancestry.callKwargs({samples: 5,
recombination_rate: 0.0,
sequence_length:1e6,
random_seed:seed,
population_size: 1000,
record_full_arg: false,
model: "dtwf"});
let output = 1;
let myns = {ts: ts, "mutseed": mutseed, output: output};
pyodide.registerJsModule("myns", myns);
pyodide.runPython(`
from myns import ts, mutseed, output
import msprime
tables = ts.dump_tables()
tscopy = tables.tree_sequence()
local_mutseed = mutseed
tsmut = msprime.sim_mutations(tree_sequence=tscopy,
model= msprime.BinaryMutationModel(),
random_seed= local_mutseed,
rate= 1e-9);
# while tsmut.num_mutations < 4 or tsmut.num_mutations > 10:
# # This is fragile in general, and only works b/c we constrain the user
# # input
# local_mutseed+=1;
# tscopy = tables.tree_sequence();
# tsmut = msprime.sim_mutations(tree_sequence= tscopy,
# model= msprime.BinaryMutationModel(),
# random_seed= local_mutseed,
# rate= 1e-9)
# print(tsmut.num_mutations)
myns.output = tsmut
`);
return myns.output;
}