83 lines
2.8 KiB
Python
Executable File
83 lines
2.8 KiB
Python
Executable File
#!/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()
|