-
-
Notifications
You must be signed in to change notification settings - Fork 132
Description
These tests on v1.3 are failing with astropy 4.3rc1:
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_writer[wavelength] - assert Unit("W / (Angstrom m2)") == Unit("erg / (Angstrom cm2 s)")
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_writer[frequency] - assert Unit("W / (Angstrom m2)") == Unit("erg / (Angstrom cm2 s)")
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_writer[energy] - KeyError: 'energy'
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_writer[wavenumber] - assert Unit("W / (Angstrom m2)") == Unit("erg / (Angstrom cm2 s)")
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_multid[wavelength-1] - assert Unit("W / (Angstrom m2)") == Unit("erg / (Angstrom cm2 s)")
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_multid[wavelength-2] - assert Unit("W / (Angstrom m2)") == Unit("erg / (Angstrom cm2 s)")
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_multid[wavelength-3] - assert Unit("W / (Angstrom m2)") == Unit("erg / (Angstrom cm2 s)")
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_multid[frequency-1] - assert Unit("W / (Angstrom m2)") == Unit("erg / (Angstrom cm2 s)")
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_multid[frequency-2] - assert Unit("W / (Angstrom m2)") == Unit("erg / (Angstrom cm2 s)")
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_multid[frequency-3] - assert Unit("W / (Angstrom m2)") == Unit("erg / (Angstrom cm2 s)")
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_multid[energy-1] - KeyError: 'energy'
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_multid[energy-2] - KeyError: 'energy'
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_multid[energy-3] - KeyError: 'energy'
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_multid[wavenumber-1] - assert Unit("W / (Angstrom m2)") == Unit("erg / (Angstrom cm2 s)")
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_multid[wavenumber-2] - assert Unit("W / (Angstrom m2)") == Unit("erg / (Angstrom cm2 s)")
FAILED lib/python3.9/site-packages/specutils/tests/test_loaders.py::test_tabular_fits_multid[wavenumber-3] - assert Unit("W / (Angstrom m2)") == Unit("erg / (Angstrom cm2 s)")the majority are failures on the flux unit like
spectrum.write(tmpfile, format='tabular-fits', overwrite=True)
cmap = {spectral_axis: ('spectral_axis', wlu[spectral_axis]),
'flux': ('flux', 'erg / (s cm**2 AA)'),
'uncertainty': ('uncertainty', None)}
# Read it back again and check against the original
spec = Spectrum1D.read(tmpfile, format='tabular-fits', column_mapping=cmap)
> assert spec.flux.unit == u.Unit('erg / (s cm**2 AA)')
E assert Unit("W / (Angstrom m2)") == Unit("erg / (Angstrom cm2 s)")
E + where Unit("W / (Angstrom m2)") = <Quantity [ 5.15047686e-10, 3.85273149e-09, 5.70890511e-10,\n 1.13556564e-09, 9.54001763e-10, 6.51391251... -3.15269245e-10, 7.58969220e-10, -7.72825215e-10,\n -2.36818607e-10, -4.85363548e-10] W / (Angstrom m2)>.unit
E + where <Quantity [ 5.15047686e-10, 3.85273149e-09, 5.70890511e-10,\n 1.13556564e-09, 9.54001763e-10, 6.51391251... -3.15269245e-10, 7.58969220e-10, -7.72825215e-10,\n -2.36818607e-10, -4.85363548e-10] W / (Angstrom m2)> = <Spectrum1D(flux=<Quantity [ 5.15047686e-10, 3.85273149e-09, 5.70890511e-10,\n 1.13556564e-09, 9.54001763... 1.77558228e-06, 2.75493960e-06, 2.77997341e-06,\n 1.53889118e-06, 2.20309679e-06]))>.flux
E + and Unit("erg / (Angstrom cm2 s)") = <class 'astropy.units.core.Unit'>('erg / (s cm**2 AA)')
E + where <class 'astropy.units.core.Unit'> = u.Unitthe reason being spectrum_from_column_mapping is failing the check
specutils/specutils/io/parsing_utils.py
Line 110 in 3a86739
| elif 'spectral flux' in cm_unit.physical_type: |
as
unit.physical_type in astropy 4.3 has become an object of type PhysicalType instead of a plain string; this can be simply fixed by checking for 'spectral flux' in str(cm_unit.physical_type) instead.
Somewhat related, spectral_axis type 'energy' is not recognised since energy units like u.eV have now become
PhysicalType({'energy', 'torque', 'work'})
and are accordingly written to FITS as
TTYPE1 = 'energy/torque/work'
I have to think about how to proceed best with this case. The spectral_axis column would need to be referenced as table['energy/torque/work'], but I'd prefer to have the writer not use that ugly TTYPE in the first place.
Setting custom units on 'energy' seems broken anyway, as the test simply uses u.eV before and after.