Quickstart

Basic CLI workflow

Crossmatch sources:

euclidkit crossmatch \
  --input my_sources.csv \
  --output crossmatch_results.fits \
  --radius 1.0 \
  --environment PDR

For IDR DEEP MER data, the default partition is survey. Use --idr-deep-partition mode for CDFS/COSMOS, or both to query survey first and mode second:

euclidkit crossmatch \
  --input my_deep_sources.fits \
  --output deep_crossmatch_results.fits \
  --environment IDR \
  --idr-field DEEP \
  --idr-deep-partition both

Query spectra for crossmatched objects:

euclidkit query-spectra \
  --crossmatch crossmatch_results.fits \
  --output spectra_sources.fits

Query segmentation-map metadata from MER crossmatch results:

euclidkit query-segmap \
  --input crossmatch_results.fits \
  --output segmentation_maps.fits \
  --environment IDR

The result is the input for local 10 arcsec segmentation-map cutouts:

euclidkit compile-segmap \
  --input segmentation_maps.fits \
  --output-dir ./segmap_cutouts

The command opens local datalabs_path + file_name FITS files from the query-segmap table and writes one raw-label FITS cutout per source row. See Segmentation Map Cutouts for required columns, table mapping, and output semantics.

Export local Datalabs spectra to raw Parquet parts. This is the default non-Datalink compile-spectra output; Datalink still writes FITS files.

euclidkit compile-spectra \
  --spectra-table spectra_sources.fits \
  --output-dir ./output \
  --prefix raw_spectra \
  --chunk-size 2000 \
  -L RGS

Export per-dither spectra from the same local Datalabs catalog rows:

euclidkit dithers-to-parquet \
  --catalog-table spectra_sources.fits \
  --output-prefix ./output/raw_sir \
  --lambda-range RGS

Compile both Euclid arms via datalink (RGS + BGS):

euclidkit compile-spectra \
  --spectra-table spectra_sources.fits \
  --output-dir ./output \
  --prefix compiled_dl \
  --use-datalink \
  --environment IDR \
  -L BOTH

Python API example

from euclidkit.core.data_access import EuclidArchive

archive = EuclidArchive(environment="PDR")
archive.login(credentials_file="~/.euclidkit/.cred.txt")

xmatch = archive.crossmatch_sources(
    user_table="my_sources.csv",
    radius=1.0,
    output_file="crossmatch_results.fits",
)

deep_xmatch = archive.crossmatch_sources(
    user_table="my_deep_sources.fits",
    output_file="deep_crossmatch_results.fits",
    idr_field="DEEP",
    idr_deep_partition="survey",
)

spectra = archive.query_spectra_sources(
    crossmatch_table=xmatch,
    output_file="spectra_sources.fits",
)