示例#1
0
def test_create_shadow():

    d1x1 = rn.random_sample((1001, 101))
    d1x3 = rn.random_sample((1001, 101))
    barshadow_model = datamodels.BarshadowModel(data1x1=d1x1, data1x3=d1x3)
    shutter_elements = bar.create_shutter_elements(barshadow_model)

    shutter_status = "11001x11"

    shadow = bar.create_shadow(shutter_elements, shutter_status)

    # first
    assert np.allclose(shadow[0:500, :], d1x1[0:500, :], atol=1.e-10)
    # open_open
    assert np.allclose(shadow[501:1000, :], d1x3[1:500, :], atol=1.e-10)
    # open_closed
    assert np.allclose(shadow[1001:1500, :], d1x1[501:1000, :], atol=1.e-10)
    # closed_closed
    assert np.allclose(shadow[1501:2000, :], 0.01, atol=1.e-10)
    # closed_open
    assert np.allclose(shadow[2001:2500, :], d1x1[1:500, :], atol=1.e-10)
    # open_open
    assert np.allclose(shadow[2501:3000, :], d1x3[1:500, :], atol=1.e-10)
    # open_open
    assert np.allclose(shadow[3001:3500, :], d1x3[1:500, :], atol=1.e-10)
    # open_open
    assert np.allclose(shadow[3501:4000, :], d1x3[1:500, :], atol=1.e-10)
    # last
    assert np.allclose(shadow[4001:4500, :], d1x1[502:1001, :], atol=1.e-10)
示例#2
0
def test_create_shutter_elements():

    d1x1 = rn.random_sample((1001, 101))
    d1x3 = rn.random_sample((1001, 101))
    barshadow_model = datamodels.BarshadowModel(data1x1=d1x1, data1x3=d1x3)
    shutter_elements = bar.create_shutter_elements(barshadow_model)

    assert np.allclose(shutter_elements['first'], d1x1[:501, :], atol=1.e-10)
    assert np.allclose(shutter_elements['open_open'],
                       d1x3[:501, :],
                       atol=1.e-10)
    assert np.allclose(shutter_elements['open_closed'],
                       d1x1[500:, :],
                       atol=1.e-10)
    assert np.allclose(shutter_elements['closed_open'],
                       d1x1[:501, :],
                       atol=1.e-10)
    assert np.allclose(shutter_elements['closed_closed'],
                       0.01 * np.ones((501, 101), dtype=np.float64),
                       atol=1.e-10)
    assert np.allclose(shutter_elements['last'], d1x1[501:, :], atol=1.e-10)
示例#3
0
def test_interpolate():

    d1x1 = np.arange(101 * 1001, dtype=np.float64) / (101. * 1001. - 1.)
    d1x1 = d1x1.reshape(1001, 101)
    d1x3 = d1x1.copy()
    barshadow_model = datamodels.BarshadowModel(data1x1=d1x1, data1x3=d1x3)
    shutter_elements = bar.create_shutter_elements(barshadow_model)

    shutter_status = "11x101"  # 6 shutters
    # shadow will have shape (7 * 500, 101)     # 7 = len(shutter_status) + 1
    shadow = bar.create_shadow(shutter_elements, shutter_status)

    rows = np.arange(0, 3400 * 100 + 1, 10000, dtype=np.float64) / 100.
    columns = np.arange(0, 3400 * 100 + 1, 10000, dtype=np.float64) / 3400.
    rows = rows.reshape(5, 7)
    columns = columns.reshape(5, 7)

    correction = bar.interpolate(rows, columns, shadow, default=np.nan)

    compare = np.array([[
        0., 0.09993018, 0.19986036, 0.29979054, 0.39972072, 0.24989818,
        0.10007564
    ],
                        [
                            0.20000582, 0.29993599, 0.39986617, 0.25004363,
                            0.10022110, 0.20015128, 0.30008147
                        ],
                        [
                            0.40001165, 0.25018910, 0.10036656, 0.20029673,
                            0.30022691, 0.40015709, 0.50008730
                        ],
                        [
                            0.60001744, 0.69994762, 0.79987779, 0.89980797,
                            0.50023272, 0.10065747, 0.20058765
                        ],
                        [
                            0.30051783, 0.40044801, 0.50087771, 0.60130741,
                            0.70123758, 0.80116777, 0.90109789
                        ]])
    assert np.allclose(correction, compare, atol=1.e-6)