5种分子数据实战:从SNP到单拷贝基因的系统发育树构建指南
刚接触系统发育分析的朋友,常常会面对第一个、也是最关键的一个困惑:我手头有不同类型的分子数据,到底该用哪一种来构建进化树?是用全基因组重测序得到的海量SNP,还是用转录组测序的基因表达矩阵,或者是费尽心思找出来的那些单拷贝同源基因?选错了起点,后续的分析流程可能事倍功半,甚至得出误导性的结论。这篇文章不打算泛泛而谈理论,而是想和你分享我这些年处理不同数据类型的实战经验,从数据特性、适用场景,到具体的预处理命令和软件搭配,一步步拆解。无论你是生物信息学的初学者,还是需要快速为特定研究问题选择数据类型的研究者,希望这份聚焦于“数据选择”的指南,能帮你绕过我当年踩过的那些坑,更高效地构建出可靠、有生物学意义的系统发育树。
1. 数据基石:五种分子数据类型的深度解析与选择逻辑
构建系统发育树,第一步永远是理解你的“建筑材料”。不同的数据类型,其信息含量、进化速率、受选择压力影响的程度都截然不同,这直接决定了它们所揭示的进化关系层次和适用范围。我们不能简单地说哪种数据“更好”,而应该说,针对你的具体科学问题,哪种数据“更合适”。
1.1 SNP数据:高分辨率与群体历史的探针
SNP(单核苷酸多态性) 如今已成为群体遗传学和系统发育研究中最常见的数据类型之一,尤其是在拥有多个个体或近缘物种的全基因组重测序数据时。它的核心优势在于位点数量巨大,能提供极高的分辨率,非常适合用于解析种内群体结构、近期分化事件以及基因流。
然而,直接用原始SNP构建物种树需要格外小心。一个主要的陷阱是不完全谱系分选(ILS) 和基因流。单个SNP位点承载的进化历史可能不代表整个物种的历史。因此,基于SNP构树,我们通常不是简单地用所有位点 concatenate(串联)起来跑一个模型,而是采用多物种溯祖(MSC)模型的软件,如 SNAPP(集成在BEAST2中)或 SNP-sites 结合 RAxML 的联合分析思路。
注意:使用SNP数据前,务必进行严格的质控,包括剔除缺失率过高的个体和位点,以及进行连锁不平衡(LD)修剪,以避免位点间的非独立性影响树的结构。
一个典型的从VCF文件开始,准备SNP数据用于简约法或距离法分析的流程如下:
# 使用vcftools进行基础过滤
vcftools --vcf raw_snps.vcf --max-missing 0.9 --minQ 30 --minDP 5 --maxDP 50 --recode --out filtered_snps
# 将VCF转换为Phylip格式(适用于RAxML等软件)
# 可以使用vcftools的--phylip输出,或使用其他工具如PGDSpider
vcftools --vcf filtered_snps.recode.vcf --phylip --out snps_for_phylip
# 如果需要用于SNAPP分析,则需要转换为Nexus格式,并指定为二态性数据
# 这通常需要自定义脚本或使用BEAST2提供的转换工具
适用场景总结:
- 目标:解析近缘物种/种内群体间的精细关系,检测杂交和基因流事件。
- 优势:位点多,分辨率高,对近期进化事件敏感。
- 挑战:需处理ILS问题,数据量大,计算资源要求高。
- 推荐软件:SNAPP (BEAST2) 用于物种树推断;RAxML 或 FastTree 可用于快速获得一个初步的基于串联SNP的树。
1.2 转录组数据:功能基因的进化快照
利用转录组(RNA-seq) 数据构建系统发育树,本质上是利用表达基因的编码序列。这尤其适用于那些基因组尚未测序的非模式生物。你得到的不再是全基因组的随机SNP,而是正在表达的、可能具有重要功能的基因集合。
处理转录组数据的关键步骤是从头组装和同源基因鉴定。流程比处理基因组SNP更复杂一些:
- 组装与注释:使用Trinity、SOAPdenovo-Trans等对每个物种的RNA-seq数据进行从头转录本组装,并通过TransDecoder等工具预测编码区(CDS)。
- 直系同源基因聚类:使用OrthoFinder、OrthoMCL等工具,将所有物种的预测CDS进行聚类,找出直系同源基因群。
- 序列提取与比对:从每个直系同源群中提取单拷贝或低拷贝基因,进行多序列比对(如使用MAFFT、Clustal Omega)。
- 序列串联或 coalescent分析:将多个单拷贝基因的比对结果串联成一个“超级基因”,或者使用ASTRAL、MP-EST等基于基因树汇总物种树。
# 示例:使用OrthoFinder进行直系同源基因聚类
orthofinder -f /path/to/proteome_fastas -t 16 -a 16
# OrthoFinder运行后,会在结果目录中生成单拷贝直系同源基因序列文件
# 通常位于 `Orthogroups/Single


5384

被折叠的 条评论
为什么被折叠?



