From ce15aebc3d865bf6aab0fa4ece4a0403297eb40a Mon Sep 17 00:00:00 2001 From: Thomas Robitaille Date: Wed, 22 May 2024 11:09:18 +0100 Subject: [PATCH] Make compute_scale robust to case where fiducial coordinates are ouside of bounding box --- jdaviz/configs/imviz/wcs_utils.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/jdaviz/configs/imviz/wcs_utils.py b/jdaviz/configs/imviz/wcs_utils.py index bae667b156..8425a8f6a6 100644 --- a/jdaviz/configs/imviz/wcs_utils.py +++ b/jdaviz/configs/imviz/wcs_utils.py @@ -6,6 +6,7 @@ import base64 import math from io import BytesIO +import warnings import matplotlib.pyplot as plt import numpy as np @@ -575,7 +576,13 @@ def compute_scale(wcs, fiducial, disp_axis, pscale_ratio=1): if spectral and disp_axis is None: # pragma: no cover raise ValueError('If input WCS is spectral, a disp_axis must be given') - crpix = np.array(wcs.invert(*fiducial)) + if wcs.in_image(*fiducial): + crpix = np.array(wcs.invert(*fiducial)) + else: + # At this point we know the bounding box is probably defined, so we can + # use the central coordinate inside the bounding box + warnings.warn("WCS fiducial coordinates not inside bounding box") + crpix = np.mean(wcs.pixel_bounds, axis=1) delta = np.zeros_like(crpix) spatial_idx = np.where(np.array(wcs.output_frame.axes_type) == 'SPATIAL')[0]