ImperialCollegeLondon / FINESSE

A graphical user interface for controlling and monitoring an interferometer device
BSD 3-Clause "New" or "Revised" License
3 stars 1 forks source link

GitHub tag (with filter) GitHub Ruff Checked with mypy pre-commit.ci status Test and build codecov

FINESSE

FINESSE is software for controlling a spectrometer system developed by Imperial College London's Space and Atmospheric Physics group, written in Python and with a graphical interface using the PySide6 Qt bindings.

Emissivity of the Earth's different surface types helps determine the efficiency with which the planet radiatively cools to space and is a critical variable in climate models. However, to date, most measurements of surface emissivity have been made in the mid-infrared. The FINESSE project is novel in employing a ground-based system capable of extending these datasets into the far-infrared. The system is tuned in particular for targeting ice and snow, as the response of the climate to global warming is observed to be most rapid in Arctic regions. Far-infrared emissivity data provided by FINESSE will inform climate modelling studies seeking to better understand this rapid change. They will also help to validate emissivity retrievals from upcoming satellite instruments focusing on the far-infrared which will be deployed by ESA (FORUM) and NASA (PREFIRE).

This software is currently being adapted as part of a second project – UNIRAS – to deploy a modified version of the equipment on the UK’s [Facility for Airborne Atmospheric Measurements] aircraft.

For developers

Technical documentation is available on FINESSE's GitHub Pages site.

This is a Python application that uses poetry for packaging and dependency management. It also provides pre-commit hooks for various linters and formatters and automated tests using pytest and GitHub Actions. Pre-commit hooks are automatically kept updated with a dedicated GitHub Action.

To get started:

  1. Download and install Poetry following the instructions for your OS.

  2. Clone this repository and make it your working directory

  3. Set up the virtual environment:

    poetry install
  4. Activate the virtual environment (alternatively, ensure any python-related command is preceded by poetry run):

    poetry shell
  5. Install the git hooks:

    pre-commit install
  6. Run the main app:

    python -m finesse
  7. Run the tests:

    pytest
  8. Build the user guide:

    1. Install pandoc

    2. python docs/gen_user_guide.py