Skip to content

Commit

Permalink
add custom parser for specreduce trace objects
Browse files Browse the repository at this point in the history
  • Loading branch information
kecnry committed Jan 21, 2025
1 parent a2082f3 commit fb23045
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 4 deletions.
30 changes: 29 additions & 1 deletion jdaviz/configs/mosviz/plugins/parsers.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
from jdaviz.core.events import SnackbarMessage
from jdaviz.utils import standardize_metadata, PRIHDR_KEY, download_uri_to_path

__all__ = ['mos_spec1d_parser', 'mos_spec2d_parser', 'mos_image_parser']
__all__ = ['mos_spec1d_parser', 'mos_spec2d_parser', 'mos_image_parser', 'specreduce_trace_parser']

FALLBACK_NAME = "Unspecified"
EXPECTED_FILES = {"niriss": ['1D Spectra C', '1D Spectra R',
Expand Down Expand Up @@ -403,6 +403,34 @@ def _parse_as_spectrum1d(hdulist, ext, transpose):
return len(data_obj)


@data_parser_registry("specreduce-trace")
def specreduce_trace_parser(app, data_obj, data_label=None, show_in_viewer=False):
"""
Loads a specreduce trace object.
Parameters
----------
app : `~jdaviz.app.Application`
The application-level object used to reference the viewers.
data_obj : str or list or spectrum-like
File path, list, or spectrum-like object to be read as a new row in
the mosviz table.
data_label : str, optional
The label applied to the glue data component.
show_in_viewer : bool
Show data in viewer(s).
"""
spectrum_2d_viewer_reference_name = (
getattr(app._jdaviz_helper, "_default_spectrum_2d_viewer_reference_name", None)
)

app.add_data(data_obj, data_label=data_label)
if show_in_viewer and spectrum_2d_viewer_reference_name:
app.add_data_to_viewer(
spectrum_2d_viewer_reference_name, data_label
)


def _load_fits_image_from_filename(filename, app):
with fits.open(filename) as hdulist:
# We do not use the generated labels
Expand Down
6 changes: 3 additions & 3 deletions jdaviz/configs/specviz/helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -75,17 +75,17 @@ def load_data(self, data, data_label=None, format=None, show_in_viewer=True,
`~astroquery.mast.Conf.timeout`).
"""
from jdaviz.core import data_formats
format, conf = data_formats.get_valid_format(data)
parsers = {'specviz': 'specviz-spectrum1d-parser', 'specviz2d': 'mosviz-spec2d-parser'}
parser = data_formats.get_parser(data)

parser_kwargs = {'mosviz-spec2d-parser': {},
'specreduce-trace': {'show_in_viewer': show_in_viewer},
'specviz-spectrum1d-parser': {'format': format,
'show_in_viewer': show_in_viewer,
'concat_by_file': concat_by_file,
'cache': cache,
'local_path': local_path,
'timeout': timeout,
'load_as_list': load_as_list}}
parser = parsers.get(conf)
kwargs = parser_kwargs.get(parser, {})
super().load_data(data,
parser_reference=parser,
Expand Down
22 changes: 22 additions & 0 deletions jdaviz/core/data_formats.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

from specutils.io.registers import identify_spectrum_format
from specutils import Spectrum1D, SpectrumList, SpectrumCollection
from specreduce.tracing import Trace
from stdatamodels import asdf_in_fits

from jdaviz.core.config import list_configurations
Expand Down Expand Up @@ -90,6 +91,27 @@ def get_valid_format(filename):
return valid_file_format, recommended_config


def get_parser(obj):
"""
Identify the data parser from a filename or data object
Parameters
----------
obj : str or `pathlib.Path` or file-like object
The filename of the loaded data
Returns
-------
parser : str
The parser for the data object
"""
if isinstance(obj, Trace):
return 'specreduce-trace'
_, config = get_valid_format(obj)
parsers = {'specviz': 'specviz-spectrum1d-parser', 'specviz2d': 'mosviz-spec2d-parser'}
return parsers.get(config)


def identify_data(filename, current=None):
"""Identify the data format and application configuration from a filename.
Expand Down

0 comments on commit fb23045

Please sign in to comment.