Пример #1
0
def test_arithmetic_errors(cube):
    cube = generate_cube()
    image1 = generate_image(wcs=cube.wcs)
    image1.wcs.set_crval1(10)
    with pytest.raises(ValueError):
        cube2 = image1 + cube

    spectrum1 = generate_spectrum(wave=cube.wave)
    spectrum1.wave.set_crval(25)
    with pytest.raises(ValueError):
        cube2 = spectrum1 + cube

    spectrum1 = generate_spectrum(wave=cube.wave)
    spectrum1.wave.shape = 12
    with pytest.raises(ValueError):
        cube2 = spectrum1 + cube
Пример #2
0
def test_arithmetic():
    """Cube class: tests arithmetic functions"""
    cube1 = generate_cube(uwave=u.nm)
    image1 = generate_image(wcs=cube1.wcs, unit=2 * u.ct)
    spectrum1 = generate_spectrum(data=2.3, cdelt=30.0, crval=5)
    cube2 = image1 + cube1

    for op in (add, sub, mul, div):
        cube3 = op(cube1, cube2)
        assert_almost_equal(cube3.data, op(cube1.data, cube2.data))

    # with spectrum
    sp1 = spectrum1.data[:, np.newaxis, np.newaxis]
    for op in (add, sub, mul, div):
        cube3 = op(cube1, spectrum1)
        assert_almost_equal(cube3.data, op(cube1.data, sp1))

    # with image
    im1 = image1.data.data[np.newaxis, :, :] * image1.unit
    for op in (add, sub, mul, div):
        cube3 = op(cube1, image1)
        assert_almost_equal(
            cube3._data,
            op(cube1._data * cube1.unit, im1).to(cube3.unit).value)

    cube2 = cube1 / 25.3
    assert_almost_equal(cube2.data, cube1.data / 25.3)
Пример #3
0
def test_get_item():
    """Spectrum class: testing __getitem__"""
    # Set the shape and contents of the spectrum's data array.
    shape = (5, )
    data = np.arange(shape[0])

    # Create a test spectrum with the above data array.
    s = generate_spectrum(data=data,
                          shape=shape,
                          wave=WaveCoord(crval=1, cunit=u.angstrom))
    s.primary_header['KEY'] = 'primary value'
    s.data_header['KEY'] = 'data value'

    # Select the whole spectrum.
    r = s[:]
    assert_array_equal(r.shape, s.shape)
    assert_allclose(r.data, s.data)
    assert r.primary_header['KEY'] == s.primary_header['KEY']
    assert r.data_header['KEY'] == s.data_header['KEY']
    assert isinstance(r, Spectrum)
    assert r.wcs is None
    assert r.wave.isEqual(s.wave)

    # Select a sub-spectrum.
    r = s[1:3]
    assert_array_equal(r.shape, (2))
    assert_allclose(r.data, s.data[1:3])
    assert r.primary_header['KEY'] == s.primary_header['KEY']
    assert r.data_header['KEY'] == s.data_header['KEY']
    assert isinstance(r, Spectrum)
    assert r.wave.isEqual(s.wave[1:3])
    assert r.wcs is None

    # Select a single pixel of the spectrum.
    r = s[2]
    assert np.isscalar(r)
    assert_allclose(r, s.data[2])