宏病毒组分析¶
一句话概述¶
宏病毒组(Viromics)分析从环境或临床样本中鉴定和分析所有病毒序列——白话说就是:用宏基因组测序"一网打尽"样本中的所有病毒(包括已知的和未知的),然后搞清楚有哪些病毒、它们感染谁、干了什么。
核心知识点表格¶
| 知识点 | 说明 |
|---|---|
| VirSorter2 | 机器学习病毒序列识别工具,支持dsDNA/ssDNA/RNA病毒 |
| VIBRANT | 基于HMM的病毒识别和功能注释工具 |
| CheckV | 病毒基因组质量评估(完整性、污染度) |
| geNomad | 2024年新工具,取代VirSorter2的趋势 |
| DeepVirFinder | 深度学习病毒识别,对未知病毒敏感 |
| vConTACT2 | 病毒分类学工具,基于蛋白共享网络 |
| iPHoP | 病毒宿主预测工具 |
| DRAM-v | 病毒功能注释工具 |
| ViroProfiler | 集成化病毒组分析流水线(Nextflow) |
| MVP | 模块化病毒组分析流水线(Python) |
各步骤详解¶
第一步:理解宏病毒组实验流程¶
白话解释: 宏病毒组分析有两种主要来源:(1) 直接从宏基因组数据中挖掘病毒序列(shotgun metagenomics);(2) 先用物理/化学方法富集病毒颗粒再测序(viromics)。第二种方法病毒含量更高,但流程更复杂。
两种策略对比:
策略1 - 从宏基因组中挖病毒(简单):
样本 → DNA提取 → 宏基因组测序 → 组装 → 识别病毒contigs
策略2 - 病毒组富集(专业):
样本 → 过滤除去细菌/细胞 → DNase处理(去除游离DNA)
→ 病毒核酸提取 → 扩增(随机引物) → 测序 → 分析
第二步:序列组装与病毒识别¶
白话解释: 先把短reads组装成长contigs,然后用多种工具判断哪些contigs来自病毒。就像从一堆碎纸条中先拼好纸页,再判断哪些纸页是"病毒的身份证"。
# ===== 第一步:宏基因组组装 =====
# 质控
fastp \ # 质控过滤
-i raw_R1.fq.gz -I raw_R2.fq.gz \ # 输入配对FASTQ
-o clean_R1.fq.gz -O clean_R2.fq.gz \ # 输出清洗后FASTQ
-h qc_report.html # 质控报告
# 去除宿主序列(如果是人类样本)
bowtie2 \ # 比对到人类基因组
-x /ref/human_bowtie2_index \ # 人类基因组索引
-1 clean_R1.fq.gz -2 clean_R2.fq.gz \ # 清洗后的reads
--un-conc-gz unmapped_%.fq.gz \ # 输出非人类reads
-S /dev/null \ # 不保存SAM
-p 16 # 16线程
# 组装
megahit \ # MEGAHIT宏基因组组装
-1 unmapped_1.fq.gz \ # 非宿主R1
-2 unmapped_2.fq.gz \ # 非宿主R2
-o megahit_assembly/ \ # 输出目录
-t 32 \ # 32线程
--min-contig-len 1000 # 最短contig 1000bp
# ===== 第二步:病毒识别(多工具策略)=====
# 工具1:VirSorter2
conda install -c bioconda virsorter # 安装VirSorter2
virsorter run \ # 运行VirSorter2
-w vs2_output/ \ # 工作目录
-i megahit_assembly/final.contigs.fa \ # 输入contigs
--min-length 5000 \ # 最短5000bp
--min-score 0.5 \ # 最低得分0.5(高灵敏度)
-j 16 \ # 16线程
all # 检测所有病毒类型
# 工具2:VIBRANT
conda install -c bioconda vibrant # 安装VIBRANT
VIBRANT_run.py \ # 运行VIBRANT
-i megahit_assembly/final.contigs.fa \ # 输入contigs
-folder vibrant_output/ \ # 输出目录
-t 16 # 16线程
# 工具3:DeepVirFinder(深度学习,对新病毒敏感)
python dvf.py \ # 运行DeepVirFinder
-i megahit_assembly/final.contigs.fa \ # 输入contigs
-o dvf_output/ \ # 输出目录
-l 1000 # 最短1000bp
第三步:CheckV质量评估¶
白话解释: 不是所有识别出来的"病毒序列"都可靠。CheckV检查:(1) 基因组是不是完整的?(2) 有没有被细菌基因污染?就像质检员检查产品质量。
# 安装CheckV
conda install -c bioconda checkv # 安装
checkv download_database /db/checkv_db/ # 下载数据库
# 运行CheckV
checkv end_to_end \ # 完整质量评估
vs2_output/final-viral-combined.fa \ # 输入:VirSorter2识别的病毒序列
checkv_output/ \ # 输出目录
-d /db/checkv_db/ \ # 数据库路径
-t 16 # 16线程
# CheckV输出质量分级:
# Complete → 完整基因组(最好)
# High-quality → 高质量(>90%完整)
# Medium-quality → 中等质量(50-90%完整)
# Low-quality → 低质量(<50%完整)
# Not-determined → 无法判断
# 过滤高质量病毒基因组
# 保留 Medium-quality 及以上
awk -F'\t' '$8=="Complete" || $8=="High-quality" || $8=="Medium-quality"' \
checkv_output/quality_summary.tsv \ # 输入质量报告
> high_quality_viruses.tsv # 输出高质量列表
# 去除宿主污染区域(CheckV会标记)
cat checkv_output/proviruses.fna \ # 已去除宿主区域的前噬菌体
checkv_output/viruses.fna \ # 非前噬菌体的病毒
> clean_viruses.fna # 合并为干净的病毒序列集
第四步:病毒分类与聚类¶
白话解释: 给识别出来的病毒"上户口"——看它们属于哪个科、哪个属,并把相似的病毒聚在一起。
# ===== vConTACT2分类 =====
conda install -c bioconda vcontact2 # 安装
# 第一步:基因预测
prodigal \ # 预测病毒基因
-i clean_viruses.fna \ # 输入病毒序列
-a viral_proteins.faa \ # 输出蛋白序列
-f gff \ # GFF格式
-p meta \ # 宏基因组模式
-o viral_genes.gff # 输出GFF
# 第二步:准备vConTACT2输入
# 需要gene_to_genome.csv映射文件
# protein_id, contig_id, keywords
# prot_1, virus_1, none
# prot_2, virus_1, none
# 第三步:运行vConTACT2
vcontact2 \ # 分类命令
--raw-proteins viral_proteins.faa \ # 蛋白序列
--rel-mode Diamond \ # 使用DIAMOND比对
--proteins-fp gene_to_genome.csv \ # 蛋白-基因组映射
--db ProkaryoticViralRefSeq211 \ # 参考数据库
--output-dir vcontact2_output/ \ # 输出目录
-t 16 # 16线程
# ===== 种水平去冗余 =====
# 用dRep或CD-HIT按95% ANI聚类为vOTUs
cd-hit-est \ # CD-HIT-EST聚类
-i clean_viruses.fna \ # 输入病毒序列
-o vOTUs.fna \ # 输出代表序列
-c 0.95 \ # 95% identity阈值
-aS 0.85 \ # 85%覆盖度阈值
-T 16 \ # 16线程
-M 0 # 不限内存
第五步:宿主预测与功能注释¶
白话解释: 搞清楚这些病毒感染的是哪些细菌(宿主预测),以及病毒携带了什么功能基因(功能注释)。
# ===== iPHoP宿主预测 =====
conda install -c bioconda iphop # 安装iPHoP
iphop predict \ # 预测宿主
--fa_file clean_viruses.fna \ # 输入病毒序列
--db_dir /db/iphop_db/ \ # iPHoP数据库
--out_dir iphop_output/ \ # 输出目录
-t 16 # 16线程
# ===== DRAM-v功能注释 =====
conda install -c bioconda dram # 安装DRAM
# 准备DRAM-v输入(需要VirSorter2的affi-contigs.tab)
DRAM-v.py annotate \ # 病毒功能注释
-i clean_viruses.fna \ # 输入病毒序列
-v vs2_output/final-viral-score.tsv \ # VirSorter2评分文件
-o dramv_output/ \ # 输出目录
--threads 16 # 16线程
# 生成DRAM-v汇总
DRAM-v.py distill \ # 生成汇总报告
-i dramv_output/annotations.tsv \ # 注释文件
-o dramv_distill/ # 输出汇总目录
# 主要关注的辅助代谢基因(AMG)类别:
# - 碳代谢相关
# - 光合作用相关
# - 核苷酸代谢
# - 抗生素耐药基因
常见报错与解决¶
| 报错 | 原因 | 解决方案 |
|---|---|---|
VirSorter2: database not found | 没下载数据库 | 运行virsorter setup --db-dir /path/to/db |
CheckV: too many contigs | 输入序列太多处理慢 | 先过滤<5kb的短contigs |
vConTACT2: memory error | 蛋白序列太多 | 先去冗余减少数量 |
iPHoP: no hosts predicted | 大部分病毒是新发现的 | 正常现象,增加数据库或降低阈值 |
VIBRANT: scikit-learn version | Python版本不兼容 | 使用conda创建独立环境 |
prodigal: meta mode warning | 序列太短 | 过滤<1500bp的contigs |
速查表¶
# ========== 宏病毒组分析速查 ==========
# 1. 病毒识别(推荐多工具+CheckV)
virsorter run -i contigs.fa -w vs2/ --min-score 0.5 all # VirSorter2
VIBRANT_run.py -i contigs.fa -folder vibrant/ # VIBRANT
checkv end_to_end viral.fa checkv/ -d DB # 质量评估
# 2. 去冗余(vOTU定义:95% ANI + 85% AF)
cd-hit-est -i viral.fa -o vOTUs.fa -c 0.95 -aS 0.85
# 3. 分类
vcontact2 --raw-proteins prot.faa --rel-mode Diamond --db ProkaryoticViralRefSeq211
# 4. 宿主预测
iphop predict --fa_file viral.fa --db_dir DB --out_dir result/
# 5. 功能注释
DRAM-v.py annotate -i viral.fa -v vs2_score.tsv -o dram/
DRAM-v.py distill -i dram/annotations.tsv -o distill/
面试高频问题¶
Q1: VirSorter2和VIBRANT有什么区别?哪个更好?
VirSorter2用机器学习(随机森林),支持dsDNA/ssDNA/RNA病毒等多种类型。VIBRANT用隐马尔可夫模型(HMM),同时提供功能注释。Benchmark显示两者F1分数都达0.93,建议同时使用再用CheckV过滤。2024年geNomad新工具综合了两者优点,可能成为未来主流。
Q2: CheckV的质量分级是什么意思?
Complete=完整基因组;High-quality=>90%完整且含所有必需基因;Medium-quality=50-90%完整;Low-quality=<50%完整。发表文章通常需要Medium及以上质量。CheckV还检测宿主-病毒嵌合区域(proviruses),帮你去掉细菌基因的污染。
Q3: 什么是vOTU?怎么定义?
vOTU(virus Operational Taxonomic Unit)类似细菌的OTU。定义标准:95% ANI(平均核苷酸一致性)+ 85% AF(对齐覆盖度)。也就是说,两个病毒序列有95%以上的序列相似且覆盖了彼此85%以上的长度,就归为同一个vOTU(大致对应种水平)。
Q4: 2025年长读长测序对宏病毒组研究有什么影响?
2025年Nature发表的研究显示,长读长宏基因组(Nanopore/PacBio)在噬菌体研究中有重大优势:(1) 82%的整合噬菌体(prophage)在短读长组装中被碎片化,长读长能完整捕获;(2) 发现同一噬菌体可以整合到不同科的细菌中,挑战了噬菌体宿主特异性的传统认知。
Q5: 辅助代谢基因(AMG)是什么?为什么重要?
AMG是噬菌体携带的宿主代谢基因(如光合作用基因、碳代谢基因)。噬菌体感染细菌后表达这些基因来"劫持"宿主代谢,为自己的复制提供能量和原料。AMG的发现说明噬菌体不只是"杀手",还能重编程宿主的代谢功能,影响整个生态系统的物质循环。