#!/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之系统发育树(进化树)的绘制相关推荐

  1. vbn中使用的3种流程控制结构是_细菌进化树构建:从模式种序列下载到构建系统发育树一键搞定...

    细菌进化树 • 构 建 细菌进化树构建:从模式种序列下载到构建系统发育树一键搞定 对于细菌新种或者新属的发现,总是那么让人期待,但是当我们批量获得16S序列后,逐一对这些尚不知分类地位的序列进行比对并 ...

  2. linux下phylip软件构建NJ树,进化树构建-NJ法lpar;megarpar;

    进化树构建-NJ法 V1.2 By ZHAO Yangguo, email: sunshine.zhao@yahoo.com.cn 通过长期的分析认为对于16S rDNA序列的进化(Phyligene ...

  3. iMeta | 兰大张东等使用PhyloSuite进行分子系统发育及系统发育树的统计分析

    点击蓝字 关注我们 使用PhyloSuite进行分子系统发育及系统发育树的统计分析 iMeta主页:http://www.imeta.science 方  法 ● 原文链接DOI: https://d ...

  4. iMeta | 兰州大学张东青年研究员:使用PhyloSuite进行分子系统发育及系统发育树的统计分析...

    点击蓝字 关注我们 使用PhyloSuite进行分子系统发育及系统发育树的统计分析 iMeta主页:http://www.imeta.science 方  法 ● 原文链接DOI: https://d ...

  5. ggtree实现系统发育树可视化

    文章原文:ggtree实现系统发育树可视化 背景1:Newick格式 Newick是最常用的存储进化树的文件格式,如上面这个树,拓朴结构用newick格式可以表示为: (B,(A,C,E),D); 括 ...

  6. MEGA | 多序列比对及系统发育树的构建

    MEGA是一个用于多序列比对和可视化.以及构建系统发育树的免费程序.自1993年发布以来,MEGA共更新9个版本 (没有第八.九版),今年发布的MEGA 11为处理更大的数据集进行了优化. 之前我们介 ...

  7. 宏病毒组(五)|病毒基因组系统发育树

    我们通过宏病毒组测序,分析鉴定到病毒的种类及丰度后,通常会进一步去研究样品中鉴定到的病毒之间的相关性和互作情况.病毒的进化地位等,以便能更好地了解其生物学特性,提升对检测到的病毒认知. 目前宏病毒组个 ...

  8. 系统发育树的美化(iTOL)

    #小白详细操作教程 1.打开网址iTOL: Interactive Tree Of Life 2.注册登录 3. 点击My Trees →+Tree upload(为Newick文件,后缀为.nwk) ...

  9. 使用MrBayes构建贝叶斯系统发育树【实践】

    建树是分子系统发育与进化研究中绕不过去的一道坎,本文就本人实际经验介绍贝叶斯树的实际操作: 基于不同原理的系统发育树构建方法的比较 Bayesian Inference (BI)建树 需要使用的软件包 ...

  10. Python实现霍夫曼树

    Python实现霍夫曼树 霍夫曼树是一种特殊的二叉树,是一种带权路径长度最短的二叉树,又称为最优二叉树. 给定 N 个权值作为二叉树的 N 个叶节点的权值,构造一棵二叉树,若该二叉树的带权路径长度达到 ...

最新文章

  1. windowns 8.1 缺少.net3.5解决方案
  2. Android API Demo程序框架
  3. T-SQL编程基础-基本语法
  4. 多元函数严格凹 海塞矩阵正定_海森矩阵的应用:多元函数极值的判定
  5. union万能密码By:dangdang
  6. 15.django之Django-Rest-Framework
  7. java的min函数_Java语言实现包含min函数的栈
  8. Web前端基础---CSS样式--盒子模型--浮动与定位
  9. 通过反射认识泛型的本质
  10. 【极客学院】-iOS学习笔记-2-Xcode(安装,创建项目,工作空间)
  11. 商务网站建设与维护【16】
  12. Windows安全加固-账户管理和认证授权
  13. 2021CCPC东北四省赛 解题报告
  14. 快速将bmp批量转换jpg的方法
  15. mac升级php后旧版本还在,老版本mac如何升级系统
  16. android模拟打印机服务,Android下的POS打印机调用的简单实现
  17. java小知识:如何查看class文件的jdk版本
  18. 计算机剪切功能是哪个组合键,剪切快捷键是哪个?电脑剪切快捷键大全
  19. 判断是pc还是移动端浏览器
  20. 《淘宝店铺经营管理一册通》一一1.5 店铺设置

热门文章

  1. flutter大小单位:dp
  2. Python-实现(整蛊)消息批量发送
  3. 浅析芝麻信用分征信体系
  4. webpack 合并压缩_文章 - coolie PK webpack 之二:CSS 文件的合并与压缩 - FED社区
  5. python下载b站视频_python怎么下载b站视频
  6. 编译器的自举及实现过程
  7. 真相了!他说:码农和程序员的区别就在这!网友炸锅了
  8. 厦门大学2019年数学分析考研试题参考解答
  9. win7磁盘清理_电脑磁盘已满怎么清理?磁盘清理的注意事项有哪些?
  10. luogu 2735 电网 皮克公式