Web interface for Azulero by A. Basset and Eummy by M. Schirmer - two pipelines designed to produce color images from Euclid space telescope data.
Azumy wraps the azul and eummy command-line pipelines into a browser-based interface. It covers the full workflow:
| Step | Command | Description |
|---|---|---|
| Find | azul find |
Locate tile indices from object names or sky coordinates |
| Retrieve | azul retrieve |
Download MER FITS files from ESA archives |
| Crop | azul crop |
Visually select a region of interest on the VIS channel |
| Process | azul process or eummy |
Render a color sRGB image from IYJH channels |
- Docker and Docker Compose
- Internet access (ESA data archives)
- Optionally: ESA IDR or EC DSS credentials for private data access
git clone https://github.com/Rolgim/Azumy.git
cd Azumy
chmod +x run.sh
./run.shOn first run, the script will ask:
- Workspace path — where FITS files and output images will be stored
- IDR credentials — username/password for
easidr.esac.esa.int(optional) - DSS credentials — username/password for
eas-dps-rest-ops.esac.esa.int(optional)
Then open http://localhost:8000 in your browser.
SAS public access (Euclid Q1 data) works without credentials.
- Click on the sky map (Aladin Lite) to select coordinates, or type an object name (e.g.
M82) - Upload a tiling GeoJSON file (
DpdMerFinalCatalog.geojson) to display tile footprints on the map and enable tile lookup - Click ▶ azul find — found tiles appear as chips below the terminal
- Select tiles and click → Send to Retrieve
The tiling GeoJSON for DR1 is available at (Euclid consortium members only):
https://gitlab.euclid-sgs.uk/sy-tools/ST_SMT_DATA/-/raw/DR1/data/DpdMerFinalCatalog.geojson
- Tile indices are pre-filled from Find
- Choose a provider: IDR (private), SAS (public), or DSS
- Click ▶ azul retrieve — files download one by one with a live progress indicator
- Click ✕ Cancel to interrupt at any time
- Enter the tile index and click ▶ Load VIS preview
- Draw a rectangle on the image to select a region
- The NumPy slicing spec is computed automatically (rounded to 500px increments)
- Click → Send to Process
- The tile spec is pre-filled from Crop
- Select an engine from
azulandeummy - Expand Parameters to adjust rendering settings (zero points, scaling, stretch, hue, saturation...)
- Click ▶ process — output image is displayed when ready
Azumy/
├── main.py # FastAPI app
├── utils.py # Shared utilities (stream_command, build_cmd)
├── routers/
│ ├── find.py # azul find + GeoJSON tiling endpoint
│ ├── retrieve.py # azul retrieve with cancel support
│ ├── crop.py # VIS preview + slicing computation
│ ├── process.py # azul process
│ └── workspace.py # Workspace introspection
├── frontend/
│ ├── index.html
│ ├── styles.css
│ ├── aladin.js # Aladin Lite (vendored)
│ └── js/
│ ├── main.js
│ ├── find.js
│ ├── retrieve.js
│ ├── crop.js
│ ├── process.js
│ ├── map.js
│ ├── settings.js
│ ├── terminal.js
│ ├── progress.js
│ └── websocket.js
├── Dockerfile
├── docker-compose.yml
├── run.sh # First-launch setup script
└── .env # Generated by run.sh (gitignored)
# Start
./run.sh
# Stop
docker compose down
# Logs
docker compose logs -f
# Rebuild after code changes
docker compose up --build -d
# Reset credentials and workspace config
rm .env secrets/netrc
./run.sh- Azulero - Antoine Basset (CNES) et al.
- Eummy - Mischa Schirmer
- Aladin Lite - CDS Strasbourg
- Image data - ESA Euclid / Euclid Consortium / NASA

