6.2 KiB
Executable File
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.mdgfa_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
为什么之前没找到?
- 错误被 try-except 捕获,返回了包装后的错误信息
- 日志显示 stdout 成功,但异常在结果解析阶段抛出
- 错误信息被误解为前端问题
修复方案
# 文件开头添加
import json
调试过程
- 添加前端调试日志 (showConfirm/doExecute)
- 添加后端调试日志 (/api/execute)
- 分析日志发现错误来自 orchestrator.py
- 检查 orchestrator.py 发现缺少 json 导入
- 修复并验证
相关修改
gfa_core/mas/core/orchestrator.py: 添加import json
记录时间
2026-04-06 22:14 更新: 2026-04-07 00:26 (解决json错误)