欢迎来到"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.fa和pep.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.fa 、gene2.fa、 gene3.fa三个文件。

接下来,将生成的gene1.fa、 gene2.fa、 gene3.fa组成新的基因对gene1-gene2、gene1-gene3、gene2-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.fa、gene1_3.fa、gene2_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.kaks、gene1_3.kaks、gene2_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. Docker Swarm 从入门到放弃

    准备工作 我本机是macOS,所以我直接安装了docker desktop,其中包含了docker-machine,不用单独安装. 安装docker主机驱动 我在网上很多人提到了使用virtualbo ...

  2. java正则使用全记录!

    一 开坑! 场景: 将动态uri中{} 替换成 至少出现一次的任意字符进行匹配, 比如 loclahost:8080/{name}/{9527}  -> localhost:8080/.{1,} ...

  3. orcle导入大数据文件

    0,创建ctl文件  内容为 OPTIONS (skip=0) LOAD DATA  CHARACTERSET 'UTF8' INFILE 'F:\anhui_data\20180814\shangh ...

  4. ovirt kvm嵌套虚拟化

    嵌 套式虚拟nested是一个可通过内核参数来启用的功能.它能够使一台虚拟机具有物理机CPU特性,支持vmx或者svm(AMD)硬件虚拟化.关于 nested的具体介绍,可以看这里 .该特性需要内核升 ...

  5. javaIO编码详解

    原创 输出流 有哪些构造方法可以在参数上设置编码格式 PrintStream(File file, String csn) PrintStream(String fileName, String cs ...

  6. The Top 500 Worst Passwords (2008)

    Top 100 123456 password 12345678 1234 pussy 12345 dragon qwerty 696969 mustang letmein baseball mast ...

  7. 微信小程序开发技巧总结(二) -- 文件的选取、移动、上传和下载

    微信小程序开发技巧总结(二) -- 文件的选取.移动.上传和下载 1.不同类型文件的选取 1.1 常用的图片 视频 对于大部分开发者来说,需要上传的文件形式主要为图片,微信为此提供了接口. wx.ch ...

  8. cmake处理多源文件目录的方法(转)

    cmake处理源代码分布在不同目录中的情况也很简单,现在假设我们的源代码分布情况如下: 源代码的分布情况 其中src目录下的文件要编译成一个链接库 第一步,项目主目录中的CMakelist.txt 在 ...

  9. 详解SkipList跳跃链表【含代码】

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天继续介绍分布式系统当中常用的数据结构,今天要介绍的数据结构非常了不起,和之前介绍的布隆过滤器一样,是一个功能强大原理简单的数据结构.并且 ...

  10. 20191223-python学习第三天

    1.运算符补充 (1)in 与 not  in 学习 (2)优先级 >小于 ,<小于,计算运算关系优先级 > not > and > or 2.charm自动生成文件头部 ...