Exemplo n.º 1
0
def test_prjprm_init():
    # test PyPrjprm_cnew
    assert wcs.WCS().wcs.cel.prj

    # test PyPrjprm_new
    assert wcs.Prjprm()

    with pytest.raises(wcs.InvalidPrjParametersError):
        prj = wcs.Prjprm()
        prj.set()

    # test deletion does not crash
    prj = wcs.Prjprm()
    del prj
Exemplo n.º 2
0
def test_prjprm_copy():
    # shallow copy
    prj = wcs.Prjprm()
    prj2 = copy(prj)
    prj3 = copy(prj2)
    prj.pv = [0, 6, 8, 18, 3]
    assert (np.allclose(prj.pv, prj2.pv, atol=1e-12, rtol=0)
            and np.allclose(prj.pv, prj3.pv, atol=1e-12, rtol=0))
    del prj, prj2, prj3

    # deep copy
    prj = wcs.Prjprm()
    prj2 = deepcopy(prj)
    prj.pv = [0, 6, 8, 18, 3]
    assert not np.allclose(prj.pv, prj2.pv, atol=1e-12, rtol=0)
    del prj, prj2
Exemplo n.º 3
0
def test_prjprm_pvrange():
    prj = wcs.Prjprm()
    prj.code = 'ZPN'
    prj.phi0 = 2.0
    prj.theta0 = 4.0
    prj.pv = [0.0, 1.0, 2.0, 3.0]
    prj.set()
    assert prj.pvrange == wcs.PRJ_PVN

    prj.code = 'SZP'
    prj.set()
    assert prj.pvrange == 103
Exemplo n.º 4
0
def test_prjprm_pv():
    prj = wcs.Prjprm()

    assert prj.pv.size == wcs.PRJ_PVN

    assert prj.theta0 == None
    assert prj._flag == 0

    prj.code = 'ZPN'
    prj.phi0 = 2.0
    prj.theta0 = 4.0
    pv = [float(i) if (i % 2) else i for i in range(wcs.PRJ_PVN)]
    prj.pv = pv
    prj.set()
    assert prj.phi0 == 2.0
    assert prj.theta0 == 4.0
    assert np.allclose(prj.pv, pv, atol=1e-6, rtol=0)

    # test the same with numpy.ndarray (flag not cleared for same values):
    prj.pv = prj.pv
    assert prj._flag != 0
    prj.set()
    assert np.allclose(prj.pv, pv, atol=1e-6, rtol=0)

    # test the same but modify PV values to check that flag is cleared:
    prj.pv = np.array(pv) + 2e-7
    assert prj._flag == 0
    prj.set()
    assert np.allclose(prj.pv, pv, atol=1e-6, rtol=0)

    # check that None in pv list leave value unchanged and values not set
    # by the list are left unchanged:
    prj.code = 'SZP'
    prj.pv = [0.0, 99.0, None]
    assert np.allclose(prj.pv[:4], [0.0, 99.0, 2.0, 3.0], atol=1e-6, rtol=0)

    # check that None resets PV to uninitialized (before prjset()) values:
    prj.pv = None
    assert prj.pv[0] == 0.0
    assert np.all(np.isnan(prj.pv[1:4]))
    assert np.allclose(prj.pv[5:], 0, atol=0, rtol=0)

    # check we can set all PVs to nan:
    nan_pvs = wcs.PRJ_PVN * [np.nan]
    prj.code = 'TAN'
    prj.pv = nan_pvs  # set using a list
    prj.set()
    assert np.all(np.isnan(prj.pv))
    prj.pv = np.array(nan_pvs)  # set using a numpy.ndarray
    prj.set()
    assert np.all(np.isnan(prj.pv))
Exemplo n.º 5
0
def test_prjprm_prj_roundtrips(prj_TAB):
    # some random values:
    x = [-0.002, 0.014, -0.003, 0.015, -0.047, -0.029, -0.042, 0.027, 0.021]
    y = [0.022, -0.017, -0.048, -0.049, -0.043, 0.015, 0.046, 0.031, 0.011]

    xr, yr = prj_TAB.prjs2x(*prj_TAB.prjx2s(x, y))
    assert np.allclose(x, xr, atol=1e-12, rtol=0)
    assert np.allclose(y, yr, atol=1e-12, rtol=0)

    # same test for a Prjprm that was not previously explicitly "set":
    prj = wcs.Prjprm()
    prj.code = 'TAN'
    xr, yr = prj.prjs2x(*prj.prjx2s(x, y))
    assert np.allclose(x, xr, atol=1e-12, rtol=0)
    assert np.allclose(y, yr, atol=1e-12, rtol=0)
Exemplo n.º 6
0
def test_prjprm_code():
    prj = wcs.Prjprm()

    assert prj.code == '   '
    assert prj._flag == 0

    prj.code = 'TAN'
    prj.set()
    assert prj.code == 'TAN'
    assert prj._flag

    prj.code = 'TAN'
    assert prj._flag

    prj.code = None
    assert prj.code == '   '
    assert prj._flag == 0
Exemplo n.º 7
0
def test_prjprm_phi0():
    prj = wcs.Prjprm()

    assert prj.phi0 == None
    assert prj._flag == 0

    prj.code = 'TAN'
    prj.phi0 = 2.0
    prj.set()
    assert prj.phi0 == 0

    prj.phi0 = 0.0
    assert prj._flag

    prj.phi0 = 2.0
    assert prj._flag == 0

    prj.phi0 = None
    assert prj.phi0 == None
    assert prj._flag == 0
Exemplo n.º 8
0
def test_prjprm_theta0():
    prj = wcs.Prjprm()

    assert prj.theta0 == None
    assert prj._flag == 0

    prj.code = 'TAN'
    prj.phi0 = 2.0
    prj.theta0 = 4.0
    prj.set()
    assert prj.theta0 == 4.0

    prj.theta0 = 4.0
    assert prj._flag

    prj.theta0 = 8.0
    assert prj._flag == 0

    prj.theta0 = None
    assert prj.theta0 == None
    assert prj._flag == 0
Exemplo n.º 9
0
def test_prjprm_flag():
    prj = wcs.Prjprm()
    assert prj._flag == 0
Exemplo n.º 10
0
def prj_TAB():
    prj = wcs.Prjprm()
    prj.code = 'TAN'
    prj.set()
    return prj
Exemplo n.º 11
0
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self._prj = wcs.Prjprm()