.. _installation:

================
Installing pysam
================

Pysam can be installed through conda_, PyPI_ and from the repository.
The recommended way to install pysam is through conda/bioconda.

Conda installation
==================

To install pysam in your current conda_ environment, type::

   conda config --add channels r
   conda config --add channels bioconda
   conda install pysam

This will install pysam from the bioconda_ channel and automatically
makes sure that dependencies are installed. Also, compilation flags
will be set automatically, which will potentially save a lot of
trouble on OS X.

PyPI installation
=================

Pysam provides a python interface to the functionality contained
within the htslib_ C library. There are two ways that these two
can be combined, ``builtin`` and ``external``.

Builtin
-------

The typical installation will be through PyPI_::

   pip install pysam

Generally you will have the ``wheel`` package installed and
this command will speedily install pysam from a pre-built wheel.
Otherwise, or if you use pip's ``--no-binary`` option, this will
compile the ``builtin`` htslib source code within pysam and allow
the configuration facilities described below to be used.

htslib_ can be configured at compilation to turn on additional
features such support using encrypted configurations, enable plugins,
and more. See the htslib_ project for more information on these.

Pysam will attempt to configure htslib_ to turn on some advanced
features. If these fail, for example due to missing library
dependencies (`libcurl`, `libcrypto`), it will fall back to
conservative defaults.

Options can be passed to the configure script explicitly by
setting the environment variable `HTSLIB_CONFIGURE_OPTIONS`.
For example::

  export HTSLIB_CONFIGURE_OPTIONS=--enable-plugins
  pip install pysam

External
--------

pysam can be combined with an externally installed htslib_
library. This is a good way to avoid duplication of libraries. To link
against an externally installed library, set the environment variables
`HTSLIB_LIBRARY_DIR` and `HTSLIB_INCLUDE_DIR` before installing::

   export HTSLIB_LIBRARY_DIR=/usr/local/lib
   export HTSLIB_INCLUDE_DIR=/usr/local/include
   pip install pysam

Note that the location of the file :file:`libhts.so` needs to be known
to the linker once you run pysam, for example by setting the
environment-varirable `LD_LIBRARY_PATH`.

Note that generally the pysam and htslib version need to be
compatible. See the release notes for more information.

Installation from repository
============================

pysam depends on cython_ to provide the connectivity to the htslib_ C
library. The installation of the source tarball (:file:`.tar.gz`)
contains pre-built C-files and cython needs not be present
during installation. However, when installing from the repository,
cython needs to be installed beforehand.

To install from repository, type::

    python setup.py install

For compilation options, see the section on PyPI installation above.

Requirements
============

Depending on the installation method, requirements for building pysam differ.

When installing through conda_, dependencies will be resolved by the
package manager. The pip_ installation and installation from source
require a C compiler and its standard libraries as well as all
requirements for building htslib. Htslib requirements are listed in
the htslib/INSTALL file.

Installing from the repository will require cython_ to be installed.







