# 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 ```