Files
PlantAI-dev/memory/2026-04-06.md
T
potaserandClaude Opus 5 7097ecdec5 Add memory directory
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-07 09:39:30 +08:00

6.2 KiB
Executable File

2026-04-06 项目记录 - bbav20311

项目信息

  • 项目: bbav20311 (BotanicalBaseAgent)
  • 路径: /home/xia-lab/wutx/00test/bbav20311
  • 记录时间: 2026-04-06

今日完成内容

1. PEP + PPI 技能化完成 ✅

1.1 新建技能目录

skills/pep/
├── SKILL.md           # 蛋白特征分析文档
├── config.yaml        # 技能配置
└── run.py            # 主程序 (理化性质+可视化)

skills/ppi/
├── SKILL.md           # PPI网络分析文档
├── config.yaml        # 技能配置
└── run.py            # 主程序 (STRING API+网络构建)

1.2 技能功能

PEP Skill:

  • 理化性质分析: 分子量、等电点、疏水性(GRAVY)、脂肪族指数
  • 跨膜结构预测: DeepTMHMM
  • 亚细胞定位预测: Plant-mPLoc + WoLF PSORT
  • 可视化输出: PDF/PNG图表 + Markdown报告 + Manifest

PPI Skill:

  • STRING数据库查询
  • 互作网络构建
  • 网络统计: 节点数、边数、置信度分布
  • 可视化输出: TSV数据表 + PDF网络图 + Markdown报告 + Manifest

1.3 Pipeline集成

  • PEP路由: 更新 apps/web/pipeline_backend.py,支持技能化版本
  • PPI路由: 更新 apps/web/pipeline_backend.py,支持技能化版本
  • 产物复制: 技能执行后自动复制产物到 final/ 目录

1.4 Demo测试通过

# PEP测试
python skills/pep/run.py --demo --prefix test --output /tmp/pep_test
# 输出: 3 proteins analyzed, manifest generated

# PPI测试  
python skills/ppi/run.py --demo --prefix test --output /tmp/ppi_test
# 输出: 2/3 genes in network, 1 interaction found

2. PPI技能增强 ✅

2.1 同源映射支持

  • 添加 --mapping 参数
  • 支持非模式植物(如苦荞)基因ID映射到拟南芥基因ID
  • 自动基因ID转换: 苦荞ID → 拟南芥ID

2.2 STRING URL生成

  • 生成STRING网页链接
  • 保存到 {prefix}_url.txt 文件
  • Report和Manifest包含STRING链接

2.3 测试验证

# 带映射的PPI分析
python skills/ppi/run.py \
  --gene-ids ft_genes.txt \
  --species ath \
  --mapping ortholog_pairs.txt \
  --prefix test --output ./ppi

# 结果: 3/3 genes mapped, 2/3 in network, 1 interaction
# STRING URL: https://string-db.org/cgi/network?identifiers=...

3. Ka/Ks分析修复 ✅

3.1 工具路径修复

  • MUSCLE: 使用 conda run -n test4py311 muscle
  • pal2nal.pl: 使用 conda run -n test4py311 pal2nal.pl
  • yn00: 使用 conda run -n test4py311 yn00

3.2 Pipeline参数修复

  • 修复 -p 参数为 --prefix-name
  • 文件: apps/web/pipeline_backend.py

3.3 shutil错误修复

  • 问题: 局部 import shutil 导致变量作用域问题
  • 修复: 删除PEP和PPI阶段的局部 import shutil
  • 文件: apps/web/pipeline_backend.py

3.4 测试验证

  • Ka/Ks分析成功执行 (7/8 pairs)
  • 结果文件正确生成并复制到 final/
  • 执行时间: ~20秒(正常)

4. 前端参数确认强制化 ✅

4.1 问题

  • Agent模式下可能跳过参数确认对话框
  • 用户要求所有执行都必须经过参数确认

4.2 修复

  • 删除Agent自动执行分支
  • 强制所有执行都显示参数确认对话框
  • 文件: apps/web/vue3/index.html

4.3 修改代码

// 旧代码
if (autoExecute.value) {
    doExecute();  // 直接执行
} else {
    confirmDialogVisible.value = true;
}

// 新代码
confirmDialogVisible.value = true;  // 强制确认

5. 契约文档添加 ✅

5.1 新建契约文档

  • gfa_core/schemas/stages/pep_contract_v1.md
  • gfa_core/schemas/stages/ppi_contract_v1.md

5.2 契约内容

  • 阶段信息 (名称、描述、技能目录)
  • 输入契约 (必需/可选输入)
  • 输出契约 (final/ + analysis/ 产物)
  • Manifest结构示例
  • 依赖环境 (Conda + 工具)
  • 执行命令示例
  • 上下游依赖关系

修改文件清单

文件路径 修改类型 说明
skills/pep/SKILL.md 新增 蛋白特征分析技能文档
skills/pep/config.yaml 新增 PEP技能配置
skills/pep/run.py 新增 PEP技能主程序
skills/ppi/SKILL.md 新增 PPI网络分析技能文档
skills/ppi/config.yaml 新增 PPI技能配置
skills/ppi/run.py 新增 PPI技能主程序
gfa_core/schemas/stages/pep_contract_v1.md 新增 PEP阶段契约
gfa_core/schemas/stages/ppi_contract_v1.md 新增 PPI阶段契约
apps/web/pipeline_backend.py 修改 PEP/PPI路由、Ka/Ks参数、shutil修复
apps/web/vue3/index.html 修改 强制参数确认对话框
apps/cli/run_kaks_v2.py 修改 工具路径修复 (muscle/pal2nal/yn00)
MEMORY.md 修改 更新技能化状态

技能化状态更新

阶段 技能目录 状态
pep skills/pep/ ✅ 已技能化 (2026-04-06)
ppi skills/ppi/ ✅ 已技能化 (2026-04-06)

总计: 18/18 阶段技能化完成 (100%)


已解决问题

1. Ka/Ks json 未定义错误 ✅ (2026-04-07 00:26)

问题现象

  • 前端显示: ❌ Ka/Ks分析出错: name 'json' is not defined
  • 实际: Ka/Ks技能执行成功,结果文件已生成
  • 用户反馈: 参数确认对话框没有弹出

根本原因

文件: gfa_core/mas/core/orchestrator.py 问题: 缺少 import json,但代码中使用了 json.load()

# 第2017行使用了json
with open(kaks_manifest) as f:
    manifest = json.load(f)  # ❌ NameError: name 'json' is not defined

为什么之前没找到?

  1. 错误被 try-except 捕获,返回了包装后的错误信息
  2. 日志显示 stdout 成功,但异常在结果解析阶段抛出
  3. 错误信息被误解为前端问题

修复方案

# 文件开头添加
import json

调试过程

  1. 添加前端调试日志 (showConfirm/doExecute)
  2. 添加后端调试日志 (/api/execute)
  3. 分析日志发现错误来自 orchestrator.py
  4. 检查 orchestrator.py 发现缺少 json 导入
  5. 修复并验证

相关修改

  • gfa_core/mas/core/orchestrator.py: 添加 import json

记录时间

2026-04-06 22:14 更新: 2026-04-07 00:26 (解决json错误)