Skip to main content

Welcome to LUCI

LUCI is a general-purpose emission-line fitting pipeline for SITELLE IFU data cubes and one-dimensional spectra.

DOI

You can find the RNAAS article here: Arxiv Paper: 2108.12428

LUCI logo

What is LUCI

LUCI is a general purpose fitting pipeline built specifically with SITELLE IFU data cubes in mind; however, if you need to fit any emission line spectra, LUCI will be able to help! Although other codes exist, we built LUCI specifically with the user in mind. Thanks to the clear coding practices used to create LUCI and her detailed documentation, users can easily modify the code by changing numerical solvers. Additionally, we implemented a Bayesian Inference algorithm using MCMC (using emcee) to derive uncertainty estimates.

Installing LUCI

LUCI requires Python 3.10 or newer. Install the published package with pip:

python -m pip install luci-sitelle

The distribution is named luci-sitelle; the Python package you import is luci. The legacy machine-learning training and component-counting tools are available as an optional extra on Python 3.10:

python -m pip install "luci-sitelle[ml-legacy]"

To contribute or run the examples from a checkout, use uv and the committed lockfile:

git clone https://github.com/crhea93/LUCI.git
cd LUCI
uv sync
uv run pytest -m "not slow"

LUCI is now a proper installed package, so no sys.path juggling is required. Load it with:

from luci import SitelleCube

The older spellings all still work — from LuciBase import Luci, from LUCI.LuciFit import Fit, and so on — so existing notebooks and scripts run unchanged. See the migration guide for the full old-to-new mapping, and for the list of bug fixes that changed numerical results.

(Older documentation and notebooks may still show sys.path.insert(0, '/the/path/to/LUCI/') before the import. That line is no longer needed and can be deleted.)

You can quickly test that everything is working for your system by entering the LUCI directory and running pytest. You may receive some warnings, but everything should pass! If not, please let me know :)

What to use LUCI for

LUCI is - of course - first and foremost, a fitting algorithm. In order to ease the pain of fitting IFU data cubes, we have built several wrappers for the fitting functions (these can be found in Luci/LuciFit.py). These functionalities include, but are not limited to: reading in a data cube in the HDF5 format (LUCI()), fitting the entire data cube (LUCI.fit_entire_cube), fitting a region or masked region of the cube (LUCI.fit_region()), extracting and fitting an integrated region (LUCI.fit_spectrum_region), creating a deep image (LUCI.create_deep_image), and building a Signal-to-Noise ratio map of the cube (LUCI.create_snr_map).

You can also access the fitting directly by circumventing the LUCI wrappers and directly accessing the fitting algorithms (Luci.LuciFitting). With this, you can fit any spectrum using the Luci.LuciFitting.fit and Luci.LuciFitting.bayes_fit algorithms. We also provide basic plotting functionality which can be found in Luci.LuciPlotting.

Where to find examples

Examples are paramount to the success of any open source code. Therefore, we have tried to make our examples as complete as possible. That said, we surely have forgotten something! If you wish to see an example that does not exist (or for an example to be better explained), please shoot us an email or open up an issue!

All examples can be found in two locations. Read-through examples can be found in our online documentation while jupyter notebooks can be found in the Examples folder. I suggest starting with https://crhea93.github.io/LUCI/example_basic_lite.html.

Where to find documentation

Documentation can also be found on the LUCI documentation site. In addition to documentation on each function in LUCI, you can also find a description of what LUCI calculates and how she does what she does!

Contributing

If you wish to contribute, that's awesome! Please shoot me an email at carter.rhea@umontreal.ca. The easiest way to get involved is to make an issue or fork the repo, make your changes, and submit a well-documented pull request.

Contact

If you have any questions about how to install, use, or modify LUCI, please send an email to Carter Rhea.

Copyright (c) 2021-2026 Carter Rhea and LUCI contributors.

LUCI is distributed under the MIT License.

Citing LUCI

If you cite LUCI, please use both the following citations.

Software Citation: Carter Lee Rhea, Laurie Rousseau-Nepton, Jessie Covington, Leo Alcorn, Benjamin Vigneron, Julie Hlavacek-Larrondo, & Louis-Simon Guité. (2021). crhea93/LUCI: Luci Updates (v1.1). Zenodo. https://doi.org/10.5281/zenodo.5730149

Paper Citation: Carter Rhea et al 2021 Res. Notes AAS 5 208

If you use the mixture density network (MDN) implementation, please include the following citation: Carter Rhea et al 2021 Res. Notes AAS 12 276

Metadata

Release files for luci-sitelle 2.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for luci-sitelle 2.0.1
File Size Uploaded
luci_sitelle-2.0.1.tar.gz 65.5 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for luci-sitelle 2.0.1
File Interpreter ABI Platform
luci_sitelle-2.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 130.9 MB

Release files / luci_sitelle-2.0.1.tar.gz

Download URL luci_sitelle-2.0.1.tar.gz
Size 65.5 MB
Tags Source
SHA-256 checksum
How to use checksums
79a673101334336a5d1995e0b0483c1cad7831fec9f65e4eb28573ce8151d7eb
BLAKE2b-256 checksum
How to use checksums
2b146d25cf166f80bf23fc0a044580f03f313fa8381fce9b0baf7ea99d03f2a6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release files / luci_sitelle-2.0.1-py3-none-any.whl

Download URL luci_sitelle-2.0.1-py3-none-any.whl
Size 65.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
5f8dc5df68e65a616011331ad0b6ce2821c9c6538eab3a63d8d69d37ea4f1e2c
BLAKE2b-256 checksum
How to use checksums
5cb1e4a7532a350ecb4ebd0ec6fadaaf64901674d378c650857325a1a8e6fe7f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.1 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page