hyphy计算选择压力(+pal2nal的使用)

官网:http://www.hyphy.org/
http://www.bork.embl.de/pal2nal/
参考:[hyphy]https://www.jianshu.com/p/2e8f7f7d545a
[pal2nal]https://blog.csdn.net/qq_50637636/article/details/120226785?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2

1 所需要的

  • 基因组序列(案例是野生稻和栽培稻)
  • GFF3基因组注释文件
  • 蛋白质序列
  • CDS序列(有ATG起始密码子,没有TAG, TAA, TGA终止密码子)
  • 树文件(.nwick格式文件)
  • 在python2.7的conda环境下使用

2 步骤

  1. 得到野生稻和栽培稻的CDS文件
  2. 得到野生稻和栽培稻的蛋白质文件
  3. 比对蛋白质文件
  4. 用pal2nal软件将已经比对好的蛋白及其对应的DNA多序列转化为密码子比对的程序。

举例:
本来用CDS序列直接去比对,顺序可能是:-AGTTG-GGAATAAT-TT--TAT-
但通过pal2nal后
蛋白质序列:-SWE--LF-Y-
将CDS反向比对回去就变成:-AGTTGGGAA--TAATTT-TAT- (三个三个密码子成对出现)

  1. 构建系统发育树
  2. 使用hyphy计算选择压力

2 安装

pal2nal的安装

conda create -n pal2nal
conda activate pal2nal
conda install pal2nal

hyphy的安装

conda create -n python2.7 python=2.7 # 创建环境
conda activate python2.7 # 进入环境
conda install hyphy # 安装hyphy

3 序列的准备

因为该软件要求蛋白质序列和CDS序列要保持一致性,所以我用gffread软件从基因组文件中提取出CDS文件,再翻译成蛋白质文件。

gffread test.gff3 -g test.genomic.fasta  -x test.cds -y test.pep

我之前试过直接用网上下的数据,会报错,数据比较混乱。如下图,第一个密码子AGC应该翻译成S(丝氨酸),但却翻译成了E。


2fee0f2b9cb9278ade538f9ac30c514.png

4 序列的比对

4.1 蛋白质序列的比对

mafft --auto --thread 10 test.pep > test.pep.aln   # 线程数可以自己看着改

4.2 pal2nal的使用

perl /Path/To/pal2nal.pl pep.fas nuc.fas -output fasta 
# 输入文件,两个,分别是比对好的PEP和原始的CDS序列
# -output 输出文件格式,默认为clustal

4.3 过滤一些gap(可选)

为什么要过滤?

  1. 前后会产生很多gap,对选择压力的计算没有用,徒增计算压力,也会浪费时间;
  2. 有些序列可能会全都是gap,在后面构树的时候也会被滤掉的。这样的话,在最后hyphy计算选择压力的时候,就会出现树的支(即序列数)比文件的序列数少1的错误。

怎么过滤?

trimal -in test.pal2nal.fasta -out test.pal2nal.gappyout.fasta -gappyout

5 构建系统发育树

iqtree -s test.pal2nal.gappyout.fasta -m MFP -bb 1000 -nt AUTO --prefix test
# -s 输入比对序列
# -m MFP 选择最佳模型后构树
# -bb 1000 快速自展1000次
# 因为快速自展1000次支持值结果可能会偏大,所以时间比较宽裕的话可以加上-bnni
# -nt AUTO 线程数,给iqtree自行安排和选择
# --prefix 输出文件前缀

6 hyphy的使用

  1. 选择方法
    使用hyphy -i,一步一步选择合适你目的的方法
  2. 开始计算(我这里用的方法是absrel)
hyphy absrel --alignment test.pal2nal.gappyout.fasta -tree test.treefile CPU=10 > hyphy.out
# 如果是新版本的话,hyphy会自动根据需求采用多线程
# 你可以加上foreground或者branchs信息,详细的使用可以看官网。
  1. 输出结果
    Hyphy运行的时候,默认打印到屏幕上的结果是以markdown格式输出的,而保存到本地文件的结果是以json格式输出的(json格式可以很方便的用python的json模块提取各种信息,例如pvalue和正选择位点,适合多个任务批量操作)。默认是输出到和多序列比对文件相同的文件夹,可以用--output来改变输出位置。
  2. 结果可视化
    可以去官网http://vision.hyphy.org/来可视化输出结果。

你可能感兴趣的:(hyphy计算选择压力(+pal2nal的使用))