Firefly
Firefly is an interactive viewer for any particle-based data. A live example is available here or if you're ready to get started creating your own interactive viewer, click here.
If you use Firefly, please cite our ApJS paper and our entry in the Astrophysics Source Code Library (ASCL).
Additional Docs
Comprehensive documentation is available here.
Keeping a Deployment Copy in Sync
If you host Firefly on a server from your own repository — a fork of this one carrying site-specific settings, data and launch scripts — keep it as a fork and merge from here, rather than copying files across. A copy script has to overwrite everything from upstream while preserving your local edits; that is exactly what a merge already does, and it does it correctly.
Run the merge on your own machine. The server only ever pulls.
One-time setup, in your local clone of the deployment repository:
git remote add upstream https://github.com/ageller/Firefly.git
git fetch upstream
If that repository was ever cloned on Windows it may have CRLF line endings committed,
which makes every line of a file look modified and turns every merge into a conflict.
Fix it once, before the first merge, by copying this repository's .gitattributes into
yours and running:
git add --renormalize .
git commit -m "normalize line endings to LF"
To pick up a new Firefly release, still in your local clone of the deployment repository:
git checkout -b sync-upstream # work on a branch, not on the default one
git fetch upstream
git merge upstream/main # resolve any conflicts, then commit
Test locally, then merge the branch into your default branch and push it.
git checkout main
git merge --ff-only sync-upstream
git push origin main
On the server, in the deployment repository:
git pull
then restart whatever serves the app (for example, the gunicorn service).
Keeping the merges painless
Merges stay clean for as long as your customizations live in files this repository never touches. Some ways to arrange that:
- Put site-specific choices in your dataset's settings
.jsoninstead of in code. GUI panels can be hidden withGUIExcludeList, a list of GUI paths such as"main/general/data/loadNewData", so hiding a control needs no source change. - To add markup to the
<head>of every page — an analytics tag, extra meta tags — drop atemplates/_extra_head.htmlinto your repository. Every template already includes it if it exists, so you never have to edit the shared templates. - If the instance is exposed on the open internet, run it in public mode: set
FIREFLY_PUBLIC=1in the server's environment (this is the one that works under gunicorn/wsgi) or pass--publicto thefireflycommand. That refuses the endpoints which accept data or settings for a live viewer session, and keeps a single fixed room so visitors are never prompted for a session name. - Keep server-specific launch scripts in their own files.
- Leave packaged files you don't need in place rather than deleting them; deletions become modify/delete conflicts every time upstream edits them.
Contributors
Primary Developers
- Aaron Geller
- Alex Gurvich
Past Contributors
- Mike Cronin
- Zach Hafen
- Alessandro Febretti
Student Contributors
- Mahlet Shiferaw
- Luolei Zhao
- Nora Linzer
Project PI
- Claude-André Faucher-Giguère
Acknowledgments
Firefly is written in WebGL using the three.js library. This tool builds off of a previous version developed by Alessandro Febretti.
This project is funded by Northwestern's Center for Interdisciplinary Exploration and Research in Astrophysics (CIERA), Northwestern's IT Research Computing group, and NSF grants AST-1412836, AST-1715216, and CAREER award AST-1652522 awarded to Claude-André Faucher-Giguère.
Additional Info
Firefly was originally designed for FIRE data, but has since been extended to support any particle data. This package should not be confused with the serendipitously named web-based visualization software Firefly, from Caltech-IPAC, a general tool for retrieving and viewing astronomy data.
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 firefly-3.6.0.tar.gz.
File metadata
- Download URL: firefly-3.6.0.tar.gz
- Upload date:
- Size: 6.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7baa0c8967f40e25403d8eca4fc5c7ec153c07b942f1282c58000183a04280e7
|
|
| MD5 |
b878eee06d4ea5f6e405a337106e57af
|
|
| BLAKE2b-256 |
559d8b5230f02d94ccf8dfd3a27077c8dc09e40d22bb4039e4b1dc883c043aa8
|
Provenance
The following attestation bundles were made for firefly-3.6.0.tar.gz:
Publisher:
publish-to-pypi.yaml on ageller/Firefly
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
firefly-3.6.0.tar.gz -
Subject digest:
7baa0c8967f40e25403d8eca4fc5c7ec153c07b942f1282c58000183a04280e7 - Sigstore transparency entry: 2679258123
- Sigstore integration time:
-
Permalink:
ageller/Firefly@b06872bff7d4bda92c39785b59ac4e7a1d202283 -
Branch / Tag:
refs/tags/v3.6.0 - Owner: https://github.com/ageller
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yaml@b06872bff7d4bda92c39785b59ac4e7a1d202283 -
Trigger Event:
release
-
Statement type:
File details
Details for the file firefly-3.6.0-py3-none-any.whl.
File metadata
- Download URL: firefly-3.6.0-py3-none-any.whl
- Upload date:
- Size: 5.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed2b11338901e69c6527ef739b47b7d7b97a1c3e5b6313a08806ac0244236365
|
|
| MD5 |
6bc0477b853210e4f84d25fb30bc847e
|
|
| BLAKE2b-256 |
79bd48c6e37c9ed22c0959f1bfa21a4352d6de077b0aff0b7aeb05f0f542e203
|
Provenance
The following attestation bundles were made for firefly-3.6.0-py3-none-any.whl:
Publisher:
publish-to-pypi.yaml on ageller/Firefly
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
firefly-3.6.0-py3-none-any.whl -
Subject digest:
ed2b11338901e69c6527ef739b47b7d7b97a1c3e5b6313a08806ac0244236365 - Sigstore transparency entry: 2679258155
- Sigstore integration time:
-
Permalink:
ageller/Firefly@b06872bff7d4bda92c39785b59ac4e7a1d202283 -
Branch / Tag:
refs/tags/v3.6.0 - Owner: https://github.com/ageller
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-to-pypi.yaml@b06872bff7d4bda92c39785b59ac4e7a1d202283 -
Trigger Event:
release
-
Statement type: