Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
This is a helper function for the above `gaussian_sigma_width()` method.
"""
if regions is not None:
calc_spectrum = extract_region(spectrum, regions)
else:
calc_spectrum = spectrum
if hasattr(spectrum, 'mask') and spectrum.mask is not None:
flux = calc_spectrum.flux[~spectrum.mask]
spectral_axis = calc_spectrum.spectral_axis[~spectrum.mask]
else:
flux = calc_spectrum.flux
spectral_axis = calc_spectrum.spectral_axis
centroid_result = centroid(spectrum, regions)
if flux.ndim > 1:
spectral_axis = np.broadcast_to(spectral_axis, flux.shape, subok=True)
centroid_result = centroid_result[:, np.newaxis]
dx = (spectral_axis - centroid_result)
sigma = np.sqrt(np.sum((dx * dx) * flux, axis=-1) / np.sum(flux, axis=-1))
return sigma
'mean': lambda s: centroid(s, region=None),
'stddev': lambda s: gaussian_sigma_width(s)
def compute_stats(spectrum):
"""
Compute basic statistics for a spectral region.
Parameters
----------
spectrum : `~specutils.spectra.spectrum1d.Spectrum1D`
region: `~specutils.utils.SpectralRegion`
"""
try:
cent = centroid(spectrum, region=None) # we may want to adjust this for continuum subtraction
except Exception as e:
logging.debug(e)
cent = "Error"
try:
snr_val = snr(spectrum)
except Exception as e:
logging.debug(e)
snr_val = "N/A"
try:
fwhm_val = fwhm(spectrum)
except Exception as e:
logging.debug(e)
fwhm_val = "Error"