Files
PlantAI-dev/scripts/run_identify.py
T
2026-08-03 18:42:47 +08:00

83 lines
2.8 KiB
Python
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env python3
import argparse
from pathlib import Path
import sys
def main():
ap = argparse.ArgumentParser(description="Run identification workflow (multi-agent).")
ap.add_argument("--hmm-id", required=True)
ap.add_argument("--blast-id", required=True)
ap.add_argument("--pep", required=True, help="proteins fasta")
ap.add_argument("--pfam", required=True, help="Pfam-A.hmm")
ap.add_argument("--out", required=True, help="workspace output dir")
ap.add_argument("--prefix", required=True)
ap.add_argument("--required", default="PF03110", help="comma-separated")
ap.add_argument("--dom-i-evalue", type=float, default=1e-5)
ap.add_argument("--hmm-cov", type=float, default=0.5)
ap.add_argument("--cpu", type=int, default=8)
ap.add_argument("--cut-ga", action="store_true")
ap.add_argument("--force", action="store_true")
args = ap.parse_args()
# ✅ 先把项目根加入 sys.path(你的结构是 .../bba/bba/{agents,workflows,pipelines,scripts})
project_root = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(project_root))
# ✅ 再 import 项目内模块(避免 “No module named agents”)
from agents.context import RunContext
from agents.params import IdentifyParams
from agents.identify.merge_agent import MergeAgent
from agents.identify.extract_agent import ExtractAgent
from agents.identify.domain_agent import DomainAgent
from agents.identify.report_agent import ReportAgent
# 如果你已经加了 FinalFastaAgent(可选)
try:
from agents.identify.final_fasta_agent import FinalFastaAgent
except ModuleNotFoundError:
FinalFastaAgent = None
from workflows.identify_workflow import IdentifyWorkflow
ctx = RunContext(workspace=Path(args.out), prefix=args.prefix, force=args.force)
params = IdentifyParams(
hmm_id=args.hmm_id,
blast_id=args.blast_id,
pep_fasta=args.pep,
pfam_hmm=args.pfam,
required_pfams=args.required,
dom_i_evalue=args.dom_i_evalue,
hmm_cov=args.hmm_cov,
cpu=args.cpu,
cut_ga=args.cut_ga,
)
# 兼容:如果 workflow 你已经扩展成 5 个 agent(含 FinalFastaAgent)
if FinalFastaAgent is not None:
wf = IdentifyWorkflow(
merge_agent=MergeAgent(),
extract_agent=ExtractAgent(),
domain_agent=DomainAgent(),
final_fasta_agent=FinalFastaAgent(),
report_agent=ReportAgent(),
)
else:
wf = IdentifyWorkflow(
merge_agent=MergeAgent(),
extract_agent=ExtractAgent(),
domain_agent=DomainAgent(),
report_agent=ReportAgent(),
)
wf.run(ctx, params)
print("Identify workflow finished.")
if __name__ == "__main__":
main()