Ka,Ks(或Dn,Ds),这两个值以及他们的比值分别被赋予了一定的生物学意义。其中最为常用的是两者的比值,存在这么一种常见认知:
- ka/ks>>1 正选择
- ka/ks~1 无选择(中性进化)
- ka/ks<<1 负选择(或纯化选择)
注意到>>
和<<
,这两个符号事实上是在暗示显著大于或者显著小于,毕竟差异是绝对存在的,但差异是不一定显著的。
同样被经常提及的指标择是,非同义突变率Ks。存在这么一种认知,前提假设:选择压力往往会作用于蛋白水平,可以认为:如果核酸水平发生了突变,同时没有改变氨基酸序列,那么不受选择压的影响。(当然,这是多数情况。目前关于非编码序列的研究,不影响这个认知的主要假设)。既然不受选择压,那么所有突变可以在一定的时间尺度(以mya为单位计算)很好地被保留。通过公认的突变时间(比如有化石支撑的演化时间)校准出相应的核酸突变速率(突变数目/时间长度),那么就可以通过对当前序列之间的突变数目,反推序列之间的分歧时间,进而作为物种分化时间的佐证。(当然,我们也知道,分子进化时间和物种分化时间不完全一致)。
很好,费了一大段话说明ka和ks,那么就进入主题。
一个合理的问题解决方式
近日在忙课题的事情,也基本没有再写工具了。一方面是时间,一方面是需求。早上6点多忽然醒来,看了下手机。。。*有人要踢馆....*
我当然不会拒绝,
只要问题被合理地提出,而不是一上来就说你的软件有bug,多数情况下,软件开发者是会有较好的反应,除非他真的很忙。
事实上,我基本的认知就是序列比对出现问题。当然,这个问题,或者出现在用户上,或者出现在TBtools上,毕竟我是从通过先翻译成蛋白,比对完了再转换会codon。我最担心的,其实还是自己写的kaks计算逻辑,虽然NG法简单,但是不代表我一定能写对。
于是我要来序列,随后就是直接把序列集合丢给TBtools,输出一个结果,
确实是NaN,那么这个时候,应该重现一下用户的软件结果,(原本是计算用章张老师的Ka_ks_calculator的,然而...用起来有点麻烦),于是我还是还是用了Dnasp...(发现需要先做序列比对!!!),我导入不进去....当然,此时要来用户的比对结果
一看比对结果,我就淡定了,必然是用户提供了不适合的比对结果给Dnasp,而导致后者出错。因为Dnasp,并没有限制你就不能输入非codon alignment的结果。
于是,我打开mega,直接拿用户提供的原始CDS序列,做了codon alignment,随后导入Dnasp,Done。
结果完全一样(因为DNAsp,只有NG法)
到底是为什么?
随着高通量测序的普及,我们可以非常方便地拿到大量基因序列。于是会有更多人开始去使用一些软件,试图得到一些结果,并用于探索相应的生物学问题。使用工具,是人与动物的差别,善于使用工具,或许是人与人之间的差别。无论如何,正确的使用软件,或许是拿到正确结果的基本要求。(比如,存在部分人一直用blast,却根本不知道blast的局限和所长,参数也不会调;当然,这不是问题,因为blast的默认参数已经可以适用于大多数比对场景)。
KaKs的计算逻辑,其实很容易找到。最经典的莫过于NG法。具体可参考
但是无论使用什么算法,codon alignment是一定要的。因为codon对
是基本计算单元。
上述用户提供的alignments,很明显,只是核酸水平的比对结果,不能用于计算kaks,即使出结果,那么也是不正确的。
所以,正确的使用工具很重要。
如何使用TBtools的Ka/Ks批量计算工具
第一步,打开TBtools
image.png
随后设置输入文件
- CDS序列集合,可以是整个物种的CDS而无需整理,TBtools会依据给定的基因对,提取对应的序列进行使用
- 基因对,制表符分隔
- 可选的输入是,蛋白序列文件(如果没有设置,TBtools会自动翻译输入的CDS序列为蛋白,使用的是标准密码子,用于指导Codon alignment;如果设置了,那么会直接使用),我没有设置过
设置输出文件,注意必须设置文件路径而不仅仅是某个目录
点击Start即可,TBtools会对基因对
进行逐对处理,首先是蛋白比对,随后是转换成codon alignment,最后是计算,并输出结果。
Done! 祝我生日快乐!今天早上好像一下子好几个大流找我....
写在最后
OK,一个小时就这么过去了。推文写完了,早餐也吃完了。干课题了。如果你想要这两个序列,那么你需要加入到TBtools使用交流QQ群 831029231。
欢迎访问本课题组网站
园艺植物小分子RNA与基因组研究-夏瑞课题组
网友评论