基因组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

相关文章

MySQL中DATE_FORMAT时间函数的使用小结

《MySQL中DATE_FORMAT时间函数的使用小结》本文主要介绍了MySQL中DATE_FORMAT时间函数的使用小结,用于格式化日期/时间字段,可提取年月、统计月份数据、精确到天,对大家的学习或... 目录前言DATE_FORMAT时间函数总结前言mysql可以使用DATE_FORMAT获取日期字段

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

C++ 函数 strftime 和时间格式示例详解

《C++函数strftime和时间格式示例详解》strftime是C/C++标准库中用于格式化日期和时间的函数,定义在ctime头文件中,它将tm结构体中的时间信息转换为指定格式的字符串,是处理... 目录C++ 函数 strftipythonme 详解一、函数原型二、功能描述三、格式字符串说明四、返回值五

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

利用Python实现时间序列动量策略

《利用Python实现时间序列动量策略》时间序列动量策略作为量化交易领域中最为持久且被深入研究的策略类型之一,其核心理念相对简明:对于显示上升趋势的资产建立多头头寸,对于呈现下降趋势的资产建立空头头寸... 目录引言传统策略面临的风险管理挑战波动率调整机制:实现风险标准化策略实施的技术细节波动率调整的战略价

Python日期和时间完全指南与实战

《Python日期和时间完全指南与实战》在软件开发领域,‌日期时间处理‌是贯穿系统设计全生命周期的重要基础能力,本文将深入解析Python日期时间的‌七大核心模块‌,通过‌企业级代码案例‌揭示最佳实践... 目录一、背景与核心价值二、核心模块详解与实战2.1 datetime模块四剑客2.2 时区处理黄金法