diff --git a/jdaviz/configs/specviz/plugins/line_analysis/line_analysis.py b/jdaviz/configs/specviz/plugins/line_analysis/line_analysis.py index 5f46a30da4..797942d618 100644 --- a/jdaviz/configs/specviz/plugins/line_analysis/line_analysis.py +++ b/jdaviz/configs/specviz/plugins/line_analysis/line_analysis.py @@ -17,7 +17,8 @@ SpectralMarksChangedMessage, LineIdentifyMessage, RedshiftMessage, - GlobalDisplayUnitChanged) + GlobalDisplayUnitChanged, + SnackbarMessage) from jdaviz.core.marks import (LineAnalysisContinuum, LineAnalysisContinuumCenter, LineAnalysisContinuumLeft, @@ -457,10 +458,20 @@ def _uncertainty(result): flux=spec_subtracted.flux, uncertainty=spec_subtracted.uncertainty) - raw_result = analysis.line_flux(freq_spec) + try: + raw_result = analysis.line_flux(freq_spec) + except ValueError as e: + # can happen if interpolation out-of-bounds or any error from specutils + # let's avoid the whole app crashing and instead expose the error to the + # user + self.hub.broadcast(SnackbarMessage( + f"failed to calculate line analysis statistics: {e}", sender=self, + color="warning")) + self.update_results(None) + return + # When flux is equivalent to Jy, lineflux result should be shown in W/m2 if flux_unit.is_equivalent(u.Jy/u.sr): - final_unit = u.Unit('W/(m2 sr)') else: final_unit = u.Unit('W/m2') @@ -479,7 +490,17 @@ def _uncertainty(result): equivalencies=u.spectral()), flux=spec_subtracted.flux, uncertainty=spec_subtracted.uncertainty) - raw_result = analysis.line_flux(wave_spec) + try: + raw_result = analysis.line_flux(wave_spec) + except ValueError as e: + # can happen if interpolation out-of-bounds or any error from specutils + # let's avoid the whole app crashing and instead expose the error to the + # user + self.hub.broadcast(SnackbarMessage( + f"failed to calculate line analysis statistics: {e}", sender=self, + color="warning")) + self.update_results(None) + return # When flux is equivalent to Jy, lineflux result should be shown in W/m2 if flux_unit.is_equivalent(u.Unit('W/(m2 m)'/u.sr)): final_unit = u.Unit('W/(m2 sr)')