226 lines
6.2 KiB
Markdown
Executable File
226 lines
6.2 KiB
Markdown
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测试通过
|
|
```bash
|
|
# 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 测试验证
|
|
```bash
|
|
# 带映射的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 修改代码
|
|
```javascript
|
|
// 旧代码
|
|
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()`
|
|
|
|
```python
|
|
# 第2017行使用了json
|
|
with open(kaks_manifest) as f:
|
|
manifest = json.load(f) # ❌ NameError: name 'json' is not defined
|
|
```
|
|
|
|
**为什么之前没找到?**
|
|
1. 错误被 try-except 捕获,返回了包装后的错误信息
|
|
2. 日志显示 stdout 成功,但异常在结果解析阶段抛出
|
|
3. 错误信息被误解为前端问题
|
|
|
|
#### 修复方案
|
|
```python
|
|
# 文件开头添加
|
|
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错误)*
|