Skip to content

Commit c3606b2

Browse files
committed
Add tskit CLI
1 parent 598c95f commit c3606b2

File tree

3 files changed

+56
-3
lines changed

3 files changed

+56
-3
lines changed

bio2zarr/cli.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
from . import icf as icf_mod
1212
from . import plink, provenance, vcf_utils
13+
from . import tskit as tskit_mod
1314

1415
logger = logging.getLogger(__name__)
1516

@@ -630,3 +631,52 @@ def vcfpartition(vcfs, verbose, num_partitions, partition_size):
630631
)
631632
for region in regions:
632633
click.echo(f"{region}\t{vcf_path}")
634+
635+
636+
@click.command(name="convert")
637+
@click.argument("ts_path", type=click.Path(exists=True))
638+
@click.argument("zarr_path", type=click.Path())
639+
@click.option("--contig-id", type=str, help="Contig/chromosome ID (default: '1')")
640+
@click.option(
641+
"--isolated-as-missing", is_flag=True, help="Treat isolated nodes as missing"
642+
)
643+
@variants_chunk_size
644+
@samples_chunk_size
645+
@verbose
646+
@progress
647+
@worker_processes
648+
@force
649+
def convert_tskit(
650+
ts_path,
651+
zarr_path,
652+
contig_id,
653+
isolated_as_missing,
654+
variants_chunk_size,
655+
samples_chunk_size,
656+
verbose,
657+
progress,
658+
worker_processes,
659+
force,
660+
):
661+
setup_logging(verbose)
662+
check_overwrite_dir(zarr_path, force)
663+
664+
tskit_mod.convert(
665+
ts_path,
666+
zarr_path,
667+
contig_id=contig_id,
668+
isolated_as_missing=isolated_as_missing,
669+
variants_chunk_size=variants_chunk_size,
670+
samples_chunk_size=samples_chunk_size,
671+
worker_processes=worker_processes,
672+
show_progress=progress,
673+
)
674+
675+
676+
@version
677+
@click.group(cls=NaturalOrderGroup, name="tskit2zarr")
678+
def tskit2zarr_main():
679+
pass
680+
681+
682+
tskit2zarr_main.add_command(convert_tskit)

bio2zarr/tskit.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class TskitFormat(vcz.Source):
1313
def __init__(
1414
self,
1515
ts_path,
16-
individuals_nodes,
16+
individuals_nodes=None,
1717
sample_ids=None,
1818
contig_id=None,
1919
isolated_as_missing=False,
@@ -24,6 +24,8 @@ def __init__(
2424
self.isolated_as_missing = isolated_as_missing
2525

2626
self.positions = self.ts.sites_position
27+
if individuals_nodes is None:
28+
individuals_nodes = self.ts.individuals_nodes
2729

2830
self._num_samples = individuals_nodes.shape[0]
2931
if self._num_samples < 1:
@@ -213,8 +215,8 @@ def generate_schema(
213215
def convert(
214216
ts_path,
215217
zarr_path,
216-
individuals_nodes,
217218
*,
219+
individuals_nodes=None,
218220
sample_ids=None,
219221
contig_id=None,
220222
isolated_as_missing=False,
@@ -225,7 +227,7 @@ def convert(
225227
):
226228
tskit_format = TskitFormat(
227229
ts_path,
228-
individuals_nodes,
230+
individuals_nodes=individuals_nodes,
229231
sample_ids=sample_ids,
230232
contig_id=contig_id,
231233
isolated_as_missing=isolated_as_missing,

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ documentation = "https://sgkit-dev.github.io/bio2zarr/"
5252
[project.scripts]
5353
vcf2zarr = "bio2zarr.cli:vcf2zarr_main"
5454
vcfpartition = "bio2zarr.cli:vcfpartition"
55+
tskit2zarr = "bio2zarr.cli:tskit2zarr_main"
5556

5657
[project.optional-dependencies]
5758
dev = [

0 commit comments

Comments
 (0)