Skip to main content

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.

CME Reconstruction Tool interface

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, or 3.12
  • Node.js with npm
  • OpenJPEG for JP2 support if glymur cannot 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

  1. Load two images from server paths or upload two JP2/FITS files.
  2. Use the default Manual mode for paired source/target clicks, or switch to Trace to draw a source feature and review candidate matches.
  3. Accept good points or use lasso selection to filter candidates/accepted points.
  4. Inspect the accepted 3D points in the Three.js scene.
  5. Export JSON or CSV.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cme_recon_tool-0.1.0.tar.gz (22.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cme_recon_tool-0.1.0-py3-none-any.whl (22.6 kB view details)

Uploaded Python 3

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

Hashes for cme_recon_tool-0.1.0.tar.gz
Algorithm Hash digest
SHA256 a02f0c03005126bf077de84355641c89dc2c19d154e6000e8b32a5832c5a06bf
MD5 31540b449b724fc74ca309c4c6f766c7
BLAKE2b-256 671857388d27b78a8f078e40d819a55477ee89e5093c479ef715540d093de846

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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

Hashes for cme_recon_tool-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2a893a5552f893875b7db4e8448febcf295984e5184f91e5cda5b76dcd6c3d7b
MD5 89cfb8c5aa4a94afff2ffa153b45d749
BLAKE2b-256 1cdc2bad6da7d3a79fcd384ad7194c2313e1698f4bd6ae1e08600db96eb816ff

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page