L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Données et recherche · SKILL.md

wcs-nddata

wcs-nddata

Operate Astropy FITS WCS and NDData/CCDData workflows, including pixel-world conversion, WCS validation, masks, uncertainties, units, and metadata.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: wcs-nddata description: "Operate Astropy FITS WCS and NDData/CCDData workflows, including pixel-world conversion, WCS validation, masks, uncertainties, units, and metadata." metadata: disco-role: operating disable-model-invocation: true license: BSD 3-Clause

WCS and NDData Router

Use this sub-skill when an Astropy task centers on the relationship between image-like array pixels and physical/world coordinates, or on carrying image data together with masks, uncertainties, units, metadata, and WCS.

Load This When

  • A user has FITS WCS header keywords and needs an astropy.wcs.WCS object.
  • The task asks for pixel-to-world or world-to-pixel conversion.
  • The user needs to choose between high-level APE14 WCS calls and legacy origin-aware WCS calls.
  • The task mentions all_pix2world, all_world2pix, pixel_to_world, world_to_pixel, world_to_array_index, or array_index_to_world.
  • A FITS header emits WCS warnings or must be validated with wcslint.
  • The user needs to create or update WCS header cards programmatically.
  • The task uses NDData, NDDataArray, NDDataRef, or CCDData.
  • Image data must keep a boolean mask, StdDevUncertainty, VarianceUncertainty, InverseVariance, a unit, metadata, or a WCS object.
  • CCDData.read, CCDData.write, to_hdu, FITS BUNIT, mask/uncertainty HDUs, or WCS-preserving slicing/cutouts are part of the task.

Route Away When

  • FITS file opening, HDU inspection, table formats, ECSV, VOTable, or general unified I/O are the main topic; use ../tables-io/SKILL.md.
  • Plotting with WCSAxes, image normalization, RGB rendering, fits2bitmap, or convolution is the main topic; use ../visualization-convolution/SKILL.md.
  • Coordinate-frame science transforms, SkyCoord catalog matching, IERS, or EarthLocation dominate after the WCS conversion step; use ../time-coordinates/SKILL.md.
  • Unit arithmetic, equivalencies, or constants are the main obstacle; use ../units-constants/SKILL.md.
  • Install/import, remote data, config/cache, logging, or the general CLI catalog is the main topic; use ../cli-config-data/SKILL.md.

First Actions

  1. Identify the input object: FITS header, FITS file/HDU, existing WCS, array, NDData, CCDData, or a world-coordinate object.
  2. Record the pixel convention before transforming coordinates.
  3. Prefer the high-level WCS API for user-facing coordinates and Astropy objects.
  4. Use low-level or legacy WCS methods when the caller needs raw numeric arrays, explicit origin, or distortion-pipeline control.
  5. Inspect pixel_n_dim, world_n_dim, array_shape, pixel_shape, world_axis_physical_types, and world_axis_units before assuming axis order.
  6. For NumPy indexing, prefer world_to_array_index or world_to_array_index_values, not rounded world_to_pixel outputs.
  7. For WCS construction from headers, decide whether relax, fix, translate_units, naxis, and preserve_units matter.
  8. For image containers, check data shape, unit, mask convention, uncertainty type, metadata type, and whether WCS should be attached at construction.
  9. Validate with a small round-trip or temporary-file smoke before giving final operational code.

API Selection Rules

  • WCS(header) is the normal FITS-WCS constructor. It accepts headers, dict-like header cards, or a filename, and can also create an empty WCS with naxis=.
  • High-level pixel_to_world and world_to_pixel return and consume Astropy world objects such as SkyCoord or Quantity when the WCS describes those axes.
  • High-level methods use Python zero-based pixel coordinates. They do not take an origin argument.
  • Low-level all_pix2world and all_world2pix include detector, SIP, lookup table, and core WCS corrections when present; pass origin=0 for NumPy-style pixels or origin=1 for FITS/DS9-style coordinates.
  • Core wcs_pix2world and wcs_world2pix omit SIP and table-lookup distortion; use them only when that distinction is intentional.
  • array_index_to_world and world_to_array_index use NumPy array order (row, column, ...); pixel_to_world and world_to_pixel use pixel order (x, y, ...).
  • By default FITS-WCS may normalize angles to degrees and spectral/other units to SI. Use preserve_units=True when the original header units are the required output/input units.
  • Use .celestial, .sub(...), slicing, or SlicedLowLevelWCS when a cube or higher-dimensional WCS must be reduced or cut out.

NDData Selection Rules

  • Use NDData as a lightweight container for data, uncertainty, mask, wcs, meta, unit, and optional PSF information.
  • Use NDDataRef or NDDataArray when slicing, arithmetic helpers, or ndarray-like behavior are needed.
  • Use CCDData for 2D image data that should read/write FITS naturally; a unit is required, and a FITS BUNIT card is used when reading/writing units.
  • Boolean masks follow NumPy masked-array convention: True means invalid or ignored.
  • Use explicit uncertainty classes when propagation matters: StdDevUncertainty, VarianceUncertainty, or InverseVariance.
  • Attach WCS when constructing NDData/CCDData when possible. For CCDData loaded from FITS, WCS keywords are converted to a WCS object automatically.
  • For cutouts, use Cutout2D with a WCS when the cutout must update CRPIX and keep pixel/world consistency; confirm distortion limitations first.

Reference Files

  • Use references/api-reference.md for verified constructor signatures, WCS methods, NDData classes, and CLI/API notes.
  • Use references/workflows.md for self-contained recipes: WCS construction, round-trips, WCS header writing, wcslint, NDData/CCDData, FITS round-trips, and cutouts.
  • Use references/troubleshooting.md for warning handling, axis/order bugs, non-standard headers, WCS convergence failures, mask/uncertainty pitfalls, FITS I/O issues, and optional dependency notes.

Required Safety And Validation

  • Do not rely on the original source checkout, tests, examples, or documentation at runtime; use only the public installed Astropy package and bundled skill references.
  • Keep validation temporary-file based when a FITS file is needed, and do not overwrite user data unless the user explicitly requested it.
  • Treat wcslint as diagnostic. Its output can identify suspicious WCS cards, but a successful lint does not replace a numeric round-trip check for the user’s specific coordinate convention.
  • When suppressing FITSFixedWarning or FITS verification warnings, state which warning was inspected and why ignoring it is safe for the task.
  • Verify WCS transformations with at least one pixel/world/pixel or world/pixel/world round-trip inside the relevant image domain.
  • For CCDData workflows, verify that data shape, mask shape, uncertainty shape, unit, and WCS metadata survived the read/write/slice/cutout step.

Native-Backed Validation Ideas

  • Tiny in-memory FITS-like header: build a 2D celestial WCS, convert a pixel to world and back, and check agreement within a small tolerance.
  • Distortion-aware check: if SIP or lookup-table distortion is present, compare all_pix2world against wcs_pix2world only to explain the difference, not to demand equality.
  • wcslint smoke: write a temporary FITS file with simple WCS cards and confirm that the CLI runs and reports WCS diagnostics without mutating the file.
  • NDData/CCDData smoke: construct data with a mask, unit, metadata, StdDevUncertainty, and WCS; then slice or FITS round-trip and assert the critical attributes remain present.

Known Boundaries

  • This sub-skill does not teach FITS HDU management beyond the amount needed to obtain a header or read/write a CCDData image.
  • This sub-skill does not own Matplotlib WCSAxes plotting or image display.
  • This sub-skill does not own astronomy coordinate-frame decisions except as WCS inputs or outputs.
  • This sub-skill does not require GPU, accelerator, or network resources.
Skills enregistrées