10 个版本 (5 个破坏性更新)

使用旧的 Rust 2015

0.7.0 2024 年 1 月 18 日
0.6.1 2021 年 2 月 24 日
0.6.0 2020 年 12 月 10 日
0.5.0 2020 年 8 月 28 日
0.2.0-alpha62019 年 3 月 24 日

#43 in 生物学

每月 32 次下载
lorikeet-rs 中使用

GPL-3.0 许可

2.5MB
11K SLoC

CoverM logo

CoverM

Anaconda-Server Badge

CoverM 致力于成为一个可配置的、易于使用且快速的 DNA 读覆盖和相对丰度计算器,专注于宏基因组应用。

CoverM 可以计算基因组/MAGs 的覆盖度 coverm genome (帮助) 或单个 contig coverm contig (帮助)。通过读映射计算覆盖度,其输入可以是按参考排序的 BAM 文件,也可以是各种格式的原始读和参考基因组。

安装

通过 bioconda 软件包安装

CoverM 及其依赖项可以通过 bioconda conda 频道进行安装。在初始化 conda 和 bioconda 频道后,可以使用以下命令安装

conda install coverm

预编译的二进制文件

静态编译的 CoverM 二进制文件可在 发布页面 上找到。此安装方法需要单独安装非 Rust 依赖项 - 请参阅 依赖项部分

从源码编译

CoverM 还可以从源码安装,使用在安装 Rust 后的 cargo 构建系统。

cargo install coverm

开发版本

要运行未发布的 CoverM 版本,在安装 Rust 和以下列出的任何其他附加依赖项后

git clone https://github.com/wwood/CoverM
cd CoverM
cargo run -- genome ...etc...

运行测试

cargo build
cargo test

依赖项

要获得完整选项集,还需要安装其他程序,无论是从源码安装还是进行开发。

可以使用 conda YAML 环境定义安装这些程序

conda env create -n coverm -f coverm.yml

或者,可以手动安装这些程序

  • samtools v1.9
  • tee,它默认安装在大多数 Linux 操作系统上。
  • man,这是大多数Linux操作系统默认安装的。

和一些映射软件

用于去重

Shell 完成脚本

可以为各种shell生成完成脚本,例如BASH(这需要root权限)

coverm shell-completion --output-file coverm --shell bash
mv coverm /etc/bash_completion.d/

也可以安装到用户的家目录中(不需要root权限)

coverm shell-completion --shell bash --output-file /dev/stdout >>~/.bash_completion

在两种情况下,为了生效,可能需要重新启动终端。为了测试,请输入 coverm gen 并在按TAB键后应该完成。

用法

CoverM在几种模式下运行。详细的用法信息(包括示例)可以在以下链接中找到,或者也可以使用每个模式的 -h--full-help 标志来获取

  • genome - 计算基因组的覆盖度
  • contig - 计算contig的覆盖度

还有一些实用模式

  • make - 通过对齐生成BAM文件
  • filter - 删除(或只保留)身份不足以对齐的比对
  • cluster - 去重和聚类基因组
  • shell-completion - 生成shell完成脚本

计算方法

-m/--methods 标志指定要计算的特定覆盖度类型。

为了说明,想象有一组3对读段,其中只有1对映射到长度为1000bp的单个参考contig

read1_forward    ========>
read1_reverse                                  <====+====
contig    ...-----------------------------------------------------....
                 |        |         |         |         |
position        200      210       220       230       240

不同的覆盖度度量将是

方法 公式 解释
mean 0.02235294 (10+9)/(1000-2*75) 两个读段中有10和9个碱基精确对齐,平均在1000-2*75 bp(contig长度减去两端各75bp)。
relative_abundance 33.3% 0.02235294/0.02235294*(2/6) 如果contig被认为是基因组,那么它的平均覆盖度是0.02235294。所有基因组中有0.02235294的平均覆盖度,6个读段中有2个(3对中的1对)映射。这种覆盖度计算仅在'genome'模式下可用。
trimmed_mean 0 mean_coverage(mid-ranked-positions) 在移除5%最高覆盖度的碱基和5%最低覆盖度的碱基后,所有剩余位置的覆盖度均为0。
covered_fraction 0.02 (10+10)/1000 20个碱基被任何读段覆盖,总共1000bp。
covered_bases 20 10+10 20个碱基被覆盖。
variance 0.01961962 var({1;20},{0;980}) 方差计算为样本方差。
length 1000 contig的长度是1000bp。
count 2 2个读段被映射。
reads_per_base 0.002 2/1000 2个读段映射到1000bp。
metabat contigLen 1000, totalAvgDepth 0.02235294, bam depth 0.02235294, variance 0.01961962 复制MetaBAT 'jgi_summarize_bam_contig_depths' 工具输出,产生相同的输出
coverage_histogram 覆盖度1的20个碱基,覆盖度0的980个碱基 统计具有不同覆盖度的位置数量。
rpkm 1000000 2 * 10^9 / 1000 / 2 这里的计算假设没有其他读段映射到其他contig。有关RPKM的解释,请参阅https://haroldpimentel.wordpress.com/2014/05/08/what-the-fpkm-a-review-rna-seq-expression-units/
tpm 1000000 rpkm/total_of_rpkm * 10^6 这里的计算假设没有其他读段映射到其他contig。有关RPKM的说明,请参阅上文。

基因组覆盖率的计算(genome模式)与计算连续序列覆盖率的计算方法类似,区别在于报告的单位是每个基因组而不是每个连续序列。对于排除基于覆盖率的碱基位置的计算方法,考虑所有连续序列中的所有位置。例如,如果一个2000bp的连续序列中所有位置的覆盖率为1X,而基因组中的2,000,000bp连续序列没有映射的读取,那么trimmed_mean将为0,因为2000bp中的所有位置都在按覆盖率排序的前5%的位置中。

许可

CoverM在GPL3+下提供。有关详细信息,请参阅LICENSE.txt。版权所有Ben Woodcroft。

由Ben Woodcroft在昆士兰科技大学微生物组研究中心开发。

依赖项

~36–48MB
~764K SLoC