python 进化树_Biopython之系统发育树(进化树)的绘制
#!/usr/bin/python
# -*- coding: utf-8 -*-
# @Date : 2017-02-08 02:04:02
# @Author : XYZ (superxyz@vip.qq.com)
# @Link : www.bubblefertilizer.com
# @Version : 1.0
def demo(x):
print('-------------------[%s]-------------------'%x)
demo('1.读取树文件')
'''
对象包含树的全局信息,如树是有根树还是无根树。
它包含一个根进化枝, 和以此往下以列表嵌套的所有进化枝,
直至叶子分支。
'''
from Bio import Phylo
tree=Phylo.read('simple.dnd','newick') #读取生成的树文件
print(tree)
Phylo.draw_ascii(tree) #建一个简单的ASCII-art(纯文本)系统发生图
tree.rooted=True #有根树
Phylo.draw(tree)
demo('2.利用matplot包做图并给树的分支上色')
tree=tree.as_phyloxml()
tree.root.color=(128,128,128) #color 颜色属性,width宽度属性
tree.root.color='#808080' #设置根的的颜色会将整个树的颜色变为灰色
tree.root.color="gray"
mrca=tree.common_ancestor({'name':'E'},{'name':'F'})
mrca.color='salmon'
'''
方法 common_ancestor 返回原始树中这个进化枝的引用
定位“E”和“F”最近祖先(MRCA)节点
'''
tree.clade[0,1].color='blue' #索引[1,1]表示根节点的第一个子代节点的第二个子代
Phylo.draw(tree)
import sys
Phylo.write(tree,sys.stdout,'phyloxml') #查看phyloxml文件句柄的输出
demo('3.系统发育树的I/O函数')
trees=Phylo.parse('phyloxml_examples.xml','phyloxml') #使用parse函数迭代给定文件中的每一个树
for tree in trees:
print(tree)
trees=list(Phylo.parse('phyloxml_examples.xml','phyloxml')) #将迭代器转化为表
tree1=trees[0] #第一个树
others=trees[1:] #其它树
Phylo.write(tree1,'tree1.dnd','newick') #写入文件,可以直接在这里转化文件格式
Phylo.write(others,'other_trees.xml','phyloxml')
Phylo.convert('tree1.dnd','newick','tree1.xml','nexml') #将一种树文件格式转化为其它树文件格式,前面是输入,后面是输出
Phylo.convert('other_trees.xml','phyloxml','other_trees.nex','nexus')
from io import StringIO
'''
和SeqIO和AlignIO类似,当使用字符串而不是文件作为输入输出时,
需要使用 "StringIO" 函数。
'''
handle=StringIO('(((A,B),(C,D)),(E,F,G));')
tree=Phylo.read(handle,'newick')
demo('4.查看和导出树')
tree=Phylo.read('example.xml','phyloxml')
Phylo.draw(tree,branch_labels=lambda c:c.branch_length) #利用匿名函数读取分支长度作为分支标签
Phylo.draw_graphviz(tree,prog='dot')
import pylab
pylab.show()
pylab.savefig('phylo-dot.png')
demo('5.调用matplotlib、networkx、Graphviz绘图')
from Bio import Phylo
from matplotlib import pyplot as plt #调用matplotlib绘图
tree = Phylo.read("example.xml", "phyloxml") #读取进化树文件
Phylo.draw_graphviz(tree, prog='dot')
plt.savefig('phylo-dot.png') #保存图片
plt.show() #show()写在savefig前面保存的图片会是空白
tree = Phylo.read("simple.dnd", "newick")
tree.rooted = True #生成有根树
Phylo.draw_graphviz(tree)
'''
最终的显示也受所提供的树对象的 rooted 属性的影响。
有根树在每个分支(branch)上显示 一个“head”来表明它的方向
'''
plt.savefig('phylo-dot-simple.png')
plt.show()
Phylo.draw_graphviz(tree, prog="neato") #“prog”参数指定Graphviz的用来布局的引擎。
plt.savefig('phylo-dot-simple-neato.png')
plt.show()
'''
“prog”参数指定Graphviz的用来布局的引擎。
默认的引擎 twopi 对任何大小的树都表现很好,
很可靠的避免交叉的分支出现。neato 程序可能画出更加好看的中等大小的树,
但是有时候会有交叉分支出现dot程序或许对小型的树有用,
但是对于大一点的树的布局易产生奇怪的事情。
'''
tree = Phylo.read("apaf.xml", "phyloxml") #一根更大的树文件
Phylo.draw_graphviz(tree, prog="neato", node_size=0)
plt.savefig('phylo-dot-apaf-neato.png')
plt.show()
#matplotlib查看器可以放大选择的区域,使得杂乱的图像变得稀疏。
python 进化树_Biopython之系统发育树(进化树)的绘制相关推荐
- vbn中使用的3种流程控制结构是_细菌进化树构建:从模式种序列下载到构建系统发育树一键搞定...
细菌进化树 • 构 建 细菌进化树构建:从模式种序列下载到构建系统发育树一键搞定 对于细菌新种或者新属的发现,总是那么让人期待,但是当我们批量获得16S序列后,逐一对这些尚不知分类地位的序列进行比对并 ...
- linux下phylip软件构建NJ树,进化树构建-NJ法lpar;megarpar;
进化树构建-NJ法 V1.2 By ZHAO Yangguo, email: sunshine.zhao@yahoo.com.cn 通过长期的分析认为对于16S rDNA序列的进化(Phyligene ...
- iMeta | 兰大张东等使用PhyloSuite进行分子系统发育及系统发育树的统计分析
点击蓝字 关注我们 使用PhyloSuite进行分子系统发育及系统发育树的统计分析 iMeta主页:http://www.imeta.science 方 法 ● 原文链接DOI: https://d ...
- iMeta | 兰州大学张东青年研究员:使用PhyloSuite进行分子系统发育及系统发育树的统计分析...
点击蓝字 关注我们 使用PhyloSuite进行分子系统发育及系统发育树的统计分析 iMeta主页:http://www.imeta.science 方 法 ● 原文链接DOI: https://d ...
- ggtree实现系统发育树可视化
文章原文:ggtree实现系统发育树可视化 背景1:Newick格式 Newick是最常用的存储进化树的文件格式,如上面这个树,拓朴结构用newick格式可以表示为: (B,(A,C,E),D); 括 ...
- MEGA | 多序列比对及系统发育树的构建
MEGA是一个用于多序列比对和可视化.以及构建系统发育树的免费程序.自1993年发布以来,MEGA共更新9个版本 (没有第八.九版),今年发布的MEGA 11为处理更大的数据集进行了优化. 之前我们介 ...
- 宏病毒组(五)|病毒基因组系统发育树
我们通过宏病毒组测序,分析鉴定到病毒的种类及丰度后,通常会进一步去研究样品中鉴定到的病毒之间的相关性和互作情况.病毒的进化地位等,以便能更好地了解其生物学特性,提升对检测到的病毒认知. 目前宏病毒组个 ...
- 系统发育树的美化(iTOL)
#小白详细操作教程 1.打开网址iTOL: Interactive Tree Of Life 2.注册登录 3. 点击My Trees →+Tree upload(为Newick文件,后缀为.nwk) ...
- 使用MrBayes构建贝叶斯系统发育树【实践】
建树是分子系统发育与进化研究中绕不过去的一道坎,本文就本人实际经验介绍贝叶斯树的实际操作: 基于不同原理的系统发育树构建方法的比较 Bayesian Inference (BI)建树 需要使用的软件包 ...
- Python实现霍夫曼树
Python实现霍夫曼树 霍夫曼树是一种特殊的二叉树,是一种带权路径长度最短的二叉树,又称为最优二叉树. 给定 N 个权值作为二叉树的 N 个叶节点的权值,构造一棵二叉树,若该二叉树的带权路径长度达到 ...
最新文章
- windowns 8.1 缺少.net3.5解决方案
- Android API Demo程序框架
- T-SQL编程基础-基本语法
- 多元函数严格凹 海塞矩阵正定_海森矩阵的应用:多元函数极值的判定
- union万能密码By:dangdang
- 15.django之Django-Rest-Framework
- java的min函数_Java语言实现包含min函数的栈
- Web前端基础---CSS样式--盒子模型--浮动与定位
- 通过反射认识泛型的本质
- 【极客学院】-iOS学习笔记-2-Xcode(安装,创建项目,工作空间)
- 商务网站建设与维护【16】
- Windows安全加固-账户管理和认证授权
- 2021CCPC东北四省赛 解题报告
- 快速将bmp批量转换jpg的方法
- mac升级php后旧版本还在,老版本mac如何升级系统
- android模拟打印机服务,Android下的POS打印机调用的简单实现
- java小知识:如何查看class文件的jdk版本
- 计算机剪切功能是哪个组合键,剪切快捷键是哪个?电脑剪切快捷键大全
- 判断是pc还是移动端浏览器
- 《淘宝店铺经营管理一册通》一一1.5 店铺设置