Source: astropy, gwcs Control: found -1 astropy/5.0-1 Control: found -1 gwcs/0.16.1-1 Severity: serious Tags: sid bookworm X-Debbugs-CC: debian-ci@lists.debian.org User: debian-ci@lists.debian.org Usertags: breaks needs-update Dear maintainer(s),With a recent upload of astropy the autopkgtest of gwcs fails in testing when that autopkgtest is run with the binary packages of astropy from unstable. It passes when run with only packages from testing. In tabular form:
pass fail astropy from testing 5.0-1 gwcs from testing 0.16.1-1 all others from testing from testing I copied some of the output at the bottom of this report.Currently this regression is blocking the migration of astropy to testing [1]. Due to the nature of this issue, I filed this bug report against both packages. Can you please investigate the situation and reassign the bug to the right package?
More information about this bug and the reason for filing it can be found on https://wiki.debian.org/ContinuousIntegration/RegressionEmailInformation Paul [1] https://qa.debian.org/excuses.php?package=astropy https://ci.debian.net/data/autopkgtest/testing/amd64/g/gwcs/17333475/log.gz=================================== FAILURES =================================== ___________________ test_pixel_bounds[gwcs_2d_spatial_shift] ___________________
wcsobj = <WCS(output_frame=CelestialFrame, input_frame=detector, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1') Ou...ffset=1.)> [1]: <Shift(offset=2.)> Parameters: offset_0 offset_1 -------- -------- 1.0 2.0)> @wcs_objs def test_pixel_bounds(wcsobj): assert wcsobj.pixel_bounds is None > wcsobj.bounding_box = ((-0.5, 2039.5), (-0.5, 1019.5))/usr/lib/python3/dist-packages/gwcs/tests/test_api.py:314: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <WCS(output_frame=CelestialFrame, input_frame=detector, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1') Ou...ffset=1.)> [1]: <Shift(offset=2.)> Parameters: offset_0 offset_1 -------- -------- 1.0 2.0)> value = ((-0.5, 2039.5), (-0.5, 1019.5)) @bounding_box.setter def bounding_box(self, value): """ Set the range of acceptable values for each input axis.The order of the axes is `~gwcs.coordinate_frames.CoordinateFrame.axes_order`. For two inputs and axes_order(0, 1) the bounding box is ((xlow, xhigh), (ylow, yhigh)).
Parameters ---------- value : tuple or None Tuple of tuples with ("low", high") values for the range. """ frames = self.available_frames transform_0 = self.get_transform(frames[0], frames[1]) if value is None: transform_0.bounding_box = value else: try: # Make sure the dimensions of the new bbox are correct.
E AttributeError: module 'astropy.modeling.utils' has no attribute '_BoundingBox'mutils._BoundingBox.validate(transform_0, value)
/usr/lib/python3/dist-packages/gwcs/wcs.py:1296: AttributeError________________________________ test_ellipsis _________________________________
gwcs_3d_galactic_spectral = <WCS(output_frame=CompositeFrame, input_frame=detector, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1', 'x...-------- -------- -------- ---------44.0 -29.0 0.1 -0.1 ... 180.0 -39.0 0.5 20.0)>
def test_ellipsis(gwcs_3d_galactic_spectral): wcs = SlicedLowLevelWCS(gwcs_3d_galactic_spectral, Ellipsis) assert wcs.pixel_n_dim == 3 assert wcs.world_n_dim == 3 assert wcs.array_shape == (30, 20, 10) assert wcs.pixel_shape == (10, 20, 30)assert wcs.world_axis_physical_types == ['pos.galactic.lat', 'em.freq', 'pos.galactic.lon']
assert wcs.world_axis_units == ['deg', 'Hz', 'deg']assert_equal(wcs.axis_correlation_matrix, [[True, False, True], [False, True, False], [True, False, True]]) assert wcs.world_axis_object_components == [('celestial', 1, 'spherical.lat'), ('spectral', 0, 'value'), ('celestial', 0, 'spherical.lon')] assert wcs.world_axis_object_classes['celestial'][0] is SkyCoord
assert wcs.world_axis_object_classes['celestial'][1] == ()assert isinstance(wcs.world_axis_object_classes['celestial'][2]['frame'], Galactic) assert wcs.world_axis_object_classes['celestial'][2]['unit'] == (u.deg, u.deg)
assert wcs.world_axis_object_classes['spectral'][0] is Quantity assert wcs.world_axis_object_classes['spectral'][1] == ()assert wcs.world_axis_object_classes['spectral'][2] == {'unit': 'Hz'} > assert_allclose(wcs.pixel_to_world_values(29, 39, 44), (10, 20, 25))
/usr/lib/python3/dist-packages/gwcs/tests/test_api_slicing.py:60: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/astropy/wcs/wcsapi/wrappers/sliced_wcs.py:230: in pixel_to_world_values
world_arrays = self._pixel_to_world_values_all(*pixel_arrays)/usr/lib/python3/dist-packages/astropy/wcs/wcsapi/wrappers/sliced_wcs.py:227: in _pixel_to_world_values_all
return self._wcs.pixel_to_world_values(*pixel_arrays_new) /usr/lib/python3/dist-packages/gwcs/api.py:108: in pixel_to_world_values result = self(*pixel_arrays, with_units=False) /usr/lib/python3/dist-packages/gwcs/wcs.py:314: in __call__ if self.bounding_box is not None: /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in bounding_box return tuple(bb[::-1][i] for i in axes_order) /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in <genexpr> return tuple(bb[::-1][i] for i in axes_order)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:638: in __getitem__
index = self._get_index(key)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:616: in _get_index
return get_index(self._model, key)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ model = <CompoundModel(offset_1=-44., offset_2=-29., factor_3=0.1, factor_4=-0.1, lon_6=25., lat_6=100., lon_pole_6=180., offset_7=-39., factor_8=0.5, offset_9=20.)>
key = slice(None, None, -1) def get_index(model, key) -> int: """ Get the input index corresponding to the given key. Can pass in either: the string name of the input or the input index itself. """ if isinstance(key, str): if key in model.inputs: index = model.inputs.index(key) else:raise ValueError(f"'{key}' is not one of the inputs: {model.inputs}.")
elif np.issubdtype(type(key), np.integer): if 0 <= key < len(model.inputs): index = key else:raise IndexError(f"Integer key: {key} must be non-negative and < {len(model.inputs)}.")
else:
E ValueError: Key value: slice(None, None, -1) must be string or integer.raise ValueError(f"Key value: {key} must be string or integer.")
/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:500: ValueError _____________________________ test_spectral_slice ______________________________
gwcs_3d_galactic_spectral = <WCS(output_frame=CompositeFrame, input_frame=detector, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1', 'x...-------- -------- -------- ---------44.0 -29.0 0.1 -0.1 ... 180.0 -39.0 0.5 20.0)>
def test_spectral_slice(gwcs_3d_galactic_spectral):wcs = SlicedLowLevelWCS(gwcs_3d_galactic_spectral, [slice(None), 10])
assert wcs.pixel_n_dim == 2 assert wcs.world_n_dim == 2 assert wcs.array_shape == (30, 10) assert wcs.pixel_shape == (10, 30)assert wcs.world_axis_physical_types == ['pos.galactic.lat', 'pos.galactic.lon']
assert wcs.world_axis_units == ['deg', 'deg']assert_equal(wcs.axis_correlation_matrix, [[True, True], [True, True]]) assert wcs.world_axis_object_components == [('celestial', 1, 'spherical.lat'), ('celestial', 0, 'spherical.lon')] assert wcs.world_axis_object_classes['celestial'][0] is SkyCoord
assert wcs.world_axis_object_classes['celestial'][1] == ()assert isinstance(wcs.world_axis_object_classes['celestial'][2]['frame'], Galactic) assert wcs.world_axis_object_classes['celestial'][2]['unit'] == (u.deg, u.deg)
> assert_allclose(wcs.pixel_to_world_values(29, 44), (10, 25))/usr/lib/python3/dist-packages/gwcs/tests/test_api_slicing.py:117: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/astropy/wcs/wcsapi/wrappers/sliced_wcs.py:230: in pixel_to_world_values
world_arrays = self._pixel_to_world_values_all(*pixel_arrays)/usr/lib/python3/dist-packages/astropy/wcs/wcsapi/wrappers/sliced_wcs.py:227: in _pixel_to_world_values_all
return self._wcs.pixel_to_world_values(*pixel_arrays_new) /usr/lib/python3/dist-packages/gwcs/api.py:108: in pixel_to_world_values result = self(*pixel_arrays, with_units=False) /usr/lib/python3/dist-packages/gwcs/wcs.py:314: in __call__ if self.bounding_box is not None: /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in bounding_box return tuple(bb[::-1][i] for i in axes_order) /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in <genexpr> return tuple(bb[::-1][i] for i in axes_order)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:638: in __getitem__
index = self._get_index(key)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:616: in _get_index
return get_index(self._model, key)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ model = <CompoundModel(offset_1=-44., offset_2=-29., factor_3=0.1, factor_4=-0.1, lon_6=25., lat_6=100., lon_pole_6=180., offset_7=-39., factor_8=0.5, offset_9=20.)>
key = slice(None, None, -1) def get_index(model, key) -> int: """ Get the input index corresponding to the given key. Can pass in either: the string name of the input or the input index itself. """ if isinstance(key, str): if key in model.inputs: index = model.inputs.index(key) else:raise ValueError(f"'{key}' is not one of the inputs: {model.inputs}.")
elif np.issubdtype(type(key), np.integer): if 0 <= key < len(model.inputs): index = key else:raise IndexError(f"Integer key: {key} must be non-negative and < {len(model.inputs)}.")
else:
E ValueError: Key value: slice(None, None, -1) must be string or integer.raise ValueError(f"Key value: {key} must be string or integer.")
/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:500: ValueError _____________________________ test_spectral_range ______________________________
gwcs_3d_galactic_spectral = <WCS(output_frame=CompositeFrame, input_frame=detector, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1', 'x...-------- -------- -------- ---------44.0 -29.0 0.1 -0.1 ... 180.0 -39.0 0.5 20.0)>
def test_spectral_range(gwcs_3d_galactic_spectral):wcs = SlicedLowLevelWCS(gwcs_3d_galactic_spectral, [slice(None), slice(4, 10)])
assert wcs.pixel_n_dim == 3 assert wcs.world_n_dim == 3 assert wcs.array_shape == (30, 6, 10) assert wcs.pixel_shape == (10, 6, 30)assert wcs.world_axis_physical_types == ['pos.galactic.lat', 'em.freq', 'pos.galactic.lon']
assert wcs.world_axis_units == ['deg', 'Hz', 'deg']assert_equal(wcs.axis_correlation_matrix, [[True, False, True], [False, True, False], [True, False, True]]) assert wcs.world_axis_object_components == [('celestial', 1, 'spherical.lat'), ('spectral', 0, 'value'), ('celestial', 0, 'spherical.lon')] assert wcs.world_axis_object_classes['celestial'][0] is SkyCoord
assert wcs.world_axis_object_classes['celestial'][1] == ()assert isinstance(wcs.world_axis_object_classes['celestial'][2]['frame'], Galactic) assert wcs.world_axis_object_classes['celestial'][2]['unit'] == (u.deg, u.deg)
assert wcs.world_axis_object_classes['spectral'][0] is Quantity assert wcs.world_axis_object_classes['spectral'][1] == ()assert wcs.world_axis_object_classes['spectral'][2] == {'unit': 'Hz'} > assert_allclose(wcs.pixel_to_world_values(29, 35, 44), (10, 20, 25))
/usr/lib/python3/dist-packages/gwcs/tests/test_api_slicing.py:182: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/astropy/wcs/wcsapi/wrappers/sliced_wcs.py:230: in pixel_to_world_values
world_arrays = self._pixel_to_world_values_all(*pixel_arrays)/usr/lib/python3/dist-packages/astropy/wcs/wcsapi/wrappers/sliced_wcs.py:227: in _pixel_to_world_values_all
return self._wcs.pixel_to_world_values(*pixel_arrays_new) /usr/lib/python3/dist-packages/gwcs/api.py:108: in pixel_to_world_values result = self(*pixel_arrays, with_units=False) /usr/lib/python3/dist-packages/gwcs/wcs.py:314: in __call__ if self.bounding_box is not None: /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in bounding_box return tuple(bb[::-1][i] for i in axes_order) /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in <genexpr> return tuple(bb[::-1][i] for i in axes_order)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:638: in __getitem__
index = self._get_index(key)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:616: in _get_index
return get_index(self._model, key)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ model = <CompoundModel(offset_1=-44., offset_2=-29., factor_3=0.1, factor_4=-0.1, lon_6=25., lat_6=100., lon_pole_6=180., offset_7=-39., factor_8=0.5, offset_9=20.)>
key = slice(None, None, -1) def get_index(model, key) -> int: """ Get the input index corresponding to the given key. Can pass in either: the string name of the input or the input index itself. """ if isinstance(key, str): if key in model.inputs: index = model.inputs.index(key) else:raise ValueError(f"'{key}' is not one of the inputs: {model.inputs}.")
elif np.issubdtype(type(key), np.integer): if 0 <= key < len(model.inputs): index = key else:raise IndexError(f"Integer key: {key} must be non-negative and < {len(model.inputs)}.")
else:
E ValueError: Key value: slice(None, None, -1) must be string or integer.raise ValueError(f"Key value: {key} must be string or integer.")
/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:500: ValueError _____________________________ test_celestial_slice _____________________________
gwcs_3d_galactic_spectral = <WCS(output_frame=CompositeFrame, input_frame=detector, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1', 'x...-------- -------- -------- ---------44.0 -29.0 0.1 -0.1 ... 180.0 -39.0 0.5 20.0)>
def test_celestial_slice(gwcs_3d_galactic_spectral):wcs = SlicedLowLevelWCS(gwcs_3d_galactic_spectral, [Ellipsis, 5])
assert wcs.pixel_n_dim == 2 assert wcs.world_n_dim == 3 assert wcs.array_shape == (30, 20) assert wcs.pixel_shape == (20, 30)assert wcs.world_axis_physical_types == ['pos.galactic.lat', 'em.freq', 'pos.galactic.lon']
assert wcs.world_axis_units == ['deg', 'Hz', 'deg']assert_equal(wcs.axis_correlation_matrix, [[False, True], [True, False], [False, True]]) assert wcs.world_axis_object_components == [('celestial', 1, 'spherical.lat'), ('spectral', 0, 'value'), ('celestial', 0, 'spherical.lon')] assert wcs.world_axis_object_classes['celestial'][0] is SkyCoord
assert wcs.world_axis_object_classes['celestial'][1] == ()assert isinstance(wcs.world_axis_object_classes['celestial'][2]['frame'], Galactic) assert wcs.world_axis_object_classes['celestial'][2]['unit'] == (u.deg, u.deg)
assert wcs.world_axis_object_classes['spectral'][0] is Quantity assert wcs.world_axis_object_classes['spectral'][1] == ()assert wcs.world_axis_object_classes['spectral'][2] == {'unit': 'Hz'} > assert_allclose(wcs.pixel_to_world_values(39, 44), (12.4, 20, 25))
/usr/lib/python3/dist-packages/gwcs/tests/test_api_slicing.py:246: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/astropy/wcs/wcsapi/wrappers/sliced_wcs.py:230: in pixel_to_world_values
world_arrays = self._pixel_to_world_values_all(*pixel_arrays)/usr/lib/python3/dist-packages/astropy/wcs/wcsapi/wrappers/sliced_wcs.py:227: in _pixel_to_world_values_all
return self._wcs.pixel_to_world_values(*pixel_arrays_new) /usr/lib/python3/dist-packages/gwcs/api.py:108: in pixel_to_world_values result = self(*pixel_arrays, with_units=False) /usr/lib/python3/dist-packages/gwcs/wcs.py:314: in __call__ if self.bounding_box is not None: /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in bounding_box return tuple(bb[::-1][i] for i in axes_order) /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in <genexpr> return tuple(bb[::-1][i] for i in axes_order)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:638: in __getitem__
index = self._get_index(key)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:616: in _get_index
return get_index(self._model, key)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ model = <CompoundModel(offset_1=-44., offset_2=-29., factor_3=0.1, factor_4=-0.1, lon_6=25., lat_6=100., lon_pole_6=180., offset_7=-39., factor_8=0.5, offset_9=20.)>
key = slice(None, None, -1) def get_index(model, key) -> int: """ Get the input index corresponding to the given key. Can pass in either: the string name of the input or the input index itself. """ if isinstance(key, str): if key in model.inputs: index = model.inputs.index(key) else:raise ValueError(f"'{key}' is not one of the inputs: {model.inputs}.")
elif np.issubdtype(type(key), np.integer): if 0 <= key < len(model.inputs): index = key else:raise IndexError(f"Integer key: {key} must be non-negative and < {len(model.inputs)}.")
else:
E ValueError: Key value: slice(None, None, -1) must be string or integer.raise ValueError(f"Key value: {key} must be string or integer.")
/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:500: ValueError _____________________________ test_celestial_range _____________________________
gwcs_3d_galactic_spectral = <WCS(output_frame=CompositeFrame, input_frame=detector, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1', 'x...-------- -------- -------- ---------44.0 -29.0 0.1 -0.1 ... 180.0 -39.0 0.5 20.0)>
def test_celestial_range(gwcs_3d_galactic_spectral):wcs = SlicedLowLevelWCS(gwcs_3d_galactic_spectral, [Ellipsis, slice(5, 10)])
assert wcs.pixel_n_dim == 3 assert wcs.world_n_dim == 3 assert wcs.array_shape == (30, 20, 5) assert wcs.pixel_shape == (5, 20, 30)assert wcs.world_axis_physical_types == ['pos.galactic.lat', 'em.freq', 'pos.galactic.lon']
assert wcs.world_axis_units == ['deg', 'Hz', 'deg']assert_equal(wcs.axis_correlation_matrix, [[True, False, True], [False, True, False], [True, False, True]]) assert wcs.world_axis_object_components == [('celestial', 1, 'spherical.lat'), ('spectral', 0, 'value'), ('celestial', 0, 'spherical.lon')] assert wcs.world_axis_object_classes['celestial'][0] is SkyCoord
assert wcs.world_axis_object_classes['celestial'][1] == ()assert isinstance(wcs.world_axis_object_classes['celestial'][2]['frame'], Galactic) assert wcs.world_axis_object_classes['celestial'][2]['unit'] == (u.deg, u.deg)
assert wcs.world_axis_object_classes['spectral'][0] is Quantity assert wcs.world_axis_object_classes['spectral'][1] == ()assert wcs.world_axis_object_classes['spectral'][2] == {'unit': 'Hz'} > assert_allclose(wcs.pixel_to_world_values(24, 39, 44), (10, 20, 25))
/usr/lib/python3/dist-packages/gwcs/tests/test_api_slicing.py:311: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/astropy/wcs/wcsapi/wrappers/sliced_wcs.py:230: in pixel_to_world_values
world_arrays = self._pixel_to_world_values_all(*pixel_arrays)/usr/lib/python3/dist-packages/astropy/wcs/wcsapi/wrappers/sliced_wcs.py:227: in _pixel_to_world_values_all
return self._wcs.pixel_to_world_values(*pixel_arrays_new) /usr/lib/python3/dist-packages/gwcs/api.py:108: in pixel_to_world_values result = self(*pixel_arrays, with_units=False) /usr/lib/python3/dist-packages/gwcs/wcs.py:314: in __call__ if self.bounding_box is not None: /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in bounding_box return tuple(bb[::-1][i] for i in axes_order) /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in <genexpr> return tuple(bb[::-1][i] for i in axes_order)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:638: in __getitem__
index = self._get_index(key)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:616: in _get_index
return get_index(self._model, key)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ model = <CompoundModel(offset_1=-44., offset_2=-29., factor_3=0.1, factor_4=-0.1, lon_6=25., lat_6=100., lon_pole_6=180., offset_7=-39., factor_8=0.5, offset_9=20.)>
key = slice(None, None, -1) def get_index(model, key) -> int: """ Get the input index corresponding to the given key. Can pass in either: the string name of the input or the input index itself. """ if isinstance(key, str): if key in model.inputs: index = model.inputs.index(key) else:raise ValueError(f"'{key}' is not one of the inputs: {model.inputs}.")
elif np.issubdtype(type(key), np.integer): if 0 <= key < len(model.inputs): index = key else:raise IndexError(f"Integer key: {key} must be non-negative and < {len(model.inputs)}.")
else:
E ValueError: Key value: slice(None, None, -1) must be string or integer.raise ValueError(f"Key value: {key} must be string or integer.")
/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:500: ValueError ___________________________ test_ellipsis_none_types ___________________________
gwcs_3d_galactic_spectral = <WCS(output_frame=CompositeFrame, input_frame=detector, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1', 'x...-------- -------- -------- ---------44.0 -29.0 0.1 -0.1 ... 180.0 -39.0 0.5 20.0)>
def test_ellipsis_none_types(gwcs_3d_galactic_spectral):pht = list(gwcs_3d_galactic_spectral.output_frame._axis_physical_types)
pht[1] = Nonegwcs_3d_galactic_spectral.output_frame._axis_physical_types = tuple(pht)
wcs = SlicedLowLevelWCS(gwcs_3d_galactic_spectral, Ellipsis) assert wcs.pixel_n_dim == 3 assert wcs.world_n_dim == 3 assert wcs.array_shape == (30, 20, 10) assert wcs.pixel_shape == (10, 20, 30)assert wcs.world_axis_physical_types == ['pos.galactic.lat', None, 'pos.galactic.lon']
assert wcs.world_axis_units == ['deg', 'Hz', 'deg'] assert_equal(wcs.axis_correlation_matrix, [[True, False, True],[False, True, False], [True, False, True]]) assert wcs.world_axis_object_components == [('celestial', 1, 'spherical.lat'), ('spectral', 0, 'value'), ('celestial', 0, 'spherical.lon')] assert wcs.world_axis_object_classes['celestial'][0] is SkyCoord
assert wcs.world_axis_object_classes['celestial'][1] == ()assert isinstance(wcs.world_axis_object_classes['celestial'][2]['frame'], Galactic) assert wcs.world_axis_object_classes['celestial'][2]['unit'] == (u.deg, u.deg) > assert_allclose(wcs.pixel_to_world_values(29, 39, 44), (10, 20, 25))
/usr/lib/python3/dist-packages/gwcs/tests/test_api_slicing.py:443: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/astropy/wcs/wcsapi/wrappers/sliced_wcs.py:230: in pixel_to_world_values
world_arrays = self._pixel_to_world_values_all(*pixel_arrays)/usr/lib/python3/dist-packages/astropy/wcs/wcsapi/wrappers/sliced_wcs.py:227: in _pixel_to_world_values_all
return self._wcs.pixel_to_world_values(*pixel_arrays_new) /usr/lib/python3/dist-packages/gwcs/api.py:108: in pixel_to_world_values result = self(*pixel_arrays, with_units=False) /usr/lib/python3/dist-packages/gwcs/wcs.py:314: in __call__ if self.bounding_box is not None: /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in bounding_box return tuple(bb[::-1][i] for i in axes_order) /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in <genexpr> return tuple(bb[::-1][i] for i in axes_order)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:638: in __getitem__
index = self._get_index(key)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:616: in _get_index
return get_index(self._model, key)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ model = <CompoundModel(offset_1=-44., offset_2=-29., factor_3=0.1, factor_4=-0.1, lon_6=25., lat_6=100., lon_pole_6=180., offset_7=-39., factor_8=0.5, offset_9=20.)>
key = slice(None, None, -1) def get_index(model, key) -> int: """ Get the input index corresponding to the given key. Can pass in either: the string name of the input or the input index itself. """ if isinstance(key, str): if key in model.inputs: index = model.inputs.index(key) else:raise ValueError(f"'{key}' is not one of the inputs: {model.inputs}.")
elif np.issubdtype(type(key), np.integer): if 0 <= key < len(model.inputs): index = key else:raise IndexError(f"Integer key: {key} must be non-negative and < {len(model.inputs)}.")
else:
E ValueError: Key value: slice(None, None, -1) must be string or integer.raise ValueError(f"Key value: {key} must be string or integer.")
/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:500: ValueError ______________________________ test_bounding_box _______________________________
def test_bounding_box(): trans3 = models.Shift(10) & models.Scale(2) & models.Shift(-1) pipeline = [('detector', trans3), ('sky', None)] w = wcs.WCS(pipeline) bb = ((-1, 10), (6, 15)) with pytest.raises(ValueError):
w.bounding_box = bb
/usr/lib/python3/dist-packages/gwcs/tests/test_wcs.py:258: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <WCS(output_frame=None, input_frame=None, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1', 'x') Outputs: ('...offset=-1.)> Parameters: offset_0 factor_1 offset_2 -------- -------- -------- 10.0 2.0 -1.0)> value = ((-1, 10), (6, 15)) @bounding_box.setter def bounding_box(self, value): """ Set the range of acceptable values for each input axis.The order of the axes is `~gwcs.coordinate_frames.CoordinateFrame.axes_order`. For two inputs and axes_order(0, 1) the bounding box is ((xlow, xhigh), (ylow, yhigh)).
Parameters ---------- value : tuple or None Tuple of tuples with ("low", high") values for the range. """ frames = self.available_frames transform_0 = self.get_transform(frames[0], frames[1]) if value is None: transform_0.bounding_box = value else: try: # Make sure the dimensions of the new bbox are correct.
E AttributeError: module 'astropy.modeling.utils' has no attribute '_BoundingBox'mutils._BoundingBox.validate(transform_0, value)
/usr/lib/python3/dist-packages/gwcs/wcs.py:1296: AttributeError____________________________ test_bounding_box_eval ____________________________
def test_bounding_box_eval(): """ Tests evaluation with and without respecting the bounding_box. """ trans3 = models.Shift(10) & models.Scale(2) & models.Shift(-1) pipeline = [('detector', trans3), ('sky', None)] w = wcs.WCS(pipeline)
w.bounding_box = ((-1, 10), (6, 15), (4.3, 6.9))
/usr/lib/python3/dist-packages/gwcs/tests/test_wcs.py:353: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <WCS(output_frame=None, input_frame=None, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1', 'x') Outputs: ('...offset=-1.)> Parameters: offset_0 factor_1 offset_2 -------- -------- -------- 10.0 2.0 -1.0)> value = ((-1, 10), (6, 15), (4.3, 6.9)) @bounding_box.setter def bounding_box(self, value): """ Set the range of acceptable values for each input axis.The order of the axes is `~gwcs.coordinate_frames.CoordinateFrame.axes_order`. For two inputs and axes_order(0, 1) the bounding box is ((xlow, xhigh), (ylow, yhigh)).
Parameters ---------- value : tuple or None Tuple of tuples with ("low", high") values for the range. """ frames = self.available_frames transform_0 = self.get_transform(frames[0], frames[1]) if value is None: transform_0.bounding_box = value else: try: # Make sure the dimensions of the new bbox are correct.
E AttributeError: module 'astropy.modeling.utils' has no attribute '_BoundingBox'mutils._BoundingBox.validate(transform_0, value)
/usr/lib/python3/dist-packages/gwcs/wcs.py:1296: AttributeError________________________________ test_footprint ________________________________
def test_footprint(): icrs = cf.CelestialFrame(name='icrs', reference_frame=coord.ICRS(), axes_order=(0, 1))spec = cf.SpectralFrame(name='freq', unit=[u.Hz, ], axes_order=(2, ))
world = cf.CompositeFrame([icrs, spec]) transform = (models.Shift(10) & models.Shift(-1)) & models.Scale(2) pipe = [('det', transform), (world, None)] w = wcs.WCS(pipe) with pytest.raises(TypeError): w.footprint() > w.bounding_box = ((1,5), (1,3), (1, 6))/usr/lib/python3/dist-packages/gwcs/tests/test_wcs.py:397: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <WCS(output_frame=CompositeFrame, input_frame=None, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1', 'x') O...(factor=2.)> Parameters: offset_0 offset_1 factor_2 -------- -------- -------- 10.0 -1.0 2.0)> value = ((1, 5), (1, 3), (1, 6)) @bounding_box.setter def bounding_box(self, value): """ Set the range of acceptable values for each input axis.The order of the axes is `~gwcs.coordinate_frames.CoordinateFrame.axes_order`. For two inputs and axes_order(0, 1) the bounding box is ((xlow, xhigh), (ylow, yhigh)).
Parameters ---------- value : tuple or None Tuple of tuples with ("low", high") values for the range. """ frames = self.available_frames transform_0 = self.get_transform(frames[0], frames[1]) if value is None: transform_0.bounding_box = value else: try: # Make sure the dimensions of the new bbox are correct.
E AttributeError: module 'astropy.modeling.utils' has no attribute '_BoundingBox'mutils._BoundingBox.validate(transform_0, value)
/usr/lib/python3/dist-packages/gwcs/wcs.py:1296: AttributeError_______________________________ test_to_fits_sip _______________________________
def test_to_fits_sip(): y, x = np.mgrid[:1024:10, :1024:10] xflat = np.ravel(x[1:-1, 1:-1]) yflat = np.ravel(y[1:-1, 1:-1]) af = asdf.open(get_pkg_data_filename('data/miriwcs.asdf')) miriwcs = af.tree['wcs'] bounding_box = ((0, 1024), (0, 1024)) mirisip = miriwcs.to_fits_sip(bounding_box, max_inv_pix_error=0.1) fitssip = astwcs.WCS(mirisip) fitsvalx, fitsvaly = fitssip.all_pix2world(xflat+1, yflat+1, 1)
gwcsvalx, gwcsvaly = miriwcs(xflat, yflat)
/usr/lib/python3/dist-packages/gwcs/tests/test_wcs.py:566: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/gwcs/wcs.py:314: in __call__
if self.bounding_box is not None: /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in bounding_box return tuple(bb[::-1][i] for i in axes_order) /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in <genexpr> return tuple(bb[::-1][i] for i in axes_order)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:638: in __getitem__
index = self._get_index(key)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:616: in _get_index
return get_index(self._model, key)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ model = <CompoundModel(offset_0=0.15, offset_1=-0.59, offset_2=-4., c0_4=-12.7875, c1_4=0.025, c0_5=-12.7875, c1_5=0.025, c0_0...38, c0_0_10=-375.39, c1_0_10=0.99684849, c0_1_10=0.07932904, c0_0_11=-434.08, c1_0_11=0.07932904, c0_1_11=-0.99684849)>
key = slice(None, None, -1) def get_index(model, key) -> int: """ Get the input index corresponding to the given key. Can pass in either: the string name of the input or the input index itself. """ if isinstance(key, str): if key in model.inputs: index = model.inputs.index(key) else:raise ValueError(f"'{key}' is not one of the inputs: {model.inputs}.")
elif np.issubdtype(type(key), np.integer): if 0 <= key < len(model.inputs): index = key else:raise IndexError(f"Integer key: {key} must be non-negative and < {len(model.inputs)}.")
else:
E ValueError: Key value: slice(None, None, -1) must be string or integer.raise ValueError(f"Key value: {key} must be string or integer.")
/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:500: ValueError ____________________________ test_to_fits_tab_cube _____________________________
gwcs_3d_galactic_spectral = <WCS(output_frame=CompositeFrame, input_frame=detector, forward_transform=Model: CompoundModel
Inputs: ('x0', 'x1', 'x...-------- -------- -------- ---------44.0 -29.0 0.1 -0.1 ... 180.0 -39.0 0.5 20.0)>
def test_to_fits_tab_cube(gwcs_3d_galactic_spectral): # gWCS: w = gwcs_3d_galactic_spectral # FITS WCS -TAB:
hdr, bt = w.to_fits_tab()
/usr/lib/python3/dist-packages/gwcs/tests/test_wcs.py:599: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/gwcs/wcs.py:1695: in to_fits_tab
if self.bounding_box is None: /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in bounding_box return tuple(bb[::-1][i] for i in axes_order) /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in <genexpr> return tuple(bb[::-1][i] for i in axes_order)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:638: in __getitem__
index = self._get_index(key)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:616: in _get_index
return get_index(self._model, key)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ model = <CompoundModel(offset_1=-44., offset_2=-29., factor_3=0.1, factor_4=-0.1, lon_6=25., lat_6=100., lon_pole_6=180., offset_7=-39., factor_8=0.5, offset_9=20.)>
key = slice(None, None, -1) def get_index(model, key) -> int: """ Get the input index corresponding to the given key. Can pass in either: the string name of the input or the input index itself. """ if isinstance(key, str): if key in model.inputs: index = model.inputs.index(key) else:raise ValueError(f"'{key}' is not one of the inputs: {model.inputs}.")
elif np.issubdtype(type(key), np.integer): if 0 <= key < len(model.inputs): index = key else:raise IndexError(f"Integer key: {key} must be non-negative and < {len(model.inputs)}.")
else:
E ValueError: Key value: slice(None, None, -1) must be string or integer.raise ValueError(f"Key value: {key} must be string or integer.")
/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:500: ValueError _________________________ test_to_fits_tab_miri_image __________________________
def test_to_fits_tab_miri_image(): # gWCS: af = asdf.open(get_pkg_data_filename('data/miriwcs.asdf')) w = af.tree['wcs'] # FITS WCS -TAB:
hdr, bt = w.to_fits_tab(sampling=0.5)
/usr/lib/python3/dist-packages/gwcs/tests/test_wcs.py:632: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/gwcs/wcs.py:1695: in to_fits_tab
if self.bounding_box is None: /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in bounding_box return tuple(bb[::-1][i] for i in axes_order) /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in <genexpr> return tuple(bb[::-1][i] for i in axes_order)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:638: in __getitem__
index = self._get_index(key)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:616: in _get_index
return get_index(self._model, key)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ model = <CompoundModel(offset_0=0.15, offset_1=-0.59, offset_2=-4., c0_4=-12.7875, c1_4=0.025, c0_5=-12.7875, c1_5=0.025, c0_0...38, c0_0_10=-375.39, c1_0_10=0.99684849, c0_1_10=0.07932904, c0_0_11=-434.08, c1_0_11=0.07932904, c0_1_11=-0.99684849)>
key = slice(None, None, -1) def get_index(model, key) -> int: """ Get the input index corresponding to the given key. Can pass in either: the string name of the input or the input index itself. """ if isinstance(key, str): if key in model.inputs: index = model.inputs.index(key) else:raise ValueError(f"'{key}' is not one of the inputs: {model.inputs}.")
elif np.issubdtype(type(key), np.integer): if 0 <= key < len(model.inputs): index = key else:raise IndexError(f"Integer key: {key} must be non-negative and < {len(model.inputs)}.")
else:
E ValueError: Key value: slice(None, None, -1) must be string or integer.raise ValueError(f"Key value: {key} must be string or integer.")
/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:500: ValueError __________________________ test_to_fits_tab_miri_lrs ___________________________
def test_to_fits_tab_miri_lrs(): af = asdf.open(get_pkg_data_filename('data/miri_lrs_wcs.asdf')) w = af.tree['wcs'] # FITS WCS -TAB:
hdr, bt = w.to_fits_tab(sampling=0.25)
/usr/lib/python3/dist-packages/gwcs/tests/test_wcs.py:654: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/gwcs/wcs.py:1695: in to_fits_tab
if self.bounding_box is None: /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in bounding_box return tuple(bb[::-1][i] for i in axes_order) /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in <genexpr> return tuple(bb[::-1][i] for i in axes_order)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:638: in __getitem__
index = self._get_index(key)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:616: in _get_index
return get_index(self._model, key)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ model = <CompoundModel(offset_1=-325.13, offset_2=-299.7, angle_3=0.24155757, offset_4=325.13, offset_5=299.7, amplitude_7=299...4, c0_0_17=-434.08, c1_0_17=0.07932904, c0_1_17=-0.99684849, offset_20=-325.13, offset_21=-299.7, angle_22=0.24155757)>
key = slice(None, None, -1) def get_index(model, key) -> int: """ Get the input index corresponding to the given key. Can pass in either: the string name of the input or the input index itself. """ if isinstance(key, str): if key in model.inputs: index = model.inputs.index(key) else:raise ValueError(f"'{key}' is not one of the inputs: {model.inputs}.")
elif np.issubdtype(type(key), np.integer): if 0 <= key < len(model.inputs): index = key else:raise IndexError(f"Integer key: {key} must be non-negative and < {len(model.inputs)}.")
else:
E ValueError: Key value: slice(None, None, -1) must be string or integer.raise ValueError(f"Key value: {key} must be string or integer.")
/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:500: ValueError ________________________________ test_in_image _________________________________
def test_in_image(): # create a 1-dim WCS: w1 = wcs.WCS( [(cf.SpectralFrame(name='input', axes_names=('x',), unit=(u.pix,)), models.Scale(2)), (cf.SpectralFrame(name='output', axes_names=('x'), unit=(u.pix,)), None)
] )
w1.bounding_box = (1, 5)
/usr/lib/python3/dist-packages/gwcs/tests/test_wcs.py:681: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <WCS(output_frame=output, input_frame=input, forward_transform=Model: Scale
Inputs: ('x',) Outputs: ('y',) Model set size: 1 Parameters: factor ------ 2.0)> value = (1, 5) @bounding_box.setter def bounding_box(self, value): """ Set the range of acceptable values for each input axis.The order of the axes is `~gwcs.coordinate_frames.CoordinateFrame.axes_order`. For two inputs and axes_order(0, 1) the bounding box is ((xlow, xhigh), (ylow, yhigh)).
Parameters ---------- value : tuple or None Tuple of tuples with ("low", high") values for the range. """ frames = self.available_frames transform_0 = self.get_transform(frames[0], frames[1]) if value is None: transform_0.bounding_box = value else: try: # Make sure the dimensions of the new bbox are correct.
E AttributeError: module 'astropy.modeling.utils' has no attribute '_BoundingBox'mutils._BoundingBox.validate(transform_0, value)
/usr/lib/python3/dist-packages/gwcs/wcs.py:1296: AttributeError________________________________ test_iter_inv _________________________________
def test_iter_inv():w = asdf.open(get_pkg_data_filename('data/nircamwcs.asdf')).tree['wcs']
# remove analytic/user-supplied inverse: w.pipeline[0].transform.inverse = None w.bounding_box = None # test single point assert np.allclose((1, 2), w.invert(*w(1, 2))) assert np.allclose( (np.nan, np.nan), w.numerical_inverse(*w(np.nan, 2)), equal_nan=True ) # prepare to test a vector of points: np.random.seed(10) x, y = 2047 * np.random.random((2, 10000)) # "truth" # test adaptive: xp, yp = w.invert( *w(x, y), adaptive=True, detect_divergence=True, quiet=False ) assert np.allclose((x, y), (xp, yp))w = asdf.open(get_pkg_data_filename('data/nircamwcs.asdf')).tree['wcs']
# test single point
assert np.allclose((1, 2), w.numerical_inverse(*w(1, 2)))
/usr/lib/python3/dist-packages/gwcs/tests/test_wcs.py:741: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/gwcs/wcs.py:314: in __call__
if self.bounding_box is not None: /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in bounding_box return tuple(bb[::-1][i] for i in axes_order) /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in <genexpr> return tuple(bb[::-1][i] for i in axes_order)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:638: in __getitem__
index = self._get_index(key)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:616: in _get_index
return get_index(self._model, key)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ model = <CompoundModel(offset_0=1., offset_1=1., offset_2=-1024.5, offset_3=-1024.5, c0_0_5=-0., c1_0_5=0.06277675, c2_0_5=0.0...917, c0_1_8=-0.00128895, c0_0_9=0., c1_0_9=-0.00128895, c0_1_9=0.99999917, offset_10=86.039011, offset_11=-493.385704)>
key = slice(None, None, -1) def get_index(model, key) -> int: """ Get the input index corresponding to the given key. Can pass in either: the string name of the input or the input index itself. """ if isinstance(key, str): if key in model.inputs: index = model.inputs.index(key) else:raise ValueError(f"'{key}' is not one of the inputs: {model.inputs}.")
elif np.issubdtype(type(key), np.integer): if 0 <= key < len(model.inputs): index = key else:raise IndexError(f"Integer key: {key} must be non-negative and < {len(model.inputs)}.")
else:
E ValueError: Key value: slice(None, None, -1) must be string or integer.raise ValueError(f"Key value: {key} must be string or integer.")
/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:500: ValueError ___________________________ test_tabular_2d_quantity ___________________________
def test_tabular_2d_quantity(): shape = (3, 3) data = np.arange(np.product(shape)).reshape(shape) * u.m / u.s # The integer location is at the centre of the pixel. points_unit = u.pix points = [(np.arange(size) - 0) * points_unit for size in shape] kwargs = { 'bounds_error': False, 'fill_value': np.nan, 'method': 'nearest', } forward = models.Tabular2D(points, data, **kwargs)input_frame = cf.CoordinateFrame(2, ("PIXEL", "PIXEL"), (0,1), unit=(u.pix, u.pix), name="detector") output_frame = cf.CoordinateFrame(1, "CUSTOM", (0,), unit=(u.m/u.s,)) w = wcs.WCS(forward_transform=forward, input_frame=input_frame, output_frame=output_frame)
> bb = w.bounding_box/usr/lib/python3/dist-packages/gwcs/tests/test_wcs.py:829: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in bounding_box
return tuple(bb[::-1][i] for i in axes_order) /usr/lib/python3/dist-packages/gwcs/wcs.py:1274: in <genexpr> return tuple(bb[::-1][i] for i in axes_order)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:638: in __getitem__
index = self._get_index(key)/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:616: in _get_index
return get_index(self._model, key)_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ model = <Tabular2D(points=[<Quantity [0., 1., 2.] pix>, <Quantity [0., 1., 2.] pix>], lookup_table=[[0. 1. 2.]
[3. 4. 5.] [6. 7. 8.]] m / s)> key = slice(None, None, -1) def get_index(model, key) -> int: """ Get the input index corresponding to the given key. Can pass in either: the string name of the input or the input index itself. """ if isinstance(key, str): if key in model.inputs: index = model.inputs.index(key) else:raise ValueError(f"'{key}' is not one of the inputs: {model.inputs}.")
elif np.issubdtype(type(key), np.integer): if 0 <= key < len(model.inputs): index = key else:raise IndexError(f"Integer key: {key} must be non-negative and < {len(model.inputs)}.")
else:
E ValueError: Key value: slice(None, None, -1) must be string or integer.raise ValueError(f"Key value: {key} must be string or integer.")
/usr/lib/python3/dist-packages/astropy/modeling/bounding_box.py:500: ValueError
Attachment:
OpenPGP_signature
Description: OpenPGP digital signature