Interactive two-view CME reconstruction tool with WCS-aware solar image loading.
Project description
CME Reconstruction Tool
Semi-automatic two-view solar image reconstruction for JP2/FITS images.
This app supports interactive stereoscopic reconstruction of identifiable solar image features from two calibrated viewpoints. The target can be a CME front, loop, ray, jet, or any other structure that can reasonably be matched between views; the inputs just need supported JP2/FITS image data with WCS and observer metadata sufficient to define the viewing geometry. The result should be interpreted with the usual limits of two-view 3D reconstruction: paired picks are assumed to trace the same physical feature at nearly the same time, which can break down for evolving structures, line-of-sight integration, occultation, cadence or wavelength differences, and ambiguous morphology. When that correspondence is defensible, the app provides paired picking, trace matching, 3D point inspection, and layered same-vantage image context.
Features
- Load JP2/FITS solar images from server paths or local uploads, independent of instrument when the image headers provide the required geometry.
- Stack multiple image layers per field, with per-layer visibility, opacity, colormap, linear/log scaling, and percentile levels.
- Use WCS-aware 2D image panels for manual paired picks or semi-automatic trace matching.
- View textured plane-of-sky image layers, observer lines of sight, and accepted 3D points in a Three.js scene.
- Lasso candidate matches or accepted points for bulk selection and cleanup.
- Export and restore JSON state, including image paths, layer display settings, and accepted points.
- Export accepted points as CSV.
Installation
The Python backend dependencies are declared in pyproject.toml. The browser UI dependencies are declared separately in frontend/package.json.
Required tools:
- Python
3.10,3.11, or3.12 - Node.js with
npm - OpenJPEG for JP2 support if
glymurcannot find it on your system
Install the backend from the repo root:
cd /path/to/cme_recon_tool
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e ".[test]"
On macOS, if JP2 loading fails with an OpenJPEG/glymur error, install OpenJPEG once:
brew install openjpeg
Install the frontend:
cd /path/to/cme_recon_tool/frontend
npm install
Launch
From the repo root, start the backend:
cd /path/to/cme_recon_tool
source .venv/bin/activate
CME_RECON_DATA_ROOTS="/path/to/solar/images" python -m uvicorn cme_recon_tool.backend.app:app --reload --host 127.0.0.1 --port 8000
In another terminal, start the frontend:
cd /path/to/cme_recon_tool/frontend
npm install
npm run dev -- --host 127.0.0.1 --port 5173
Open http://127.0.0.1:5173.
The backend and frontend must use different ports. Use port 8000 for FastAPI and port 5173 for Vite.
Convenience scripts are also available from the repo root:
# terminal 1
CME_RECON_DATA_ROOTS="/path/to/solar/images" ./run_backend.sh
# terminal 2
./run_frontend.sh
Sample Inputs
Example server paths might look like:
/path/to/solar/images/viewpoint_a_feature.jp2
/path/to/solar/images/viewpoint_b_feature.fts
The server-side file picker is restricted to the app's data/ directory and paths listed in CME_RECON_DATA_ROOTS.
Workflow
- Load two images from server paths or upload two JP2/FITS files.
- Use the default
Manualmode for paired source/target clicks, or switch toTraceto draw a source feature and review candidate matches. - Accept good points or use lasso selection to filter candidates/accepted points.
- Inspect the accepted 3D points in the Three.js scene.
- Export JSON or CSV.
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 cme_recon_tool-0.1.0.tar.gz.
File metadata
- Download URL: cme_recon_tool-0.1.0.tar.gz
- Upload date:
- Size: 22.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a02f0c03005126bf077de84355641c89dc2c19d154e6000e8b32a5832c5a06bf
|
|
| MD5 |
31540b449b724fc74ca309c4c6f766c7
|
|
| BLAKE2b-256 |
671857388d27b78a8f078e40d819a55477ee89e5093c479ef715540d093de846
|
Provenance
The following attestation bundles were made for cme_recon_tool-0.1.0.tar.gz:
Publisher:
publish.yml on sageyu123/cme_3d_recon_tool
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cme_recon_tool-0.1.0.tar.gz -
Subject digest:
a02f0c03005126bf077de84355641c89dc2c19d154e6000e8b32a5832c5a06bf - Sigstore transparency entry: 1451682931
- Sigstore integration time:
-
Permalink:
sageyu123/cme_3d_recon_tool@88682e79af65be010e345ea4858c447c4d0909d7 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/sageyu123
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@88682e79af65be010e345ea4858c447c4d0909d7 -
Trigger Event:
release
-
Statement type:
File details
Details for the file cme_recon_tool-0.1.0-py3-none-any.whl.
File metadata
- Download URL: cme_recon_tool-0.1.0-py3-none-any.whl
- Upload date:
- Size: 22.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a893a5552f893875b7db4e8448febcf295984e5184f91e5cda5b76dcd6c3d7b
|
|
| MD5 |
89cfb8c5aa4a94afff2ffa153b45d749
|
|
| BLAKE2b-256 |
1cdc2bad6da7d3a79fcd384ad7194c2313e1698f4bd6ae1e08600db96eb816ff
|
Provenance
The following attestation bundles were made for cme_recon_tool-0.1.0-py3-none-any.whl:
Publisher:
publish.yml on sageyu123/cme_3d_recon_tool
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
cme_recon_tool-0.1.0-py3-none-any.whl -
Subject digest:
2a893a5552f893875b7db4e8448febcf295984e5184f91e5cda5b76dcd6c3d7b - Sigstore transparency entry: 1451683048
- Sigstore integration time:
-
Permalink:
sageyu123/cme_3d_recon_tool@88682e79af65be010e345ea4858c447c4d0909d7 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/sageyu123
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@88682e79af65be010e345ea4858c447c4d0909d7 -
Trigger Event:
release
-
Statement type: