使用单拷贝基因画物种进化树

所需软件:

# OrthoFinder寻找同源基因

conda install orthofinder

#EasySpeciesTree

git clone https://github.com/Davey1220/EasySpeciesTree.git

该脚本依赖Mafft, TrimAI, RAxML和ASTRAL四个软件,需要自己提前安装好

修改脚本中相应依赖程序的绝对路径:vi EasySpeciesTree.py

conda 可以直接安装mafft、 trimal、raxmlHPC

astral.5.6.3.jar:github下载:https://github.com/smirarab/ASTRAL

############### MODIFY THE FOLLWINGS PATHS FOR ALL DEPENDENT PROGRAMS ###############

MAFFT = '/xxx/anaconda2/bin/mafft'

RAxML = '/xxx/anaconda2/bin/raxmlHPC'

ASTRAL = '/xxx/software/ASTRAL-master/astral.5.6.3.jar'

TRIMAL = '/xxx/anaconda2/bin/trimal'

#####################################################################################

步骤:

python 脚本更改物种蛋白序列的ID

#!/usr/bin/evn python3

# -*- coding: utf-8 -*-

__author__='LJS'

import sys, os

def renameID(infile, outfile):

ini = open(infile, 'r')

out = open(outfile, 'w')

j = 0

for i in ini:

i = i.strip()

if i.startswith('>'):

# print('>seq'+str(j).rjust(5, '0'), file=out) #for python3

print >>out, '>Amborella'+str(j).rjust(5, '0') #for python2

j += 1

else:

# print(i, file=out) #for python3

print >>out, i #for python2

if __name__ == '__main__':

infile =sys.argv[1]

outfile = sys.argv[2]

renameID(infile, outfile)

2)更改各个物种蛋白库文件的名字,与序列ID的名字前半部分一致;

例如Amborella.fa 其序列ID的名字为

Amborella00000

......

Amborella26845

3)运行orthofinder

orthofinder -f orthsp1 -M msa -S diamond -t 16 -a 16

-f 指定蛋白序列所在的文件夹(orthosp1)此命令仅需指定输入文件夹,其余为默认参数。

-t 序列搜索使用的线程数 (默认值为16)

-a 序列分析使用的线程数 (默认值为1)

-M 基因树推断方法(默认为dendroblast)可选:dendroblast ,msa

-S 序列比对使用的程序 (默认为Blast)可选:blast, mmseqs, blast_gz, diamond(推荐使用diamond,比对速度快)

-A 多序列联配方式,该选项仅当 -M msa 选项时才有效(默认为mafft)可选:muscle, mafft

-T 建树方式,该选项仅当 -M msa 选项时才有效 (默认为fasttree)可选:iqtree, raxml-ng, fasttree, raxml

-s 输入特定的根物种树

-I 设定MCL的膨胀系数(默认为1.5)

#如果要修改建树过程中的bootstrap,就要修改程序的config.json文件。该文件在conda环境里面的bin文件里

#如要在iqtree建树过程中增加bootstrap, 则在iqtree的"cmd_line":中添加 -bb 1000 (iqtree的超快bootstrap)或 -b 1000(传统bootstrap)

"iqtree":{

"program_type": "tree",

"cmd_line": "iqtree -s INPUT -pre PATH/IDENTIFIER -bb 1000 > /dev/null",

"ouput_filename": "PATH/IDENTIFIER.treefile"

},

4)orthofinder结果

所在文件夹:xxx/orthsp1/OrthoFinder/Results_Sep25/Orthogroups

image.png

orthsp1/OrthoFinder/Results_Sep25/Species_Tree

image.png

5)运行EasySpeciesTree 构建物种进化树

python ~/software/EasySpeciesTree/EasySpeciesTree.py -in1 species_id.txt -in2 SingleCopyOrthogroups.txt -in3 Orthogroups.csv -in4 all-pep.fas -nb 100 -t 16

-h, --help show this help message and exit

-in1 INPUT1, --input1 INPUT1

offer the prefix of all abbreviated species id

-in2 INPUT2, --input2 INPUT2

offer the Single-copy Orthogroups file, SingleCopyOrthogroups.txt

-in3 INPUT3, --input3 INPUT3

offer the all Orthogroups file, Orthogroups.csv

-in4 INPUT4, --input4 INPUT4

offer all species protein sequences

-t THREAD, --thread THREAD

set the number of thread, default=10

-nb BOOTSTRAP, --bootstrap BOOTSTRAP

set the number of bootstrap, default=100

-m MODEL, --model MODEL

set the model of amino acid substitution, default=PROTGAMMAJTT

输入文件-in2 和 -in3 来自xxx/orthsp1/OrthoFinder/Results_Sep25/Orthogroups

image.png

输入文件-in1来自

xxx/analysis/specieTres/orthsp2/OrthoFinder/Results_Sep25/WorkingDirectory/SpeciesIDs.txt的第二列

awk '{print $2}' SpeciesIDs.txt |sed -i 's/.fa//g' > species_id.txt

输入文件-in4: cat *.fa >>all.pep.fas

6)EasySpeciesTree运行结果,会生成4个文件夹

image.png

将串联法和并联法生成的结果文件RAxML_bipartitions.concatenation_out.nwk,Astral.coalescence_tree.nwk导入FigTree、MEGA或者iTOL进行可视化

串联法(Concatenation)(先将不同物种之间的每个单拷贝基因单独进行多序列比对,然后将这些比对后的单拷贝基因进行首尾 相连串接成一个supergene矩阵,最后将这个supergene用于构建系统发育树)

并联法(Coalescence)(先将不同物种之间的每个单拷贝基因单独进行多序列比对,并构建每一个单拷贝基因对应的基因树,然后将所有单拷贝基因对应的基因树进行合并重构出相应的物种树)进行ML系统发育树的构建。

参考:

https://www.jianshu.com/p/bfa568c8f4c4

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

https://www.jianshu.com/p/90301eeb063a

高级用法

(1)添加新物种到之前的分析(previous_orthofinder_directory指的是包含“SpeciesIDs.txt”的目录)

$orthofinder -b previous_orthofinder_directory -f new_fasta_directory

(2)从之前的分析中移除物种

从输出目录下找到工作目录“WorkingDirectory”中的“SpeciesIDs.txt”文件,在要移除的物种那一行最前面加上一个“#”并保存,然后运行(previous_orthofinder_directory指的是包含“SpeciesIDs.txt”的目录):

$orthofinder -b previous_orthofinder_directory

(3)同时添加和删除物种

编辑好“SpeciesIDs.txt”后,运行:

$orthofinder -b previous_orthofinder_directory -f new_fasta_directory

(4)更多高级功能请阅读官方文档,主要包括“Inferring MSA Gene Trees”、并行计算、单独运行BLAST、使用预先计算的BLAST结果以及回归检测。

python 进化树_物种进化树构建相关推荐

  1. 密码学实验题_03.3_AES实验_利用Sage构建AES的S盒和逆S盒(基于阅读Sage数学库的Python代码)

    密码学实验题_03.3_AES实验_利用Sage构建AES的S盒和逆S盒(基于阅读Sage数学库的Python代码) 3.    AES实验 3)    (思考题)利用Sage构建AES的S盒和逆S盒 ...

  2. python 投资组合_重新设计投资组合的好处

    python 投资组合 Yep, I'm here to nag you a bit about that portfolio that you haven't updated in a while. ...

  3. pico8 掌机_使用Pico-8构建自己的复古游戏

    pico8 掌机 An example of the kinds of pixel animations people make in Pico-8. 人们在Pico-8中制作的各种像素动画的示例. ...

  4. 白裤子变粉裤子怎么办_使用裤子构建构建数据科学的monorepo

    白裤子变粉裤子怎么办 At HousingAnywhere, one of the first major obstacles we had to face when scaling the Data ...

  5. python股市_如何使用python和破折号创建仪表板来主导股市

    python股市 始终关注大局 (Keep Your Eyes on the Big Picture) I've been fascinated with the stock market since ...

  6. python搭建_简单_交易系统【转载】

    python搭建_简单_交易系统[转载] 构建account_class 类 构建所需函数 构建最大回撤.收益率.回测函数 构建银行翻倍.选股函数 回测实证分析 (转自 https://www.joi ...

  7. python爬虫_抓取瓦片图片信息并将其拼接_以mapbar为例(适用交通工程类专业)

    python爬虫_抓取瓦片图片信息并将其拼接_以mapbar为例(适用交通工程类专业) 这次就以mapbar为例爬取道路交通拥堵情况 第一步,瓦片标号解析 第二步,拼url,然后下载 第三步,图片拼接 ...

  8. Python基础_第5章_Python中的数据序列

    Python基础_第5章_Python中的数据序列 文章目录 Python基础_第5章_Python中的数据序列 Python中的数据序列 一.字典--Python中的==查询==神器 1.为什么需要 ...

  9. Python使用sklearn和statsmodels构建多元线性回归模型(Multiple Linear Regression)并解读

    Python使用sklearn和statsmodels构建多元线性回归模型(Multiple Linear Regression)并解读 #仿真数据集(预测股票指数) 这里的目标是根据两个宏观经济变量 ...

  10. python基于条件、规则构建已有字典的子集

    python基于条件.规则构建已有字典的子集 字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括 ...

最新文章

  1. atomic原子类实现机制_JUC学习笔记--Atomic原子类
  2. poj1419(最大独立集)
  3. node+express+MongoDB实现小商城服务端
  4. Cocos2d-x win7 + vs2010 配置图文详解(亲测)
  5. 用lemon测交互题
  6. 信捷plc485通信上位机_基于Snap7实现与西门子PLC通信
  7. Object 转 String
  8. Lambda架构概述
  9. GIT提交记录和Revert commit过程分析
  10. OpenInfra Days China 2020 官网正式上线,含免费注册通道!
  11. Hibernate Search v.4.2.0.CR1 发布
  12. php编写一个学生类_0063 PHP编程编写学生分数信息编辑和删除功能网页
  13. 【毕业设计】基于单片机的指纹识别考勤系统 - 物联网 stm32
  14. 10个精美免费PPT模板下载网站推荐
  15. 面对初学者的CAN总线入门教程(二)_CAN协议基本概念及其规格标准
  16. surface pro的TF卡有时候不感应不到,需要重新插拔?
  17. 百度地图标记点中添加echarts图表
  18. 这几款小众软件,电脑常备
  19. [Pytorch框架] 5.2 Pytorch处理结构化数据
  20. Java中if语句详解

热门文章

  1. Linux 的日志服务器 详解(Rsyslog)
  2. 关于操作系统镜像超过4G的解决办法
  3. 【githubboy】一份开源的小型金融知识图谱构建流程,可帮助你更好的学习与理解知识图谱的使用
  4. centos 6.5安装杀毒软件clamav
  5. 几个常用的后台管理系统
  6. 方差 标准差_财务思维:资产风险衡量中的收益率方差、标准差怎么理解运用?...
  7. 计算机开机网络连接启动慢,四个小技巧轻松解决电脑开机后网络连接慢问题
  8. 气温和降水空间栅格数据下载RS123
  9. SparkStreaming----复习
  10. 创新电影院意在传播中华民族优秀传统文化