基因组WGD的鉴定与分化时间

2023-11-08 05:59

本文主要是介绍基因组WGD的鉴定与分化时间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. WGD 简介

全基因组复制(Whole genome duplications, WGD)是生物进化的重要因素之一(导致基因组扩增的因素包括全基因组复制和转座子TEs), 所以WGD分析也是基因组分析经常用到的一种分析方法。

古 WGD 检测有两种方法,一种是共线性分析,另一种则是根据Ks分布图。其中Ks定义为平均每个同义位点上的同义置换数,与其对应的还有一个Ka,指的是平均每个非同义位点上的非同义置换数。

如果没有WGD或是大片段重复,那么基因组中的旁系同源基因的同义置换符合指数分布(exponential distribution), 反之,Ks分布图中就会出现一个由于WGD导致的正态分布峰(normal distributed peak). 而古老WGD的年龄则可通过分析这些峰中的同源置换数目来预测(Tiley et al., 2018)。

2.Ka/Ks正选择

Ka/Ks表示的是非同义替换(Ka)和同义替换(Ks)之间的比例,这一比值可以判断编码该蛋白的基因是否遭受了选择压力。

同义突变Ks表示,突变并不影响氨基酸序列(密码子的兼并性),进而不会影响蛋白结构与功能。

非同义突变Ka则会影响氨基酸序列,可能会使其结构和功能发生改变,可能会遭受自然选择。

一般我们认为,同义突变不受自然选择,而非同义突变会遭受自然选择作用。在生物进化分析中,知晓物种的同义突变和非同义突变发生的速率是非常有意义的。同义突变频率即为Ks值,非同义突变频率即为Ka值,非同义突变率与同义突变率的比值即为Ka/Ks值。若Ka/Ks > 1,则认为存在正选择效应(positive selection);若Ka/Ks = 1,则认为存在中性选择效应;如若Ka/Ks < 1,则认为存在负选择效应,即纯化效应或净化选择(purifying selection)。

3. MCScanX

MCScanX是一款分析物种基因组内或者不同物种基因组间的共线性区块的软件,它利用种内或种间蛋白质blastp比对结果再结合编码这些蛋白的基因在基因组中的位置坐标,得到种内或种间基因组的共线性区块。

MCScanX软件安装及详细使用参见官网,安装和使用都比较友好。http://chibba.pgml.uga.edu/mcscan2/#tm

3.1物种内共线性分析

MCScanX做同线性分析需要两个输入文件sample.gff(四列数据)和sample.blast。
1.sample.gff

sample.gff包含四列数据,第一列染色体ID,第二列基因ID,第三和第四列分别是起始和终止位置

##从gff3文件准备sample.gff文件
cat sample.gene.gff3 |awk '{if($3=="gene"){print $1,$9,$4,$5}}'|sed "s/;.*;//g"|sed "s/ID=//g"|sed "s/ /\t/g" >sample.gff 

2.sample.blast

##给蛋白序列建库
makeblastdb -in sample.pep.fa -dbtype prot -out index/sample.pep ##进行自我比对,生成6号格式的比对结果sample.blast
blastp -query sample.pep.fa -db index/sample.pep -out sample.blast -evalue 1e-5 -num_threads 12 -outfmt 6 -num_alignments 5 &

3.运行MCScanX

在有sample.gff和sample.blast两个文件的目录下,指定前缀sample运行MCScanX sample:

MCScanX sample

重要参数解释:

-s MATCH_SIZE,default: 5。每个共线性区块包含的基因数量的下限。

-m MAX_GAPS,default:25。在共线性区块中允许的最大gaps数量。

-b patterns of collinear blocks。0:intra- and inter-species (default); 1:intra-species; 2:inter-species。

3.2 种间同线性分析MCScanX_h

  1. sample.gff
  2. sample.homology:是tab分隔的成对基因ID的list(如下图)---可从orthofinder或者OrthoMCL等软件鉴定的物种间提取。

3.运行MCScanX

结果得到 RUF_JAP.collinearity、RUF_JAP.tandem文件及RUF_JAP.html文件夹,其中我们需要的信息就在Citrus_sinensis.collinearity结果文件中。

(1) RUF_JAP.collinearity

共线性结果文件,包括三部分内容:

参数(parameters)

基本统计信息(statistics):共线性基因的总数,总基因数,共线性基因占比。

共线性区块(block)信息:一个Alignment代表一个共线性区块(0起始编号)。后面跟着这个共线性区块的基因对的信息。第一列:block编号;第二列:基因对编号;第三列和第四列:基因对名称;第五列:blast比对的e_value值。

(2) 网页文件所在的文件夹,里面有每条染色体一个RUF_JAP.html文件。html文件用浏览器打开,包含三列信息。

第一列是复制深度。

第二列是这条染色体上所有基因的排列顺序,串联重复基因的背景为红色

第三列和之后列是对应的比对上的基因名称。

(3) RUF_JAP.tandem

此文件包含基因组内串联重复的基因ID的list。

注意:MCScanX 会根据 gff 文件中染色体号的前缀(前2个字符:RUF_;JAP_)将染色体划分为不同的物种,若 MCScanX 识别到输入数据中包含多个物种,则不会生成 tandem 文件。

3.3 提取共线性block(基因对)

cat RUF.collinearity | grep "RUF" | awk '{print $3"\t"$4}' > RUF.homolog

4.Ka、Ks及4Dtv值计算

详情参考 Ka/Ks及4Dtv值的计算

涉及的软件:KaKs_Calculator2.0ParaAT 

方案:ParaAT.pl+KaKs_Calculator2.0 参考 Ka/Ks及4Dtv值计算的详细过程

ParaAT.pl用于根据同源基因对list生成比对的gene对cds序列,并可以指定输出格式,如axt格式;

KaKs_Calculator用于计算基因对的kaks

用还会用到两个脚本:

  • axt2one-line.py 转换axt格式为单行
  • calculate_4DTV_correction.pl计算4dtv。

4.1 使用KaKs_Calculator计算ka、ks值, -m参数指定kaks值的计算方法为YN模型

# 利用循环
#!/bin/bash
for i in `ls *.axt`;do KaKs_Calculator -i $i -o ${i}.kaks -m YN;done  # -m 参数指定模型# 将多行axt文件转换成单行for i in `ls *.axt`;do axt2one-line.py $i ${i}.one-line;done

4.2 4Dtv(四倍简并位点颠换率)

生物学意义:共线性区域内基因对的4Dtv值在一定程度上可反映物种在进化过程中其相对分化事件与WGD事件

5. 结果可视化

结果可视化推荐利用Tbtools软件可视化操作 

利用Tbtools软件进行共线性分析及可视化

参考:

Tiley, G.P., Barker, M.S., and Burleigh, J.G. (2018). Assessing the Performance of Ks Plots for Detecting Ancient Whole Genome Duplications. Genome Biol Evol 10, 2882–2898.

Huang, S., Li, R., Zhang, Z. et al. The genome of the cucumber, Cucumis sativus L.. Nat Genet 41, 1275–1281 (2009). https://doi.org/10.1038/ng.475

关于KaKs_Calculator2.0运算模型选择:KaKs_Calculator2.0_manual

https://www.jianshu.com/p/9d28de3d18e6

基因组WGD事件的鉴定和时间估算 —— MCScanX,KaKa_Calculator | 生信技工

这篇关于基因组WGD的鉴定与分化时间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/368196

相关文章

Java实现时间与字符串互相转换详解

《Java实现时间与字符串互相转换详解》这篇文章主要为大家详细介绍了Java中实现时间与字符串互相转换的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、日期格式化为字符串(一)使用预定义格式(二)自定义格式二、字符串解析为日期(一)解析ISO格式字符串(二)解析自定义

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Python如何获取域名的SSL证书信息和到期时间

《Python如何获取域名的SSL证书信息和到期时间》在当今互联网时代,SSL证书的重要性不言而喻,它不仅为用户提供了安全的连接,还能提高网站的搜索引擎排名,那我们怎么才能通过Python获取域名的S... 目录了解SSL证书的基本概念使用python库来抓取SSL证书信息安装必要的库编写获取SSL证书信息

MySQL 日期时间格式化函数 DATE_FORMAT() 的使用示例详解

《MySQL日期时间格式化函数DATE_FORMAT()的使用示例详解》`DATE_FORMAT()`是MySQL中用于格式化日期时间的函数,本文详细介绍了其语法、格式化字符串的含义以及常见日期... 目录一、DATE_FORMAT()语法二、格式化字符串详解三、常见日期时间格式组合四、业务场景五、总结一、

如何利用Java获取当天的开始和结束时间

《如何利用Java获取当天的开始和结束时间》:本文主要介绍如何使用Java8的LocalDate和LocalDateTime类获取指定日期的开始和结束时间,展示了如何通过这些类进行日期和时间的处... 目录前言1. Java日期时间API概述2. 获取当天的开始和结束时间代码解析运行结果3. 总结前言在J

修改若依框架Token的过期时间问题

《修改若依框架Token的过期时间问题》本文介绍了如何修改若依框架中Token的过期时间,通过修改`application.yml`文件中的配置来实现,默认单位为分钟,希望此经验对大家有所帮助,也欢迎... 目录修改若依框架Token的过期时间修改Token的过期时间关闭Token的过期时js间总结修改若依

Go Mongox轻松实现MongoDB的时间字段自动填充

《GoMongox轻松实现MongoDB的时间字段自动填充》这篇文章主要为大家详细介绍了Go语言如何使用mongox库,在插入和更新数据时自动填充时间字段,从而提升开发效率并减少重复代码,需要的可以... 目录前言时间字段填充规则Mongox 的安装使用 Mongox 进行插入操作使用 Mongox 进行更

对postgresql日期和时间的比较

《对postgresql日期和时间的比较》文章介绍了在数据库中处理日期和时间类型时的一些注意事项,包括如何将字符串转换为日期或时间类型,以及在比较时自动转换的情况,作者建议在使用数据库时,根据具体情况... 目录PostgreSQL日期和时间比较DB里保存到时分秒,需要和年月日比较db里存储date或者ti

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2