-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
BUG: Fix wrong Subset unit when created in 2D spectrum viewer #3201
Changes from all commits
b1a3031
9dc6d6e
fe250fa
e4d6311
3e501c0
eafb391
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,10 @@ | ||
import pytest | ||
import stdatamodels | ||
from astropy import units as u | ||
from astropy.io import fits | ||
from astropy.utils.data import download_file | ||
from glue.core.edit_subset_mode import NewMode | ||
from glue.core.roi import XRangeROI | ||
|
||
from jdaviz.utils import PRIHDR_KEY | ||
from jdaviz.configs.imviz.tests.utils import create_example_gwcs | ||
|
@@ -134,6 +137,25 @@ def test_2d_1d_parser(specviz2d_helper, mos_spectrum2d, spectrum1d): | |
specviz2d_helper.load_data(spectrum_2d=mos_spectrum2d, spectrum_1d=spectrum1d) | ||
assert specviz2d_helper.app.data_collection.labels == ['Spectrum 2D', 'Spectrum 1D'] | ||
|
||
spec2d_viewer = specviz2d_helper.app.get_viewer("spectrum-2d-viewer") | ||
assert spec2d_viewer.figure.axes[0].label == "x: pixels" # -0.5, 14.5 | ||
spec2d_viewer.apply_roi(XRangeROI(10, 12)) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Could have used the API from #3104 but since it is not merged yet, I didn't. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. #3104 is now merged but the API is not yet public. Should I keep this as-is or should I use the |
||
|
||
spec2d_viewer.session.edit_subset_mode._mode = NewMode | ||
|
||
spec1d_viewer = specviz2d_helper.app.get_viewer("spectrum-viewer") | ||
assert spec1d_viewer.figure.axes[0].label == "Wavelength [Angstrom]" # 6000, 8000 | ||
spec1d_viewer.apply_roi(XRangeROI(7000, 7100)) | ||
|
||
# Subset 1 should follow Spectrum 2D viewer unit. | ||
# Subset 2 should follow Spectrum 1D viewer unit. | ||
subsets = specviz2d_helper.app.get_subsets() | ||
assert len(subsets) == 2 | ||
s1 = subsets["Subset 1"] | ||
s2 = subsets["Subset 2"] | ||
assert s1.lower.unit == s1.upper.unit == u.pix | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I confirmed that this line throws exception on
|
||
assert s2.lower.unit == s2.upper.unit == u.AA | ||
|
||
|
||
def test_parser_no_data(specviz2d_helper): | ||
with pytest.raises(ValueError, match='Must provide spectrum_2d or spectrum_1d'): | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what does
data[0]
assume? That that is the full cube extracted spectrum? If that is the assumption, maybe we need to be more explicit and request it by label instead? What if that has been unloaded from the viewer?I still wish this could be generalized, but I see how its difficult since
data
in the else is the glue component, butdata
in theif
is a Spectrum1D (or other translated object). Although the else in the else then uses a handler to convert to a Spectrum1D anyways. 🤔If all we need here are the units of the x-axis of the spectrum viewer... can we just access the display units? Or do we need the native units of the "reference" data?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't know the answers. This block is really for Cubeviz and I am trying to patch Specviz2D. Do I really have to fix Cubeviz too?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fair, ignore my first line of questions then since those do apply to the old code. But I think if we can have a general block here that applies to cubeviz and specviz2d, that would be easier to maintain than if-statements, right? There is even a TODO comment immediately above suggesting switching to display units - so maybe we can simplify this all down to one line once @gibsongreen enables display units across all configs?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
(or maybe it makes sense to get this in like this now and either roll that into @gibsongreen's WIP or as a tech-debt follow-up after that makes it in as well?)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok, we have decided to revisit this after unit conversion is enabled across all configs and merge the logic as-is until then. 🐱