Exemplo n.º 1
0
def create_reference_files(datamodel):
    refs = {}
    step = AssignWcsStep()
    for reftype in AssignWcsStep.reference_file_types:
        refs[reftype] = step.get_reference_file(datamodel, reftype)

    return refs
Exemplo n.º 2
0
def test_miri_mrs_1A():
    #ref = {}
    ref = {
        'distortion': '',
        'regions': '',
        'specwcs': '',
        'v2v3': '',
        'wavelengthrange': ''
    }
    im = ImageModel()
    im.meta.instrument.name = 'MIRI'
    im.meta.instrument.detector = 'MIRIFUSHORT'
    im.meta.instrument.channel = '12'
    im.meta.instrument.band = 'SHORT'
    im.meta.exposure.type = 'MIR_MRS'
    step = AssignWcsStep()
    for reftype in refs:
        ref[reftype] = step.get_reference_file(im, reftype)

    pipeline = miri.create_pipeline(im, ref)
    wcsobj = wcs.WCS(pipeline)

    for ch in im.meta.instrument.channel:
        ref_data = mrs_ref_data[ch + band_mapping[im.meta.instrument.band]]
        #ref_data = mrs_ref_data[im.meta.instrument.channel + band_mapping[im.meta.instrument.band]]
        #x = np.trunc(ref_data['x']).astype(np.int)
        #y = np.trunc(ref_data['y']).astype(np.int)
        for i, s in enumerate(ref_data['s']):
            sl = int(ch) * 100 + s
            detector_to_alpha_beta = wcsobj.get_transform(
                'detector', 'alpha_beta')
            alpha, beta, lam = detector_to_alpha_beta.set_input(sl)(
                ref_data['x'][i], ref_data['y'][i])
            ##xan, yan, lam = wcsobj.forward_transform.set_input(sl)(ref_data['x'][i], ref_data['y'][i])
            utils.assert_allclose(alpha, ref_data['alpha'][i], atol=10**-5)
            utils.assert_allclose(beta, ref_data['beta'][i], atol=10**-5)
            utils.assert_allclose(lam, ref_data['lam'][i], atol=10**-5)
            detector_to_xan_yan = wcsobj.get_transform('detector', 'Xan_Yan')
            xan, yan, lam = wcsobj(ref_data['x'], ref_data['y'])
            utils.assert_allclose(xan, ref_data['v2'][i], atol=10**-5)
            utils.assert_allclose(yan, ref_data['v3'][i], atol=10**-5)
            utils.assert_allclose(lam, ref_data['lam'][i], atol=10**-5)
Exemplo n.º 3
0
def test_miri_mrs_1C():
    ref = {}

    im = ImageModel()
    im.meta.instrument.name = 'MIRI'
    im.meta.instrument.detector = 'MIRIFUSHORT'
    im.meta.instrument.channel = '12'
    im.meta.instrument.band = 'LONG'
    im.meta.exposure.type = 'MIR_MRS'
    step = AssignWcsStep()
    for reftype in refs:
        ref[reftype] = step.get_reference_file(im, reftype)

    pipeline = miri.create_pipeline(im, ref)
    wcsobj = wcs.WCS(pipeline)

    for ch in im.meta.instrument.channel:
        ref_data = mrs_ref_data[ch + band_mapping[im.meta.instrument.band]]
    for i, s in enumerate(ref_data['s']):
        sl = int(ch) * 100 + s
        xan, yan, lam = wcsobj.forward_transform.set_input(sl)(
            ref_data['x'][i], ref_data['y'][i])
        utils.assert_allclose(xan, ref_data['v2'][i], atol=10**-5)
        utils.assert_allclose(yan, ref_data['v3'][i], atol=10**-5)
        utils.assert_allclose(lam, ref_data['lam'][i], atol=10**-5)
    for i, s in enumerate(ref_data['s']):
        sl = int(ch) * 100 + s
        xan, yan, lam = wcsobj.forward_transform(ref_data['x'][i],
                                                 ref_data['y'][i])
        utils.assert_allclose(xan, ref_data['v2'][i], atol=10**-5)
        utils.assert_allclose(yan, ref_data['v3'][i], atol=10**-5)
        utils.assert_allclose(lam, ref_data['lam'][i], atol=10**-5)
        xin, yin = wcsobj.backward_transform(ref_data['v2'][i],
                                             ref_data['v3'][i],
                                             ref_data['lam'][i])
        utils.assert_allclose(xin, ref_data['x'][i], atol=10**-5)
        utils.assert_allclose(y, ref_data['y'][i], atol=10**-5)
Exemplo n.º 4
0
def test_flag():
    wcsinfo = {
        'dec_ref': -0.00601415671349804,
        'ra_ref': -0.02073605215697509,
        'roll_ref': -0.0,
        'v2_ref': -453.5134,
        'v3_ref': -373.4826,
        'v3yangle': 0.0,
        'vparity': -1}

    instrument = {
        'detector': 'NRS1',
        'filter': 'F100LP',
        'grating': 'G140M',
        'name': 'NIRSPEC',
        'gwa_tilt': 37.0610,
        'gwa_xtilt': 0.0001,
        'gwa_ytilt': 0.0001,
        'msa_metadata_id':12}

    observation = {
        'date': '2016-09-05',
        'time': '8:59:37'}

    exposure = {
        'duration': 11.805952,
        'end_time': 58119.85416,
        'exposure_time': 11.776,
        'frame_time': 0.11776,
        'group_time': 0.11776,
        'groupgap': 0,
        'integration_time': 11.776,
        'nframes': 1,
        'ngroups': 100,
        'nints': 1,
        'nresets_between_ints': 0,
        'nsamples': 1,
        'readpatt': 'NRSRAPID',
        'sample_time': 10.0,
        'start_time': 58119.8333,
        'type': 'NRS_MSASPEC',
        'zero_frame': False}

    im = ImageModel()
    im.data = np.random.rand(2048, 2048)
    im.error = np.random.rand(2048, 2048)
    im.dq = np.zeros((2048, 2048))

    im.meta.wcsinfo._instance.update(wcsinfo)
    im.meta.instrument._instance.update(instrument)
    im.meta.observation._instance.update(observation)
    im.meta.exposure._instance.update(exposure)

    metafl = get_file_path('msa_configuration.fits')
    im.meta.instrument.msa_metadata_file = metafl
    im.meta.dither.position_number = 1

    step = AssignWcsStep()
    msa_oper = step.get_reference_file(im, 'msaoper')

    im = step.call(im)

    wcs_ref_files = create_reference_filename_dictionary(im)

    failed_slitlets = create_slitlets(im, msa_oper)

    result = flag(im, failed_slitlets, wcs_ref_files)

    msa_open_dq = 536870912

    # Get all dqflags that are nonzero
    nonzero = np.nonzero(result.dq)

    # Make sure that all nonzero dqs are equal to the msa_open_dq
    assert (all(x == msa_open_dq for x in result.dq[nonzero]))