Bonito 开源项目教程
1. 项目介绍
Bonito 是一个基于 PyTorch 的开源研究型 basecaller,专门用于 Oxford Nanopore 读取数据的处理。Basecaller 是测序数据处理中的关键步骤,它将原始的测序信号转换为 DNA 或 RNA 序列。Bonito 提供了灵活的平台,支持用户训练和开发自己的 basecalling 模型。
主要特点
- PyTorch 实现:利用 PyTorch 的强大功能进行模型训练和推理。
- 自动模型下载:首次使用时自动下载并缓存 basecalling 模型。
- 支持多种输出格式:支持输出 fastq、sam、bam、cram 等格式。
- Transformer 模型:支持 Transformer 模型,需要手动安装
flash-attn
。 - 修改基调用:通过 Remora 支持修改基调用。
2. 项目快速启动
安装 Bonito
首先,确保你已经安装了 Python 3.7 或更高版本。然后按照以下步骤安装 Bonito:
# 克隆项目仓库
git clone https://github.com/nanoporetech/bonito.git
cd bonito
# 创建虚拟环境
python3 -m venv venv3
source venv3/bin/activate
# 升级 pip 并安装 Bonito
pip install --upgrade pip
pip install -e .
使用 Bonito 进行 Basecalling
安装完成后,你可以使用 Bonito 进行 basecalling。以下是一个简单的示例:
# 使用默认模型进行 basecalling
bonito basecaller dna_r10.4.1_e8.2_400bps_hac@v5.0.0 /data/reads > basecalls.bam
下载模型
如果你需要下载其他模型,可以使用以下命令:
# 显示所有可用模型
bonito download --models --show
# 下载所有可用模型
bonito download --models
3. 应用案例和最佳实践
案例1:使用 Bonito 进行基因组测序数据处理
假设你有一批 Oxford Nanopore 测序数据,你可以使用 Bonito 进行 basecalling,并将结果输出为 BAM 文件,以便进一步分析。
bonito basecaller dna_r10.4.1_e8.2_400bps_hac@v5.0.0 /data/reads > basecalls.bam
案例2:训练自定义模型
如果你有特定的测序数据集,并且希望训练一个自定义的 basecalling 模型,可以按照以下步骤进行:
- 准备数据:使用
--save-ctc
标志进行 basecalling,并将结果保存到指定目录。 - 训练模型:使用
bonito train
命令训练模型。
# 准备数据
bonito basecaller dna_r10.4.1_e8.2_400bps_hac@v5.0.0 --save-ctc --reference reference.mmi /data/reads > /data/training/ctc-data/basecalls.sam
# 训练模型
bonito train --directory /data/training/ctc-data /data/training/model-dir
4. 典型生态项目
1. Dorado
Dorado 是 Oxford Nanopore Technologies 官方推荐的 basecaller,适用于大多数生产环境。Bonito 主要用于研究和方法开发,而 Dorado 则更适合实际应用。
2. Remora
Remora 是一个用于修改基调用的工具,与 Bonito 结合使用可以实现更复杂的测序数据处理。
3. MinKNOW
MinKNOW 是 Oxford Nanopore Technologies 的测序软件,支持与 Bonito 集成,用于实时测序数据的处理和分析。
通过这些生态项目的结合,Bonito 可以更好地服务于基因组学研究和应用。