评估宏基因组组装的病毒基因组的质量。
项目描述
CheckV 是一个全自动命令行管道,用于评估单重叠群病毒基因组的质量,包括识别整合前病毒的宿主污染、估计基因组片段的完整性以及识别封闭基因组。
安装
安装 CheckV 的三种方法:
-
使用 conda(推荐):
conda install -c conda-forge -c bioconda checkv
-
使用 docker:见下文
-
使用点子:
pip install checkv
如果您决定通过 安装 CheckV pip
,请确保您还安装了以下外部依赖项:
- 钻石(v2.0.4):https ://github.com/bbuchfink/diamond
- HMMER (v3.3):http ://hmmer.org/
- Prodigal-gv (v2.6.3): https://github.com/apcamargo/prodigal-gv
上面列出的版本是经过适当测试的版本。不同的版本也可以工作。
CheckV 数据库
如果您使用安装conda
或pip
需要下载数据库:
checkv download_database ./
您需要更新您的环境或使用-d
标志来指定CHECKVDB
位置:
export CHECKVDB=/path/to/checkv-db
一些用户可能希望使用自己的完整基因组更新数据库:
checkv update_database /path/to/checkv-db /path/to/updated-checkv-db genomes.fna
快速开始
有两种方法可以运行 CheckV:
- 使用单个命令运行完整的管道(推荐):
checkv end_to_end input_file.fna output_directory -t 16
- 对管道中的每个步骤使用单独的命令:
checkv contamination input_file.fna output_directory -t 16
checkv completeness input_file.fna output_directory -t 16
checkv complete_genomes input_file.fna output_directory
checkv quality_summary input_file.fna output_directory
- 有关 checkv 程序和选项的完整列表,请使用:
checkv -h
和checkv <program> -h
码头工人使用
- 拉取镜像(包括数据库)
docker pull antoniopcamargo/checkv
- 运行镜像
docker run -ti --rm -v " $( pwd ) :/app" antoniopcamargo/checkv end_to_end input_file.fna output_directory -t 16
- 注意:docker 镜像可能不代表最新版本
已知的问题
- 对于 0.9.0,您可能会收到一些浪费任务失败的错误。这将在下一个版本中修复。现在使用更少的线程重新运行。
- 对于 >=0.9.0,如果您收到未找到钻石数据库的错误,请使用重新下载数据库
checkv download_database
- 对于 v0.8.1,有时 conda 安装了旧版本的 DIAMOND 导致错误。确保 conda 已安装 DIAMOND 版本 >= 2.0.9
输出文件
quality_summary.tsv
这包含来自三个主要模块的综合结果,应该是参考的主要输出。下面是一个示例,用于演示您可以在数据中预期的结果类型:
contig_id | contig_length | 原病毒 | proviral_length | 基因计数 | 病毒基因 | 主机基因 | checkv_quality | miuvig_quality | 完整性 | 完整性方法 | 完整基因组类型 | 污染 | kmer_freq | 警告 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 5325 | 不 | 不适用 | 11 | 0 | 2 | 还没决定 | 基因组片段 | 不适用 | 不适用 | 不适用 | 0 | 1 | 未检测到病毒基因 |
2 | 41803 | 不 | 不适用 | 72 | 27 | 1 | 低质量 | 基因组片段 | 21.99 | 基于 AAI(中等置信度) | 不适用 | 0 | 1 | 标记的 DTR |
3 | 38254 | 是的 | 36072 | 54 | 23 | 2 | 中等质量 | 基因组片段 | 80.3 | 基于 HMM(下限) | 不适用 | 5.7 | 1 | |
4 | 67622 | 不 | 不适用 | 143 | 25 | 0 | 高质量 | 高质量 | 100 | 基于 AAI(高置信度) | 不适用 | 0 | 1.76 | 高 kmer_freq |
5 | 98051 | 不 | 不适用 | 158 | 27 | 1 | 完全的 | 高质量 | 100 | 基于 AAI(高置信度) | DTR | 0 | 1 |
在示例中,上面有 6 个病毒重叠群的结果:
- 第一个 5325 bp contig 没有完整性预测,这由“checkv_quality”字段的“Not-determined”指示。该重叠群也没有鉴定出病毒基因,因此它甚至可能不是病毒。
- 第二个 41803 bp 重叠群被归类为“低质量”,因为其完整性 <50%。这是基于“AAI”方法的估计。请注意,quality_summary.tsv 文件中仅报告了高置信度或中等置信度估计值。您可以查看“completeness.tsv”以获取更多详细信息。此 contig 有一个 DTR,但由于某种原因被标记(有关详细信息,请参阅 complete_genomes.tsv)
- 第三个重叠群被认为是“中等质量”,因为它的完整性估计为 80%,这是基于“HMM”方法的。这意味着基于 AAI 估计完整性太新颖了,但与 CheckV 参考基因组共享一个 HMM。请注意,此值表示下限(意味着真实完整性可能高于但不低于此值)。请注意,此重叠群也被归类为前病毒。
- 第四个重叠群基于 >90% 的完整性被归类为高质量。但是,请注意“kmer_freq”的值为 1.7。这表明病毒基因组在重叠群中多次表示。这些情况非常罕见,但需要注意。
- 第五个重叠群基于直接末端重复 (DTR) 的存在被分类为完全,并且基于 AAI 方法具有 100% 的完整性。该序列可以放心地视为完整的基因组。
完整性.tsv
关于如何估计完整性的详细概述:
contig_id | contig_length | proviral_length | aai_expected_length | aai_completeness | aai_confidence | aai_error | aai_num_hits | aai_top_hit | aai_id | aai_af | hmm_completeness_lower | hmm_completeness_upper | hmm_hits |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 9837 | 5713 | 53242.8 | 10.7 | 高的 | 3.7 | 10 | DTR_517157 | 78.5 | 34.6 | 5 | 15 | 4 |
2 | 39498 | 不适用 | 37309 | 100.0 | 中等的 | 7.7 | 11 | DTR_357456 | 45.18 | 30.46 | 75 | 100 | 22 |
3 | 29224 | 不适用 | 44960.1 | 65.8 | 低的 | 15.2 | 17 | DTR_091230 | 39.74 | 19.54 | 52 | 70 | 10 |
4 | 23404 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 | 0 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 | 0 |
在示例中,上面有 4 个病毒重叠群的结果:
- 使用基于 AAI 的方法 (100 x 5713 / 53242.8),第一个前病毒重叠群的估计完整性为 10.7%。此估计的置信度很高,基于 3.7% 的相对估计误差,这又基于与 CheckV 参考 DTR_517517 的 aai_id(平均氨基酸同一性)和 aai_af(重叠群的比对分数)
- 第二个重叠群使用基于 AAI 的方法具有 100% 的完整性,使用基于 HMM 的方法具有 75-100% 的完整性范围。请注意,重叠群长度比预期的基因组长度 37,309 bp 长一点。
- 根据 AAI 方法,估计第三个 contig 完成了 65.8%。然而,我们不能那么相信这一切,因为 aai_confidence 很低(意味着基于 AAI 的最高命中相当弱)。保守起见,我们可能希望报告基于 HMM 方法的完整性范围(52-70%)
- 最后一个 contig 没有任何基于 AAI 的命中,也没有任何病毒 HMM,所以我们对此序列无话可说
污染.tsv
如何估算污染的详细概述:
contig_id | contig_length | 总基因 | 病毒基因 | 主机基因 | 原病毒 | proviral_length | 主机长度 | region_types | 区域长度 | region_coords_bp | region_coords_genes | region_viral_genes | region_host_genes |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 98051 | 158 | 27 | 1 | 不 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 | 不适用 |
2 | 38254 | 54 | 23 | 2 | 是的 | 36072 | 2182 | 宿主,病毒 | 1-2182,2183-38254 | 1-2182,2183-38254 | 1-4,5-54 | 0,23 | 2,0 |
3 | 6930 | 9 | 1 | 2 | 是的 | 3023 | 3907 | 病毒,宿主 | 3023,3907 | 1-3023,3024-6930 | 1-5,6-9 | 1,0 | 0,2 |
4 | 101630 | 103 | 7 | 24 | 是的 | 28170 | 73460 | 主机,病毒,主机 | 46804,28170,26656 | 1-46804,46805-74974,74975-101630 | 1-43,44-85,86-103 | 0,7,0 | 13,0,11 |
在示例中,上面有 4 个病毒重叠群的结果:
- 第一个重叠群不是预测的前病毒
- 第二个重叠群的预测宿主区域覆盖 2182 bp
- 第三个 6930 bp 重叠群在左侧有一个宿主区域
- 第四个 101630 bp contig 有 103 个基因,包括 7 个病毒基因和 24 个宿主基因。CheckV 确定了两个宿主病毒边界
完整基因组.tsv
确定的推定完整基因组的详细概述:
contig_id | contig_length | 预测类型 | 置信度 | 信心原因 | 重复长度 | 重复计数 |
---|---|---|---|---|---|---|
1 | 44824 | DTR | 高的 | 基于 AAI 的完整性 > 90% | 253 | 2 |
2 | 38147 | DTR | 低的 | 低复杂度TR;重复TR | 20 | 10 |
3 | 67622 | DTR | 低的 | 检测到多个基因组拷贝 | 26857 | 2 |
4 | 5477 | ITR | 中等的 | 基于 AAI 的完整性 > 80% | 91 | 2 |
5 | 101630 | 原病毒 | 还没决定 | 不适用 | 不适用 | 不适用 |
在示例中,上面有 5 个病毒重叠群的结果:
- 第一个病毒重叠群具有 253 bp 的直接末端重复。根据估计的完整性 > 90%,它被归类为高置信度
- 第二个病毒重叠群具有 20 bp 的 DTR,但 DTR 复杂性低且不可信,导致置信度低。DTR 也出现 10 次,被认为是重复的。
- 第三个病毒重叠群的 DTR 为 26857 bp!这表明基因组的很大一部分是重复的。CheckV 将这些分类为低置信度,但用户可以手动解决这些重复
- 第四个病毒重叠群的 ITR 为 91 bp。这被认为是基于 AAI 的完整性 > 80% 的中等置信度
- 第五个病毒重叠群的两侧是宿主(原病毒)。但是 CheckV 无法评估完整性,因此置信度为未确定
经常问的问题
问:基于 AAI 和 HMM 的完整性有什么区别? 答:基于 AAI 的完整性产生一个估计的完整性值,该值被设计为非常准确,并且在报告的置信度为中或高时可以信任。在基于 AAI 的完整性不可靠的情况下,基于 HMM 的完整性给出了 90% 的完整性置信区间(例如 30-75%)。在这个例子中,我们可以 90% 确定(理论上)完整性在 30% 到 75% 之间。
问:kmer_freq 字段的含义是什么? 答:这是衡量病毒基因组在重叠群中出现多少次的指标。大多数时候,这非常接近 1.0。在极少数情况下,可能会发生组装错误,其中重叠群序列代表病毒基因组的多个连接拷贝。在这些情况下,基因组拷贝数将超过 1.0。
问:为什么我的 DTR contig 的估计完整性小于 100%? 答:如果估计的完整性接近 100%(例如 90-110%),那么查询很可能已完成。然而,有时不完整的基因组片段可能包含直接末端重复 (DTR),在这种情况下,我们应该期望它们的估计完整性小于 90%,有时甚至更少。在其他情况下,重叠群将真正是循环的,但估计的完整性是不正确的。如果查询多部分基因组的完整片段(常见于 RNA 病毒),也可能发生这种情况。默认情况下,CheckV 使用 90% 的完整性截止值进行验证,但用户可能希望在这些模棱两可的情况下做出自己的判断。
问:为什么当我的序列具有高污染时被认为是“高质量”的? 答:CheckV 仅根据完整性确定序列质量。主机污染很容易去除,因此不计入这些质量等级。
问:我进行了分箱并生成了病毒 MAG。我可以在这些上使用 CheckV 吗? 答:CheckV 可以估计这些的完整性,但不能估计污染。在运行 CheckV 之前,您需要将每个 MAG 的重叠群连接成一个序列。
问:我可以使用 CheckV 从整个(元)基因组中预测(原)病毒吗? 答:可能,虽然这还没有经过测试。
问:我可以使用 CheckV 去除假阳性病毒预测吗? 答:可能,虽然这还没有经过测试。具有至少 1 个病毒基因和比宿主基因更多病毒的序列可能是真正的病毒。
问:如果没有完整的估计,我应该如何处理假定的“封闭基因组”? 答:在某些情况下,您将无法验证带有末端重复或原病毒整合位点的序列的完整性。DTR 是一个相当可靠的指标(>90% 的时间),并且可能在没有完整性估计的情况下被信任。然而,完整的前病毒和 ITR 是不太可靠的指标,因此需要 >90% 的估计完整性。
问:为什么我的 contig 被归类为“质量未定”? 答:当序列不匹配任何具有足够高相似性的 CheckV 参考基因组以自信地估计完整性并且没有任何病毒 HMM 时,就会发生这种情况。对此有一些解释,按可能出现的频率顺序排列:1)您的 contig 非常短,并且碰巧它与 CheckV 参考不共享任何基因,2)您的 contig 来自一种非常新颖的病毒,它是远亲对于 CheckV 数据库中的所有基因组,3)您的 contig 根本不是病毒,因此与任何参考文献都不匹配。
问:我应该如何处理“未确定质量”的序列? 答:虽然无法估计这些的完整性,但您仍可以选择分析超过一定长度(例如 >30 kb)的序列。
问:CheckV 是否对我的序列进行分类注释? 答:CheckV 不执行病毒重叠群的分类注释。但是,一些分类信息可供用户自行查找。您可以通过查看分类法(以及源环境)来自己实现这一点,以获得基因组数据库的热门搜索。首先,您可以从“completeness.tsv”输出文件的“aai_top_hit”字段中找到热门信息。然后,您可以查找热门歌曲的分类。如果顶部命中以“DTR”开头,请查看“checkv_circular.tsv”数据库文件中的“世系”字段。您也可以在这里查看“栖息地”字段。对于以“GCA”开头的 GenBank 参考资料,请查看“checkv_genbank.tsv”中的“vog_clade”或“lineage”字段
问:为什么 CheckV 输出中包含 0 个病毒基因的序列 目前,CheckV 假设输入序列代表病毒并尝试估计它们的质量。一些输入序列可能来自细菌、质粒或其他来源,因此可能检测到 0 个病毒基因。
支持代码
基于成对 ANI 的快速基因组聚类
首先,创建一个blast+数据库:
makeblastdb -in <my_seqs.fna> -dbtype nucl -out <my_db>
接下来,使用 blast+ 包中的 megablast 来执行序列的 all-vs-all blastn:
blastn -query <my_seqs.fna> -db <my_db> -outfmt '6 std qlen slen' -max_target_seqs 10000 -o <my_blast.tsv> -num_threads 32
注意:使用 -perc_identity 标志会以敏感度为代价加快搜索速度:
blastn -query <my_seqs.fna> -db <my_db> -outfmt '6 std qlen slen' -max_target_seqs 10000 -perc_identity 90 -o <my_blast.tsv> -num_threads 32
接下来,通过组合序列对之间的局部比对来计算成对 ANI:
anicalc.py -i <my_blast.tsv> -o <my_ani.tsv>
最后,使用 MIUVIG 推荐参数(95% ANI + 85% AF)执行类似 UCLUST 的聚类:
aniclust.py --fna <my_seqs.fna> --ani <my_ani.tsv> --out <my_clusters.tsv> --min_ani 95 --min_tcov 85 --min_qcov 0
这个怎么运作
管道可以分为 4 个主要步骤:
A:去除原病毒上的宿主污染
- 基于与 HMM 的自定义数据库的比较,基因首先被注释为病毒或微生物
- CheckV 扫描 contig(5' 到 3'),比较一对相邻基因窗口之间的基因注释和 GC 内容
- 此信息用于计算每个基因间位置的分数并识别宿主病毒断点
- 宿主病毒断点通过以下方式标识:
- 高分 (>1.2)
- 在假定的宿主区域中至少有 2 个宿主特异性基因(对于具有 >=10 个基因的重叠群)
- 在假定的病毒区域中至少有 2 个病毒特异性基因(对于具有 >=10 个基因的重叠群)
- 在假定的宿主区域中至少有 30% 的基因被注释为微生物
B:估计基因组完整性(2 个算法)
- 基于 AAI 的方法(基因组完整性的准确点估计;如上图所示)
- 首先,使用 AAI(平均氨基酸同一性)将蛋白质与 CheckV 基因组数据库进行比较
- 在识别出最高命中后,完整性被计算为重叠群长度(或前病毒的病毒区域长度)与匹配参考基因组长度之间的比率
- 根据比对的强度和重叠群的长度报告置信水平
- 一般来说,高和中置信度的估计是相当准确的,可以信赖
- 基于 HMM 的方法(基因组完整性的估计范围)
- 高度新颖的病毒可能与具有足够 AAI 的 CheckV 基因组不匹配(即低置信度估计)
- 在这些情况下,CheckV 识别重叠群上的病毒 HMM(参见图 A)并将重叠群长度与共享相同 HMM 的参考基因组进行比较
- CheckV 然后返回基因组完整性的估计范围(例如 35% 到 60% 的完整性),它表示基于具有相同病毒 HMM 的参考基因组长度分布的 90% 置信区间
C:预测封闭基因组(3 个特征)
- 直接末端重复 (DTR)
- 在 contig 的开始/结束处重复 >20-bp 的序列
- 我们经验中最受信任的签名
- 可能表示从环状模板(即多联体)复制的环状基因组或线性基因组
- 原病毒
- 在 5' 和 3' 末端具有预测宿主边界的病毒区域(见面板 A)
- 注意:如果宿主区域已经被移除(例如使用 VIBRANT 或 VirSorter),CheckV 将不会检测到原病毒
- 反向末端重复序列 (ITR)
- 重叠群开始/结束处 >20-bp 的重复序列(3' 重复反转)
- 在我们的经验中最不可信的签名
CheckV 还将根据与完整性估计的比较报告置信水平(面板 B):
- 高置信度:>90% 的估计完整性
- 中等置信度:估计完整性为 80-90%
- 低置信度:<80% 估计的完整性
对于 DTR 和 ITR,CheckV 执行一些额外的过滤/检查:
- 重复中不明确的碱基(例如“NNNNN”):<= 20% 的重复序列,Ns
- 重复模式碱基频率(例如“AAAAA”):<= 75% 的重复序列由单碱基组成
- 重复序列的最大出现次数:<= 每个 contig 8 次(去除高度重复的序列)
- 最大 kmer 频率:<= 1.5(删除背靠背重复的具有相同基因组的重叠群)
D:总结质量。
根据 AC 的结果,CheckV 生成一个报告文件并将查询重叠群分配给五个质量层之一(与 MIUViG 质量层一致并扩展):
- 完整(高或中等置信度预测;见面板 C)
- 高质量(>90% 完整性)
- 中等质量(50-90% 的完整性)
- 低质量(<50% 的完整性)
- 质量未定
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。