============
Installation
============
IgDiscover is written in Python 3 and is developed on Linux. The tool also
runs on macOS, but is not as well tested on that platform.
For installation on either system, we recommend that you follow the instructions
below, which will first explain how to install the `Conda `_
package manager. IgDiscover is available as a
Conda-package from `the bioconda channel `_.
Using Conda will make the installation easy because all dependencies are also
available as Conda packages and can thus be installed automatically along with
IgDiscover.
There are also :ref:`non-Conda installation instructions `
if you cannot use Conda.
.. _install-with-conda:
Installing IgDiscover with Conda
--------------------------------
1. Install `Conda`_ by following the `conda installation
instructions `_
as appropriate for your system. You will need to choose between a “Miniconda”
and “Anaconda” installation. We recommend Miniconda as the download is
smaller. If you are in a hurry, these two commands are usually sufficient to
install Miniconda on Linux (read the linked document for macOS instructions)::
wget https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
When the installer asks you about modifying the ``PATH`` in your ``.bashrc``
file, answer ``yes``.
2. Close the terminal window and open a new one. Then test whether conda is
installed correctly by running ::
conda --version
If you see the conda version number, it worked.
3. Set up Conda so that it can access the
`bioconda channel `_.
For that, follow `the instructions on the bioconda
website `_
or simply run these commands::
conda config --add channels defaults
conda config --add channels bioconda
conda config --add channels conda-forge
4. Install IgDiscover with this command::
conda create -n igdiscover igdiscover
When you use a non-x86 Mac (with M1 processor), you may need to run this
command instead::
CONDA_SUBDIR=osx-64 conda create -n igdiscover igdiscover
This will create a new so-called “environment” for IgDiscover (retry if it fails). **Whenever you
want to run IgDiscover, you will need to activate the environment with this
command**::
source activate igdiscover
5. Make sure you have activated the ``igdiscover`` environment.
Then test whether IgDiscover is correctly installed with this command::
igdiscover --version
If you see the version number of IgDiscover, it worked! If an error message appears that says
"The 'networkx' distribution was not found and is required by snakemake", install networkx manually with::
pip install networkx==2.1
Then retry to check the igdiscover version.
6. You can now :ref:`run IgDiscover on the test data set ` to familiarize
yourself with how it works.
.. _troubleshooting:
Troubleshooting on Linux
------------------------
If you use ``zsh`` instead of ``bash`` (applies to Bio-Linux, for example),
the ``$PATH`` environment variable will not be setup correctly by the
Conda installer. The miniconda installer adds a line ``export PATH=...`` to the
to the end of your ``/home/your-user-name/.bashrc`` file. Copy that line from
the file and add it to the end of the file ``/home/your-user-name/.zshrc``
instead.
Alternatively, change your default shell to bash by running
``chsh -s /bin/bash``.
If you use conda and see an error that includes something like this::
ImportError: .../.local/lib/python3.5/site-packages/sqt/_helpers.cpython-35m-x86_64-linux-gnu.so: undefined symbol: PyFPE_jbuf
Or you see any error that mentions a ``.local/`` directory, then a previous
installation of IgDiscover is interfering with the conda installation.
The easiest way to solve this problem is to delete the directory ``.local/`` in
your home directory, see also :ref:`how to remove IgDiscover from a Linux
system `.
Troubleshooting on macOS
------------------------
If you get the error ::
ValueError: unknown locale: UTF-8
Then follow `these instructions `_.
Development version
-------------------
To install IgDiscover directly from the most recent source code,
:ref:`read the developer installation instructions `.