BamCov 是一个基于 mosdepth d4 文件计算 WGS、外显子组或靶向测序的碱基覆盖的 Rust 程序。该工具可以快速计算不同深度的覆盖度,支持自定义深度阈值,并提供多种统计指标。
- 支持多线程并行处理,大幅提高计算效率
- 使用 d4 文件格式,与 mosdepth 完全兼容
- 灵活的深度阈值设置,支持自定义多个深度值
- 提供丰富的统计指标,包括覆盖率、均一性等
- 支持区域文件,可针对特定基因组区域进行分析
确保系统已安装 Rust 环境和相关依赖:
# 克隆仓库
git clone [repository_url]
cd bamcov
# 编译
cargo build --release
# 测试安装
./target/release/bamcov -h基本用法:
bamcov -d <d4文件> -r <bed文件> [-t <深度阈值>]示例:
# 使用默认深度阈值(1X,10X,20X,30X,50X)
bamcov -d sample.d4 -r target.bed
# 使用自定义深度阈值
bamcov -d sample.d4 -r target.bed -t 5,15,25,35,45| 参数 | 说明 | 是否必需 | 示例 |
|---|---|---|---|
| -d, --d4-format | 输入的 d4 格式深度文件 | 是 | -d sample.d4 |
| -r, --region | 输入的 bed 格式区域文件 | 是 | -r exome.bed |
| -t, --threshold | 自定义深度阈值,逗号分隔 | 否 | -t 10,20,30 |
程序输出包含以下字段:
| 字段 | 说明 | 计算方法 |
|---|---|---|
| TotalBases | 分析区域总碱基数 | 所有区域长度之和 |
| CovBases | 有测序深度的碱基数 | 深度≥1X的碱基数 |
| CovRatio | 覆盖率 | CovBases/TotalBases×100% |
| Ave_Depth | 平均测序深度 | 总深度/总碱基数 |
| Depth>=NX | 深度≥N的碱基比例 | 深度≥N的碱基数/总碱基数×100% |
| Fold80 | 测序均一性指标 | 80%碱基深度/平均深度 |
| CV | 变异系数 | 深度标准差/平均深度 |
| >=20%X | 高于20%平均深度的比例 | 深度>20%平均深度的碱基比例 |
输出示例:
# 默认输出(使用预设深度阈值)
TotalBases CovBases CovRatio Ave_Depth Depth>=1X Depth>=10X Depth>=20X Depth>=30X Depth>=50X Fold80 CV >=20%X
150000000 149000000 99.333 30.456 99.333 95.234 90.123 85.678 70.456 1.234 0.345 85.678
# 自定义深度阈值输出(-t 10,20,40)
TotalBases CovBases CovRatio Ave_Depth Depth>=10X Depth>=20X Depth>=40X Fold80 CV >=20%X
150000000 149000000 99.333 30.456 95.234 90.123 75.678 1.234 0.345 85.678
- 多线程并行计算:使用 Rayon 库实现并行处理
- 高效排序:采用不稳定并行排序算法
- 内存优化:高效的数据结构和内存管理
- 流式处理:逐区域处理,减少内存占用
-
输入文件要求:
- d4 文件必须是 mosdepth 生成的有效格式
- bed 文件必须是标准格式,包含染色体、起始和结束位置
-
深度阈值设置:
- 默认阈值:1X,10X,20X,30X,50X
- 自定义阈值必须是正整数
- 多个阈值用逗号分隔,无空格
-
性能考虑:
- 大文件建议使用 release 模式运行
- 注意内存使用情况
- 处理大文件时预留足够磁盘空间
-
如何选择合适的深度阈值?
- WGS 建议:5X,10X,20X,30X
- 外显子组建议:20X,50X,100X
- 靶向测序建议:100X,500X,1000X
-
覆盖度统计指标如何解读?
- CovRatio > 95% 表示测序覆盖较好
- Fold80 < 2.0 表示测序均一性好
- CV < 0.5 表示深度分布较均匀
- v0.1.0 (2024-01)
- 首次发布
- 实现基本覆盖度统计功能
- 支持自定义深度阈值
- 添加多线程支持