欢迎来到"bio生物信息"的世界

今天给大家带来“批量计算kaks值”的技能。

关于kaks的背景知识我就不介绍了,感兴趣的自行搜索,这里直接开始讲怎么批量计算kaks值。

1 文件准备

首先准备两个文件,一个是基因的cds序列,一个是蛋白质序列。

cds序列和蛋白质可以在ensembl网站找到:http://ftp.ensembl.org/pub/current_fasta/

这两个文件的示例如下:

cds序列文件cds.fa

>gene1
ATGGAGGTTGCAATGGTGAGTGCGGAGAGCTCAGGATGCAACAGTCACATGCCTTACGGT
TATGCTGCCCAGGCCCGGGCCCGGGAGCGGGAGAGGCTTGCTCACTCCAGGGCAGCTGCG
GCAGCTGCCGTTGCAGCGGCCACAGCTGCCGTCGAAGGAAGTGGGGGTTCTGGTGGGGGG

>gene2
ATGGAGGTTGCAATGGTGAGTGCGGAGAGCTCAGGGTGCAACAGTCACATGCCTTATGGT
TATGCTGCCCAGGCCCGGGCCCGGGAGCGGGAGAGGCTTGCTCACTCCAGGGCAGCTGCA
GCAGCTGCTGTTGCAGCGGCCACAGCTGCTGTCGAAGGTAGCGGGGGTTCTGGTGGGGGC
TCCCAC

>gene3
ATGGAGGTGGCGATGGTGAGTGCGGAGAGCTCAGGGTGCAACAGTCACATGCCTTACGGG
TACGCGGCCCAGGCCCGGGCCCGGGAGCGGGAGAGGCTGGCTCACTCCCGGGCGGCGGCG
GCCGCCGCCGTCGCGGCTGCCACGGCTGCCGTGGAAGGCAGTGGGGGGCCTGG

蛋白质序列pep.fa

>gene1
MEVAMVSAESSGCNSHMPYGYAAQARARERERLAHSRAAAAAAVAAATAAVEGSGGSGGG

>gene2
MEVAMVSAESSRCNSHMPYGYAAQARARERERLAHSRAAAAAAVAAATAAVEGSGSSGGGSH

>gene3
MEVAMVSAESSGCNSHMPYGYAAQARARERERLAHSRAAAAAAVAAAKAAVEGSGGP

注意:cds.fapep.fa文件的序列ID号(gene1,2,3)要一致。

2 对蛋白质序列pep.fa进行比对

进行蛋白质序列比对前,需要先安装mafft软件。

下载mafft软件:

wget https://mafft.cbrc.jp/alignment/software/mafft-7.453-with-extensions-src.tgz

tar -zxvf mafft-7.453-with-extensions-src.tgz

cd mafft-7.453-with-extensions/core

安装:

1)有root权限用户安装法:

make clean

make

su

make install

2)无root权限用户安装法:

vi Makefile

进入makefile文件后,修改第一行和第三行,如下所示两张图,分别为修改前和修改后(请务必修改你有权限的路径):

安装成功后,输入命令mafft --auto pep.fa > alig_pep.fa

生成的alig_pep.fa文件如下:

3 将比对好的蛋白质序列与cds序列比对

这一步需要下载pal2nal.pl文件

wget http://www.bork.embl.de/pal2nal/distribution/pal2nal.v14.tar.gz

tar -zxvf pal2nal.v14.tar.gz

cd pal2nal.v14/

下载后就能看见pal2nal.pl这个文件

随后将蛋白质序列与cds序列比对

pal2nal.pl alig_pep.fa cds.fa -output fasta > cds_pep_aln.fa

比对好的cds_pep_aln.fa文件如下所示:

4 生成计算kaks值时的基因对

计算kaks值前需要先将cds_pep_aln.fa文件拆分:

csplit cds_pep_aln.fa /\>/ -n2 -s {*} -f gene -b "%1d.fa" ; rm gene0.fa

拆分后,会生成gene1.fagene2.fagene3.fa三个文件。

接下来,将生成的gene1.fagene2.fagene3.fa组成新的基因对gene1-gene2gene1-gene3gene2-gene3,见如下命令:

for i in $(seq 1 3)

do

cat gene1.fa gene${i}.fa > gene1_${i}.fa

done

cat gene2.fa gene3.fa > gene2_3.fa

生成如下几个文件:

gene1_1.fa

gene1_2.fa

gene1_3.fa

gene2_3.fa

其中,gene1_2.fagene1_3.fagene2_3.fa为我们所需的基因对。

这里将他们提取成基因对,而不是多条序列进行计算的原因是,KaKs_Calculator这个软件在处理多序列的输入文件时,会报错:Error. The size of two sequences in 'gene1&gene2' is not equal。我尝试了很多遍,发现只能提取成基因对才不会报这种错误。当然,偶尔运气好的时候,KaKs_Calculator是能处理多序列的kaks值的,为了防止出错,我们还是将他们拆开计算好一点。

5 将gene1_2.fa、gene1_3.fa、gene2_3.fa文件转化为axt文件

转化为axt文件需要下载parseFastaIntoAXT.pl文件,文件地址:https://gitee.com/liaochenlanruo/kaks_pupline/blob/master/parseFastaIntoAXT.pl

下载后,输入如下命令:

for i in *.fa

do

echo $i

perl parseFastaIntoAXT.pl $i

done

生成三个文件:

gene1_2.fa.axt

gene1_3.fa.axt

gene2_3.fa.axt

6 计算kaks值

下载安装kakscalculator

下载链接:https://sourceforge.net/projects/kakscalculator2/

输入以下命令:

for i in *.fa.axt

do

echo $i

KaKs_Calculator -i $i -o ${i%%.*}.kaks

done

生成三个文件:gene1_2.kaksgene1_3.kaksgene2_3.kaks

到这一步,批量计算kaks值的工作就已经搞定。

这里附上安装kaks_calculator软件可能会遇到报错:
g++ -O -o AXTConvertor AXTConvertor.cpp -lstdc++ -lm
AXTConvertor.cpp: In function ?.ool readPhylip()?.
AXTConvertor.cpp:210:22: error: ?.toi?.was not declared in this scope
if (atoi(num.c_str())!=sequence.size()){

AXTConvertor.cpp: In function ?.ool readNexus()?.
AXTConvertor.cpp:338:39: error: ?.toi?.was not declared in this scope
if (sequence.size()!=atoi(num.c_str())) >{
make: *** [AXTConvertor] Error 1

解决方法在这里:

编辑KaKs.cpp文件,加上include "string.h"

编辑AXTConvertor.cpp文件,加上include "stdlib.h"

编辑GY94.cpp文件,加上 include "string.h"

如无报错请忽略上述内容。

kaks calculator批量计算多个基因的选择压力kaks值的更多相关文章

  1. 未来云原生世界的“领头羊”:容器批量计算项目Volcano 1.0版本发布

    在刚刚结束的CLOUD NATIVE+ OPEN SOURCE Virtual Summit China 2020上,由华为云云原生团队主导的容器批量计算项目Volcano正式发布1.0版本,标志着V ...

  2. 【转】Alchemy的使用和多项式批量计算的优化

    原文:http://www.cnblogs.com/flash3d/archive/2012/01/30/2332158.html ================================== ...

  3. Volcano火山:容器与批量计算的碰撞

    [摘要] Volcano是基于Kubernetes构建的一个通用批量计算系统,它弥补了Kubernetes在“高性能应用”方面的不足,支持TensorFlow.Spark.MindSpore等多个领域 ...

  4. 重磅!业界首个云原生批量计算项目Volcano正式晋级为CNCF孵化项目

    摘要:4月7日,云原生计算基金会(CNCF)宣布,由华为云捐献的业界首个云原生批量计算项目Volcano正式晋级为CNCF孵化项目. 4月7日,云原生计算基金会(CNCF)宣布,由华为云捐献的业界首个 ...

  5. js计算两个日期的天数差值

    js计算两个日期的天数差值 通过两个日期计算这两个日期之间的天数差值 /** * 计算天数差的函数,通用 * @param sDate1 * @param sDate2 * @returns {Num ...

  6. excel中快捷计算单一列中的所有的值

    excel中快捷计算单一列中的所有的值 比如B列中所有的值 =SUM(B1:B100) 计算B列第一行到第100行的值 又学了一招  如果想统计B列所有的值 可以用 =SUM(B:B)

  7. fashion_mnist 计算准确率、召回率、F1值

    本文发布于 2020-12-27,很可能已经过时 fashion_mnist 计算准确率.召回率.F1值 1.定义 首先需要明确几个概念: 假设某次预测结果统计为下图: 那么各个指标的计算方法为: A ...

  8. ArcPy批量计算Mean Center的两个实例

    很久没用arcpy了,碰了好几次壁,把这次做的贴上来,以备下次可以跳过这些简单的问题 import arcpy arcpy.env.workspace = 'C:\Users\Qian\Documen ...

  9. shell 批量计算MD5值

    #!/bin/sh #需要计算MD5文件列表 # list=`ls` list="file list" for file in $list do file1=`` echo &qu ...

随机推荐

  1. Kubernetes 服务自动发现CoreDNS

    前言 Service服务,是一个概念,逻辑通过selector标签代理指定后端pod.众所周知,pod生命周期短,状态不稳定,pod错误异常后新生成的Pod IP会发生变化,之前Pod的访问方式均不可 ...

  2. STM8 ADC 多个通道连续扫描缓冲区数据带中断模式的正确写法

    近日调试了STM8S的ADC采集多通道数据的程序,按照之前的立即,将ADC1设置为:扫描模式,连续采集,数据缓存模式,中断使能后应该可以在中断后读取到数值了,可是无论怎样都只能读取到第一个缓冲器的数据 ...

  3. Shell使用技巧之逐行读取

    重定向读取 #!/bin/bash while read line do echo $line done < /etc/passwd 管道读取 #!/bin/bash cat /etc/pass ...

  4. vue 新建脚手架项目npm命令

    使用国外原镜像 npm install -g @vue/cli   //yarn global add @vue/cli            使用淘宝镜像 cnpm install -g @vue/ ...

  5. node + multer存储element-ui上传的图片

    说明 element-ui的Upload组件可以帮助我们上传我们的图片到我们的服务器,可以使用action参数上传图片,也可以使用http-request自定义上传方式.这里我们使用自定义的方式上传. ...

  6. 吐血推荐珍藏的IDEA插件

    之前给大家推荐了一些我自己常用的VS Code插件,很多同学表示很受用,并私信我说要再推荐一些IDEA插件.作为一名职业Java程序员/业余js开发者,我平时还是用IDEA比较多,所以也确实珍藏了一些 ...

  7. Magicodes.IE在Docker中使用

    Magicodes.IE在Docker中使用 更新日志 2019.02.13 [Nuget]版本更新到2.0.2 [导入]修复单列导入的Bug,单元测试"OneColumnImporter_ ...

  8. tensorflow MNIST Convolutional Neural Network

    tensorflow MNIST Convolutional Neural Network MNIST CNN 包含的几个部分: Weight Initialization Convolution a ...

  9. 异步并发利器:实际项目中使用CompletionService提升系统性能的一次实践

    场景 随着互联网应用的深入,很多传统行业也都需要接入到互联网.我们公司也是这样,保险核心需要和很多保险中介对接,比如阿里.京东等等.这些公司对于接口服务的性能有些比较高的要求,传统的核心无法满足要求, ...

  10. 20200105--python学习第七天

    今日内容 深浅拷贝 文件操作 内容回顾及补充 1.内容回顾 计算机基础 编码 语法 if/while/for 数据类型 type/id/range 运算符 2.面试题 a.公司线上的系统用的是什么? ...