宏基因组毒力因子分析:VFDB/VirulenceFinder¶
一句话概述¶
毒力因子(VF)分析就是找出微生物群落中"致病武器"——哪些基因让细菌能粘附宿主、入侵组织、逃避免疫、分泌毒素,从"谁在那里"深入到"谁可能致病"。
核心知识点表格¶
| 知识点 | 说明 |
|---|---|
| 毒力因子(VF) | Virulence Factor,使病原菌能引起疾病的基因/蛋白质 |
| VFDB | 最权威的毒力因子数据库,2025年已更新到包含抗毒力化合物数据 |
| VFDB 2.0 + MetaVF | 2024年更新,62,332条VFG同源序列,支持宏基因组物种级分析 |
| VirulenceFinder | DTU开发的在线毒力基因检测工具 |
| PathoFact | 宏基因组中同时预测毒力因子和耐药基因的流水线 |
白话解释¶
如果说抗生素耐药基因是细菌的"防弹衣"(被动防御),那毒力因子就是细菌的"进攻武器":
| 武器类型 | 专业名称 | 白话比喻 |
|---|---|---|
| 粘附因子 | Adherence | 像吸盘一样黏在你身上 |
| 侵袭因子 | Invasion | 破门而入,入侵细胞 |
| 毒素 | Toxin | 放毒,毒害宿主细胞 |
| 铁摄取系统 | Iron acquisition | 抢你的铁来自己用 |
| 免疫逃避 | Immune evasion | 隐身术,躲过免疫系统 |
| 分泌系统 | Secretion system | 注射器,把毒素注入宿主细胞 |
| 生物膜 | Biofilm | 建堡垒,形成保护膜 |
VFDB数据库详解¶
VFDB 2022分类体系¶
VFDB将所有已知的毒力因子分为14个基础类别:
VFDB 毒力因子分类(14大类):
├── Adherence(粘附)
├── Biofilm(生物膜)
├── Effector delivery system(效应物递送系统)
├── Exoenzyme(胞外酶)
├── Exotoxin(外毒素)
├── Immune evasion(免疫逃避)
├── Invasion(入侵)
├── Iron uptake(铁摄取)
├── Motility(运动性)
├── Nutritional/metabolic factor(营养/代谢因子)
├── Post-translational modification(翻译后修饰)
├── Regulation(调控)
├── Stress survival(应激存活)
└── Others(其他)
使用VFDB分析宏基因组¶
# ====== 方法1:使用DIAMOND比对VFDB ======
# 下载VFDB核心数据集(实验验证的VF)
wget http://www.mgc.ac.cn/VFs/Down/VFDB_setA_pro.fas.gz # 下载核心蛋白序列
gunzip VFDB_setA_pro.fas.gz # 解压
# 下载VFDB全集(包含预测的VF)
wget http://www.mgc.ac.cn/VFs/Down/VFDB_setB_pro.fas.gz # 下载全集蛋白序列
gunzip VFDB_setB_pro.fas.gz
# 构建DIAMOND数据库
diamond makedb \
--in VFDB_setA_pro.fas \ # 输入VFDB蛋白序列
--db vfdb_diamond # 输出数据库名
# 比对预测蛋白到VFDB
diamond blastp \
--db vfdb_diamond \ # VFDB数据库
--query predicted_proteins.faa \ # 输入预测的蛋白序列
--out vfdb_results.tsv \ # 输出比对结果
--outfmt 6 qseqid sseqid pident length evalue bitscore stitle \ # 输出格式
--evalue 1e-10 \ # E-value阈值
--id 80 \ # 最低相似度80%
--query-cover 70 \ # 最低查询覆盖度70%
--max-target-seqs 1 \ # 每个查询只保留最佳匹配
--threads 16 # 线程数
# ====== 方法2:使用ABRicate(支持多数据库)======
# 安装ABRicate
conda install -c bioconda abricate # 安装abricate
# 查看可用数据库
abricate --list # 列出所有可用数据库(包含vfdb)
# 运行ABRicate搜索VFDB
abricate \
--db vfdb \ # 使用VFDB数据库
contigs.fa \ # 输入组装的contigs
--minid 80 \ # 最低相似度80%
--mincov 70 \ # 最低覆盖度70%
> abricate_vfdb_results.tsv # 输出结果
# 汇总多个样本的结果
abricate --summary \
sample1_results.tsv \ # 样本1结果
sample2_results.tsv \ # 样本2结果
> summary_matrix.tsv # 输出汇总矩阵
# ====== 方法3:使用MetaVF工具包(2024年新工具)======
# MetaVF支持物种级别的VFG识别
# 安装和使用见 https://github.com/VFDB2/MetaVF
VFDB结果解读¶
# 解析DIAMOND比对VFDB的结果
python3 << 'EOF'
import pandas as pd # 导入pandas
# 读取比对结果
columns = ["qseqid", "sseqid", "pident", "length", "evalue", "bitscore", "stitle"]
df = pd.read_csv("vfdb_results.tsv", sep="\t", names=columns) # 读取结果
# 从VFDB序列描述中解析信息
# VFDB格式示例:VFG000001(gb|AAA98077) (ace) [Adherence (VF0001)] [Vibrio cholerae]
import re
def parse_vfdb(stitle):
"""从VFDB描述行提取毒力因子信息"""
vfg_match = re.search(r'(VFG\d+)', stitle) # 提取VFG编号
gene_match = re.search(r'\((\w+)\)', stitle) # 提取基因名
category_match = re.search(r'\[(.+?) \(', stitle) # 提取分类
species_match = re.findall(r'\[([^\]]+)\]', stitle) # 提取物种
return {
"VFG_ID": vfg_match.group(1) if vfg_match else "NA",
"gene": gene_match.group(1) if gene_match else "NA",
"category": category_match.group(1) if category_match else "NA",
"species": species_match[-1] if species_match else "NA"
}
# 应用解析函数
parsed = df["stitle"].apply(parse_vfdb).apply(pd.Series) # 解析每行
result = pd.concat([df, parsed], axis=1) # 合并结果
# 统计各类别的VF数量
print("=== 毒力因子类别分布 ===")
print(result["category"].value_counts()) # 打印各类别数量
# 统计各物种的VF数量
print("\n=== 携带VF的物种分布 ===")
print(result["species"].value_counts().head(10)) # 打印Top10物种
EOF
VirulenceFinder使用¶
# 在线版本(推荐初学者使用):
# https://cge.food.dtu.dk/services/VirulenceFinder/
# 支持上传FASTA文件,快速获得结果
# 本地安装
conda install -c bioconda virulencefinder # 安装virulencefinder
# 下载数据库
git clone https://bitbucket.org/genomicepidemiology/virulencefinder_db.git
# 运行VirulenceFinder
python -m virulencefinder \
-i contigs.fa \ # 输入序列文件
-o virulencefinder_output/ \ # 输出目录
-p virulencefinder_db/ \ # 数据库路径
-s "Escherichia coli" \ # 指定物种
--min_cov 0.6 \ # 最低覆盖度60%
--threshold 0.9 # 最低相似度90%
PathoFact流水线¶
# PathoFact同时预测VF和ARG
# 安装(需要Snakemake)
git clone https://git-r3lab.uni.lu/laura.zinnliebenstein/pathoFact.git # 克隆仓库
# 运行PathoFact
snakemake \
--snakefile PathoFact/Snakefile \ # 指定Snakefile
--configfile config.yaml \ # 配置文件
--cores 16 # 核心数
2型糖尿病相关的毒力因子研究(与简历项目相关)¶
2024年Nature Communications发表的VFDB 2.0研究发现: - 在2型糖尿病患者肠道中,长读长HiFi测序证实共享的毒力因子特征由大肠杆菌致病株携带 - 在5,452株健康人群的共生菌中,只有11/301个物种携带毒力因子 - 提示毒力因子分析可以区分致病菌和共生菌
# 在你的T2D研究中分析VF的示例代码
# 第一步:比对MAG蛋白到VFDB
diamond blastp --db vfdb_diamond --query t2d_mag_proteins.faa \
--out t2d_vf_results.tsv --outfmt 6 --evalue 1e-10 --id 80 --threads 16
# 第二步:比较T2D组和对照组的VF差异
python3 << 'EOF'
import pandas as pd
from scipy import stats # 导入统计模块
# 假设已经有每个样本的VF丰度矩阵
# vf_abundance: 行=样本, 列=VF基因, 值=丰度
# metadata: 包含Group列(T2D/Control)
# 对每个VF基因做Mann-Whitney U检验
for vf_gene in vf_abundance.columns:
t2d_values = vf_abundance.loc[metadata["Group"]=="T2D", vf_gene] # T2D组
ctrl_values = vf_abundance.loc[metadata["Group"]=="Control", vf_gene] # 对照组
stat, pval = stats.mannwhitneyu(t2d_values, ctrl_values) # U检验
if pval < 0.05:
print(f"{vf_gene}: p={pval:.4f}") # 输出显著差异的VF
EOF
常见报错与解决¶
| 报错 | 原因 | 解决方案 |
|---|---|---|
| VFDB下载链接失败 | 网络问题或链接更新 | 访问 http://www.mgc.ac.cn/VFs/ 获取最新链接 |
ABRicate database not found | 数据库未更新 | abricate --setupdb 更新数据库 |
DIAMOND报database format error | DIAMOND版本不兼容 | 重新用当前版本的DIAMOND构建数据库 |
| VirulenceFinder物种不支持 | 只支持特定物种 | 去掉 -s 参数,或改用VFDB通用分析 |
| 比对结果太少 | 阈值设太高或序列太短 | 降低 --id 到70%,降低 --query-cover 到60% |
速查表¶
# 工具选择
最全面的VF分析 → VFDB + DIAMOND比对
快速多数据库筛查 → ABRicate(支持VFDB/VirulenceFinder等)
在线快速检测 → VirulenceFinder网页版
宏基因组物种级分析 → MetaVF(2024年新工具)
VF + ARG联合分析 → PathoFact
# VFDB数据集选择
setA = 核心数据集(实验验证的VF,推荐)
setB = 全集(包含预测的VF同源序列)
# 比对阈值推荐
标准分析:identity ≥ 80%, coverage ≥ 70%, e-value ≤ 1e-10
严格分析:identity ≥ 90%, coverage ≥ 80%, e-value ≤ 1e-20
# 14大类毒力因子速记
粘附、生物膜、分泌系统、胞外酶、外毒素、免疫逃避、入侵
铁摄取、运动性、营养因子、翻译后修饰、调控、应激存活、其他
面试高频问题¶
Q1:什么是毒力因子?为什么在宏基因组中分析VF很重要?
A:毒力因子是使病原菌能引起疾病的基因产物,包括粘附因子、毒素、分泌系统等。在宏基因组中分析VF可以评估微生物群落的致病潜力,区分致病菌和共生菌,对疾病机制研究和风险评估很有价值。
Q2:VFDB和VirulenceFinder有什么区别?
A:VFDB是最全面的VF数据库,覆盖32个属的病原菌,有14类VF的分层分类系统。VirulenceFinder是DTU开发的在线工具,主要针对特定物种(如大肠杆菌),使用更简便但覆盖范围较窄。
Q3:你的T2D项目中有没有做毒力因子分析?有什么发现?
A:(结合自己项目回答)可以提到2024年VFDB 2.0的研究发现T2D患者肠道中大肠杆菌致病株携带特异性VF,共生菌很少携带VF,这为理解T2D肠道菌群失调提供了新角度。
Q4:如何区分一个基因是真正的VF还是假阳性?
A:三层验证:①序列比对的相似度和覆盖度要达到阈值(推荐≥80%相似度,≥70%覆盖度);②在VFDB中优先使用核心数据集(setA,实验验证的);③结合物种注释,确认该VF是否来自已知的病原菌。