From c3a772bea49965d43df18caad0273781fe9ee245 Mon Sep 17 00:00:00 2001 From: Ricky O'Steen Date: Mon, 8 Jan 2024 16:50:27 -0500 Subject: [PATCH] Allow template correlation for spectrum with no uncertainty --- specutils/analysis/correlation.py | 10 +++++++--- specutils/tests/test_correlation.py | 11 +++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/specutils/analysis/correlation.py b/specutils/analysis/correlation.py index 434fa9825..cc1e068c7 100644 --- a/specutils/analysis/correlation.py +++ b/specutils/analysis/correlation.py @@ -253,8 +253,12 @@ def _normalize(observed_spectrum, template_spectrum): A float which will normalize the template spectrum's flux so that it can be compared to the observed spectrum. """ - unc = observed_spectrum.uncertainty.represent_as(StdDevUncertainty) - num = np.nansum((observed_spectrum.flux*template_spectrum.flux)/(unc.array**2)) - denom = np.nansum((template_spectrum.flux/unc.array)**2) + if hasattr(observed_spectrum, "uncertainty") and observed_spectrum.uncertainty is not None: + unc = observed_spectrum.uncertainty.represent_as(StdDevUncertainty) + num = np.nansum((observed_spectrum.flux*template_spectrum.flux)/(unc.array**2)) + denom = np.nansum((template_spectrum.flux/unc.array)**2) + else: + num = np.nansum(observed_spectrum.flux*template_spectrum.flux) + denom = np.nansum(template_spectrum.flux**2) return num/denom diff --git a/specutils/tests/test_correlation.py b/specutils/tests/test_correlation.py index 910679de3..42c671ea9 100644 --- a/specutils/tests/test_correlation.py +++ b/specutils/tests/test_correlation.py @@ -50,6 +50,17 @@ def test_autocorrelation(): maximum = np.argmax(corr) assert maximum == midpoint + # Test that this works without uncertainty + spec1 = Spectrum1D(spectral_axis=spec_axis, + flux=flux1, + velocity_convention='optical', + rest_value=5020.*u.AA) + + corr, lag = correlation.template_correlate(spec1, spec2) + + assert corr.unit == u.dimensionless_unscaled + assert lag.unit == u.km / u.s + def test_correlation(): """