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

57 lines
2.1 KiB
Python
Executable File

#!/usr/bin/env python3
"""Skill wrapper for the bbav5 TFBS CLI stage."""
from __future__ import annotations
import argparse
import subprocess
import sys
from pathlib import Path
PROJECT_ROOT = Path(__file__).resolve().parents[2]
CLI = PROJECT_ROOT / "apps" / "cli" / "run_tfbs.py"
def main() -> int:
parser = argparse.ArgumentParser(description="Run bbav5 TFBS prediction skill.")
parser.add_argument("--input-dir", type=Path, required=True)
parser.add_argument("--workspace", type=Path, required=True)
parser.add_argument("--prefix", required=True)
parser.add_argument("--cpu", type=int, default=4)
parser.add_argument("--scope-file", type=Path, default=None)
parser.add_argument("--upstream-length", type=int, default=2000)
parser.add_argument("--motif-db-mode", default="auto")
parser.add_argument("--fimo-pvalue", type=float, default=0.0001)
parser.add_argument("--fimo-qvalue", type=float, default=0.05)
parser.add_argument("--background-mode", default="none")
parser.add_argument("--max-nearest-rank", default="order")
parser.add_argument("--top-motifs", type=int, default=30)
parser.add_argument("--scan-both-strands", action=argparse.BooleanOptionalAction, default=True)
args = parser.parse_args()
cmd = [
sys.executable,
str(CLI),
"--input-dir", str(args.input_dir),
"--workspace", str(args.workspace),
"--prefix", args.prefix,
"--cpu", str(args.cpu),
"--upstream-length", str(args.upstream_length),
"--motif-db-mode", args.motif_db_mode,
"--fimo-pvalue", str(args.fimo_pvalue),
"--fimo-qvalue", str(args.fimo_qvalue),
"--background-mode", args.background_mode,
"--max-nearest-rank", args.max_nearest_rank,
"--top-motifs", str(args.top_motifs),
]
if args.scope_file:
cmd.extend(["--scope-file", str(args.scope_file)])
if not args.scan_both_strands:
cmd.append("--no-scan-both-strands")
return subprocess.call(cmd, cwd=str(PROJECT_ROOT))
if __name__ == "__main__":
raise SystemExit(main())