Bring colors to Euclid tiles!
Project description
Bring colors to Euclid tiles!
Azul(ero)* is a toolbox which, among others, provides scripts to download and merge VIS and NIR observations over a MER tile.
For rendering color images, azul process detects and inpaints bad pixels (cold pixels, saturated stars...),
and combines the 4 channels (I, Y, J, H) into an sRGB image.
Input data files can be selected with azul find and then downloaded with azul retrieve,
which connects to public (SAS) or private (EAS) data archives.
Last but not least, azul roam produces flowing videos by panning and zooming images.
*I started this project when Euclid EROs came out...
License
Disclaimer
⚠️ This is a beta version! ⚠️
- The tool is far from perfect and can be frustrating.
- Error cases are not handled and messages may be cryptic or misleading.
- Please make sure to read the "How to help?" section below before using this version.
- If something is not documented, it does not exist!
Installation and setup
Install the azulero package with:
pip install azulero
If you wish to access Euclid-internal data with azul retrieve, setup the ~/.netrc file (or _netrc on Windows) for eas-dps-rest-ops.esac.esa.int and euclidsoc.esac.esa.int with your Euclid credentials:
machine eas-dps-rest-ops.esac.esa.int
login <login>
password <password>
machine euclidsoc.esac.esa.int
login <login>
password <password>
For azul find, download the geojson file which monitors MER processing, e.g., for DR1:
https://gitlab.euclid-sgs.uk/sy-tools/ST_SMT_DATA/-/raw/DR1/data/DpdMerFinalCatalog.geojson?ref_type=heads
Basic usage
The typical workflow is as follows:
- 🎯 Find the tile indices of your objects or coordinates with
azul find. - 📥 Download the MER-processed FITS file of your tiles with
azul retrieve. - ✂️ Optionally select the region to be processed with
azul crop. - 🌟 Blend the channels and inpaint artifacts with
azul process. - 🎬 Generate a video from the image with
azul roam.
Usage:
azul [--workspace <workspace>] find [<objects>] [--radec <coordinates>]
azul [--workspace <workspace>] retrieve [--from <provider>] <tile_indices>
azul [--workspace <workspace>] crop <tile_index>
azul [--workspace <workspace>] process <tile_slicing>
azul [--workspace <workspace>] roam <image> <sequence>
with:
<workspace>- The parent directory to save everything, in which one folder per tile will be created (defaults to the current directory).<object>- A space-separated list of object names, e.g.M82 NGC6536.<coordinates>- RA/dec coordinates in decimal degrees, e.g.266.9397155 +64.0472200; Option--radeccan be specified multiple times.<provider>- The data archive name, e.g.sasfor public releases.<tile_indices>- The space-separated list of tiles to be downloaded, typically the result ofazul find.<tile_index>- A single tile index.<tile_slicing>- A single tile index, optionally followed by a slicing à-la NumPy, typically the result ofazul crop.<image>- The path to an input image (not necessarily produced by Azul).<sequence>- The roaming configuration file: see the format description for details.
Example
Here is an example output and the commands which produced it below:
Credit: ESA Euclid/Euclid Consortium/NASA/Q1-2025/Antoine Basset (CNES)
azul find --radec 271.1026785 +66.9128392
azul retrieve 102159776 --from sas
azul crop 102159776
azul process 102159776[6000:7000,5000:7000] --yg 0.75 --jr 0.9 -w 22.5
I have post-processed the output to my liking:
Credit: ESA Euclid/Euclid Consortium/NASA/Q1-2025/Antoine Basset (CNES)
The two thick blue rings 💍 are artifacts of the VIS instrument known as ghosts. To my knowledge, the galaxy in the center has never been resolved this way. Rendering the image allowed me to discover this is a splendid polar-ring 💍 galaxy! The previously unseen golden structure top left may be an Einstein ring 💍, possibly with two deflectors -- the question remains open.
As you can see, getting a nice image required a bit of parametrization. This is because we are using the public Q1 data, and there were prominent artifacts right in the middle of the Einstein ring. DR1 data, to be published in 2026, have a much better signal-to-noise ratio, less artifacts, and default parameters give very good results. I already rendered the DR1 version of this field; I cannot share it today, but I can already tell you it is mesmerizing 😏
From the same tile, here is an example over a region with less artifacts, processed with default parameters:
Credit: ESA Euclid/Euclid Consortium/NASA/Q1-2025/Antoine Basset (CNES)
azul process 102159776[11000:12000,7500:9500]
It is now possible to generate pan-and-zoom videos with azul roam, like this.
Check the dedicated documentation for more details.
Advanced usage
One day I'll find some time to write something useful here... 🤔
In the meantime, please read the algorithm description and check help messages:
azul -h
azul find -h
azul retrieve -h
azul crop -h
azul process -h
azul roam -h
How to help?
- Report bugs, request features, tell me what you think of the tool and results...
- Mention myself (Antoine Basset, CNES) and/or
azulerowhen you publish images processed with this tool (see example credits above). - Share with me your images, I'm curious!
Contributors
- Mischa Schirmer (MPIA): Azul's color blending is freely inspired by that of Mischa's script
eummy.py. - Téo Bouvard (Thales): Drafed
retrieve. - Rollin Gimenez (CNES): Fixed packaging.
- Kane Nguyen-Kim (IAP): Provided URLs for retrieving public data.
- Gian Paolo Candini (CSIC): Investigated rendering issues and improved parametrization.
Acknowledgements
- 🔥 Congratulations to the whole Euclid community; The mosaics are simply unbelievable!
- 😍 Thank you also for answering my dummy questions on the contents of the images I posted.
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 azulero-0.8.1.tar.gz.
File metadata
- Download URL: azulero-0.8.1.tar.gz
- Upload date:
- Size: 5.5 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6339981922a73e88defddeb44a4f5127c169e113f663f3b5b3ab7462b7fada06
|
|
| MD5 |
25b2a027bd65437bb4075788fea5026d
|
|
| BLAKE2b-256 |
c55aa7d88d9763b490db6b4583de56617bcd0c97b9841498d1987189fcab0bb4
|
File details
Details for the file azulero-0.8.1-py3-none-any.whl.
File metadata
- Download URL: azulero-0.8.1-py3-none-any.whl
- Upload date:
- Size: 28.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8e4b5586183572cab06948fc9ba85d0ac5f17c5c9705bb32ce1a0637a72eb4c4
|
|
| MD5 |
d3d04274c8d4db009baf9e8927386091
|
|
| BLAKE2b-256 |
dfe436045d1c7e48084bb0f0244781acd44304467bc2c6084718fe3c892cdde7
|