示例#1
0
def test_create_slitlets():
    """Test that slitlets are Slit type and have all the necessary fields"""

    dm = ImageModel()
    dm.meta.instrument.name = 'NIRSPEC'
    dm.meta.observation.date = '2016-09-05'
    dm.meta.observation.time = '8:59:37'
    msa_oper = Step().get_reference_file(dm, 'msaoper')
    result = create_slitlets(dm, msa_oper)

    slit_fields = ('name', 'shutter_id', 'dither_position', 'xcen', 'ycen',
                   'ymin', 'ymax', 'quadrant', 'source_id', 'shutter_state',
                   'source_name', 'source_alias', 'stellarity', 'source_xpos',
                   'source_ypos', 'source_ra', 'source_dec')

    for slit in result:
        # Test the returned data type and fields.
        assert type(slit) == Slit
        assert slit._fields == slit_fields
示例#2
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]))