ArchNEMESIS is an open source Python package developed for the analysis of remote sensing spectroscopic observations of planetary atmospheres. It is based on the widely used NEMESIS (Non-linear Optimal Estimator for MultivariatE Spectral analySIS) radiative transfer and retrieval tool, which has been extensively used for the investigation of a wide variety of planetary environments.
ArchNEMESIS is currently maintained by Juan Alday and Joseph Penn. The NEMESIS algorithm, code archNEMESIS is based on, was originally developed by Patrick Irwin.
In this website, we aim to provide a detailed description of the code and its functionalities. In addition, we include several jupyter notebooks to help users get used to some of these functionalities.
If interested users are missing key points in the documentation, would appreciate seeing jupyter notebooks for certain purposes, or want to report issues, please do so by contacting us or joining our Discord channel.
Installation
archNEMESIS is tested with Python 3.10–3.13.
We recommend using a clean Python environment. Choose either Python’s built-in venv or Conda (including Anaconda or Miniconda); either is fine for both installation methods below.
Creating an environment
Using venv
Create an environment with a supported Python version:
python -m venv archnemesis-env
Activate it in bash or zsh:
source archnemesis-env/bin/activate
For csh or tcsh, use this instead:
source archnemesis-env/bin/activate.csh
Using Conda
Alternatively, create and activate a Conda environment (Python 3.12 is used here):
conda create -n archnemesis python=3.12
conda activate archnemesis
Conda manages the environment, but archNEMESIS itself is installed using pip.
With your chosen environment active, select one of the following installation methods.
Installing from PyPI
For the latest stable release, run:
pip install archnemesis
This installs archNEMESIS along with its dependencies. It is the recommended method if you want to use the library without editing the source code.
Installing from GitHub (developer mode)
For the latest development version, clone the repository, move into its directory, and install in editable mode:
git clone https://github.com/juanaldayparejo/archnemesis-dist.git
cd archnemesis-dist
pip install --editable .
This installs archNEMESIS along with its required dependencies while keeping the source editable. Changes to the local source code are reflected without reinstalling the package.
Downloading archNEMESIS spectroscopic databases
Several features of archNEMESIS, including the calculation of absorption cross sections and correlated-k coefficients, rely on spectroscopic line parameters from databases such as HITRAN, HITEMP, GEISA, and ExoMol. To perform these calculations, the spectroscopic line data must be stored in the archNEMESIS database format.
Reference spectroscopic databases compatible with archNEMESIS are available from our DIGITAL.CSIC collection.
Users wishing to work with spectroscopic databases that are not included in this collection can generate their own archNEMESIS-formatted databases. If you require assistance with this process, please contact us.
Citing archNEMESIS
If archNEMESIS has been significant in your research, we suggest citing the following articles:
- archNEMESIS reference publication:
Alday, J., Penn, J., Irwin, P., Mason, J., Yang, J. and Dobinson, J. (2025) archNEMESIS: An Open-Source Python Package for Analysis of Planetary Atmospheric Spectra, Journal of Open Research Software, 13(1), p. 10. doi: 10.5334/jors.554
- NEMESIS reference publication:
Irwin, P. G. J., Teanby, N. A., De Kok, R., Fletcher, L. N., Howett, C. J. A., Tsang, C. C. C., … & Parrish, P. D. (2008). The NEMESIS planetary atmosphere radiative transfer and retrieval tool. Journal of Quantitative Spectroscopy and Radiative Transfer, 109(6), 1136-1150. doi: 10.1016/j.jqsrt.2007.11.006
Revision history
- 1.1.0 (25 June, 2026)
Option for custom planet parameters.
Calculations for selection averaging points for disc-averaged measurements.
Implementation of special forward model for primary transit observations of exoplanets.
Filter signal integration for modelling radiometer-like instruments.
Implementation of first version of Emissions_0 class for modelling atmospheric emissions.
Optimised code to allow for fewer classes to be defined.
Major update in line data calculations: created archNEMESIS format for storing spectroscopic line data.
Major update in line data calculations: optimised absorption cross section calculations with numba.
Major update in line data calculations: implemented functionality to calculation a pseudo-continuum from weak lines.
Major update in line data calculations: implemented functionality to run calculation of cross sections at runtime (ILBL=1).
- 1.0.6 (16 December, 2025)
Fixing bugs to reconcile results with NEMESIS.
Implemented LineData class with functionality to extract data from HITRAN using HAPI.
Implemented first version of cross section calculations.
Combined radiative transfer calculations with and without gradients in same function (CIRSradg is now CIRSrad(gradients=True)).
Added forward modelling error capabilities.
First implementation of nemesisdisc, forward model type for gradient calculations (no scattering) and multiple averaging points.
Added functionality to read information from previous retrievals (LIN parameter).
Implemented AOTF spectrometer modelling capabilities in nemesisSO.
Implemented integration of signal across filters in nemesis (for modelling spectra from radiometers).
- 1.0.5 (8 July, 2025)
New release of archNEMESIS for publication at Journal of Open Research Software.
Fixed minor bugs throughout the code.
Added unit test for calculation of optical properties using Mie Theory.
Updated setup file to avoid dependency conflicts.
- 1.0.4 (2 July, 2025)
New release of archNEMESIS for release on PyPI and Docker Hub.
- 1.0.3 (19 June, 2025)
New release of archNEMESIS for first release on PyPI.
- 1.0.2 (19 June, 2025)
Fixed minor bugs throughout the code.
Included new model parameterisations.
Included new automatic tests (e.g., forward models for solar occultation and limb geometry).
Flags now identified with ENUMS rather than magic numbers.
Model parameterisations now defined as classes.
- 1.0.1 (2 April, 2025)
Fixed minor bugs throughout the code.
Implementation of Oren-Nayar surface reflectance model.
Implementation of different surface reflectance models in multiple scattering calculations.
Included new automatic tests.
Included new model parameterisations.
- 1.0.0 (27 January, 2025)
First release for publication at Journal of Open Research Software.
Dependencies
Visualisations: matplotlib; basemap; corner
File handling: h5py
Nested sampling: pymultinest