Source code for jdaviz.configs.default.plugins.line_lists.line_list_mixin

from jdaviz.core.events import AddLineListMessage, RedshiftMessage

__all__ = ['LineListMixin']


[docs] class LineListMixin: """ Line list-related methods and properties for use in the configuration helper classes. """ _redshift = 0
[docs] def load_line_list(self, line_table, replace=False): """ Convenience function to get to the viewer function. Also broadcasts a message so the line list plugin UI can display lines loaded via the notebook. """ lt = self.app.get_viewer( self._default_spectrum_viewer_reference_name ).load_line_list( line_table, replace=replace, return_table=True ) # TODO: why is the rest of this logic here and not in viewer.load_line_list? # Preset lists were returning None table despite loading correctly if lt is None: if replace: lt = self.spectral_lines.loc["listname", line_table] else: lt = self.spectral_lines add_line_list_message = AddLineListMessage(table=lt, sender=self) self.app.hub.broadcast(add_line_list_message)
[docs] def erase_spectral_lines(self, name=None): """Convenience function to get to the viewer function""" self.app.get_viewer( self._default_spectrum_viewer_reference_name ).erase_spectral_lines(name=name)
[docs] def plot_spectral_line(self, line, global_redshift=None): """Convenience function to get to the viewer function""" self.app.get_viewer( self._default_spectrum_viewer_reference_name ).plot_spectral_line(line, global_redshift)
[docs] def plot_spectral_lines(self, global_redshift=None): """Convenience function to get to the viewer function""" self.app.get_viewer( self._default_spectrum_viewer_reference_name ).plot_spectral_lines(global_redshift)
@property def spectral_lines(self): return self.app.get_viewer( self._default_spectrum_viewer_reference_name ).spectral_lines @property def available_linelists(self): return self.app.get_viewer( self._default_spectrum_viewer_reference_name ).available_linelists()
[docs] def set_redshift_slider_bounds(self, range=None, step=None): ''' Set the range and/or step of the redshift slider. Set either/both to 'auto' for default values based on the limits of the spectrum plot. Parameters ---------- range : float or `None` or 'auto' Specifies the difference between the upper and lower bounds of the slider. Note that the slider specifies delta redshift from the current value, so a range of 0.1 would allow the user to change the current redshift by +/- 0.05. If `None` or not passed, will leave at the current value. If 'auto', will sync the range based on the limits of the spectrum plot. step : float or `None` or 'auto' Specifies step size of the slider and redshift input (and will be converted to an estimated step for RV). Smaller step sizes will allow finer adjustments/smoother behavior at a potential cost to performance. If `None` or not passed, will leave at the current value. If 'auto', will sync the step size to 1000 steps within the current range. ''' if range is not None: msg = RedshiftMessage("rs_slider_range", range, sender=self) self.app.hub.broadcast(msg) if step is not None: msg = RedshiftMessage("rs_slider_step", step, sender=self) self.app.hub.broadcast(msg)
[docs] def set_redshift(self, new_redshift): ''' Apply a redshift to any loaded spectral lines and data. Also updates the value shown in the slider. ''' if new_redshift == self._redshift: # avoid sending messages that can result in race conditions return msg = RedshiftMessage("redshift", new_redshift, sender=self) self.app.hub.broadcast(msg)
def _redshift_listener(self, msg): '''Save new redshifts (including from the helper itself)''' if msg.param == "redshift": self._redshift = msg.value