Browser-based FRB filterbank analysis software
Project description
FLITS
Fast-Look Interactive Transient Suite.
Browser-based scientific software for interactive burst inspection, masking, and measurement on filterbank data.
Known presets can supply a default SEFD when the observing setup is identifiable from the file metadata and band coverage. Today that means:
NRTuses its preset SEFDGBTauto-selects a default SEFD for common Gregorian bands (for example L-band files default to 10 Jy)
For data without a known default calibration, use the Generic Filterbank preset or provide an explicit SEFD override if you want calibrated flux and fluence values.
Install With Python
Install the published package:
pip install flits
Optional scattering fits are handled through fitburst, which is intentionally
left out of the PyPI dependency metadata because public package indexes reject
direct URL runtime dependencies. To enable the fitburst-backed fitting tab after
installing FLITS, run:
pip install "fitburst @ https://github.com/CHIMEFRB/fitburst/archive/3c76da8f9e3ec7bc21951ce1b4a26a0255096b69.tar.gz"
Install from a local checkout:
python -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install .
You can also install directly from GitHub:
pip install "git+https://github.com/DirkKuiper/flits.git"
Then run FLITS against a directory of filterbanks:
flits --data-dir /path/to/filterbanks --host 127.0.0.1 --port 8123
Open http://127.0.0.1:8123.
Notes:
- Relative file paths in the UI are resolved against
FLITS_DATA_DIRwhen set, otherwise against the current working directory. - The
--data-dirflag is the easiest way to point FLITS at a specific directory without exporting environment variables. - The known-filterbanks dropdown lists
.filfiles recursively under that data directory. - Testing instructions: https://github.com/DirkKuiper/flits/blob/main/docs/TESTING.md
- Release instructions: https://github.com/DirkKuiper/flits/blob/main/docs/PUBLISHING.md
Run With Docker
The canonical container image is intended to live at ghcr.io/dirkkuiper/flits.
If you have a published image available, run:
docker run --rm -p 8123:8123 \
-e FLITS_DATA_DIR=/data \
-v /path/to/filterbanks:/data \
ghcr.io/dirkkuiper/flits:latest
If you want to build locally instead:
docker build -t flits .
docker run --rm -p 8123:8123 \
-e FLITS_DATA_DIR=/data \
-v /path/to/filterbanks:/data \
flits
Then open http://127.0.0.1:8123.
Notes:
- The container defaults
FLITS_DATA_DIRto/data. - Relative file paths in the UI are resolved against
FLITS_DATA_DIR. - The known-filterbanks dropdown lists
.filfiles recursively underFLITS_DATA_DIR. - Absolute paths inside the container still work if you prefer to type them manually.
Run With Apptainer
Apptainer users should consume the same OCI image rather than maintain a separate container recipe.
If the published GHCR image is available:
apptainer pull flits.sif docker://ghcr.io/dirkkuiper/flits:latest
APPTAINERENV_FLITS_DATA_DIR=/data \
apptainer exec --bind /path/to/filterbanks:/data flits.sif \
flits --data-dir /data --host 127.0.0.1 --port 8123
If you are on an HPC system where pulling from GHCR is inconvenient, you can still build or export the Docker image elsewhere and convert it to .sif with Apptainer.
Run With Docker Compose
If your filterbanks are in the current directory:
docker compose up --build
If your filterbanks live somewhere else, point DATA_DIR at that directory:
DATA_DIR=/absolute/path/to/filterbanks docker compose up --build
You can also choose a different host port:
DATA_DIR=/absolute/path/to/filterbanks FLITS_PORT=9000 docker compose up --build
Then open http://127.0.0.1:8123 or http://127.0.0.1:9000 respectively.
Remote And HPC Use
FLITS is portable across local workstations, remote servers, and HPC systems:
- On a normal workstation,
pip install .,docker run, ordocker composeare all fine. - On a remote Linux machine you access over SSH, start FLITS remotely and forward the port:
ssh -L 8123:127.0.0.1:8123 user@remote-host
Then open http://127.0.0.1:8123 locally in your browser.
- On many HPC clusters, Docker itself is not permitted. Apptainer is usually the right runtime there.
- The GitHub Actions workflow in
publish-image.ymlpublishes the canonical OCI image to GHCR.
Code Structure
flits/settings.py: observation presets and explicit overridesflits/io/filterbank.py: filterbank loading and Stokes-I extractionflits/signal.py: shared numerical utilitiesflits/models.py: typed metadata and measurement containersflits/session.py: interactive burst state and measurementsflits/web/app.py: FastAPI server for the browser UIflits/web_static/: packaged frontend assets served by the apptests/test_session_smoke.py: smoke tests on a real local filterbank file
Measurements
- Fluence (Jy ms), when an SEFD is provided
- Peak flux density (Jy), when an SEFD is provided
- Event duration (ms)
- Spectral extent (MHz)
- Peak MJD
- 1D Gaussian fits to selected burst regions
Flux and fluence are computed from the burst-only time series using the radiometer equation with the effective unmasked bandwidth inside the selected spectral extent.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file flits-0.1.1.tar.gz.
File metadata
- Download URL: flits-0.1.1.tar.gz
- Upload date:
- Size: 1.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7890680cf423aee9bf180eb0f860f34556c8ba06cd50d210562bae9448f834d3
|
|
| MD5 |
fa4e2809110a9e285ebb5d5ca97f50f4
|
|
| BLAKE2b-256 |
cd2622cd18bfbde21547d4f625be7ae08b8b76f6bfe2098f9fa2a2c07d7cef4b
|
Provenance
The following attestation bundles were made for flits-0.1.1.tar.gz:
Publisher:
publish-package.yml on DirkKuiper/flits
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
flits-0.1.1.tar.gz -
Subject digest:
7890680cf423aee9bf180eb0f860f34556c8ba06cd50d210562bae9448f834d3 - Sigstore transparency entry: 1338668977
- Sigstore integration time:
-
Permalink:
DirkKuiper/flits@23b338c1635e77069d60d7c58267136ec73953c7 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/DirkKuiper
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-package.yml@23b338c1635e77069d60d7c58267136ec73953c7 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file flits-0.1.1-py3-none-any.whl.
File metadata
- Download URL: flits-0.1.1-py3-none-any.whl
- Upload date:
- Size: 1.5 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d951b93542440e8d91318b852e4fe72d4119606f772b9e7111ee39d6c2ab6ac9
|
|
| MD5 |
3c4328d4c38534f7c682a35694206f22
|
|
| BLAKE2b-256 |
117404634091a916dd80f1d145d68ed7261a1a355249bab68297cce046671f36
|
Provenance
The following attestation bundles were made for flits-0.1.1-py3-none-any.whl:
Publisher:
publish-package.yml on DirkKuiper/flits
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
flits-0.1.1-py3-none-any.whl -
Subject digest:
d951b93542440e8d91318b852e4fe72d4119606f772b9e7111ee39d6c2ab6ac9 - Sigstore transparency entry: 1338668982
- Sigstore integration time:
-
Permalink:
DirkKuiper/flits@23b338c1635e77069d60d7c58267136ec73953c7 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/DirkKuiper
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-package.yml@23b338c1635e77069d60d7c58267136ec73953c7 -
Trigger Event:
workflow_dispatch
-
Statement type: