Files
2026-08-03 18:42:47 +08:00

54 lines
1.8 KiB
Python

#!/usr/bin/env python3
"""Skill wrapper for the canonical gwas_fmt CLI."""
from __future__ import annotations
import argparse
import subprocess
import sys
from pathlib import Path
PROJECT_ROOT = Path(__file__).resolve().parents[2]
def build_command(
*, workspace: str, job_id: str, prefix: str, vcf: str,
tassel_pipeline: str = "run_pipeline.pl", xmx: str = "10g",
unsupported_marker_policy: str = "mask",
log_file: str | None = None,
) -> list[str]:
command = [
sys.executable, "-m", "apps.cli.run_gwas_tassel",
"--workspace", workspace, "--job-id", job_id, "--prefix", prefix,
"--vcf", vcf, "--tassel-pipeline", tassel_pipeline, "--xmx", xmx,
"--unsupported-marker-policy", unsupported_marker_policy,
]
if log_file is not None:
command.extend(["--log-file", log_file])
return command
def main() -> int:
parser = argparse.ArgumentParser()
parser.add_argument("--workspace", required=True)
parser.add_argument("--job-id", required=True)
parser.add_argument("--prefix", required=True)
parser.add_argument("--vcf", required=True)
parser.add_argument("--tassel-pipeline", default="run_pipeline.pl")
parser.add_argument("--xmx", default="10g")
parser.add_argument("--unsupported-marker-policy", choices=("mask", "fail"), default="mask")
parser.add_argument("--log-file")
args = parser.parse_args()
command = build_command(
workspace=args.workspace, job_id=args.job_id, prefix=args.prefix, vcf=args.vcf,
tassel_pipeline=args.tassel_pipeline, xmx=args.xmx,
unsupported_marker_policy=args.unsupported_marker_policy,
log_file=args.log_file,
)
return subprocess.call(command, cwd=PROJECT_ROOT)
if __name__ == "__main__":
raise SystemExit(main())