Example #1
0
def test_sub_hsi_from_hsi(make_datasets):
    """ Dark is HSI. Data is HSI. """

    spectrum, spectra, hsi, shape = make_datasets
    data = 1 * hsi
    dark = 1 * hsi

    subdark = SubtractDark(dark)

    # Calculate
    meaner = data.mean()
    out = subdark.calculate(data)
    assert meaner == data.mean()
    assert out.mean() != data.mean()
    assert out.size == data.size

    # * Even though the data and dark have same dimensions, the dark is averaged
    np.testing.assert_array_almost_equal(
        out, data - dark.mean(axis=(0, 1))[None, None, :])

    # Transform
    success = subdark.transform(data)
    np.testing.assert_array_almost_equal(data, out)
    assert meaner != data.mean()
    assert success is True
Example #2
0
def test_sub_spectrum_from_spectra(make_datasets):
    """ Dark is spectrum. Data is spectra. """

    spectrum, spectra, hsi, shape = make_datasets
    data = 1 * spectra
    dark = 1 * spectrum

    subdark = SubtractDark(dark)

    # Calculate
    meaner = data.mean()
    out = subdark.calculate(data)
    assert meaner == data.mean()
    assert out.mean() != data.mean()
    assert out.size == data.size
    np.testing.assert_array_almost_equal(out, data - dark[None, :])

    # Transform
    success = subdark.transform(data)
    np.testing.assert_array_almost_equal(data, out)
    assert meaner != data.mean()
    assert success is True
Example #3
0
def test_transform_incompatible_dtypes(make_datasets):
    """
    Test that TypeError is raised when Dark and Data have incompatible
    dtypes for in-place transformation

    Note: if spectra or hsi is used for dark, will convert to float due to mean
    """

    spectrum, spectra, hsi, shape = make_datasets

    # DOES NOT RAISE ERROR
    data = (1 * hsi).astype(np.int)
    dark = (1 * spectrum).astype(np.int)
    subdark = SubtractDark(dark)
    subdark.transform(data)

    # DOES NOT RAISE ERROR
    data = (1 * hsi).astype(np.float)
    dark = (1 * spectrum).astype(np.int)
    subdark = SubtractDark(dark)
    subdark.transform(data)

    # DOES NOT RAISE ERROR
    data = (1 * hsi).astype(np.complex)
    dark = (1 * spectrum).astype(np.int)
    subdark = SubtractDark(dark)
    subdark.transform(data)

    # DOES RAISE ERROR
    data = (1 * hsi).astype(np.int)
    dark = (1 * spectrum).astype(np.float)
    subdark = SubtractDark(dark)
    with pytest.raises(TypeError):
        subdark.transform(data)

    # DOES NOT RAISE ERROR
    data = (1 * hsi).astype(np.float)
    dark = (1 * spectrum).astype(np.float)
    subdark = SubtractDark(dark)
    subdark.transform(data)

    # DOES NOT RAISE ERROR
    data = (1 * hsi).astype(np.complex)
    dark = (1 * spectrum).astype(np.float)
    subdark = SubtractDark(dark)
    subdark.transform(data)

    # DOES RAISE ERROR
    data = (1 * hsi).astype(np.int)
    dark = (1 * spectrum).astype(np.complex)
    subdark = SubtractDark(dark)
    with pytest.raises(TypeError):
        subdark.transform(data)

    # DOES RAISE ERROR
    data = (1 * hsi).astype(np.float)
    dark = (1 * spectrum).astype(np.complex)
    subdark = SubtractDark(dark)
    with pytest.raises(TypeError):
        subdark.transform(data)

    # DOES NOT RAISE ERROR
    data = (1 * hsi).astype(np.complex)
    dark = (1 * spectrum).astype(np.complex)
    subdark = SubtractDark(dark)
    subdark.transform(data)