.. _install:
====================
Download and install
====================
Installation from source
========================
Requirements
------------
To build EggLib from source, you need a **C++ compiler** supporting
the **Standard Template Library** and a UNIX shell-compatible
environment (known as *terminal*, and available through
`cygwin `_ on Windows). In addition, the Python
development files are needed. These files should be available by default
under Windows. In other systems, these files should be available as a
separate package python-devel or python-header.
There are two *optional* dependencies:
* `Bio++ `_ (for egglib 2.1.5: version 2.0.x
or higher; for egglib 2.1.6 through 2.1.9: version 2.1.x;
for egglib 2.1.10 and higher: version 2.2.x).
Bio++ contains a set of C++ libraries for sequence
management, population genetics and phylogenetics. If Bio++ is
present in the system, it will be
automatically used to extend the possibilities of the population
genetics functions of Egglib. A notable addition is the computation of
the McDonald and Kreitman test table. If Bio++ is not detected, it
will be skipped without generating errors.
* The `GNU Scientific Library `_
is needed for the most crucial parts of the ABC features of Egglib
(namely the ABC class). If the GSL is not available, this class will
not be available, but the rest of the library will be available.
The Python module (egglib-py) requires `Python `_ version 2.6 or higher
but doesn't function under Python version 3.0. On some platform,
installing the development package of Python will be needed. Part of
EggLib functionalities require `matplotlib `_
or `numpy `_. The presence of these modules are
evaluated dynamically and an error is only reported when attempting to
use the corresponding features.
EggLib can use **external applications**, provided that they are
installed and available in the system. If they are absent or not
detected, some features might not be available. These programs must be
installed independently and their presence is evaluated at build time.
* The programs ``blastn``, ``blastp``, ``blastx``, ``tblastn``,
``tblastx`` and ``makeblastdb`` of the `BLAST+ standalone package `_.
* `clustalw `_.
* `muscle `_.
* ``codeml`` from the `PAML package `_.
* `phyml `_ version 3.
* `ms `_.
* `primer3 `_ version 2.2.3 (earlier alpha and beta 2.x.x versions should work).
* ``dnadist``, ``neighbor`` and ``seqboot`` from the `PHYLIP package `_.
Download source code
--------------------
Download the following two archives (replace by the actual
version number), from the `download site `_:
* ``egglib-cpp-.tar.gz`` for the C++ library
* ``egglib-py-.tar.gz`` for the Python module
Installation procedure
----------------------
Unpack the C++ library archive and move to the created directory
(replace ```` by the actual version number)::
$gzip -d egglib-cpp-.tar.gz
$tar xvf egglib-cpp-.tar
$cd egglib-cpp-
Configure the package::
$./configure [options]
Type ``./configure --help`` to view the available options. The options
allow you to use non-default tools or install libraries to non-default
locations. (For example, ``./configure --prefix=$HOME`` will install the
libraries in a *lib* directory, and the headers in a *header* directory
of your home directory.) The script should exit without mentionning an
error.
Compile the libraries::
$make
This will compile all the source code in the current directory. Unless
an error is reported, you can next install the libraries in you system
directories (in most cases, this step requires super-user rights)::
$make install
Upon success and by default, you should have installed the C++ library.
Next step is too install the Python module. Move out from the
egglib-cpp directory, unpack the Python package and move in it::
$cd ..
$tar xvf egglib-py-.tar
$cd egglib-py-
Compile it::
$python setup.py build
An option ``--prefix`` is provided to add an additional search path
for headers and libraries of egglib-cpp. If you used ``--prefix=$HOME``
to run egglib-cpp's ``configure`` script, you should also then run
``python setup.py build --prefix=$HOME`` at this stage. The setup.py
script accepts more options provided by Python's builtin distutils
package.. Type ``python setup.py --help`` to see the manual page.
If the compilation is successfull, install the package within you Python
distribution (probably requires super-user rights)::
$python setup.py install
You can use the (distutils builtin) option ``--home`` to install the
module in a non-default location. Refer to Python's
`documentation `_ for
more details.
.. note::
Don't run ``python setup.py install`` without running
``python setup.py build`` because it would skip the ``build_app``
step and your EggLib installation would be broken.
Detection of external applications
----------------------------------
The ``build_apps`` command of setup.py automatically detects external
applications. In case you subsequently install a program and want to use
it though Egglib, you can type at any time::
$python setup.py build_apps
$python setup.py install
You should do the same when you remove a program, or attempting to use
a function using this program would result in a message stating that the
program in question failed or that output files could not be parsed.
``build_apps`` generate an output like the following::
$running build_apps
ms[+] blastn[+] blastp[+] clustalw[+] muscle[+] tblastn[+] blastx[+]
tblastx[+] makeblastdb[+] phyml[+] dnadist[-] neighbor[-] codeml[+]
primer3[-]
In this example, the *PHYLIP* package and *primer3* were not installed.
Note that in any case EggLib will be functional, only some functions
depending on the corresponding programs will not be available.
``build_apps`` rely on default program names and location to detect
their presence. In case they are installed in your system but not
available in the standard search path you'll have to modify the file
``apps.conf.in`` and rebuild to make EggLib aware of their presence
(this file includes a short guideline section).
Installation of pre-compiled Python modules
===========================================
Pre-compiled programs and Python modules are currently available for
Windows operating systems. They are available from the
`download `_ page (refer
to the included readme file for more details).