docs: add AGENTS.md for BtToxin_Digger reproduction guide

This commit is contained in:
zly
2026-01-17 12:38:24 +08:00
parent 700bdb8307
commit 3ed9558bac

View File

@@ -0,0 +1,206 @@
# BtToxin_Digger v5 Reproduction - AGENTS.md
本文档为 AI 助手和开发者提供 bttoxin_digger_v5_repro 项目的快速参考指南。
## 项目概述
BtToxin_Digger v5 Reproduction 是一个基于 Pixi 和 Docker 的 BtToxin_Digger 1.0.10 可复现运行环境,集成了最新的 BLAST v5 毒素数据库。
**核心功能:**
- 使用 `ghcr.io/prefix-dev/pixi:latest` 作为基础镜像
- 预装 BtToxin_Digger 1.0.10 和 BLAST+ 2.16.0
- 内置最新版本的 BtToxin 数据库20251104
- 支持 Docker 容器化部署
## 目录结构
```
bttoxin_digger_v5_repro/
├── docker/
│ └── Dockerfile # Docker 镜像构建文件
├── docker-compose.yml # 本地测试编排配置
├── external_dbs/ # 外部数据库源(构建时复制到镜像)
│ └── bt_toxin/
│ ├── db/ # BLAST 索引文件 (.phr, .pin, .psq)
│ │ ├── bt_toxin.pdb # 数据库元数据
│ │ ├── bt_toxin.phr # 蛋白质序列头索引
│ │ ├── bt_toxin.pin # 蛋白质序列索引
│ │ ├── bt_toxin.psq # 蛋白质序列数据
│ │ └── old/ # 历史索引备份
│ └── seq/ # FASTA 序列源文件
│ ├── bt_toxin20251104.fas # 最新毒素序列2025年11月
│ ├── bt_toxin20221208.fas
│ └── updateDB.py # 数据库辅助脚本
├── pixi.toml # Pixi 环境依赖定义
├── pixi.lock # 依赖版本锁定文件
├── examples/ # 测试用例
│ └── inputs/ # 输入文件
│ └── C15.fna # 测试基因组文件
└── README.md # 项目说明文档
```
## 快速开始
### 构建 Docker 镜像
```bash
cd bttoxin_digger_v5_repro
docker compose build
```
### 运行分析(本地测试)
```bash
# 查看帮助
docker compose run --rm digger-repro pixi run BtToxin_Digger --help
# 运行分析
docker compose run --rm digger-repro pixi run BtToxin_Digger \
--SeqPath /app/jobs \
--Scaf_suffix .fna \
--threads 4
```
### 使用主服务中的 Digger 容器
主项目的 `docker/docker-compose.yml` 中包含一个持久运行的 `digger` 服务:
```bash
# 检查服务状态
docker ps | grep bttoxin_digger
# 执行分析任务
docker exec bttoxin_digger pixi run BtToxin_Digger \
--SeqPath /data \
--Scaf_suffix .fna \
--threads 4
```
## 数据库管理
### 数据库结构说明
- **`seq/` 目录**:存放原始 FASTA 序列文件(如 `bt_toxin20251104.fas`
- **`db/` 目录**:存放 BLAST 生成的二进制索引文件
- **对应关系**`db/` 中的文件由 `makeblastdb` 命令从 `seq/` 中的 FASTA 文件生成
### 验证数据库版本
```bash
docker exec bttoxin_digger pixi run blastdbcmd \
-db /app/.pixi/envs/default/bin/BTTCMP_db/bt_toxin/db/bt_toxin \
-info
```
**预期输出:**
```text
Database: bt_toxin20251104.fas
Date: Nov 4, 2025 3:35 PM
BLASTDB Version: 5
```
### 更新数据库(未来版本)
当上游仓库发布新版本(如 2026/2027 年)时:
```bash
# 1. 下载新序列文件到 seq/ 目录
cp /path/to/new/bt_toxin20xxxxxx.fas external_dbs/bt_toxin/seq/
# 2. 重新生成索引(使用 makeblastdb
makeblastdb \
-in external_dbs/bt_toxin/seq/bt_toxin20xxxxxx.fas \
-dbtype prot \
-out external_dbs/bt_toxin/db/bt_toxin \
-parse_seqids
# 3. 重新构建 Docker 镜像
docker compose build --no-cache
# 4. 重启服务
docker compose -f ../docker/docker-compose.yml up -d digger
```
## 常见任务
### 查看 Digger 帮助
```bash
docker exec bttoxin_digger pixi run BtToxin_Digger --help
```
### 重新构建镜像(无缓存)
```bash
cd bttoxin_digger_v5_repro
docker compose build --no-cache
```
### 查看容器日志
```bash
docker logs bttoxin_digger
```
### 进入容器交互模式
```bash
docker exec -it bttoxin_digger pixi run bash
```
## 故障排查
### 问题:数据库版本不正确
**症状**:分析结果显示使用的是旧版本数据库。
**排查步骤:**
1. 检查 `external_dbs/bt_toxin/seq/` 目录下的文件是否为最新
2. 确认 `external_dbs/bt_toxin/db/` 目录下的索引文件与 seq 文件匹配
3. 验证镜像已重建:`docker images | grep digger`
4. 重启服务:`docker compose -f ../docker/docker-compose.yml up -d digger`
### 问题Perl 警告
**症状**`Possible precedence issue with control flow operator`
**说明**:这是 Perl 5.26 与旧代码的兼容性问题,不影响程序运行,可忽略。
### 问题:容器启动失败
**排查步骤:**
1. 检查 Docker 是否运行
2. 查看详细日志:`docker compose logs`
3. 确认端口未被占用
## 开发说明
### 修改 Dockerfile
如需修改环境依赖:
1. 编辑 `pixi.toml`(添加/删除依赖)
2. 运行 `pixi lock` 更新 `pixi.lock`
3. 重新构建镜像
### 本地开发模式(不使用 Docker
```bash
# 安装 Pixi 环境
cd bttoxin_digger_v5_repro
pixi install
# 链接外部数据库
ENV_BIN=.pixi/envs/default/bin
rm -rf "$ENV_BIN/BTTCMP_db/bt_toxin"
ln -sfn $(pwd)/external_dbs/bt_toxin "$ENV_BIN/BTTCMP_db/bt_toxin"
# 运行
pixi run BtToxin_Digger --help
```
## 相关文件
- `README.md`:项目完整说明(英文)
- `README_CN.md`:项目完整说明(中文)
- `docker/Dockerfile`Docker 镜像构建配置
- `docker-compose.yml`:本地测试编排配置