Files
PlantAI-dev/scripts/run_blast_pipeline.py
T

45 lines
1.5 KiB
Python
Raw Normal View History

2026-08-03 18:42:47 +08:00
# scripts/run_blast_pipeline.py
import argparse
from pathlib import Path
import sys
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from pipelines.blast_pipeline import run_blastp_pipeline
def main():
ap = argparse.ArgumentParser("--interactive", action="store_true", help="交互式设置阈值(回车=默认值)")
ap.add_argument("--ref", required=True, help="参考家族蛋白 fasta(如 SPL_Ath.fasta)")
ap.add_argument("--query", required=True, help="目标物种全蛋白 fasta(如 Ft.pep.fasta)")
ap.add_argument("--out", required=True, help="输出目录")
ap.add_argument("--prefix", required=True, help="输出前缀(如 Ft.SPL)")
ap.add_argument("--evalue", type=float, default=1e-5)
ap.add_argument("--pident", type=float, default=30.0)
ap.add_argument("--qcov", type=float, default=40.0)
ap.add_argument("--scov", type=float, default=40.0)
ap.add_argument("--threads", type=int, default=8)
args = ap.parse_args()
out = run_blastp_pipeline(
reference_fasta=args.ref,
query_fasta=args.query,
out_dir=args.out,
prefix=args.prefix,
evalue_max=args.evalue,
pident_min=args.pident,
qcov_min=args.qcov,
scov_min=args.scov,
threads=args.threads,
)
print("=== DONE ===")
print("blastout:", out.blastout)
print("filtered_tsv:", out.filtered_tsv)
print("id_list:", out.id_list)
print(f"hits: {out.hit_count}, unique_ids: {out.unique_id_count}")
if __name__ == "__main__":
main()