Interactive web tree visualization — ETE Toolkit - analysis and visualization of trees

New in version 2.1.

# Interactive web tree visualization

Starting at version 2.1, ETE provides a module to interactively display trees within web pages. This task is not straightforward, but ETE tries to simplify it by providing a basic `WebTreeApplication` class that can be imported in your python web applications.

`WebTreeApplication` implements a transparent connector between ETE’s functionality and web application. For this, a pre-built WSGI application is provided.

Through this application, you will be able to create custom web implementations to visualize and manipulate trees interactively. Some examples can be found at the PhylomeDB tree browser or in the ETE’s online treeviewer.

## NO X system available?

Alternatively, a virtual X system such as XVFB has been reported to work in servers without a proper X backend. Just install XVFB and preface your ETE commands with xvfb-run.

`xvfb-run python MyETEscript.py`

## Installing a X server

All modern linux desktop installations include a graphical interface (called X server). However web servers (in which the ETE plugin is expected to run) may not count with a X server.

## Servers

In order to render tree images with ETE, you will need to install, at least, a basic X server. Note that the X server does not require a desktop interface, such as Gnome or KDE.

In Ubuntu, for instance, a basic X server called xdm can be installed as follows:

`apt-get install xserver-xorg xdm xfonts-base xfonts-100dpi xfonts-75dpi`

Once the X server is installed, you will need to configure it to accept connections from the web-server.

In our example, edit the `/etc/X11/xdm/xdm-config` file and set following values:

    DisplayManager*authorize:       false
    !
    DisplayManager*authComplain:    false

Do not forget to restart your xdm server.

`/etc/init.d/xdm restart`

## Desktops

If you plan to use web tree application in a linux desktop computer, then the X server is already installed. You will only need to give permissions to the web-server (i.e. apache) to connect your display. Usually, as simple as running the following command in a terminal:

`xhost +`

## Configuring the web sever

You will need to add support for WSGI application to your web server. In the following steps, an Apache2 web server will be assumed.

- Install and activate the `modwsgi` module in Apache.
- Configure your site to support WSGI.

Configuration will depend a lot on your specific system, but this is an example configuration file for the default site of your Apache server (usually at `/ete/apache2/sites-available/default`):

    <VirtualHost *:80>
     ServerAdmin webmaster@localhost

     DocumentRoot /var/www
     <Directory />
            Options +FollowSymLinks
            AllowOverride None
     </Directory>

     ErrorLog /var/log/apache2/error.log

     # Possible values include: debug, info, notice, warn, error, crit,
     # alert, emerg.
     LogLevel warn

     CustomLog /var/log/apache2/access.log combined

     # ########################### #
     # WSGI SPECIFIC CONFIG        #

     WSGIDaemonProcess eteApp user=www-data group=www-data processes=1 threads=1
     WSGIProcessGroup eteApp
     WSGIApplicationGroup %{GLOBAL}

     <Directory /var/www/webplugin/>
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            SetHandler wsgi-script
            Order allow,deny
            Allow from all
            AddHandler wsgi-script .py
     </Directory>

     # END OF WSGI SPECIFIC CONFIG #
     # ########################### #

    </VirtualHost>

Note

/var/www/webplugin/wsgi/ is the folder in which python web application will be located. Make sure that the apache WSGI config enables this folder to run wsgi-scripts.

Warning

Important notes:

/var/www/webplugin/ is assumed to be the directory in which your application will run.

/var/www/webplugin/tmp/ should be writable by the web-server (i.e. chmod 777)

## Implementation of WebTreeApplications

ETE’s `WebTreeApplication` uses WSGI in the backend, and a several javascript files in the frontend. Basic files are included as an example in the ETE installation package `examples/webplugin`. The whole example folder is necessary, and it contains a commented copy of a web-tree implementation `examples/webplugin/wsgi/webplugin_example.py`.