Installation
============
Using pip
---------
HCIPy is available on PyPI, so installation can be as easy as:
.. code-block:: shell
pip install hcipy --upgrade
It is also possible to install the latest development version from Github, by:
.. code-block:: shell
git clone https://github.com/ehpor/hcipy
cd hcipy
pip install -e .
The ``-e`` flag tells ``pip`` to install HCIPy in editable mode, ie. edits to the source files in the ``hcipy`` directory will change the library. This allows for easy updates by simply pulling the git repository:
.. code-block:: shell
git pull
python setup.py egg_info
You can check if HCIPy is installed correctly by importing it in Python:
.. code-block:: python
>>> import hcipy
>>> print(hcipy.__version__)
If you want to install the latest development verison, but do not intend to receive continuous updates (not advised), you can also install in non-editable mode:
.. code-block:: shell
git clone https://github.com/ehpor/hcipy
pip install ./hcipy
rm -rf hcipy
Dependencies
------------
All Python dependencies of HCIPy will be installed automatically by the installer. These include:
* **numpy** (for all numerical calculations)
* **scipy** (for advanced linear algebra)
* **matplotlib** (for visualisations)
* **Pillow** (for gif file output)
* **pyyaml** (for the configuration file)
* **astropy** (for fits file reading and writing)
* **imageio** (for image writing)
* **xxhash** (for efficiently hashing Grids)
* **numexpr** (for speedup of lengthy numerical operations)
* **asdf** (for reading and writing of HCIPy objects)
However, there is one dependency that ``pip`` does not automatically install. This is FFMpeg, which is used for writing out animations to video files. Installation of FFMpeg is not necessary, unless you want to use the ``FFMpegWriter`` class in HCIPy.
Most Linux systems should have this preinstalled, but on MacOS and Windows, you need to install it yourself, either from their `website `_ or other sources. You also need to make sure that the ``ffmpeg`` binary can be found by HCIPy. You can do this by adding the ``ffmpeg/bin`` directory to the ``PATH`` environment variable, if this is not already done by the FFMpeg installer.
Running the test suite
----------------------
For running the test suite, you'll need to install the test dependencies as well:
.. code-block:: shell
pip install -e ".[dev]"
or
.. code-block:: shell
pip intall hcipy[dev]
depending on the way you originally installed HCIPy. You can then run the full test suite by running the following in the HCIPy directory.
.. code-block:: shell
pytest ./tests
This should execute all simple tests in around 3-5 minutes, depending on your computer. It skips the longer tests that perform more extensive verification checks. All tests, including slow ones, can be run as well
.. code-block:: shell
pytest ./tests --runslow
This should take about 10-20 minutes, depending on your computer.
A single submodule can be tested as well, for example:
.. code-block:: shell
pytest ./tests/test_atmosphere.py
Building the documentation
--------------------------
A pre-built version of the documentation is always available `online `_, in fact, you're most likely reading it from that website right now.
The HCIPy documentation uses Sphinx to build an HTML website containing the documentation. If you want to build a local copy, you'll first have to install the documentation dependencies first:
.. code-block:: shell
pip install -e ".[doc]"
Building the documentation also requires FFMpeg to be installed. You can now build the documentation:
.. code-block:: shell
cd doc
make html
This will execute all tutorials, and compile the documentation. The first time you build the documentation, it may take 5-10 minutes, depending on your computer. Afterwards, a refresh should take about a minute. The final HTML documentation is then available in ``doc/_build/html``.
The documentation can be rebuilt from scratch by cleaning it first.
.. code-block:: shell
make clean
make html