57 lines
2.1 KiB
Python
Executable File
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())
|