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
.