Skip to content

Commit 22fb89a

Browse files
szhanmergify[bot]
authored andcommitted
Add migrations subcommand
1 parent a7f0e77 commit 22fb89a

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

python/tests/test_cli.py

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,29 @@ def test_populations_default_values(self):
319319
args = parser.parse_args([cmd, tree_sequence])
320320
assert args.tree_sequence == tree_sequence
321321

322+
def test_migrations_default_values(self):
323+
parser = cli.get_tskit_parser()
324+
cmd = "migrations"
325+
tree_sequence = "test.trees"
326+
args = parser.parse_args([cmd, tree_sequence])
327+
assert args.tree_sequence == tree_sequence
328+
329+
def test_migrations_short_args(self):
330+
parser = cli.get_tskit_parser()
331+
cmd = "migrations"
332+
tree_sequence = "test.trees"
333+
args = parser.parse_args([cmd, tree_sequence, "-p", "2"])
334+
assert args.tree_sequence == tree_sequence
335+
assert args.precision == 2
336+
337+
def test_migrations_long_args(self):
338+
parser = cli.get_tskit_parser()
339+
cmd = "migrations"
340+
tree_sequence = "test.trees"
341+
args = parser.parse_args([cmd, tree_sequence, "--precision", "5"])
342+
assert args.tree_sequence == tree_sequence
343+
assert args.precision == 5
344+
322345
def test_trees_default_values(self):
323346
parser = cli.get_tskit_parser()
324347
cmd = "trees"
@@ -464,6 +487,23 @@ def test_mutations(self):
464487
output_mutations = stdout.splitlines()
465488
self.verify_mutations(output_mutations, precision)
466489

490+
def verify_migrations(self, output_migrations, precision):
491+
with tempfile.TemporaryFile("w+") as f:
492+
self._tree_sequence.dump_text(migrations=f, precision=precision)
493+
f.seek(0)
494+
output = f.read().splitlines()
495+
assert output == output_migrations
496+
497+
def test_migrations(self):
498+
cmd = "migrations"
499+
precision = 4
500+
stdout, stderr = capture_output(
501+
cli.tskit_main, [cmd, self._tree_sequence_file, "-p", str(precision)]
502+
)
503+
assert len(stderr) == 0
504+
output_migrations = stdout.splitlines()
505+
self.verify_migrations(output_migrations, precision)
506+
467507
def verify_provenances(self, output_provenances):
468508
with tempfile.TemporaryFile("w+") as f:
469509
self._tree_sequence.dump_text(provenances=f)
@@ -576,6 +616,9 @@ def test_sites(self):
576616
def test_mutations(self):
577617
self.verify("mutations")
578618

619+
def test_migrations(self):
620+
self.verify("migrations")
621+
579622
def test_provenances(self):
580623
self.verify("provenances")
581624

python/tskit/cli.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,11 @@ def run_populations(args):
111111
tree_sequence.dump_text(populations=sys.stdout)
112112

113113

114+
def run_migrations(args):
115+
tree_sequence = load_tree_sequence(args.tree_sequence)
116+
tree_sequence.dump_text(migrations=sys.stdout, precision=args.precision)
117+
118+
114119
def run_provenances(args):
115120
tree_sequence = load_tree_sequence(args.tree_sequence)
116121
if args.human:
@@ -255,6 +260,13 @@ def get_tskit_parser():
255260
add_tree_sequence_argument(parser)
256261
parser.set_defaults(runner=run_populations)
257262

263+
parser = subparsers.add_parser(
264+
"migrations", help="Output migration information in tabular format."
265+
)
266+
add_tree_sequence_argument(parser)
267+
add_precision_argument(parser)
268+
parser.set_defaults(runner=run_migrations)
269+
258270
parser = subparsers.add_parser(
259271
"provenances", help="Output provenance information in tabular format."
260272
)

0 commit comments

Comments
 (0)