def multi_caliBrate(fitstbl): det = 1 spectrograph = load_kast_blue_masters(get_spectrograph=True)[0] # Par def_par = spectrograph.default_pypeit_par() # Grab a science file for configuration specific parameters for idx, row in enumerate(fitstbl): if 'science' in row['frametype']: sci_file = os.path.join(row['directory'], row['filename']) break par = spectrograph.config_specific_par(def_par, sci_file) # calib_par = par['calibrations'] calib_par['badpix'] = False calib_par['biasframe']['useframe'] = 'overscan' redux_path = data_path('') if os.getenv('PYPEIT_DEV') is None \ else os.path.join(os.getenv('PYPEIT_DEV'), 'Cooked') multi_caliBrate = calibrations.MultiSlitCalibrations(fitstbl, calib_par, spectrograph, redux_path=redux_path, save_masters=False, write_qa=False) # Find the first science row frame = fitstbl.find_frames('science', index=True)[0] # Set multi_caliBrate.set_config(frame, det, par=calib_par) return multi_caliBrate
def test_instantiate_from_one(shane_kast_blue_sci_files): """ Run on a single science frame """ # det = 1 # Load calibrations pixelflat = load_kast_blue_masters(pixflat=True)[0] bpm = kast_blue.empty_bpm(shane_kast_blue_sci_files[0], det) # Process steps bias = None par = kast_par['scienceframe']['process'] process_steps = procimg.init_process_steps(bias, par) process_steps += ['trim', 'apply_gain', 'orient'] process_steps += ['flatten'] process_steps += ['extras'] process_steps += ['crmask'] # Load rawImage = rawimage.RawImage(shane_kast_blue_sci_files[0], kast_blue, det) processRawImage = processrawimage.ProcessRawImage(rawImage, kast_par['scienceframe']['process']) pypeItImage = processRawImage.process(process_steps, pixel_flat=pixelflat) # Do it sciImg = scienceimage.ScienceImage(kast_blue, det, kast_par['scienceframe']['process'], pypeItImage.image, pypeItImage.ivar, bpm)
def test_step_by_step(master_dir): # Masters spectrograph = load_spectrograph('shane_kast_blue') msarc, tslits_dict, mstrace = load_kast_blue_masters(aimg=True, tslits=True) # Instantiate master_key = 'A_1_01' parset = spectrograph.default_pypeit_par() par = parset['calibrations']['tilts'] wavepar = parset['calibrations']['wavelengths'] waveTilts = wavetilts.WaveTilts(msarc, tslits_dict, spectrograph, par, wavepar, det=1, master_key=master_key, master_dir=master_dir,reuse_masters=True) # Extract arcs arccen, maskslits = waveTilts.extract_arcs(waveTilts.slitcen, waveTilts.slitmask, msarc, waveTilts.inmask) assert arccen.shape == (2048,1) # Tilts in the slit slit = 0 waveTilts.slitmask = pixels.tslits2mask(waveTilts.tslits_dict) thismask = waveTilts.slitmask == slit waveTilts.lines_spec, waveTilts.lines_spat = waveTilts.find_lines(arccen[:, slit], waveTilts.slitcen[:, slit], slit) trcdict = waveTilts.trace_tilts(waveTilts.msarc, waveTilts.lines_spec, waveTilts.lines_spat, thismask, slit) assert isinstance(trcdict, dict) # 2D Fit spat_order = waveTilts._parse_param(waveTilts.par, 'spat_order', slit) spec_order = waveTilts._parse_param(waveTilts.par, 'spec_order', slit) coeffs = waveTilts.fit_tilts(trcdict, thismask, waveTilts.slitcen[:, slit], spat_order, spec_order,slit, doqa=False) tilts = tracewave.fit2tilts(waveTilts.slitmask_science.shape, coeffs, waveTilts.par['func2d']) assert np.max(tilts) < 1.01
def test_instantiate(fitstbl): par = pypeitpar.PypeItPar() spectrograph = load_kast_blue_masters(get_spectrograph=True)[0] caliBrate = calibrations.MultiSlitCalibrations(fitstbl, par['calibrations'], spectrograph) print(caliBrate)
def test_build_me(): # Masters spectrograph = load_spectrograph('shane_kast_blue') edges, tilts_dict, wv_calib = load_kast_blue_masters(edges=True, tilts=True, wvcalib=True) tslits_dict = edges.convert_to_tslits_dict() # Instantiate master_key = 'A_01_aa' master_dir = os.path.join(os.getenv('PYPEIT_DEV'), 'Cooked', 'Shane_Kast_blue') nslits = tslits_dict['nslits'] maskslits = np.zeros(nslits, dtype=bool) det = 1 wvImg = waveimage.WaveImage(tslits_dict, tilts_dict['tilts'], wv_calib, spectrograph, det, maskslits, master_key=master_key, master_dir=master_dir, reuse_masters=True) # Build wave = wvImg.build_wave() assert int(np.max(wave)) > 5510
def test_run(master_dir): # Masters spectrograph = load_spectrograph('shane_kast_blue') mstilt, edges = load_kast_blue_masters(mstilt=True, edges=True) # Instantiate #spectrograph.detector[0]['saturation'] = 60000. #spectrograph.detector[0]['nonlinear'] = 0.9 par = pypeitpar.WaveTiltsPar() wavepar = pypeitpar.WavelengthSolutionPar() slits = edges.get_slits() buildwaveTilts = wavetilts.BuildWaveTilts(mstilt, slits, spectrograph, par, wavepar, det=1) # Run waveTilts = buildwaveTilts.run(doqa=False) assert isinstance(waveTilts.fit2tiltimg(slits.slit_img()), np.ndarray)
def test_from_list(shane_kast_blue_sci_files): """ Run on two frames """ det = 1 # Load calibrations pixelflat = load_kast_blue_masters(pixflat=True)[0] bpm = kast_blue.empty_bpm(shane_kast_blue_sci_files[0], det) # Do it sciImg = scienceimage.build_from_file_list( kast_blue, det, kast_par['scienceframe']['process'], bpm, shane_kast_blue_sci_files, None, pixelflat) # Test assert isinstance(sciImg, scienceimage.ScienceImage)
def test_run(): # Masters spectrograph, tslits_dict, tilts_dict, datasec_img \ = load_kast_blue_masters(get_spectrograph=True, tslits=True, tilts=True, datasec=True) # Instantiate frametype = 'pixelflat' par = pypeitpar.FrameGroupPar(frametype) flatField = flatfield.FlatField(spectrograph, par, det=1, tilts_dict=tilts_dict, tslits_dict=tslits_dict.copy()) # Use mstrace flatField.rawflatimg = tslits_dict['mstrace'].copy() mspixelflatnrm, msillumflat = flatField.run() assert np.isclose(np.median(mspixelflatnrm), 1.0)
def test_from_list(shane_kast_blue_sci_files): """ Run on two frames """ # Load calibrations tslits_dict, mstrace, tilts_dict, pixelflat = load_kast_blue_masters( tslits=True, tilts=True, pixflat=True) bpm = kast_blue.empty_bpm(shape=pixelflat.shape) # Do it det = 1 sciImg = scienceimage.ScienceImage.from_file_list( kast_blue, det, kast_par['scienceframe']['process'], bpm, shane_kast_blue_sci_files, None, pixelflat) # Test assert sciImg.nfiles == 2
def test_run(master_dir): # Masters spectrograph = load_spectrograph('shane_kast_blue') msarc, tslits_dict, mstrace = load_kast_blue_masters(aimg=True, tslits=True) # Instantiate master_key = 'A_1_01' spectrograph.detector[0]['saturation'] = 60000. spectrograph.detector[0]['nonlinear'] = 0.9 par = pypeitpar.WaveTiltsPar() wavepar = pypeitpar.WavelengthSolutionPar() waveTilts = wavetilts.WaveTilts(msarc, tslits_dict, spectrograph, par, wavepar, det=1, master_key=master_key, master_dir=master_dir, reuse_masters=True) # Run tilts_dict, mask = waveTilts.run(doqa=False) assert isinstance(tilts_dict['tilts'], np.ndarray)
def test_build_me(): # Masters spectrograph, tslits_dict, tilts_dict, wv_calib \ = load_kast_blue_masters(get_spectrograph=True, tslits=True, tilts=True, wvcalib=True) # Instantiate master_key = 'A_01_aa' root_path = data_path('MF') if os.getenv('PYPEIT_DEV') is None \ else os.path.join(os.getenv('PYPEIT_DEV'), 'Cooked', 'MF') master_dir = root_path+'_'+spectrograph.spectrograph nslits = tslits_dict['slit_left'].shape[1] maskslits = np.zeros(nslits, dtype=bool) wvImg = waveimage.WaveImage(tslits_dict, tilts_dict['tilts'], wv_calib, spectrograph, maskslits, master_key=master_key, master_dir=master_dir, reuse_masters=True) # Build wave = wvImg._build_wave() assert int(np.max(wave)) > 5510
def test_run(): # Masters spectrograph = load_spectrograph('shane_kast_blue') edges, tilts_dict = load_kast_blue_masters(edges=True, tilts=True) # Instantiate frametype = 'pixelflat' par = pypeitpar.FrameGroupPar(frametype) flatField = flatfield.FlatField(spectrograph, par, det=1, tilts_dict=tilts_dict, tslits_dict=edges.convert_to_tslits_dict()) # Use the trace image flatField.rawflatimg = pypeitimage.PypeItImage(edges.img.copy()) mspixelflatnrm, msillumflat = flatField.run() assert np.isclose(np.median(mspixelflatnrm), 1.0)
def test_instantiate_from_one(shane_kast_blue_sci_files): """ Run on a single science frame """ # det = 1 # Load calibrations pixelflat = load_kast_blue_masters(pixflat=True)[0] bpm = kast_blue.empty_bpm(shane_kast_blue_sci_files[0], det) # Process steps -- Set in PypeItPar frame_par = kast_par['scienceframe'] frame_par['process']['use_illumflat'] = False frame_par['process']['use_biasimage'] = False # Load rawImage = rawimage.RawImage(shane_kast_blue_sci_files[0], kast_blue, det) flatImages = flatfield.FlatImages(pixelflat_norm=pixelflat) pypeItImage = rawImage.process(frame_par['process'], flatimages=flatImages)
def test_from_list(shane_kast_blue_sci_files): """ Run on two frames """ det = 1 # Load calibrations pixelflat = load_kast_blue_masters(pixflat=True)[0] bpm = kast_blue.empty_bpm(shane_kast_blue_sci_files[0], det) # Do it flatImages = flatfield.FlatImages(pixelflat_norm=pixelflat) kast_par['scienceframe']['process']['use_illumflat'] = False kast_par['scienceframe']['process']['use_biasimage'] = False sciImg = buildimage.buildimage_fromlist(kast_blue, det, kast_par['scienceframe'], shane_kast_blue_sci_files, bpm=bpm, bias=None, flatimages=flatImages) # Test assert isinstance(sciImg, pypeitimage.PypeItImage)