.. highlight:: sh

Installation
============

.. important:: The `ligo.skymap` package requires `Python`_ 3.10 or later.
    See our :ref:`python-version-policy` for more details.

On the Linux or macOS operating systems and on x86_64 or aarch64/arm64 systems,
we recommend installing `ligo.skymap` using `pip`_ or `conda`_, either of which
will automatically install all of the additional
:ref:`Python dependencies <python-dependencies>`.

On other operating systems and architectures, you can :doc:`install from
source <../develop>`.

ligo.skymap does not support Windows. If you need to install ligo.skymap on
Windows, we suggest using a Linux virtual machine such as
`Windows Subsystem for Linux (WSL)`_.

Option 1: pip
-------------

To install `ligo.skymap` using `pip`_, you will need pip 19.3 or later. You can
check what version of pip you have by running this command::

    $ pip --version
    pip 20.0.2 from /usr/local/lib/python3.10/site-packages/pip (python 3.10)

If your version of pip is too old, then you can update pip to the most recent
version by running this command::

    $ pip install --upgrade pip

Then, just run this command::

    $ pip install ligo.skymap

You are now ready to get started using `ligo.skymap`.

Option 2: conda
---------------

If you are using the Anaconda Python distribution or the lightweight Miniconda
version, you can install `ligo.skymap` using `conda`_. First, enable the
`conda-forge`_ repository by running these commands::

    $ conda config --add channels conda-forge
    $ conda config --set channel_priority strict

Then, run this command::

    $ conda install ligo.skymap

You are now ready to get started using `ligo.skymap`.

.. _Python: https://www.python.org
.. _`pip`: https://pip.pypa.io
.. _`Python package index`: https://pypi.org/project/ligo.skymap/
.. _`conda`: https://conda.io
.. _`Windows Subsystem for Linux (WSL)`: https://learn.microsoft.com/en-us/windows/wsl/
.. _`conda-forge`: https://conda-forge.org

.. _python-dependencies:
.. note:: When you use pip to install `ligo.skymap` with pip or conda, it will
          automatically install the following required Python packages:

          *  `Astroplan <http://astroplan.readthedocs.io>`_ ≥ 0.7
          *  `Astropy`_ ≥ 6.0
          *  `astropy-healpix <https://astropy-healpix.readthedocs.io>`_ ≥ 0.3
          *  `Healpy <http://healpy.readthedocs.io>`_
          *  `h5py <https://www.h5py.org>`_
          *  `igwn-ligolw <https://pypi.org/project/igwn-ligolw/>`_
          *  `igwn-segments <https://pypi.org/project/igwn-segments/>`_
          *  `LALSuite <https://pypi.python.org/pypi/lalsuite>`_ ≥ 7.26
          *  `ligo-gracedb <https://pypi.org/project/ligo-gracedb/>`_ ≥ 2.0.1
          *  `Matplotlib <https://matplotlib.org>`_ ≥ 3.9.1
          *  `NetworkX <https://networkx.github.io>`_
          *  `Numpy <http://www.numpy.org>`_ ≥ 1.23.0
          *  `Pillow <http://pillow.readthedocs.io>`_ ≥ 2.5.0
          *  `ptemcee <https://github.com/willvousden/ptemcee>`_
          *  `Reproject <https://reproject.readthedocs.io>`_ ≥ 0.3.2
          *  `Scipy <https://www.scipy.org>`_ ≥ 1.10.1
          *  `Shapely <https://shapely.readthedocs.io/>`_ ≥ 2.0.0
          *  `tqdm <https://tqdm.github.io>`_ ≥ 4.27.0
          *  `pytz <http://pytz.sourceforge.net>`_

          The following packages are optional for specific features.

          For using DPGMM density estimation:
          *  `FIGARO <https://figaro.readthedocs.io>` ≥ 1.7.8

          For running the test suite:

          *  `astroquery <https://astroquery.readthedocs.io/>`_
          *  `pytest-astropy <https://github.com/astropy/pytest-astropy>`_
          *  `pytest-benchmark <https://pytest-benchmark.readthedocs.io/en/latest/>`_
          *  `pytest-mpl <https://pytest-mpl.readthedocs.io/>`_
          *  `pytest-rerunfailures <https://pytest-rerunfailures.readthedocs.io/>`_

          For building the documentation:

          *  `Sphinx <https://www.sphinx-doc.org/>`_ ≥ 4.0
          *  `sphinx-argparse <https://sphinx-argparse.readthedocs.org/>`_ ≥ 0.3.0
          *  `sphinx-astropy <https://github.com/astropy/sphinx-astropy>`_
          *  `sphinxcontrib-mermaid <https://github.com/mgaitan/sphinxcontrib-mermaid>`_ ≥ 0.7.1
          *  `tomli <https://github.com/hukkin/tomli>`_ ≥ 1.1.0

Optional LALSimulation Data
---------------------------

The following instructions are only relevant if you are installing ligo.skymap
for the purpose of generating localizations with BAYESTAR (e.g., for analysis
of LIGO/Virgo/KAGRA data or for simulations).

Some gravitational waveform approximants in LALSuite (notably, reduced order
models) rely on `LALSuite extra waveform files <lalsuite-waveform-data>`_ that
you must download and install separately. You can download the entire
collection of waveform files by following the `instructions in LALSuite's
README file <lalsuite-waveform-data>`_, or you can run the following command
to download just the one file needed by ligo.skymap::

    $ curl --create-dirs --output-dir ~/lalsuite-waveform-data -OL https://zenodo.org/records/14999310/files/SEOBNRv4ROM_v3.0.hdf5

Then, add the following line to your shell profile script (``~/.profile``,
``~/.bashrc``, or similar)::

    export LAL_DATA_PATH=$HOME/lalsuite-waveform-data

Then log out and log back in.

.. _`lalsuite-waveform-data`: https://git.ligo.org/lscsoft/lalsuite#lalsuite-extra-waveform-files