Skip to content

Commit 56497d4

Browse files
committed
Add tskit CLI
1 parent 598c95f commit 56497d4

File tree

3 files changed

+57
-3
lines changed

3 files changed

+57
-3
lines changed

bio2zarr/cli.py

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

bio2zarr/tskit.py

+5-3
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

+1
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)