- Added Dockerfile and docker-compose.yml for BtToxin_Digger - Integrated external v5 BLAST database into the container image - Updated main docker-compose.yml to include the digger service - Updated documentation with database update instructions
108 lines
3.1 KiB
Markdown
108 lines
3.1 KiB
Markdown
# BtToxin_Digger (pixi) 复现与 Docker 镜像
|
||
|
||
本仓库提供了一个 **可复现的运行环境**,用于运行 BtToxin_Digger 1.0.10,并打包为基于 `ghcr.io/prefix-dev/pixi` 的 Docker 镜像。
|
||
|
||
包含内容:
|
||
1. **BtToxin_Digger 1.0.10** (通过 Pixi 安装)
|
||
2. **BLAST+ 2.16.0** (兼容 v5 数据库)
|
||
3. **预置 BtToxin 数据库** (已集成到镜像中)
|
||
|
||
## 许可证 / 引用 / 免责声明
|
||
|
||
- **BtToxin_Digger** 由原作者开发;如果在研究中使用,请引用上游发表的论文。
|
||
- **本仓库** 仅提供环境封装 (pixi/docker);不修改 BtToxin_Digger 源代码。
|
||
|
||
## 1. 快速开始 (使用 Docker)
|
||
|
||
最简单的运行方式是使用包含的 `docker-compose.yml` 或全局项目配置。
|
||
|
||
### 构建镜像
|
||
|
||
```bash
|
||
# 在本目录下
|
||
docker compose build
|
||
```
|
||
|
||
### 运行分析
|
||
|
||
将你的输入 `.fna` 文件放入 `examples/inputs` (或挂载你自己的目录),然后运行:
|
||
|
||
```bash
|
||
# 查看帮助
|
||
docker compose run --rm digger-repro pixi run BtToxin_Digger --help
|
||
|
||
# 对特定文件运行分析
|
||
# 注意:输入路径必须匹配内部挂载点 (/app/jobs)
|
||
docker compose run --rm digger-repro pixi run BtToxin_Digger \
|
||
--SeqPath /app/jobs \
|
||
--Scaf_suffix .fna \
|
||
--threads 4
|
||
```
|
||
|
||
### 目录挂载说明
|
||
|
||
- `/app/jobs`: 挂载你的输入序列文件目录。
|
||
- `/app/data`: 挂载你期望的输出目录 (如果在参数中使用绝对路径)。
|
||
|
||
## 2. Docker 镜像构建原理
|
||
|
||
镜像使用 `docker/Dockerfile` 构建。
|
||
|
||
### 基础镜像
|
||
使用 `ghcr.io/prefix-dev/pixi:latest` 以确保一致的 conda 兼容环境。
|
||
|
||
### 数据库集成
|
||
外部数据库 (`external_dbs/bt_toxin`) 在构建时 **被复制到镜像中**。
|
||
目标位置:`/app/.pixi/envs/default/bin/BTTCMP_db/bt_toxin`
|
||
|
||
这替换了 bioconda 包自带的默认数据库,确保:
|
||
1. 使用最新的毒素定义。
|
||
2. BLAST v5 索引与安装的 BLAST+ 2.16.0 兼容。
|
||
|
||
### 环境定义 (`pixi.toml`)
|
||
- `bttoxin_digger = "==1.0.10"`
|
||
- `perl = "==5.26.2"` (旧版兼容需求)
|
||
- `blast = "==2.16.0"` (升级以支持 v5 数据库)
|
||
- `channel-priority = "disabled"`
|
||
|
||
## 3. 开发 / 手动使用
|
||
|
||
如果你想在不使用 Docker 的情况下使用本地 Pixi 运行:
|
||
|
||
```bash
|
||
# 安装环境
|
||
pixi install
|
||
|
||
# 链接数据库 (如果不使用 Docker,需要手动操作)
|
||
# Dockerfile 会通过复制文件自动完成此步骤。
|
||
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
|
||
```
|
||
|
||
## 4. 仓库结构
|
||
|
||
```
|
||
.
|
||
├── docker/
|
||
│ └── Dockerfile # Docker 构建定义
|
||
├── docker-compose.yml # 本地测试编排
|
||
├── external_dbs/ # 数据库源 (构建时复制到镜像)
|
||
│ └── bt_toxin/ # 实际的数据库文件
|
||
├── pixi.toml # 环境依赖定义
|
||
├── pixi.lock # 确切的版本锁定
|
||
└── examples/ # 测试输入和输出
|
||
```
|
||
|
||
## 5. 更新数据库
|
||
|
||
要更新容器使用的数据库:
|
||
1. 更新 `external_dbs/bt_toxin/` 中的文件。
|
||
2. 重新构建 Docker 镜像:
|
||
```bash
|
||
docker compose build --no-cache
|
||
```
|