STCI
STCI stands for SpaceTelescopeColorImage.
STCI is a small astronomy image-composition tool for making display-ready color JPEGs or 16-bit TIFFs from space telescope cutouts and other aligned mono images.
Installation
pip install STCI
The installed Python import module is STCI.
Example usage
mk_colorimg creates one color image from either a 3-channel RGB array or three mono images in (R, G, B) order. For Euclid-style color images, the default mapping is NIR_J, NIR_Y, VIS.
from STCI import mk_colorimg
mk_colorimg(
[
"cutout_H.fits", # R channel
"cutout_VIS.fits", # G channel
"cutout_Y.fits", # B channel
],
output_jpg="target_mtf_vis_y_h.jpg",
input_mode="raw",
ReplaceL=False,
reference_ROI=200,
)
For a NumPy RGB cube:
from STCI import mk_colorimg
mk_colorimg(rgb_array, output_jpg="target_color.jpg", input_mode="normalized")
Use a .tif or .tiff output filename to write a 16-bit TIFF instead of an 8-bit JPEG:
mk_colorimg(rgb_array, output_jpg="target_color.tiff", input_mode="normalized")
Set ReplaceL=False to skip replacing the CIELab L* channel with the stretched blue luminosity channel. By default, mk_colorimg keeps the original replacement behavior.
Set reference_ROI=200 to estimate the raw normalization, color calibration, and STF/HT stretch from the centered 200 x 200 pixel region, then apply those settings to the full image. By default, reference_ROI=None estimates from the full image.
For raw three-channel inputs, STCI uses one shared linear scale derived from the largest channel 99th percentile. This preserves relative RGB amplitudes while preventing a small number of saturated stars from making the target galaxy too dark or excessively warm.
Single-Band MTF Image
mk_monoimg creates one grayscale image from a single mono image. It uses the same MTF-style stretch as mk_colorimg, but omits RGB-only steps such as color calibration, Lab luminance replacement, SCNR, and saturation.
from STCI import mk_monoimg
mk_monoimg(
"cutout_VIS.fits",
output_jpg="target_vis_mtf.jpg",
input_mode="raw",
)
For a NumPy mono image:
from STCI import mk_monoimg
mk_monoimg(mono_array, output_jpg="target_mono.jpg", input_mode="normalized")
Download a Euclid Color Image
Euclidimg downloads Euclid DR1 VIS, NIR_Y, NIR_J, and NIR_H FITS cutouts, then renders one color image using the NIR_J / NIR_Y / VIS channel order.
from STCI import Euclidimg
result = Euclidimg(
ra=50.7163333,
dec=-39.7693889,
size=5.0,
path="euclid_color",
cred="Euclid/cred.txt",
output_jpg="EUCLJ032251.92-394609.8.jpg",
ReplaceL=True,
RGB="auto",
reference_ROI=None,
style="Euclid",
)
print(result["jpg"])
print(result["fits"])
print(result["rgb_bands"])
Arguments:
ra,dec: target coordinates in degrees.size: cutout radius in arcsec. For example,size=5.0makes a10" x 10"image.path: output directory for the FITS files and rendered image.cred: Euclid credentials file passed toastroquery.esa.euclid.output_jpg: optional output filename written insidepath; use.tifor.tifffor 16-bit TIFF.ReplaceL: ifFalse, skip replacing the CIELab L* channel with the stretched blue luminosity channel.RGB: Euclid bands in(R, G, B)order. Use"auto"for the default available-band choice, or pass bands such as("NIR_H", "NIR_Y", "VIS")or("H", "Y", "VIS").reference_ROI: optional centered square ROI size, in pixels, used to estimate the display scaling before applying it to the full image.style: rendering workflow."Euclid"is the unchanged original STCI workflow."Euclid Epic"uses the H/Y/VIS workflow described below.
The returned dictionary contains the selected FITS paths and the final rendered image path. If the first overlapping mosaic tile for a band is empty or all zero, the downloader tries the next matching tile.
Euclid Epic style
style="Euclid Epic" selects NIR_H / NIR_Y / VIS and applies the display workflow validated on the Euclid--SGA image set:
- linked-STF
target_background=0.125 - fixed rank-0032 H/Y/VIS color-calibration gains
- ChannelCombination
R=H,G=Y,B=VIS; this is the default Epic mapping. The earlier equal mix remains available by explicitly settingEuclidEpicSettings(green_vis_weight=0.5) - a
VIS-H > 1.25 magred-source mask with VIS-only point-source protection; H and Y are never used to classify point sources, and the Euclid VIS point spread function is treated as having a typical FWHM of 1.6 pixels. The existing compact-peak detector is augmented with DAOStarFinder detections whose native VIS peak is above the sigma-clipped background by 5 sigma and whose mean positive brightness within 3 pixels is at least 10 times the mean in the 3--6 pixel annulus; DAO and existing detections are merged within a 2-pixel matching radius - a bright-VIS host veto, validated on rank 1539, that measures VIS light on a 12-pixel scale and rejects red-mask ellipses inside connected host regions brighter than 5 times the native-pixel VIS noise and at least 500 pixels in area; this prevents dust in luminous galaxies from receiving the red-source Screen enhancement
- one equivalent feathered ellipse per accepted red source
- a post-STF H-to-VIS Screen luminance blend with strength
0.58 - the original STCI post-HT, SCNR, and saturation chain, followed by the Euclid--SGA final SCNR pass
from STCI import Euclidimg
result = Euclidimg(
ra=39.446736,
dec=-33.822218,
size=52.965,
path="PGC671065_epic",
cred="Euclid/cred.txt",
output_jpg="PGC671065_EuclidEpic.tiff",
style="Euclid Epic",
)
The Epic style is a display composite and must not be interpreted photometrically. The style changes rendering only; Euclidimg retains the existing Euclid FITS downloader. To render already restored BGSUB+BGMOD inputs, call mk_euclid_epicimg([H_fits, Y_fits, VIS_fits], output_jpg=...) directly.
Download Euclid FITS Only
from Download_Euclid import EUC_download
fits_paths = EUC_download(
ra=50.7163333,
dec=-39.7693889,
size=5.0,
path="euclid_fits",
cred="Euclid/cred.txt",
)
Metadata
Release files for STCI 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| stci-0.1.5.tar.gz | 35.9 kB | Without provenance | Details for stci-0.1.5.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| stci-0.1.5-py3-none-any.whl | Python 3 | none | any | Details for stci-0.1.5-py3-none-any.whl |
Total release size: 69.1 kB
Release files / stci-0.1.5.tar.gz
| Download URL | stci-0.1.5.tar.gz |
|---|---|
| Size | 35.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c43896032045f1ea24e728ce70c1f17a9a603ddca512ca7f932a0f872f943bd5
|
|
BLAKE2b-256 checksum How to use checksums |
5c8de713ec86f224b332faa0456b5a31853bad3477705d35b258ccafd77344da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Release files / stci-0.1.5-py3-none-any.whl
| Download URL | stci-0.1.5-py3-none-any.whl |
|---|---|
| Size | 33.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
354442aa0abe1c1c8ba07224ef76a17002605b4b770a9dc5cda01196d4185ccc
|
|
BLAKE2b-256 checksum How to use checksums |
8c9593a632b3950c18b10f4f727fb589c1678a98c991ffdcbfe29be5f40ec617
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.5
|
Security for STCI 0.1.5
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.