Example #1
0
def test_coord_type_from_ctype():

    wcs = WCS(naxis=2)
    wcs.wcs.ctype = ['GLON-TAN', 'GLAT-TAN']
    wcs.wcs.crpix = [256.0] * 2
    wcs.wcs.cdelt = [-0.05] * 2
    wcs.wcs.crval = [50.0] * 2
    wcs.wcs.set()

    _, coord_meta = transform_coord_meta_from_wcs(wcs, RectangularFrame)

    assert coord_meta['type'] == ['longitude', 'latitude']
    assert coord_meta['format_unit'] == [u.deg, u.deg]
    assert coord_meta['wrap'] == [None, None]

    wcs = WCS(naxis=2)
    wcs.wcs.ctype = ['HPLN-TAN', 'HPLT-TAN']
    wcs.wcs.crpix = [256.0] * 2
    wcs.wcs.cdelt = [-0.05] * 2
    wcs.wcs.crval = [50.0] * 2
    wcs.wcs.set()

    _, coord_meta = transform_coord_meta_from_wcs(wcs, RectangularFrame)

    assert coord_meta['type'] == ['longitude', 'latitude']
    assert coord_meta['format_unit'] == [u.arcsec, u.arcsec]
    assert coord_meta['wrap'] == [180., None]

    wcs = WCS(naxis=2)
    wcs.wcs.ctype = ['RA---TAN', 'DEC--TAN']
    wcs.wcs.crpix = [256.0] * 2
    wcs.wcs.cdelt = [-0.05] * 2
    wcs.wcs.crval = [50.0] * 2
    wcs.wcs.set()

    _, coord_meta = transform_coord_meta_from_wcs(wcs, RectangularFrame)

    assert coord_meta['type'] == ['longitude', 'latitude']
    assert coord_meta['format_unit'] == [u.hourangle, u.deg]
    assert coord_meta['wrap'] == [None, None]

    wcs = WCS(naxis=2)
    wcs.wcs.ctype = ['spam', 'spam']
    wcs.wcs.crpix = [256.0] * 2
    wcs.wcs.cdelt = [-0.05] * 2
    wcs.wcs.crval = [50.0] * 2
    wcs.wcs.set()

    _, coord_meta = transform_coord_meta_from_wcs(wcs, RectangularFrame)

    assert coord_meta['type'] == ['scalar', 'scalar']
    assert coord_meta['format_unit'] == [u.one, u.one]
    assert coord_meta['wrap'] == [None, None]
Example #2
0
def test_sliced_ND_input(sub_wcs, wcs_slice):
    slices_wcsaxes = [0, 'x', 'y']

    with warnings.catch_warnings():
        warnings.filterwarnings('ignore', category=FutureWarning)
        _, coord_meta = transform_coord_meta_from_wcs(sub_wcs,
                                                      RectangularFrame,
                                                      slices=slices_wcsaxes)

    assert all(len(x) == 3 for x in coord_meta.values())

    coord_meta['name'] = [
        'time', 'custom:pos.helioprojective.lat',
        'custom:pos.helioprojective.lon'
    ]
    coord_meta['type'] = ['scalar', 'latitude', 'longitude']
    coord_meta['wrap'] = [None, None, 180.0]
    coord_meta['unit'] = [u.Unit("min"), u.Unit("deg"), u.Unit("deg")]
    coord_meta['visible'] = [False, True, True]
    coord_meta['format_unit'] = [
        u.Unit("min"), u.Unit("arcsec"),
        u.Unit("arcsec")
    ]
    coord_meta['default_axislabel_position'] = ['', 'b', 't']
    coord_meta['default_ticklabel_position'] = ['', 'b', 't']
    coord_meta['default_ticks_position'] = ['', 'btlr', 'btlr']

    with warnings.catch_warnings():
        warnings.filterwarnings('ignore', category=FutureWarning)
        # Validate the axes initialize correctly
        ax = plt.subplot(projection=sub_wcs, slices=slices_wcsaxes)
Example #3
0
def test_coord_meta_wcsapi():
    wcs = LowLevelWCS5D()
    wcs.pixel_dim = 5
    _, coord_meta = transform_coord_meta_from_wcs(wcs,
                                                  RectangularFrame,
                                                  slices=[0, 0, 'x', 'y', 0])

    assert coord_meta['name'] == [('em.freq', 'Frequency'), 'time',
                                  ('pos.eq.ra', 'RA'), ('pos.eq.dec', 'DEC'),
                                  'phys.polarization.stokes']
    assert coord_meta['type'] == [
        'scalar', 'scalar', 'longitude', 'latitude', 'scalar'
    ]
    assert coord_meta['wrap'] == [None, None, None, None, None]
    assert coord_meta['unit'] == [
        u.Unit("Hz"),
        u.Unit("d"),
        u.Unit("deg"),
        u.Unit("deg"), u.one
    ]
    assert coord_meta['visible'] == [True, True, True, True, True]
    assert coord_meta['format_unit'] == [
        u.Unit("Hz"),
        u.Unit("d"),
        u.Unit("hourangle"),
        u.Unit("deg"), u.one
    ]
    assert coord_meta['default_axislabel_position'] == ['b', 'l', 't', 'r', '']
    assert coord_meta['default_ticklabel_position'] == ['b', 'l', 't', 'r', '']
    assert coord_meta['default_ticks_position'] == ['b', 'l', 't', 'r', '']
    assert coord_meta['default_axis_label'] == [
        'Frequency', 'time', 'RA', 'DEC', 'phys.polarization.stokes'
    ]
Example #4
0
def test_sliced_ND_input(wcs_4d, sub_wcs, wcs_slice, plt_close):
    slices_wcsaxes = [0, 'x', 'y']

    for sub_wcs in (sub_wcs, SlicedLowLevelWCS(wcs_4d, wcs_slice)):
        with warnings.catch_warnings():
            warnings.filterwarnings('ignore', category=FutureWarning)
            _, coord_meta = transform_coord_meta_from_wcs(sub_wcs, RectangularFrame, slices=slices_wcsaxes)

        assert all(len(x) == 3 for x in coord_meta.values())

        assert coord_meta['name'] == ['time',
                                      ('custom:pos.helioprojective.lat', 'hplt-tan', 'hplt'),
                                      ('custom:pos.helioprojective.lon', 'hpln-tan', 'hpln')]
        assert coord_meta['type'] == ['scalar', 'latitude', 'longitude']
        assert coord_meta['wrap'] == [None, None, 180.0]
        assert coord_meta['unit'] == [u.Unit("min"), u.Unit("deg"), u.Unit("deg")]
        assert coord_meta['visible'] == [False, True, True]
        assert coord_meta['format_unit'] == [u.Unit("min"), u.Unit("arcsec"), u.Unit("arcsec")]
        assert coord_meta['default_axislabel_position'] == ['', 'b', 'l']
        assert coord_meta['default_ticklabel_position'] == ['', 'b', 'l']
        assert coord_meta['default_ticks_position'] == ['', 'bltr', 'bltr']

        # Validate the axes initialize correctly
        plt.clf()
        plt.subplot(projection=sub_wcs, slices=slices_wcsaxes)
Example #5
0
def test_coord_meta_4d(wcs_4d):

    _, coord_meta = transform_coord_meta_from_wcs(wcs_4d, RectangularFrame, slices=(0, 0, 'x', 'y'))

    axislabel_position = coord_meta['default_axislabel_position']
    ticklabel_position = coord_meta['default_ticklabel_position']
    ticks_position = coord_meta['default_ticks_position']

    assert axislabel_position == ['', '', 'b', 'l']
    assert ticklabel_position == ['', '', 'b', 'l']
    assert ticks_position == ['', '', 'bltr', 'bltr']
Example #6
0
def test_coord_meta_4d_line_plot(wcs_4d):

    _, coord_meta = transform_coord_meta_from_wcs(wcs_4d, RectangularFrame1D, slices=(0, 0, 0, 'x'))

    axislabel_position = coord_meta['default_axislabel_position']
    ticklabel_position = coord_meta['default_ticklabel_position']
    ticks_position = coord_meta['default_ticks_position']

    # These axes are swapped due to the pixel derivatives
    assert axislabel_position == ['', '', 't', 'b']
    assert ticklabel_position == ['', '', 't', 'b']
    assert ticks_position == ['', '', 't', 'b']
Example #7
0
def test_coord_type_1d_1d_wcs():
    wcs = WCS(naxis=1)
    wcs.wcs.ctype = ['WAVE']
    wcs.wcs.crpix = [256.0]
    wcs.wcs.cdelt = [-0.05]
    wcs.wcs.crval = [50.0]
    wcs.wcs.set()

    _, coord_meta = transform_coord_meta_from_wcs(wcs, RectangularFrame1D)

    assert coord_meta['type'] == ['scalar']
    assert coord_meta['format_unit'] == [u.m]
    assert coord_meta['wrap'] == [None]
Example #8
0
def test_coord_meta_4d(wcs_4d):
    with warnings.catch_warnings():
        warnings.filterwarnings('ignore', category=FutureWarning)
        _, coord_meta = transform_coord_meta_from_wcs(wcs_4d,
                                                      RectangularFrame,
                                                      slices=(0, 0, 'x', 'y'))

    axislabel_position = coord_meta['default_axislabel_position']
    ticklabel_position = coord_meta['default_ticklabel_position']
    ticks_position = coord_meta['default_ticks_position']

    assert axislabel_position == ['', '', 'b', 'l']
    assert ticklabel_position == ['', '', 'b', 'l']
    assert ticks_position == ['', '', 'bltr', 'bltr']
Example #9
0
def test_coord_type_1d_2d_wcs_correlated():
    wcs = WCS(naxis=2)
    wcs.wcs.ctype = ['GLON-TAN', 'GLAT-TAN']
    wcs.wcs.crpix = [256.0] * 2
    wcs.wcs.cdelt = [-0.05] * 2
    wcs.wcs.crval = [50.0] * 2
    wcs.wcs.set()

    _, coord_meta = transform_coord_meta_from_wcs(wcs, RectangularFrame1D, slices=('x', 0))

    assert coord_meta['type'] == ['longitude', 'latitude']
    assert coord_meta['format_unit'] == [u.deg, u.deg]
    assert coord_meta['wrap'] == [None, None]
    assert coord_meta['visible'] == [True, True]
Example #10
0
def test_coord_meta_4d_line_plot(wcs_4d):
    with warnings.catch_warnings():
        warnings.filterwarnings('ignore', category=FutureWarning)
        _, coord_meta = transform_coord_meta_from_wcs(wcs_4d,
                                                      RectangularFrame1D,
                                                      slices=(0, 0, 0, 'x'))

    axislabel_position = coord_meta['default_axislabel_position']
    ticklabel_position = coord_meta['default_ticklabel_position']
    ticks_position = coord_meta['default_ticks_position']

    # These axes are swapped due to the pixel derivatives
    assert axislabel_position == ['', '', 't', 'b']
    assert ticklabel_position == ['', '', 't', 'b']
    assert ticks_position == ['', '', 't', 'b']
Example #11
0
def test_coord_type_1d_2d_wcs_uncorrelated():
    wcs = WCS(naxis=2)
    wcs.wcs.ctype = ['WAVE', 'UTC']
    wcs.wcs.crpix = [256.0] * 2
    wcs.wcs.cdelt = [-0.05] * 2
    wcs.wcs.crval = [50.0] * 2
    wcs.wcs.cunit = ['nm', 's']
    wcs.wcs.set()

    _, coord_meta = transform_coord_meta_from_wcs(wcs, RectangularFrame1D, slices=('x', 0))

    assert coord_meta['type'] == ['scalar', 'scalar']
    assert coord_meta['format_unit'] == [u.m, u.s]
    assert coord_meta['wrap'] == [None, None]
    assert coord_meta['visible'] == [True, False]
Example #12
0
def test_coord_type_1d_2d_wcs_uncorrelated():
    wcs = WCS(naxis=2)
    wcs.wcs.ctype = ['WAVE', 'TIME']
    wcs.wcs.crpix = [256.0] * 2
    wcs.wcs.cdelt = [-0.05] * 2
    wcs.wcs.crval = [50.0] * 2
    wcs.wcs.cunit = ['nm', 's']
    wcs.wcs.set()

    with warnings.catch_warnings():
        warnings.filterwarnings('ignore', category=FutureWarning)
        _, coord_meta = transform_coord_meta_from_wcs(wcs,
                                                      RectangularFrame1D,
                                                      slices=('x', 0))

    assert coord_meta['type'] == ['scalar', 'scalar']
    assert coord_meta['format_unit'] == [u.m, u.s]
    assert coord_meta['wrap'] == [None, None]
    assert coord_meta['visible'] == [True, False]
Example #13
0
def test_coord_type_from_ctype(cube_wcs):

    _, coord_meta = transform_coord_meta_from_wcs(cube_wcs,
                                                  RectangularFrame,
                                                  slices=(50, 'y', 'x'))

    axislabel_position = coord_meta['default_axislabel_position']
    ticklabel_position = coord_meta['default_ticklabel_position']
    ticks_position = coord_meta['default_ticks_position']

    # These axes are swapped due to the pixel derivatives
    assert axislabel_position == ['l', 'r', 'b']
    assert ticklabel_position == ['l', 'r', 'b']
    assert ticks_position == ['l', 'r', 'b']

    wcs = WCS(naxis=2)
    wcs.wcs.ctype = ['GLON-TAN', 'GLAT-TAN']
    wcs.wcs.crpix = [256.0] * 2
    wcs.wcs.cdelt = [-0.05] * 2
    wcs.wcs.crval = [50.0] * 2
    wcs.wcs.set()

    _, coord_meta = transform_coord_meta_from_wcs(wcs, RectangularFrame)

    assert coord_meta['type'] == ['longitude', 'latitude']
    assert coord_meta['format_unit'] == [u.deg, u.deg]
    assert coord_meta['wrap'] == [None, None]

    wcs = WCS(naxis=2)
    wcs.wcs.ctype = ['HPLN-TAN', 'HPLT-TAN']
    wcs.wcs.crpix = [256.0] * 2
    wcs.wcs.cdelt = [-0.05] * 2
    wcs.wcs.crval = [50.0] * 2
    wcs.wcs.set()

    _, coord_meta = transform_coord_meta_from_wcs(wcs, RectangularFrame)

    assert coord_meta['type'] == ['longitude', 'latitude']
    assert coord_meta['format_unit'] == [u.arcsec, u.arcsec]
    assert coord_meta['wrap'] == [180., None]

    _, coord_meta = transform_coord_meta_from_wcs(wcs,
                                                  RectangularFrame,
                                                  slices=('y', 'x'))

    axislabel_position = coord_meta['default_axislabel_position']
    ticklabel_position = coord_meta['default_ticklabel_position']
    ticks_position = coord_meta['default_ticks_position']

    # These axes should be swapped because of slices
    assert axislabel_position == ['l', 'b']
    assert ticklabel_position == ['l', 'b']
    assert ticks_position == ['bltr', 'bltr']

    wcs = WCS(naxis=2)
    wcs.wcs.ctype = ['HGLN-TAN', 'HGLT-TAN']
    wcs.wcs.crpix = [256.0] * 2
    wcs.wcs.cdelt = [-0.05] * 2
    wcs.wcs.crval = [50.0] * 2
    wcs.wcs.set()

    _, coord_meta = transform_coord_meta_from_wcs(wcs, RectangularFrame)

    assert coord_meta['type'] == ['longitude', 'latitude']
    assert coord_meta['format_unit'] == [u.arcsec, u.arcsec]
    assert coord_meta['wrap'] == [180., None]

    wcs = WCS(naxis=2)
    wcs.wcs.ctype = ['CRLN-TAN', 'CRLT-TAN']
    wcs.wcs.crpix = [256.0] * 2
    wcs.wcs.cdelt = [-0.05] * 2
    wcs.wcs.crval = [50.0] * 2
    wcs.wcs.set()

    _, coord_meta = transform_coord_meta_from_wcs(wcs, RectangularFrame)

    assert coord_meta['type'] == ['longitude', 'latitude']
    assert coord_meta['format_unit'] == [u.arcsec, u.arcsec]
    assert coord_meta['wrap'] == [360., None]

    wcs = WCS(naxis=2)
    wcs.wcs.ctype = ['RA---TAN', 'DEC--TAN']
    wcs.wcs.crpix = [256.0] * 2
    wcs.wcs.cdelt = [-0.05] * 2
    wcs.wcs.crval = [50.0] * 2
    wcs.wcs.set()

    _, coord_meta = transform_coord_meta_from_wcs(wcs, RectangularFrame)

    assert coord_meta['type'] == ['longitude', 'latitude']
    assert coord_meta['format_unit'] == [u.hourangle, u.deg]
    assert coord_meta['wrap'] == [None, None]

    wcs = WCS(naxis=2)
    wcs.wcs.ctype = ['spam', 'spam']
    wcs.wcs.crpix = [256.0] * 2
    wcs.wcs.cdelt = [-0.05] * 2
    wcs.wcs.crval = [50.0] * 2
    wcs.wcs.set()

    _, coord_meta = transform_coord_meta_from_wcs(wcs, RectangularFrame)

    assert coord_meta['type'] == ['scalar', 'scalar']
    assert coord_meta['format_unit'] == [u.one, u.one]
    assert coord_meta['wrap'] == [None, None]