54 lines
1.8 KiB
Python
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())
|