1. 从零开始:为什么你需要这套“组合拳”?
如果你正在研究基因家族,比如像我一样捣鼓过植物的抗病基因,那你肯定遇到过这个头疼的问题:手里有一堆来自不同物种的基因序列,想知道它们之间的进化关系,画出一棵靠谱的基因树。这听起来是个标准操作,但真做起来,你会发现从原始序列到一棵漂亮、有根、还能讲故事的基因树,中间隔着好几个“坑”。
我刚开始的时候,以为用一个软件就能搞定。结果要么是软件不给力,比如OrthoFinder虽然能找同源基因和建物种树,但它生成的基因树限制太多,你的目标基因家族很可能被拆得七零八落,根本拼不到一棵树上。要么就是软件功能单一,比如IQtree建树很强,但它给的是无根树,你看着那棵树杈不知道该从哪里“种”下去。更别提后续的基因复制、丢失事件分析了,感觉流程是断的,工具是散的。
后来我摸索了很久,终于总结出一套流畅的“组合拳”:OrthoFinder + IQtree + Notung + iTOL。这套流程不是简单的软件堆砌,而是一个环环相扣的完整解决方案。OrthoFinder帮你奠定基石,构建一个可靠的有根物种树;IQtree发挥其建树算法的优势,为你目标基因家族构建高质量的无根基因树;Notung则像一位精明的“调解员”,将无根基因树与有根物种树进行比对和调和,不仅确定了树根,还推断出了关键的进化事件;最后,iTOL出场,把你的分析结果变成一张清晰、美观、可交互的示意图。
我实测下来,这套流程特别适合需要深入研究基因家族进化历史的研究人员,比如分析基因的扩张收缩、复制丢失事件。它把几个领域内顶尖工具的优势都结合了起来,避开了单个工具的短板。接下来,我就带你一步步走通这个流程,把我踩过的坑和总结的技巧都分享给你。咱们不用太复杂的理论,就讲怎么用、参数怎么设、结果怎么看。
2. 流程基石:用OrthoFinder构建可靠的有根物种树
基因树分析不能在空中楼阁上进行,它需要一个可靠的参考系,这就是物种树。你可以把物种树想象成一张标准的世界地图,而基因树则是某个特定家族(比如“张姓家族”)的迁徙路线图。只有先有了世界地图,你才能准确地把张姓家族在不同城市的分布标记上去,并理解他们迁徙的原因。OrthoFinder就是为我们绘制这张“世界地图”的利器。
2.1 OrthoFinder的核心优势与数据准备
OrthoFinder的强大之处在于,它不仅能通过比对全基因组蛋白序列来推断物种间的进化关系,还能在没有外群(outgroup)的情况下,自动为生成的物种树确定根的位置。这个功能非常实用,因为找到一个合适的、公认的远缘外群有时候并不容易。OrthoFinder利用基因重复事件的内在信息来实现这一点,省去了我们不少麻烦。
开始之前,数据准备是关键。你需要收集你研究的所有物种的全基因组蛋白序列文件(通常是.faa或.fasta格式)。每个物种一个文件,文件名最好就用物种名或简写,比如Arabidopsis_thaliana.faa、Oryza_sativa.faa。我建议把所有物种的蛋白序列文件放在一个单独的文件夹里,比如就叫protein_fasta,这样后面运行命令时非常清晰。
这里有个小经验:确保你的蛋白序列ID格式一致,并且不包含奇怪的字符(比如空格、冒号、括号)。有些后续工具对序列ID格式比较敏感,提前统一好能避免很多解析错误。一个简单的做法是,只保留基因座标识符(如LOC_Os01g01010)作为ID。
2.2 运行命令详解与结果解读
准备好数据后,运行OrthoFinder的命令非常简单。打开你的终端(Linux/Mac)或命令提示符/ PowerShell(Windows,需安装好OrthoFinder),进入你的工作目录,然后执行:
orthofinder -f protein_fasta/ -t 50 -a 50
我来拆解一下这几个参数:
-f protein_fasta/: 指定包含所有物种蛋白序列文件的文件夹路径。-t 50: 这是-threads的简写,指定用于多序列比对和建树等计算密集型任务的CPU线程数。根据你服务器的性能来调整,数字越大跑得越快。我这里设为50。-a 50: 这是-orthofinder_threads的简写,指定OrthoFinder内部其他操作(如聚类、结果整理)使用的线程数。通常可以和-t设成一样。
运行时间取决于物种数量、蛋白序列多少和服务器性能。跑完后,OrthoFinder会在protein_fasta文件夹同级生成一个名为OrthoFinder/Results_日期(例如Results_Jan11)的新文件夹。我们最关心的物种树文件就在这个路径下:OrthoFinder/Results_Jan11/Species_Tree/SpeciesTree_rooted.txt。这个文件就是有根的新ick格式物种树。
你可以用任何支持Newick格式的树查看软件打开它,比如FigTree、MEGA,甚至是在线的iTOL。打开后,检查一下树的拓扑结构是否符合你的生物学知识或已有文献。比如,被子植物中,单子叶和双子叶植物应该分开。OrthoFinder的结果通常很可靠。
验证生根的准确性(可选但推荐):虽然OrthoFinder宣称可以无外群生根,但如果你心存疑虑,或者审稿人可能问到,可以做个验证。方法是:找一个公认的远缘外群物种(比如研究植物时常用的无油樟Amborella trichopoda),将其蛋白序列单独放在一个新文件夹(如Atrichopoda)里。然后使用OrthoFinder的“增量添加”功能,在原有分析基础上加入这个外群重新分析,而无需从头再来:
orthofinder -b protein_fasta/OrthoFinder/Results_Jan11/WorkingDirectory/ -f Atrichopoda/
参数-b后面跟的是你第一次运行时生成的WorkingDirectory路径(在结果文件夹内)。这个命令会快很多,因为它只计算新物种与原有物种之间的比对。完成后,查看新的有根物种树。如果加入外群前后,核心物种(你原本研究的那些)之间的拓扑结构保持一致,只是根部延伸到了外群,那就强有力地证明了OrthoFinder无外群生根的准确性。我自己的几次分析都验证了这一点,所以对它的这个功能还是挺有信心的。
3. 核心构建:用IQtree为你的基因家族打造无根基因树
有了可靠的物种树作为地图,接下来就要绘制我们特定基因家族的“迁徙路线图”了。OrthoFinder虽然也能生成基因树,但它有个限制:它只针对自己通过算法聚类出来的同源基因群(Orthogroup)来建树。如果你的目标基因家族(比如我研究的NB-ARC抗病基因结构域)没有被OrthoFinder完整地聚到一个Orthogroup里,而是被拆散了,那就无法得到一棵包含所有成员的完整基因树。这时,我们就需要更灵活、更强大的建树工具——IQtree。
3.1 序列比对:一切从MUSCLE开始
在建树之前,必须对基因序列进行多序列比对,确保同源位点对齐。这里我习惯使用MUSCLE,它速度快,精度对于一般需求也足够了。假设你已经从各个物种里提取出了目标基因家族的蛋白序列,并保存到了一个文件NB-ARC.fasta里。
运行MUSCLE进行比对:
muscle -in NB-ARC.fasta -out NB-ARC.aligned.afa -maxiters 2
-in: 指定输入序列文件。-out: 指定输出比对结果文件,后缀我常用.afa(aligned fasta)。-maxiters 2: 指定最大迭代次数为2,这是一个在速度和精度之间取得很好平衡的设置。对于成百上千条序列,这个设置非常高效。
比对完成后,强烈建议你肉眼检查一下比对结果(可以用AliView、MEGA等软件),特别是保守区域(如你研究的结构域)是否对齐良好。糟糕的比对会直接导致错误的系统发育树。
3.2 IQtree建树:模型选择与命令实战
接下来就是重头戏,使用IQtree从比对好的序列构建最大似然树。IQtree的优点在于它能自动进行模型选择,并支持超快的模型优化和树搜索算法。
一个基础但强大的命令如下:
iqtree -s NB-ARC.aligned.afa -nt AUTO -m MFP -bb 1000 -alrt 1000
这个命令包含了几个关键的最佳实践参数:
-s NB-ARC.aligned.afa: 指定输入文件为比对后的序列。-nt AUTO: 让IQtree自动检测并使用所有可用的CPU线程,最大化利用计算资源。-m MFP: 这是核心参数。MFP代表“ModelFinder Plus”,它会自动执行模型选择,并基于选出的最佳模型进行建树。这是IQtree最省心也最科学的功能之一,避免了手动选择模型的盲目性。-bb 1000: 指定进行Ultrafast Bootstrap分析,重复抽样1000次。Bootstrap值用于评估树节点(分支)的可靠性,值越高(通常>70%或95%)表示该分支越可信。这是发表文章时几乎必须提供的支持率。-alrt 1000: 指定进行SH-aLRT检验,同样重复1000次。这是另一种分支支持率检验,与Bootstrap结合使用,能提供更稳健的评估。很多期刊现在推荐同时报告这两种支持率。
运行后,IQtree会输出一堆文件,其中最重要的是:
NB-ARC.aligned.afa.treefile: 这就是我们需要的无根基因树(Newick格式)。NB-ARC.aligned.afa.iqtree: 这是报告文件,里面包含了最佳拟合的进化模型(比如JTT+F+R10)、每个节点的Bootstrap和SH-aLRT支持率、模型参数等详细信息。务必仔细阅读这个文件,它是你建树质量的关键记录。
我踩过的一个坑:IQtree在运行前会默认进行chi2检验,过滤掉一些位点模式信息量极低或可能引起问题的序列。这些被过滤的序列不会出现在最终的树里。你可以在.iqtree报告里找到“Number of sequences removed by ‘chi2’ test”这一行。如果发现你关注的某些基因不见了,别慌,先去报告里查一下是不是被过滤了。这有时是合理的,但如果你确信这些序列没问题,可以添加参数-nocc来关闭这个检验。
4. 关键调和:用Notung确定树根并解析进化事件
现在我们手上有两样东西:一棵来自OrthoFinder的有根物种树(世界地图),和一棵来自IQtree的无根基因树(张姓家族迁徙路线草图)。草图没有起点,我们不知道这个家族最初是从哪里开始迁徙的。而且,我们还想知道在迁徙过程中,发生了多少次“分家”(基因复制)、有多少支系“失传”(基因丢失)。这就是Notung大显身手的时候了。
4.1 数据准备与格式“大坑”
Notung是一个Java图形界面程序,使用起来比较直观,但输入文件的格式要求非常严格,这里是我踩坑最多的地方。
- 物种树文件: 直接使用OrthoFinder输出的
SpeciesTree_rooted.txt即可。确保它是有根的。 - 基因树文件: 使用IQtree输出的
.treefile。注意,它是无根的。 - 最关键的一步:修改基因序列ID格式。Notung通过下划线
_来分割基因名和物种名。它会把最后一个下划线之后的部分当作物种名。例如,一个基因ID是XP_020599319.1_Phalaenopsis_equestris,Notung会认为物种名是equestris,这显然是错的(应该是Phalaenopsis_equestris)。
解决方案:你必须提前处理基因序列的ID,确保物种名中不包含下划线。通常的做法是:
- 将物种名中的下划线
_替换为连字符-或其他字符。 - 或者,在最初从蛋白组中提取目标基因时,就重命名ID,格式如:
基因ID@物种名(用@分隔),或者物种名|基因ID。只要保证分隔符是唯一的,且物种名是连续字符串就行。
例如,把XP_020599319.1_Phalaenopsis_equestris改为XP_020599319.1_Phalaenopsis-equestris。这个步骤必须在运行IQtree之前,在最初的FASTA序列文件中完成,因为IQtree的建树结果会沿用这些ID。如果建完树才发现,再改树文件里的ID就非常麻烦了。
4.2 Notung操作实战:生根与事件推断
打开Notung,你会看到两个主要模式:Rooting Mode 和 Reconciliation Mode。我们通常使用 Rooting Mode,因为它能一站式完成生根和事件推断。
- 加载文件: 点击“Load Gene Tree”加载你处理好的无根基因树文件,点击“Load Species Tree”加载有根物种树文件。
- 生根(Rooting): Notung会根据物种树,计算基因树上每条边作为树根位置的“代价”(基于复制、转移、丢失事件的模型,即DTL分数)。代价越小的边,越可能是真正的根。Notung会用红色高亮显示代价最小的一批边(默认是最小值附近5%范围内的边)。
- 选择树根: 这时你需要根据生物学知识进行判断。如果基因树中包含外群物种(比如我们之前为了验证而加入的无油樟),那么连接外群与内群的那条边,通常就是正确的根。Notung会清晰地显示出来,点击那条边即可。如果没有外群,你会看到多条边被高亮,这时选择就比较困难,可能需要结合基因结构、功能域分布等其他信息来综合判断。这也是为什么在可能的情况下,在IQtree建树时包含一个外群序列会非常有帮助。
- 导出与查看结果: 确定树根后,Notung会自动完成基因树与物种树的“调和”,并推断出基因复制和丢失事件。你可以在界面底部看到统计信息,例如“254 gene duplications, 76 losses”。最后,务必点击“Save As…”导出有根的基因树(Newick格式),这是给下一步iTOL可视化的文件。
一个重要的理解:Reconciliation Mode输入的是有根基因树,它只做事件推断。而Rooting Mode输入的是无根基因树,它先帮你找根,然后基于你选的根自动完成事件推断。所以我们用Rooting Mode更符合从零开始的流程。
5. 成果展示:在iTOL中绘制高颜值可交互基因树
经过前面三步,我们得到了包含进化事件信息的有根基因树文件。最后一步,就是把它变成一张可以放入文章、报告或PPT中的精美图片。iTOL 是这个环节的不二之选,它是一个功能极其强大且友好的在线可视化平台。
5.1 基础导入与树形调整
访问iTOL官网,点击“Upload”按钮上传你的Newick格式树文件。上传成功后,树会立即显示在画布上。
首先调整树的基本样式:
- 树形: 在右侧控制面板的“Tree Style”中,我个人最喜欢
Normal或Radial(辐射状)。辐射状树对于展示基因家族的扩张辐射特别直观。 - 分支和标签: 你可以调整分支的粗细、颜色,以及字体大小。对于基因树,叶子节点(基因)的标签往往很长,可以适当缩小字体,或者考虑使用缩写。iTOL支持在上传的树文件中直接为每个节点定义显示名称,这是一个更高级的用法。
- 缩放与布局: 用鼠标滚轮缩放,拖拽画布移动。确保整棵树在视野中布局合理。
5.2 高级注释:让树“讲故事”
iTOL最强大的地方在于其丰富的注释功能。我们可以把Notung分析得到的信息映射到树上。
- 标注基因复制事件: Notung导出的树文件中,复制事件节点通常有特殊标记(比如
D=)。但更直观的做法是,将复制事件列表整理成一个简单的文本文件。格式如下:
其中TREE_COLORS SEPARATOR TAB DATA node_id color label NODE_123 #FF0000 duplication NODE_456 #FF0000 duplicationnode_id需要你知道Notung输出的节点编号。然后通过iTOL的“Upload” -> “Add dataset to current tree”功能,将这个文件上传为TREE_COLORS类型,就可以在树上对应的节点处添加红色标记或标签了。 - 按物种着色: 这是最基本也最有效的展示方式。创建一个
LABEL_COLORS或RANGE_COLORS数据集文件,为不同物种的基因分支或标签指定颜色。例如:
上传后,来自同一物种的所有基因分支就会变成同一种颜色,一目了然。TREE_COLORS SEPARATOR TAB DATA Phalaenopsis-equestris branch #8A2BE2 normal Dendrobium-catenatum branch #FF4500 normal Apostasia-shenzhenica branch #00CED1 normal Gastrodia-elata branch #32CD32 normal Amborella-trichopoda branch #DAA520 normal - 添加条形图或热图: 如果你想展示每个基因的某些定量特征,比如表达量、蛋白长度、选择压力(Ka/Ks值)等,iTOL支持条形图(
DATASET_BAR)和热图(DATASET_HEATMAP)。你需要将数据整理成iTOL要求的格式文件,然后上传为对应的数据集。这些图表会并排显示在树旁边,信息量巨大。
完成所有美化后,你可以通过“Export”功能下载高分辨率的PNG或PDF图片,用于出版。也可以保存项目文件(.itol),方便下次直接加载修改。
6. 流程回顾与避坑指南
走完这一整套流程,你可能已经花了几天甚至更长时间。让我帮你再梳理一下核心链路和那些最容易出问题的地方,希望能帮你节省更多时间。
核心流程四步走:
- OrthoFinder建物种树:输入全物种蛋白组,得到有根物种树。这是整个分析的参考框架。
- IQtree建基因树:输入目标基因家族的多序列比对文件,得到高质量的无根基因树。关键是模型自动选择和分支支持率评估。
- Notung调和生根:输入有根物种树和无根基因树,通过物种树信息为基因树确定根的位置,并推断基因复制、丢失等进化事件。格式处理是成败关键。
- iTOL可视化:输入Notung生成的有根基因树,通过丰富的注释功能,将进化历史和各类特征直观呈现出来。
我总结的三大“避坑”要点:
- 序列ID格式,从一开始就管好:这是Notung环节最大的“坑”。在提取出目标基因序列准备做多序列比对(MUSCLE)之前,就统一好ID格式。采用
基因标识符@物种名或物种名-基因标识符这种无歧义的格式,能一劳永逸。千万别等到Notung报错再回头改。 - 外群序列,能加则加:无论是在OrthoFinder中验证物种树生根,还是在IQtree和Notung中帮助确定基因树的根,一个合适的远缘外群都能极大提高结果的可靠性和可解释性。即使OrthoFinder可以无外群生根,多加一个验证步骤也让你的分析更扎实。
- 参数选择,理解大于盲从:给IQtree设置
-m MFP让它自动选模型,给Notung的DTL模型使用默认参数,对于大多数情况都是合理的。但你需要理解这些参数和结果的含义。比如,IQtree报告里选出的最佳模型是什么?Notung推断出的复制事件数量是否多到离谱?这些都需要结合你的生物学背景去判断。不要完全做“黑箱”分析。
这套流程看起来工具多、步骤繁,但每一步都承担着不可替代的专门任务。一旦你跑通一次,把它写成脚本或记录下详细命令,后续的分析就会变得非常高效。它带给你的不仅仅是一张漂亮的树图,更是一整套对基因家族进化历史的、有数据支撑的深入解读。
782



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



