⚠ This page is served via a proxy. Original site: https://github.com
This service does not collect credentials or authentication data.
Skip to content

Simple phylogenetic tree visualization python package for phylogenetic analysis

License

Notifications You must be signed in to change notification settings

moshi4/phyTreeViz

Repository files navigation

phyTreeViz

Python3 OS License Latest PyPI version conda-forge CI

Table of contents

Overview

phyTreeViz is a simple and minimal phylogenetic tree visualization python package implemented based on matplotlib. This package was developed to enhance phylogenetic tree visualization functionality of BioPython.

phyTreeViz is intended to provide a simple and easy-to-use phylogenetic tree visualization function without complexity. Therefore, if you need complex tree annotations, I recommend using ete or ggtree.

Installation

Python 3.8 or later is required for installation.

Install PyPI package:

pip install phytreeviz

Install conda-forge package:

conda install -c conda-forge phytreeviz

API Usage

Only simple example usage is described in this section. For more details, please see Getting Started and API Docs.

API Example

API Example 1

from phytreeviz import TreeViz, load_example_tree_file

tree_file = load_example_tree_file("small_example.nwk")

tv = TreeViz(tree_file)
tv.show_branch_length(color="red")
tv.show_confidence(color="blue")
tv.show_scale_bar()

tv.savefig("api_example01.png", dpi=300)

example01.png

API Example 2

from phytreeviz import TreeViz, load_example_tree_file

tree_file = load_example_tree_file("small_example.nwk")

tv = TreeViz(tree_file, height=0.7)
tv.show_scale_axis()

tv.set_node_label_props("Homo_sapiens", color="grey")
tv.set_node_label_props("Pongo_abelii", color="green", style="italic")

tv.set_node_line_props(["Hylobates_moloch", "Nomascus_leucogenys"], color="orange", lw=2)
tv.set_node_line_props(["Homo_sapiens", "Pan_troglodytes", "Pan_paniscus"], color="magenta", ls="dotted")

tv.savefig("api_example02.png", dpi=300)

example02.png

API Example 3

from phytreeviz import TreeViz, load_example_tree_file

tree_file = load_example_tree_file("small_example.nwk")

tv = TreeViz(tree_file, align_leaf_label=True)
tv.show_scale_axis()

group1 = ["Hylobates_moloch", "Nomascus_leucogenys"]
group2 = ["Homo_sapiens", "Pan_paniscus"]

tv.highlight(group1, "orange")
tv.highlight(group2, "lime")

tv.annotate(group1, "group1")
tv.annotate(group2, "group2")

tv.marker(group1, marker="s", color="blue")
tv.marker(group2, marker="D", color="purple", descendent=True)
tv.marker("Pongo_abelii", color="red")

tv.savefig("api_example03.png", dpi=300)

example03.png

API Example 4

from phytreeviz import TreeViz, load_example_tree_file
from matplotlib.patches import Patch

tree_file = load_example_tree_file("medium_example.nwk")

tv = TreeViz(tree_file, height=0.3, align_leaf_label=True, leaf_label_size=10)
tv.show_scale_bar()

group1 = ["Hylobates_moloch", "Nomascus_leucogenys"]
group2 = ["Homo_sapiens", "Pongo_abelii"]
group3 = ["Piliocolobus_tephrosceles", "Rhinopithecus_bieti"]
group4 = ["Chlorocebus_sabaeus", "Papio_anubis"]

tv.highlight(group1, "orange", area="full")
tv.highlight(group2, "skyblue", area="full")
tv.highlight(group3, "lime", area="full")
tv.highlight(group4, "pink", area="full")

tv.link(group3, group4, connectionstyle="arc3,rad=0.2")

fig = tv.plotfig()

_ = fig.legend(
    handles=[
        Patch(label="group1", color="orange"),
        Patch(label="group2", color="skyblue"),
        Patch(label="group3", color="lime"),
        Patch(label="group4", color="pink"),
    ],
    frameon=False,
    bbox_to_anchor=(0.3, 0.3),
    loc="center",
    ncols=2,
)

fig.savefig("api_example04.png", dpi=300)

example04.png

CLI Usage

phyTreeViz provides simple phylogenetic tree visualization CLI.

Basic Command

phytreeviz -i [Tree file or text] -o [Tree visualization file]

Options

General Options:
  -i IN, --intree IN      Input phylogenetic tree file or text
  -o OUT, --outfile OUT   Output phylogenetic tree plot file [*.png|*.jpg|*.svg|*.pdf]
  --format                Input phylogenetic tree format (Default: 'newick')
  -v, --version           Print version information
  -h, --help              Show this help message and exit

Figure Appearence Options:
  --fig_height            Figure height per leaf node of tree (Default: 0.5)
  --fig_width             Figure width (Default: 8.0)
  --leaf_label_size       Leaf label size (Default: 12)
  --ignore_branch_length  Ignore branch length for plotting tree (Default: OFF)
  --align_leaf_label      Align leaf label position (Default: OFF)
  --show_branch_length    Show branch length (Default: OFF)
  --show_confidence       Show confidence (Default: OFF)
  --dpi                   Figure DPI (Default: 300)

Available Tree Format: ['newick', 'phyloxml', 'nexus', 'nexml', 'cdao']

CLI Example

Click here to download example tree files.

CLI Example 1

phytreeviz -i "((A,B),((C,D),(E,(F,G))));" -o cli_example01.png

example01.png

CLI Example 2

phytreeviz -i ./example/small_example.nwk -o cli_example02.png \
           --show_branch_length --show_confidence

example02.png

CLI Example 3

phytreeviz -i ./example/medium_example.nwk -o cli_example03.png \
           --fig_height 0.3 --align_leaf_label 

example03.png

About

Simple phylogenetic tree visualization python package for phylogenetic analysis

Topics

Resources

License

Stars

Watchers

Forks

Languages