ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

基因家族共线性分析实战:TBtools图形化MCScanX全流程

基因家族共线性分析实战:TBtools图形化MCScanX全流程 做基因家族分析的时候最劝退我的不是序列比对也不是进化树而是共线性分析那一步。导师要求把基因家族成员的共线性关系画出来我一查教程全是命令行操作下载MCScanX、编译、写blast结果、改gff格式、跑程序最后还要自己写Python脚本画图。当时我就想有没有一个工具能让我按几个按钮就出结果后来我遇到TBtools才发现MCScanX早就被集成成了图形插件5分钟就能把拟南芥和水稻这种跨物种的共线性分析跑完。这篇博文我就把自己实际操作的流程和踩过的坑完整写出来给正在被命令行折磨的师弟师妹们一个可以照抄的作业。如果你是做基因家族进化分析、比较基因组学或者全基因组复制事件研究的这份流程可以直接套用。拟南芥作为双子叶模式植物、水稻作为单子叶模式植物两者之间做共线性分析是一套很经典的操作既能用来确认直系同源基因又能给论文里的进化分析提供硬证据。下面我按实际操作的顺序把原理、数据准备、参数设置、可视化和避坑技巧一次说透。1. 共线性分析到底在干什么为什么绕不开MCScanX1.1 共线性分析在基因家族研究里的位置很多人在论文里看到“synteny”“collinearity”这两个词容易混在一起。简单说synteny指两个物种的基因组在染色体片段上存在同源的基因集合而collinearity更进一步要求这些同源基因在染色体上的排列顺序也保持一致。基因家族分析里我们经常需要回答“这个家族的基因在不同物种里是怎么来的”“哪些基因是同一个祖先基因复制分化出来的”仅靠BLAST找序列相似性远远不够因为串联复制和全基因组复制事件会造成大量同源拷贝顺序信息才是最可靠的证据之一。MCScanXMultiple Collinearity Scan是目前用得最多的共线性检测工具从2012年发表以来引用量巨大几乎成了植物比较基因组领域的标配。它能同时处理多个基因组、识别共线性区块、区分串联重复基因还可以为下游Ka/Ks分析提供候选基因对。所以不管你是做NBS-LRR这类大基因家族还是做某个转录因子家族共线性分析这一关基本绕不开。1.2 MCScanX的算法逻辑顺序比相似性更值钱MCScanX的核心思想可以打个比方两个家族谱系里各有一串人名如果你发现两边名单里不仅同名的人多而且这些人在名单里的相对位置也一致那基本可以断定这两个家族有共同的祖先来源而不只是碰巧有几个重名。MCScanX先靠BLAST找到跨物种的同源基因对然后用动态规划算法检测这些基因对在染色体上是否形成“顺序一致的链条”中间允许插入一定数量的非共线基因作为gap。这里有个关键点BLAST找的是“相似的同源基因”MCScanX找的是“位置保守的同源基因串”。单独一个BLAST hit可能只是巧合或者局部的序列相似但当一串基因在两条染色体上排列顺序都保持时这个信号的可靠性就非常高。MCScanX还会输出一个score用于衡量共线性区块的显著程度score越高说明这个区块内基因对越多、排列越一致也就越可能是真实的祖先片段保留。1.3 为什么我强烈推荐用TBtools插件而不是纯命令行MCScanX本身是一个Linux/macOS下的命令行工具包需要配置BLAST、写输入文件、处理各种依赖。我自己最早编译它的时候就折腾了一天一会儿缺库一会儿版本不对。而TBtools把整个流程封装成了图形界面插件你不用记任何命令只要会双击鼠标、会填参数就行。更关键的是TBtools对Windows用户极其友好实验室里很多师妹用的就是Windows笔记本完全不用装虚拟机或WSL就能跑。有人可能会担心图形界面会不会“黑盒化”导致不懂原理其实不必焦虑。TBtools的MCScanX插件本质上还是在调用MCScanX的核心算法只是把输入格式整理、参数传递和输出解析都自动做好了。你理解了上面1.2说的原理插件窗口里每个参数对应什么心里就非常有数。这比拿着命令行手册硬啃效率高得多。2. 数据准备这一半的坑都在文件格式上2.1 拟南芥和水稻的数据从哪里下做拟南芥和水稻的共线性分析第一步是拿到高质量的基因组注释文件。拟南芥推荐TAIR10版本的注释和蛋白序列从TAIR官网或者Ensembl Plants下载都可以水稻推荐MSU7.0也叫RGAP7注释从Rice Genome Annotation Project网站下载。需要注意版本问题——不同版本的注释文件里基因ID格式差别很大如果你后续要跟别人论文里的结果对比一定要记录清楚自己用的是哪个版本最好在方法部分写明白。下载的时候建议同时拿到两个核心文件一个是蛋白序列FASTA用于BLAST比对一个是GFF/GTF注释文件用于告诉MCScanX每个基因在染色体上的位置区间。下载时留意染色体命名方式拟南芥通常用“Chr1-Chr5”加叶绿体线粒体水稻通常用“Chr01-Chr12”这种两位数字格式或者“chr1-chr12”。这个细节提前确认好后面能省大量排查时间。2.2 蛋白序列和GFF文件的整理要点拿到原始FASTA之后不建议直接扔进BLAST最好先用TBtools里的“Sequence Toolkit”做一次清洗。具体操作是打开TBtools进入“Sequence Toolkit”菜单用“Fasta Stats and Filter”查看序列数量和长度分布把明显异常的序列比如长度小于50个氨基酸的碎片、包含大量X或*的序列剔除或修正。因为MCScanX依赖BLAST结果识别同源基因如果垃圾序列太多会增加假阳性也会让运行时间变长。GFF文件也需要检查。MCScanX插件需要的其实是一个简化版的基因位置文件四列即可基因ID、染色体/scaffold名称、起始位置、终止位置。原始GFF里通常有很多行注释、CDS、exon等冗余信息你只需要提取gene那一行或者mRNA那一行。用TBtools的“GFF/GTF Manipulator”可以快速转成这种精简格式保存为tab分隔的txt文件。这里特别提醒一下如果同一个基因在GFF里有多个mRNA异构体一定要去重只保留一个代表转录本否则MCScanX可能因为重复ID直接报错或结果混乱。2.3 染色体命名这个坑我替你先踩了跨物种共线性分析里最容易被忽略的就是染色体命名不一致。比如你的blast结果里基因ID是“AT1G01010”GFF文件里染色体写的是“1”而不是“Chr1”MCScanX在解析时就会把它当成两条不同的染色体导致本来应该完美的共线性区块被切得七零八落。我第一次做水稻和拟南芥的比较时就是因为水稻染色体名带不带“chr”前缀的问题结果里共线性区块数量少得可怜排查了半天才发现是命名不统一。建议的做法是在跑BLAST之前就用TBtools把两个物种GFF里的染色体名统一成“同一套约定”。比如都去掉“chr”前缀、统一大小写或者都保留完整前缀但保证一致。最关键的是确保blast结果中的“染色体来源信息”和GFF文件中的染色体名称严格一致。用Excel打开GFF文件检查一下这一列虽然土办法但非常管用。3. TBtools里完整跑一遍MCScanX的实操流程3.1 第一步用TBtools的BLASTP模块完成蛋白比对MCScanX不直接接收FASTA序列它需要的是BLAST比对结果作为输入。所以在跑MCScanX插件之前你要先做一次蛋白序列的BLASTP比对。这里我推荐的方式是把拟南芥和水稻的蛋白序列做一个双向比对或者只做“query水稻、database拟南芥”的单向比对也可以但双向比对能捕获更多敏感的远缘同源关系尤其在处理这种分歧时间较长的双子叶-单子叶比较时我更建议双向都跑。在TBtools里操作是这样的打开“BLAST”菜单选择“BLASTP”输入Query序列文件和Database序列文件。参数方面E-value我一般设1e-5max target seqs可以设为5到10。输出格式一定要选“Tabular”格式因为MCScanX插件需要读取这种带“Query、Subject、Identity、Alignment Length、Mismatches、Gap Opens、Q.start、Q.end、S.start、S.end、E-value、Bit Score”的表格。跑完之后会得到一个blast结果文件先留着等MCScanX插件使用。3.2 MCScanX插件参数设置别光知道点Yes接下来打开TBtools的“Comparative Genomics”菜单点“MCScanX”在弹出的界面里按顺序填三样东西第一步选刚才生成的blast结果文件第二步选整理好的GFF位置文件第三步设置输出目录和核心参数。核心参数有四个比较重要E-value阈值默认是1e-5这个值对于亲缘关系较近的物种可以直接用但是对拟南芥和水稻这种分化超过一亿年的跨物种比较可以适当放宽到1e-10这里我说反了实际上跨远缘物种时反而应该放宽比如设成1e-5或1e-3如果设得太严1e-10反而会漏掉很多真实的弱同源信号。默认1e-5通常是个不错的起点。Max Gaps默认是25表示两个共线基因对之间允许插入的基因数目上限。这个值越大找到的共线性区块越柔和但也会引入更多噪声值越小区块越严格但可能漏掉经历过局部重排的片段。跨物种比较建议保持默认25先看整体情况再调整。Match Score、Gap Penalty这些参数关乎动态规划打分通常不用动用默认值就行。Match Size最小基因对数默认是5意思是至少要有5对同源基因排列一致才算一个共线性区块。如果结果里block太少可以把这个值降到3敏感度会明显提升但要接受一些假阳性。填完后点“Start”看到进度条走过去这条路就通了。3.3 核心输出文件怎么读.collinearity和.tandem运行完成后输出目录里会有几个文件。最核心的是.collinearity它记录了每个共线性区块的详细信息。文件是纯文本大致长这样我简化示意## Alignment 0: score438.0, e_value0.0, N17, Chr1Chr5 0-1000: AT1G01010 Os05g0100100 ... 0-1001: AT1G01020 Os05g0100200 ...第一行的“N17”表示这个区块里有17对共线基因score越高越好“Chr1Chr5”表示涉及拟南芥的Chr1和水稻的Chr5。下面的每一行就是一对共线基因左边是拟南芥基因ID右边是水稻基因ID。这个文件非常重要下游提取基因对、计算Ka/Ks、画局部共线性图都要用到它。另一个关键文件是.tandem记录的是串联重复基因对。串联重复是基因家族扩张的重要机制和共线性区块通常反映全基因组复制或大片段重复需要放在一起讨论。你可以用这文件快速统计家族成员里哪些是串联复制来的哪些是WGD保留下来的。用Excel打开这两个文件简单做个筛选和透视表你就能在几分钟之内回答导师“这个基因家族在两种植物里是怎么扩张的”这种问题。4. 结果可视化从数据到论文级图片4.1 共线性点阵图Dual Systemy Plot的调整方法拿到.collinearity结果后最直观的展示就是把拟南芥和水稻的染色体画成点阵图。TBtools里对应的工具是“Comparative Genomics”下的“Dual Systemy Plot”。打开后载入.collinearity文件和对应的GFF位置文件它会自动把所有共线性区块用斜线或彩色连线画出来。每一条斜线代表两个基因组之间的一段保守共线性区域整体呈平行线的地方越多说明两个基因组之间保留的大片段顺序越好。拟南芥和水稻分化时间久远点阵图不会像近缘物种那么整齐漂亮但依然能看到相当数量的斜线。如果觉得图上的信号太密或者太乱可以在参数里按E-value或block的N值过滤只显示score大于某个值的区块。输出图像格式我建议PDF或SVG后期用AI或Inkscape微调更方便千万别直接用截图打印出来分辨率一塌糊涂。4.2 用Advanced Circos画基因组圈图如果你想展示“多个物种染色体之间的共线性关系”圈图是最有视觉冲击力的方式。TBtools的“Advanced Circos”可以读取共线性结果把多条染色体画在一个圆圈上染色体之间用彩色弧线连接。这个图适合放在论文的“全基因组比较”部分一眼就能看出哪些染色体对之间存在大规模保守片段。注意事项有两个。第一圈图对计算机内存要求高如果你把拟南芥5条染色体和水稻12条染色体全放进去线条一多画面就会非常拥挤建议先选定几条感兴趣的染色体来画。第二颜色配置要仔细尽量选用色盲友好的配色方案避免用红绿这种常规但色盲不易区分的组合。图例和染色体名不要挤在一起给文字信息留出一点呼吸空间。4.3 局部微共线性图单基因周边的“放大镜”相比全基因组点阵图论文里更常用的是局部微共线性图也就是把某一个家族成员上下游几万个碱基范围的基因都拉出来看这段局部区域在另一个物种里是否保守。TBtools里可以用“Gene Location View”或者“MicroSynteny View”系列功能实现。这个图对解释“某个基因是祖先就有的还是这个物种特有扩张出来的”非常有用。操作思路是先通过.collinearity文件找到目标基因对所在block然后框选目标基因上下游一定范围的基因列表让TBtools帮你绘制成横排的基因箭头图。绘制时可以给同一个基因家族的成员上同一颜色其他背景基因用灰色这样视觉重点突出。记得调整基因标识名称默认的“AT1G01010”这类ID可以保留但如果图上有几十个基因建议只标注你关心的那几个其余用编号代替否则会糊成一团。4.4 下游还能做什么Ka/Ks分析扩展共线性分析做完很多人还希望进一步印证“这个基因家族受到的进化压力”。这时候可以用.collinearity里的共线基因对去做非同义替换率Ka和同义替换率Ks分析计算Ka/Ks比值。如果比值远小于1说明受到纯化选择接近1说明中性进化大于1则暗示正选择。TBtools里同样提供了“Ka/Ks Calculator”模块只需要你提供对应基因对的CDS序列它会自动完成比对和替换率计算。实际操作中要注意Ka/Ks分析前一定要确保基因对在物种间是真正的直系同源关系共线性block给你提供的正是这种高置信度的直系同源候选。提取CDS时也要用和之前GFF版本一致的注释文件否则基因ID对不上就会报错。算完后把Ka、Ks值整理成表格再按Ks值大致估算物种分歧时间这已经够支撑一篇普通研究论文的进化分析章节了。5. 常见问题与排查技巧实录5.1 问题速查表我在帮实验室同学处理共线性分析时遇到过不少重复出现的问题这里整理成一张速查表基本上你遇到的报错都能在里面找到对应情况问题现象可能原因解决办法BLAST结果文件为空蛋白序列格式错误、数据库没构建好、E-value太严序列去掉终止符和非法字符重新makeblastdb放宽E-value到1e-3MCScanX插件无法运行/按钮灰色TBtools版本过旧、Java环境有问题更新TBtools到最近版本检查Java是否安装并能找到共线性区块数量极少GFF与blast的染色体名不一致、Match Size太大、E-value太严统一命名规范将min genes调低到3适当放宽E-value结果里出现大量重复IDGFF里同一基因有多个mRNA行用GFF Manipulator去重每个基因只保留一个代表转录本画图时基因名乱码或显示异常基因ID中间有特殊符号或空格检查FASTA和GFF里的ID是否完全一致去掉空格和非法字符运行时间极长序列量太大、没做过滤剔除低质量序列或按染色体拆分成多个小任务分别跑输出的block score都很低两个物种亲缘关系远保守片段有限适当降低min genes数、增加Max Gaps尽量保留弱信号5.2 几个容易忽略但很要命的细节第一个细节是TBtools的MCScanX插件默认要求blast结果文件中基因ID和GFF文件中的基因ID完全匹配。比如水稻蛋白FASTA里基因ID可能是“LOC_Os01g01010”或者“Os01g0100100”格式而GFF里带的注释名可能是“Os01t0100100”这里面点号、前缀、大小写差异都会直接导致匹配失败。建议跑之前用Excel分别对FASTA的ID和GFF的ID做一下对比处理成完全一致的版本。第二个细节是跨物种共线性分析之前最好先做一个物种内的同源比对这样可以区分“物种间共线”和“物种内重复”两种情况。拟南芥本身经历过多次全基因组复制如果你只做物种间分析很可能会把物种内复制导致的共线区域也混进来解释结果时容易造成误判。稳妥一点的做法是先把拟南芥自身和水稻自身的物种内共线性也跑一遍在结果里区分开。第三个细节是保存好中间文件。BLAST结果和整理好的GFF文件不要覆盖也不要只留在TBtools的临时目录里。因为后续画图、调整参数、重新跑MCScanX都要反复用到这些文件。我自己习惯新建一个项目文件夹按“00_raw_data、01_blast、02_mcscanx、03_downstream”分层管理这样做的好处是无论什么时候回看整个分析脉络都清清楚楚。5.3 第一次跑完之后怎么确认结果靠谱拿到一堆共线性block别急着高兴先做一步验证随机挑一个block把里面几对基因的序列拿去NCBI做一次BLASTP确认它们确实是最佳匹配的直系同源关系。另一个验证方式是看block在染色体上的物理位置是否和文献报道的已知共线性区域重合比如拟南芥和水稻之间某些已经报道的保守染色体片段。如果自己发现的全是无人报道过的区域而别人已知的区域反而没找到那多半是参数或数据匹配出了问题回头检查一遍更稳妥。还可以用TBtools把某个block的基因对注释信息导出看看这些基因的GO或者Pfam结构域是否有相似性。如果block里涉及的基因功能高度一致说明这个共线性区块很可能是有生物学意义的真实保守片段而不是软件随机拼凑出来的错觉。这一步虽然不写进方法部分但能帮你建立对结果的信心跟人讨论的时候也更有底。6. 实操总结与我的个人心得最后说点自己的实际体会吧。我第一次完整跑完拟南芥和水稻的共线性分析看着点阵图上一大片斜线那种踏实感是命令行给不了的——命令行你只能看到一行行文字输出而TBtools把整个流程可视化之后你随时都知道自己到了哪一步、结果对不对。建议第一次做的朋友先不要贪多可以只挑拟南芥的Chr1和水稻的Chr3做一次小规模预跑半小时内就能把流程走通。确认所有参数和文件格式都没问题之后再跑全基因组这样既省时间又不容易被报错劝退。我个人踩过最深的坑就是染色体命名不一致浪费了整整一个下午现在每次处理新的物种对我都会先拿两个GFF文件看一眼染色体名统一之后再进BLAST。还有一个实用小技巧在TBtools里跑完MCScanX插件后记得把.collinearity文件用Notepad或VS Code打开用CtrlF搜索你关注的家族成员ID快速定位到它所在的block然后再去画局部微共线性图。这样既精准又省去在几百个block里翻来翻去的麻烦。共线性分析只是比较基因组的一个入口后面还有共线基因家族的GO富集、顺式作用元件分析、表达模式比较可以串起来做。从这个入口进去你会发现“命令行恐惧”其实真的可以靠一个好用的图形插件治愈大半剩下那部分等你想做更大规模分析的时候再回头补也来得及。
返回列表