Source code for jdaviz.configs.specviz2d.helper

from jdaviz.configs.specviz import Specviz
from jdaviz.core.helpers import ConfigHelper
from jdaviz.core.events import SnackbarMessage
from jdaviz.configs.default.plugins.line_lists.line_list_mixin import LineListMixin
from jdaviz.configs.specviz2d.plugins.spectral_extraction.spectral_extraction import SpectralExtraction  # noqa

__all__ = ['Specviz2d']


[docs] class Specviz2d(ConfigHelper, LineListMixin): """Specviz2D Helper class""" _default_configuration = "specviz2d" _default_spectrum_viewer_reference_name = "spectrum-viewer" _default_spectrum_2d_viewer_reference_name = "spectrum-2d-viewer" _default_table_viewer_reference_name = "table-viewer" def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) @property def specviz(self): """ A Specviz helper (`~jdaviz.configs.specviz.helper.Specviz`) for the Jdaviz application that is wrapped by Specviz2d. """ if not hasattr(self, '_specviz'): self._specviz = Specviz(app=self.app) return self._specviz
[docs] def load_data(self, spectrum_2d=None, spectrum_1d=None, spectrum_1d_label=None, spectrum_2d_label=None, show_in_viewer=True, ext=1, transpose=False): """ Load and parse a pair of corresponding 1D and 2D spectra. Parameters ---------- spectrum_2d: str A spectrum as translatable container objects (e.g., ``Spectrum1D``) that can be read by glue-jupyter. Alternatively, can be a string file path. spectrum_1d: str or Spectrum1D A spectrum as translatable container objects (e.g., ``Spectrum1D``) that can be read by glue-jupyter. Alternatively, can be a string file path. spectrum_1d_label : str String representing the label for the data item loaded via ``spectrum_1d``. spectrum_2d_label : str String representing the label for the data item loaded via ``spectrum_2d``. show_in_viewer : bool Show data in viewer(s). ext : int, optional Extension of the input ``spectrum_2d`` file to load. Defaults to 1. transpose : bool, optional Flag to transpose the 2D data array before loading. Useful for uncalibrated data that is dispersed vertically, to change it to horizontal dispersion. """ if spectrum_2d is None and spectrum_1d is None: raise ValueError('Must provide spectrum_2d or spectrum_1d but none given.') if spectrum_2d_label is None: spectrum_2d_label = "Spectrum 2D" elif spectrum_2d_label[-2:] != "2D": spectrum_2d_label = "{} 2D".format(spectrum_2d_label) if spectrum_1d_label is None: spectrum_1d_label = spectrum_2d_label.replace("2D", "1D") load_1d = False if spectrum_2d is not None: self.app.load_data(spectrum_2d, parser_reference="mosviz-spec2d-parser", data_labels=spectrum_2d_label, show_in_viewer=False, add_to_table=False, ext=ext, transpose=transpose) # Passing show_in_viewer into app.load_data does not work anymore, # so we force it to show here. if show_in_viewer: self.app.add_data_to_viewer( self._default_spectrum_2d_viewer_reference_name, spectrum_2d_label ) # Collapse the 2D spectrum to 1D if no 1D spectrum provided if spectrum_1d is None: # create a non-interactive (so that it does not create duplicate marks with the # plugin-instance created later) instance of the SpectralExtraction plugin, # and use the defaults to generate the initial 1D extracted spectrum spext = SpectralExtraction( app=self.app, interactive=False, spectrum_viewer_reference_name=self._default_spectrum_viewer_reference_name, spectrum_2d_viewer_reference_name=( self._default_spectrum_2d_viewer_reference_name ) ) # for some reason, the trailets are resetting to their default values even # though _trace_dataset_selected was called internally to set them to reasonable # new defaults. We'll just call it again manually. spext._trace_dataset_selected() try: spext.export_extract_spectrum(add_data=True) except Exception: msg = SnackbarMessage( "Automatic spectrum extraction failed. See the spectral extraction" " plugin to perform a custom extraction", color='error', sender=self, timeout=10000) else: # Warn that this shouldn't be used for science msg = SnackbarMessage( "The extracted 1D spectrum was generated automatically." " See the spectral extraction plugin for details or to" " perform a custom extraction.", color='warning', sender=self, timeout=10000) self.app.hub.broadcast(msg) else: load_1d = True else: load_1d = True if load_1d: self.app.load_data( spectrum_1d, data_label=spectrum_1d_label, parser_reference="specviz-spectrum1d-parser", show_in_viewer=show_in_viewer, )
[docs] def load_trace(self, trace, data_label, show_in_viewer=True): """ Load a trace object and load into the spectrum-2d-viewer Parameters ---------- trace : Trace A specreduce trace object data_label : str String representing the label show_in_viewer : bool Whether to load into the spectrum-2d-viewer. """ self.app.add_data(trace, data_label=data_label) if show_in_viewer: self.app.add_data_to_viewer( self._default_spectrum_2d_viewer_reference_name, data_label )
[docs] def get_data(self, data_label=None, spectral_subset=None, cls=None): """ Returns data with name equal to data_label of type cls with subsets applied from spectral_subset. Parameters ---------- data_label : str, optional Provide a label to retrieve a specific data set from data_collection. spectral_subset : str, optional Spectral subset applied to data. cls : `~specutils.Spectrum1D`, `~astropy.nddata.CCDData`, optional The type that data will be returned as. Returns ------- data : cls Data is returned as type cls with subsets applied. """ return self._get_data(data_label=data_label, spectral_subset=spectral_subset, cls=cls)