Files
PlantAI-dev/ANALYSIS_FLOW_ANALYSIS.md
2026-08-03 18:42:47 +08:00

5.2 KiB
Executable File
Raw Permalink Blame History

bbav5 分析流程代码依赖分析

以"进化树分析"为例,串完整流程

阶段1: 前端调用

用户点击"进化树分析"按钮
  ↓
Vue3 前端 → POST /api/execute (stage="phylogeny")
  ↓
apps/web/vue3/main.py → execute_stage()

必须保留:

  • apps/web/vue3/main.py - FastAPI 主入口
  • apps/web/vue3/index.html - Vue3 前端页面

阶段2: API 层处理

apps/web/vue3/main.py
  ↓
检查 stage 是否在 ASYNC_STAGES 中
  ↓
调用 run_stage_sync() 或同步执行
  ↓
from apps.web.pipeline_backend import run_stage, JobInfo

必须保留:

  • apps/web/vue3/main.py - API 端点定义
  • apps/web/pipeline_backend.py - 后端 pipeline 核心

阶段3: Pipeline 后端

apps/web/pipeline_backend.py → run_stage()
  ↓
stage == "phylogeny"
  ↓
导入 apps/cli/run_phylogeny.py
  ↓
构建命令行参数
  ↓
subprocess 执行

必须保留:

  • apps/web/pipeline_backend.py - stage 路由和参数处理
  • apps/cli/run_phylogeny.py - 进化树分析脚本

阶段4: 分析脚本执行

apps/cli/run_phylogeny.py
  ↓
1. 读取 input/{job_id}/Ft.SPL.final_members.pep.fa
2. 运行 MAFFT 多序列比对
3. 运行 IQ-TREE 建树
4. 生成输出到 workspace/{job_id}/final/
   - Ft.SPL.pep.msa.fa
   - Ft.SPL.tree.nwk
   - Ft.SPL.phylogeny_report.md
   - Ft.SPL.phylogeny.manifest.json

必须保留:

  • apps/cli/run_phylogeny.py - 进化树分析
  • apps/cli/run_identify.py - 基因家族鉴定(前置依赖)
  • apps/cli/run_motif.py - Motif分析
  • apps/cli/run_domain.py - 结构域分析
  • apps/cli/run_structure.py - 基因结构
  • apps/cli/run_promoter.py - 启动子分析
  • apps/cli/run_synteny.py - 共线性分析
  • apps/cli/run_karyotype.py - 核型分析
  • apps/cli/run_expression.py - 表达分析
  • apps/cli/run_pep.py - 蛋白特征
  • apps/cli/run_*.py - 其他分析脚本

阶段5: 依赖的 gfa_core 模块

apps/cli/run_phylogeny.py
  ↓
from gfa_core.api_clients import ...
from gfa_core.reproducibility_v2 import ReproducibilityManager

必须保留:

  • gfa_core/api_clients.py - API客户端(PlantCARE等)
  • gfa_core/reproducibility_v2.py - 可复现性管理
  • gfa_core/pipelines/*.py - pipeline 工具函数

阶段6: Agent 系统(LangGraph 迁移目标)

用户自然语言输入
  ↓
Orchestrator (LangGraph)
  ↓
RouterAgent → PlanningAgent → ExecutionAgent
  ↓
调用 apps/cli/run_*.py

必须保留(迁移到 LangGraph):

  • gfa_core/mas/agents/*.py - 9个Agent
    • base.py - Agent 基类
    • router.py - 意图路由
    • planning.py - 任务规划
    • execution.py - 任务执行
    • knowledge.py - 知识检索
    • diagnosis.py - 错误诊断
    • validator.py - 结果验证
    • result_parser.py - 结果解析
    • learning.py - 学习优化
    • discovery.py - 科学发现
  • gfa_core/mas/core/orchestrator.py - 编排器(参考代码)
  • gfa_core/mas/llm/ - LLM管理
  • gfa_core/mas/tools/ - 工具注册
  • gfa_core/mas/cost_tracker.py - 成本追踪

阶段7: Skills 系统

apps/cli/run_*.py
  ↓
skills/{stage}/run.py

必须保留:

  • skills/*/run.py - 各阶段技能实现
  • skills/*/templates/ - 报告模板

阶段8: 配置文件

加载配置
  ↓
config/
prompts/

必须保留:

  • config/ - 配置文件
  • prompts/ - Agent 提示词
  • .env - 环境变量

必须保留的文件类型总结

1. 前端层

  • apps/web/vue3/main.py - FastAPI
  • apps/web/vue3/index.html - Vue3
  • apps/web/pipeline_backend.py - Pipeline后端

2. CLI 分析脚本(11个阶段)

  • apps/cli/run_identify.py
  • apps/cli/run_phylogeny.py
  • apps/cli/run_motif.py
  • apps/cli/run_domain.py
  • apps/cli/run_structure.py
  • apps/cli/run_promoter.py
  • apps/cli/run_synteny.py
  • apps/cli/run_karyotype.py
  • apps/cli/run_pep.py
  • apps/cli/run_expression.py
  • apps/cli/run_*.py (其他)

3. Agent 系统(LangGraph 迁移)

  • gfa_core/mas/agents/*.py (9个Agent)
  • gfa_core/mas/core/*.py
  • gfa_core/mas/llm/*.py
  • gfa_core/mas/tools/*.py

4. 核心模块

  • gfa_core/api_clients.py
  • gfa_core/reproducibility_v2.py
  • gfa_core/pipelines/*.py

5. Skills

  • skills/*/ - 所有技能目录

6. 配置

  • config/
  • prompts/
  • .env

7. 微信集成(确认保留)

  • wechat_*.py

可以删除的文件类型(待确认)

1. 测试文件

  • test_*.py (26个)

2. Demo 文件

  • demo_*.py

3. 旧 RAG 实现

  • kb/ 目录
  • langchain_agent.py

4. 备份文件

  • backup/ 目录
  • *.backup.*
  • *.bak

5. 日志和临时文件

  • *.log (非必要)
  • __pycache__/
  • *.pyc

6. 文档和报告

  • REVISION_*.md
  • e2e_test_report.md
  • EXECUTION_LOG.md
  • 项目记录/ (确认是否保留)

待确认问题

  1. test_*.py - 是否全部删除?还是保留部分核心测试?
  2. kb/ - 旧 RAG 实现,是否删除?(gene-family-mas-v2 已替代)
  3. langchain_agent.py - 实验性代码,是否删除?
  4. 项目记录/ - 历史文档,是否保留?
  5. REVISION_*.md - 修订记录,是否保留?
  6. codeMiaoshu/ - 代码描述,是否保留?
  7. paper/ - 文献 PDF,是否保留?