clld-phylogeny-plugin

clld-phylogeny-plugin


Keywords
web, pyramid, pylons
License
Apache-2.0
Install
pip install clld-phylogeny-plugin==1.5.0

Documentation

clld-phylogeny-plugin

Plugin for the clld framework providing support for phylogenetic trees in clld apps.

This plugin includes the phylotree library to render phylogenetic trees in the browser.

Build Status codecov PyPI

Introduction

While plotting cross-linguistic data on a map serves as quick visualization of the correlation between the data and geography, plotting the data on a phylogenetic tree allows inspection of the correlation between the data and some theory about language relatedness, embodied in the tree.

The clld-phylogeny-plugin package supports this kind of visualization by

  • adding database models to store phylogenetic trees (and how the tree labels correspond to Language objects)
  • adding a Tree component, allowing simple rendering of a tree on a page
  • adding support for "plotting" Parameter objects on a tree, i.e. plotting the value for a given (Parameter, Language) pair next to the language's label on the tree.

Usage

TODO: See https://github.com/clld/grambank/commit/4101243597c3c95d21786fe8bdcf8cf060da609b for a minimal example.

To make clld-phylogeny-plugin functionality available to a clld app, it must be included in the app's configuration - typically in <app>:main:

    config.include('clld_phylogeny_plugin')

This will add a Resource Phylogeny with corresponding routes

  • /phylogenys - the index page listing all available phylogenies
  • /phylogenys/<ID> - a phylogeny's details page, by default rendering the associated tree.

Plotting parameters on trees

To synchronize plotting of markers for parameter values on maps and trees, the Tree.get_marker method may need to be adjusted. This can be done by registering a derived Tree class as ITree utility:

class MyTree(clld_phylogeny_plugin.tree.Tree):
    def get_marker(self, valueset):
        # compute marker shape and color from valueset
        return shape, color

....
    config.registry.registerUtility(MyTree, ITree)