diff --git a/ccdproc/ccdproc.py b/ccdproc/ccdproc.py index 3ed62427..aa08cadc 100644 --- a/ccdproc/ccdproc.py +++ b/ccdproc/ccdproc.py @@ -64,13 +64,14 @@ def create_variance(ccd_data, gain=None, readnoise=None): # Need to convert Quantity to plain number because NDData data is not # a Quantity. All unit checking should happen prior to this point. - gain_value = gain / gain.unit - readnoise_value = readnoise / readnoise.unit + gain_value = float(gain / gain.unit) + readnoise_value = float(readnoise / readnoise.unit) var = (gain_value * ccd_data.data + readnoise_value ** 2) ** 0.5 ccd = ccd_data.copy() # ensure variance and image data have same unit - ccd.uncertainty = StdDevUncertainty(var / gain_value) + var /= gain_value + ccd.uncertainty = StdDevUncertainty(var) return ccd diff --git a/ccdproc/tests/test_ccdproc.py b/ccdproc/tests/test_ccdproc.py index de3546b6..316f02af 100644 --- a/ccdproc/tests/test_ccdproc.py +++ b/ccdproc/tests/test_ccdproc.py @@ -48,6 +48,9 @@ def test_create_variance(ccd_data, u_image, u_gain, u_readnoise, np.testing.assert_array_equal(ccd_var.uncertainty.array, expected_var) assert ccd_var.unit == ccd_data.unit + # uncertainty should *not* have any units -- does it? + with pytest.raises(AttributeError): + ccd_var.uncertainty.array.unit else: with pytest.raises(u.UnitsError): ccd_var = create_variance(ccd_data, gain=gain, readnoise=readnoise)