进化树在生物学中运用广泛,通常是用来表示物种之间的进化关系。生物分类学家往往根据各类生物间的亲缘关系的远近,把各类生物展示在有分枝的树状的图表上,简明地表示生物的进化历程和亲缘关系。其中使用比较广泛的一个工具是来自Segata实验室的GraPhlAn

GraPhlAn是一种用于生成分类和系统发育树的综合可视化工具,其使用python语言编写而成,主要有graphlan.py和graphlan_annotate.py脚本。

GraPhlAn结构如下图:

1)GraPhlAn安装:

  • 通过 Bioconda:conda install -c bioconda graphlan
  • 直接安装:pip install graphlan
  • 从github安装(推荐,最新版的支持python3):
    >git clone https://github.com/biobakery/graphlan.git
    >pip install .
  • docker执行:docker run -it biobakery/graphlan bash

2)绘图

作者文章给出的示例也非常精美:

软件运行需要两个文件一个是构建进化树的文件一个是注释文件。

一般我们需要两步:

Step 1:合并树和注释文件-graphlan_annotate.py


usage: graphlan_annotate.py [-h] [--annot annotation_file] [-v]
                            input_tree [output_tree]

positional arguments:
  input_tree            支持Newick, Nexus, PhyloXML或者文本文件
  output_tree           输出含有注释的树文件,如果不指定将会覆盖源文件

optional arguments:
  -h, --help            帮助
  --annot annotation_file
                        注释文件
  -v, --version         版本

Step 2:绘制进化树-graphlan.py


usage: graphlan.py [-h] [--format ['output_image_format']]
                   [--warnings WARNINGS] [--positions POSITIONS]
                   [--dpi image_dpi] [--size image_size] [--pad pad_in]
                   [--external_legends] [--avoid_reordering] [-v]
                   input_tree output_image


positional arguments:
  input_tree            输入文件,PhyloXML格式
  output_image          输出图像名称,可以使用--format调整文件
                        格式: png, pdf, ps, eps, svg

optional arguments:
  -h, --help            帮助
  --format ['output_image_format']
                        指定图像格式
  --warnings WARNINGS   警告
  --positions POSITIONS
                        设置点的绝对位置是否应该显示到标准输出,r或theta
  --dpi image_dpi       设置dpi
  --size image_size     图片大小 (inche, 默认是 7.0)
  --pad pad_in          图像的画布设置
  --external_legends    图例设置(默认)
  --avoid_reordering    指定树是否会重构
  -v, --version         版本

示例:利用作者提供的HMP_tree数据集


graphlan_annotate.py hmptree.xml hmptree.annot.xml --annot annot.txt
graphlan.py hmptree.annot.xml hmptree.png --dpi 150 --size 14 

更多的参数介绍请查看参考资料。

参考资料:

1. https://github.com/biobakery/graphlan

2. https://github.com/biobakery/biobakery/wiki/graphlan

3. https://segatalab.github.io/tools/graphlan/