def main(pargs): import time from pypeit import ginga from pypeit import flatfield import subprocess # Load up flatField = flatfield.FlatField.from_master_file(pargs.master_file) try: ginga.connect_to_ginga(raise_err=True) except ValueError: subprocess.Popen(['ginga', '--modules=RC']) time.sleep(3) # Show RawFlatImage viewer, ch = ginga.show_image(flatField.rawflatimg.image, chname='Raw Flat') # PixelFlat if flatField.mspixelflat is not None: viewer, ch = ginga.show_image(flatField.mspixelflat, chname='Pixel Flat') # Illumination flat if flatField.msillumflat is not None: viewer, ch = ginga.show_image(flatField.msillumflat, chname='Illumination Flat') # Illumination flat if flatField.flat_model is not None: viewer, ch = ginga.show_image(flatField.flat_model, chname='Flat Model') print("Check your Ginga viewer")
def main(pargs): import pdb as debugger import time from pypeit import ginga from pypeit import wavetilts import subprocess # Load up wTilts = wavetilts.WaveTilts.from_master_files(pargs.setup) # Launch ginga if need be try: ginga.connect_to_ginga(raise_err=True) except ValueError: subprocess.Popen(['ginga', '--modules=RC']) time.sleep(3) # Show if pargs.slit is not None: cname = 'Slit{:03d}'.format(pargs.slit) else: cname = None wTilts.show(pargs.option, slit=pargs.slit, cname=cname)
def test_chk_flat(): mstrace_root = os.path.join(os.getenv('PYPEIT_DEV'), 'Cooked', 'shane_kast_blue', 'MasterFlat_A_1_01.fits') # Ginga needs to be open in RC mode ginga.connect_to_ginga(raise_err=True, allow_new=True) # pargs = chk_flats.parser([mstrace_root]) chk_flats.main(pargs)
def test_chk_edges(): mstrace_root = os.path.join(os.getenv('PYPEIT_DEV'), 'Cooked', 'Trace', 'MasterEdges_KeckLRISr_400_8500_det1.fits.gz') # Ginga needs to be open in RC mode ginga.connect_to_ginga(raise_err=True, allow_new=True) # pargs = chk_edges.parser([mstrace_root]) chk_edges.main(pargs)
def main(pargs): import pdb as debugger import time from pypeit import ginga from pypeit import traceslits from pypeit.core.trace_slits import get_slitid import subprocess # Load up tslits_dict, mstrace = traceslits.load_tslits(pargs.root) import pdb pdb.set_trace() try: ginga.connect_to_ginga(raise_err=True) except ValueError: subprocess.Popen(['ginga', '--modules=RC']) time.sleep(3) # This is deprecated since the class is not stored to disk anymore. You can just debug to achieve this functionality #if pargs.show is not None: # Tslits.show(pargs.show) # print("Check your Ginga viewer") # return # Show Image viewer, ch = ginga.show_image(mstrace, chname=pargs.chname) nslits = tslits_dict['nslits'] # Get slit ids stup = (mstrace.shape, tslits_dict['slit_left'], tslits_dict['slit_righ']) if pargs.dumb_ids: slit_ids = range(nslits) else: slit_ids = [ get_slitid(stup[0], stup[1], stup[2], ii)[0] for ii in range(nslits) ] ginga.show_slits(viewer, ch, tslits_dict['slit_left'], tslits_dict['slit_righ'], slit_ids, pstep=50) print("Check your Ginga viewer")
def show_alignment(alignframe, align_traces=None, slits=None, clear=False): """ Show one of the class internals Parameters ---------- alignframe : `numpy.ndarray`_ Image to be plotted (i.e. the master align frame) align_traces : list, optional The align traces slits : :class:`pypeit.slittrace.SlitTraceSet`, optional properties of the slits, including traces. clear : bool, optional Clear the plotting window in ginga? Returns ------- """ ginga.connect_to_ginga(raise_err=True, allow_new=True) ch_name = 'alignment' viewer, channel = ginga.show_image(alignframe, chname=ch_name, clear=clear, wcs_match=False) # Display the slit edges if slits is not None and viewer is not None: left, right, mask = slits.select_edges() ginga.show_slits(viewer, channel, left, right) # Display the alignment traces if align_traces is not None and viewer is not None: for bar in range(align_traces.shape[1]): for slt in range(align_traces.shape[2]): # Alternate the colors of the slits color = 'orange' if slt % 2 == 0: color = 'magenta' # Display the trace ginga.show_trace(viewer, channel, align_traces[:, bar, slt], trc_name="", color=color)
def test_show_2dspec(): droot = os.path.join(os.getenv('PYPEIT_DEV'), 'Cooked') spec2d_file = os.path.join( droot, 'Science', 'spec2d_b27-J1217p3905_KASTb_2015May20T045733.560.fits') # Ginga needs to be open in RC mode ginga.connect_to_ginga(raise_err=True, allow_new=True) # Save cdir = os.getcwd() os.chdir(droot) # List pargs = show_2dspec.parser([spec2d_file, '--list']) show_2dspec.main(pargs) # Show pargs = show_2dspec.parser([spec2d_file]) show_2dspec.main(pargs) # Go back os.chdir(cdir)
def show_flats(pixelflat, illumflat, procflat, flat_model, wcs_match=True, slits=None): """ Interface to ginga to show a set of flat images Args: pixelflat (`numpy.ndarray`_): illumflat (`numpy.ndarray`_ or None): procflat (`numpy.ndarray`_): flat_model (`numpy.ndarray`_): wcs_match (bool, optional): slits (:class:`pypeit.slittrace.SlitTraceSet`, optional): Returns: """ ginga.connect_to_ginga(raise_err=True, allow_new=True) if slits is not None: left, right, mask = slits.select_edges() gpm = mask == 0 # Loop me clear = True for img, name, cut in zip([pixelflat, illumflat, procflat, flat_model], ['pixelflat', 'illumflat', 'flat', 'flat_model'], [(0.9, 1.1), (0.9, 1.1), None, None]): if img is None: continue # TODO: Add an option that shows the relevant stuff in a # matplotlib window. viewer, ch = ginga.show_image(img, chname=name, cuts=cut, wcs_match=wcs_match, clear=clear) if slits is not None: ginga.show_slits(viewer, ch, left[:, gpm], right[:, gpm], slit_ids=slits.spat_id[gpm]) # Turn off clear if clear: clear = False
def main(args): # List only? if args.list: hdu = fits.open(args.file) hdu.info() return # Load it up spec2DObj = spec2dobj.Spec2DObj.from_file(args.file, args.det) # Setup for PYPIT imports msgs.reset(verbosity=2) # Init # TODO: get_dnum needs to be deprecated... sdet = get_dnum(args.det, prefix=False) # if not os.path.exists(mdir): # mdir_base = os.path.join(os.getcwd(), os.path.basename(mdir)) # msgs.warn('Master file dir: {0} does not exist. Using {1}'.format(mdir, mdir_base)) # mdir=mdir_base # Slits # slits_key = '{0}_{1:02d}'.format(spec2DObj.head0['TRACMKEY'], args.det) # slit_file = os.path.join(mdir, masterframe.construct_file_name(slittrace.SlitTraceSet, slits_key)) # slits = slittrace.SlitTraceSet.from_file(slit_file) # Grab the slit edges slits = spec2DObj.slits if spec2DObj.sci_spat_flexure is not None: msgs.info("Offseting slits by {}".format(spec2DObj.sci_spat_flexure)) all_left, all_right, mask = slits.select_edges( flexure=spec2DObj.sci_spat_flexure) # TODO -- This may be too restrictive, i.e. ignore BADFLTCALIB?? gpm = mask == 0 left = all_left[:, gpm] right = all_right[:, gpm] slid_IDs = spec2DObj.slits.slitord_id[gpm] bitMask = ImageBitMask() # Object traces from spec1d file spec1d_file = args.file.replace('spec2d', 'spec1d') if os.path.isfile(spec1d_file): sobjs = specobjs.SpecObjs.from_fitsfile(spec1d_file) else: sobjs = None msgs.warn('Could not find spec1d file: {:s}'.format(spec1d_file) + msgs.newline() + ' No objects were extracted.') ginga.connect_to_ginga(raise_err=True, allow_new=True) # Now show each image to a separate channel # Show the bitmask? mask_in = None if args.showmask: viewer, ch = ginga.show_image(spec2DObj.bpmmask, chname="BPM", waveimg=spec2DObj.waveimg, clear=True) #bpm, crmask, satmask, minmask, offslitmask, nanmask, ivar0mask, ivarnanmask, extractmask \ # SCIIMG image = spec2DObj.sciimg # Processed science image mean, med, sigma = sigma_clipped_stats(image[spec2DObj.bpmmask == 0], sigma_lower=5.0, sigma_upper=5.0) cut_min = mean - 1.0 * sigma cut_max = mean + 4.0 * sigma chname_skysub = 'sciimg-det{:s}'.format(sdet) # Clear all channels at the beginning viewer, ch = ginga.show_image(image, chname=chname_skysub, waveimg=spec2DObj.waveimg, clear=True) if sobjs is not None: show_trace(sobjs, args.det, viewer, ch) ginga.show_slits(viewer, ch, left, right, slit_ids=slid_IDs) # SKYSUB if args.ignore_extract_mask: # TODO -- Is there a cleaner way to do this? gpm = (spec2DObj.bpmmask == 0) | (spec2DObj.bpmmask == 2** bitMask.bits['EXTRACT']) else: gpm = spec2DObj.bpmmask == 0 image = (spec2DObj.sciimg - spec2DObj.skymodel ) * gpm #(spec2DObj.mask == 0) # sky subtracted image mean, med, sigma = sigma_clipped_stats(image[spec2DObj.bpmmask == 0], sigma_lower=5.0, sigma_upper=5.0) cut_min = mean - 1.0 * sigma cut_max = mean + 4.0 * sigma chname_skysub = 'skysub-det{:s}'.format(sdet) # Clear all channels at the beginning # TODO: JFH For some reason Ginga crashes when I try to put cuts in here. viewer, ch = ginga.show_image( image, chname=chname_skysub, waveimg=spec2DObj.waveimg, bitmask=bitMask, mask=mask_in) #, cuts=(cut_min, cut_max),wcs_match=True) if not args.removetrace and sobjs is not None: show_trace(sobjs, args.det, viewer, ch) ginga.show_slits(viewer, ch, left, right, slit_ids=slid_IDs) # SKRESIDS chname_skyresids = 'sky_resid-det{:s}'.format(sdet) image = (spec2DObj.sciimg - spec2DObj.skymodel) * np.sqrt( spec2DObj.ivarmodel) * (spec2DObj.bpmmask == 0) # sky residual map viewer, ch = ginga.show_image(image, chname_skyresids, waveimg=spec2DObj.waveimg, cuts=(-5.0, 5.0), bitmask=bitMask, mask=mask_in) if not args.removetrace and sobjs is not None: show_trace(sobjs, args.det, viewer, ch) ginga.show_slits(viewer, ch, left, right, slit_ids=slid_IDs) # RESIDS chname_resids = 'resid-det{:s}'.format(sdet) # full model residual map image = (spec2DObj.sciimg - spec2DObj.skymodel - spec2DObj.objmodel ) * np.sqrt(spec2DObj.ivarmodel) * (spec2DObj.bpmmask == 0) viewer, ch = ginga.show_image(image, chname=chname_resids, waveimg=spec2DObj.waveimg, cuts=(-5.0, 5.0), bitmask=bitMask, mask=mask_in) if not args.removetrace and sobjs is not None: show_trace(sobjs, args.det, viewer, ch) ginga.show_slits(viewer, ch, left, right, slit_ids=slid_IDs) # After displaying all the images sync up the images with WCS_MATCH shell = viewer.shell() out = shell.start_global_plugin('WCSMatch') out = shell.call_global_plugin_method('WCSMatch', 'set_reference_channel', [chname_resids], {}) if args.embed: embed()