def main(args): from desispec.io import meta from desispec.qa.qa_plots import exposure_fiberflat, exposure_s2n from desispec.qa.qa_exposure import QA_Exposure from desispec.io.meta import find_exposure_night log = get_logger() log.info("starting") # Setup if args.specprod_dir is None: specprod_dir = meta.specprod_root() else: specprod_dir = args.specprod_dir if args.qaprod_dir is None: qaprod_dir = meta.qaprod_root(specprod_dir=specprod_dir) else: qaprod_dir = args.qaprod_dir if args.channels is None: channels = ['b', 'r', 'z'] else: channels = [iarg for iarg in args.channels.split(',')] # Find night night = find_exposure_night(args.expid, specprod_dir=specprod_dir) # Instantiate qa_exp = QA_Exposure(args.expid, night, specprod_dir=specprod_dir, qaprod_dir=qaprod_dir, no_load=args.rebuild, multi_root=args.qamulti_root) # Rebuild? if args.rebuild: qa_exp.build_qa_data(rebuild=True) # Fiber QA if args.qatype == 'fiberflat': for channel in channels: exposure_fiberflat(channel, args.expid, 'meanflux') # S/N if args.qatype == 's2n': # S2N table qa_exp.s2n_table() # Figure time exposure_s2n(qa_exp, 'resid', specprod_dir=specprod_dir) # Slurp into a file? if args.slurp is not None: qa_exp.slurp_into_file(args.slurp)
def main(args): from desispec.qa import QA_Night from desiutil.log import get_logger from desispec.io import meta from desispec.qa import qa_plots as dqqp log = get_logger() log.info("starting") # Initialize if args.specprod_dir is None: specprod_dir = meta.specprod_root() else: specprod_dir = args.specprod_dir if args.qaprod_dir is None: qaprod_dir = meta.qaprod_root(specprod_dir=specprod_dir) else: qaprod_dir = args.qaprod_dir qa_prod = QA_Night(args.night, specprod_dir=specprod_dir, qaprod_dir=qaprod_dir) # Exposure plots if args.expid_series: # QATYPE-METRIC qa_prod.load_data() # SKYSUB RESID qatype, metric = 'SKYSUB', 'RESID' #args.expid_series.split('-') outfile = qaprod_dir + '/QA_{:s}_expid_{:s}-{:s}.png'.format( args.night, qatype, metric) dqqp.prod_time_series(qa_prod, qatype, metric, outfile=outfile, bright_dark=args.bright_dark, exposures=True, night=args.night, horiz_line=0.) # FLUXCALIB ZP qatype, metric = 'FLUXCALIB', 'ZP' #args.expid_series.split('-') outfile = qaprod_dir + '/QA_{:s}_expid_{:s}-{:s}.png'.format( args.night, qatype, metric) dqqp.prod_time_series(qa_prod, qatype, metric, outfile=outfile, bright_dark=args.bright_dark, exposures=True, night=args.night) ''' The stuff down here does not work, or has not been tested on Night QA
def main(args) : from desispec.io import meta from desispec.qa.qa_frame import qaframe_from_frame log=get_logger() log.info("starting") if args.specprod_dir is None: specprod_dir = meta.specprod_root() else: specprod_dir = args.specprod_dir # Generate qaframe (and figures?) qaframe = qaframe_from_frame(args.frame_file, specprod_dir=specprod_dir, make_plots=args.make_plots, output_dir=args.output_dir)
def main(args): from desispec.io import meta from desispec.qa.qa_frame import qaframe_from_frame log = get_logger() log.info("starting") if args.specprod_dir is None: specprod_dir = meta.specprod_root() else: specprod_dir = args.specprod_dir # Generate qaframe (and figures?) _ = qaframe_from_frame(args.frame_file, specprod_dir=specprod_dir, make_plots=args.make_plots, output_dir=args.output_dir)
def main(args) : from desispec.io import meta from desispec.qa.qa_plots import exposure_fiberflat, exposure_s2n from desispec.qa.qa_exposure import QA_Exposure from desispec.io.meta import find_exposure_night log=get_logger() log.info("starting") # Setup if args.reduxdir is None: specprod_dir = meta.specprod_root() else: specprod_dir = args.reduxdir if args.channels is None: channels = ['b','r','z'] else: channels = [iarg for iarg in args.channels.split(',')] # Find night night = find_exposure_night(args.expid) # Instantiate qa_exp = QA_Exposure(args.expid, night, specprod_dir=specprod_dir, no_load=args.rebuild, multi_root=args.qamulti_root) # Rebuild? if args.rebuild: qa_exp.build_qa_data(rebuild=True) # Fiber QA if args.qatype == 'fiberflat': for channel in channels: exposure_fiberflat(channel, args.expid, 'meanflux') # S/N if args.qatype == 's2n': # S2N table qa_exp.s2n_table() # Figure time exposure_s2n(qa_exp, 'resid') # Slurp into a file? if args.slurp is not None: qa_exp.slurp_into_file(args.slurp)
def main(args): from desispec.io import meta from desispec.qa.qa_plots import exposure_fiberflat log = get_logger() log.info("starting") if args.reduxdir is None: specprod_dir = meta.specprod_root() else: specprod_dir = args.reduxdir if args.channels is None: channels = ['b', 'r', 'z'] else: channels = [iarg for iarg in args.channels.split(',')] # Fiber QA if args.qatype == 'fibermap': for channel in channels: exposure_fiberflat(channel, args.expid, 'meanflux')
def main(args): from desispec.qa import QA_Prod from desispec.qa import html from desiutil.log import get_logger from desispec.io import meta log = get_logger() log.info("starting") # Initialize specprod_dir = meta.specprod_root() if args.qaprod_dir is None: qaprod_dir = meta.qaprod_root() else: qaprod_dir = args.qaprod_dir qa_prod = QA_Prod(specprod_dir, qaprod_dir=qaprod_dir) # Remake Frame QA? if args.make_frameqa > 0: log.info("(re)generating QA related to frames") if (args.make_frameqa % 4) >= 2: make_frame_plots = True else: make_frame_plots = False # Run if (args.make_frameqa & 2**0) or (args.make_frameqa & 2**1): qa_prod.make_frameqa(make_plots=make_frame_plots, clobber=args.clobber) # Slurp and write? if args.slurp: qa_prod.slurp(make=(args.make_frameqa > 0), remove=args.remove) qa_prod.write_qa_exposures() # Channel histograms if args.channel_hist is not None: # imports from matplotlib.backends.backend_pdf import PdfPages from desispec.qa import qa_plots as dqqp # qa_prod.load_data() outfile = qa_prod.prod_name + '_chist.pdf' pp = PdfPages(outfile) # Default? if args.channel_hist == 'default': dqqp.prod_channel_hist(qa_prod, 'FIBERFLAT', 'MAX_RMS', pp=pp, close=False) dqqp.prod_channel_hist(qa_prod, 'SKYSUB', 'MED_RESID', xlim=(-15, 15), pp=pp, close=False) dqqp.prod_channel_hist(qa_prod, 'FLUXCALIB', 'MAX_ZP_OFF', pp=pp, close=False) # Finish print("Writing {:s}".format(outfile)) pp.close() # Time plots if args.time_series is not None: # QATYPE-METRIC from desispec.qa import qa_plots as dqqp qa_prod.load_data() # Run qatype, metric = args.time_series.split('-') outfile = qaprod_dir + '/QA_time_{:s}.png'.format(args.time_series) dqqp.prod_time_series(qa_prod, qatype, metric, outfile=outfile, bright_dark=args.bright_dark) # HTML if args.html: html.calib(qaprod_dir=qaprod_dir) html.make_exposures(qaprod_dir=qaprod_dir) html.toplevel(qaprod_dir=qaprod_dir)
def main(): '''Runs the process ''' # Check environmental variables are set assert 'DESI_SPECTRO_DATA' in os.environ, 'Missing $DESI_SPECTRO_DATA environment variable' assert 'PRODNAME' in os.environ, 'Missing $PRODNAME environment variable' assert 'DESI_SPECTRO_REDUX' in os.environ, 'Missing $DESI_SPECTRO_REDUX environment variable' # Grab nights in data redux nights = glob.glob(dio_meta.specprod_root() + '/exposures/*') if len(nights) == 0: raise ValueError('No nights in exposures!') # Build up list of fibermap files fibermap_files = [] for night in nights: onight = night[night.rfind('/'):] files = glob.glob(dio_meta.rawdata_root() + '/' + onight + '/fibermap*') # fibermap_files += files # Get list of zbest files zbest_files = glob.glob(dio_meta.specprod_root() + '/bricks/*/zbest*') if len(zbest_files) == 0: raise ValueError('No redshifts?!') # Meta meta = get_meta() # Load+write table simtab_fil = dio_meta.specprod_root() + '/QA/sim_z_table.fits' dio_util.makepath(simtab_fil) simz_tab = dsqa_z.load_z(fibermap_files, zbest_files) simz_tab.meta = meta simz_tab.write(simtab_fil, overwrite=True) # Summary stats summ_file = dio_meta.specprod_root() + '/QA/sim_z_summ.yaml' dio_util.makepath(summ_file) summ_dict = dsqa_z.summ_stats(simz_tab) # Write with open(summ_file, 'w') as outfile: outfile.write(yaml.dump(meta)) #, default_flow_style=True) ) outfile.write(yaml.dump(summ_dict, default_flow_style=False)) #import pdb #pdb.set_trace() ''' # Reorder + cut summ_tab=full_summ_tab['OBJTYPE', 'NTARG', 'N_SURVEY', 'EFF', 'MED_DZ', 'CAT_RATE', 'REQ_FINAL'] # Write summ_tab.meta = meta summ_tab.write(summ_file,format='ascii.ecsv', formats=dict(MED_DZ='%8.6f',EFF='%5.3f',CAT_RATE='%6.4f'))#,clobber=True) ''' # QA Figures fig_file = dio_meta.specprod_root() + '/QA/sim_z.pdf' dio_util.makepath(fig_file) pp = PdfPages(fig_file) # Summ dsqa_z.summ_fig(simz_tab, summ_dict, meta, pp=pp) for objtype in ['ELG', 'LRG', 'QSO_T', 'QSO_L']: dsqa_z.obj_fig(simz_tab, objtype, summ_dict, pp=pp) # All done pp.close()
def main(args) : from desispec.qa import QA_Prod from desispec.qa import html from desiutil.log import get_logger from desispec.io import meta from desispec.qa import qa_plots as dqqp log=get_logger() log.info("starting") # Initialize if args.specprod_dir is None: specprod_dir = meta.specprod_root() else: specprod_dir = args.specprod_dir if args.qaprod_dir is None: qaprod_dir = meta.qaprod_root(specprod_dir=specprod_dir) else: qaprod_dir = args.qaprod_dir qa_prod = QA_Prod(specprod_dir, qaprod_dir=qaprod_dir) # Restrict to a nights restrict_nights = [args.night] if args.night is not None else None # Remake Frame QA? if args.make_frameqa > 0: log.info("(re)generating QA related to frames") if (args.make_frameqa % 4) >= 2: make_frame_plots = True else: make_frame_plots = False # Run if (args.make_frameqa & 2**0) or (args.make_frameqa & 2**1): # Allow for restricted nights qa_prod.make_frameqa(make_plots=make_frame_plots, clobber=args.clobber, restrict_nights=restrict_nights) # Slurp and write? if args.slurp: qa_prod.qaexp_outroot = qaprod_dir qa_prod.slurp_nights(make=(args.make_frameqa > 0), remove=args.remove, write_nights=True, restrict_nights=restrict_nights) # Channel histograms if args.channel_hist is not None: # imports from matplotlib.backends.backend_pdf import PdfPages # qa_prod.load_data() outfile = qa_prod.prod_name+'_chist.pdf' pp = PdfPages(outfile) # Default? if args.channel_hist == 'default': dqqp.prod_channel_hist(qa_prod, 'FIBERFLAT', 'MAX_RMS', pp=pp, close=False) dqqp.prod_channel_hist(qa_prod, 'SKYSUB', 'MED_RESID', xlim=(-15,15), pp=pp, close=False) dqqp.prod_channel_hist(qa_prod, 'FLUXCALIB', 'MAX_ZP_OFF', pp=pp, close=False) # Finish print("Writing {:s}".format(outfile)) pp.close() # Time plots if args.time_series is not None: # QATYPE-METRIC qa_prod.load_data() # Run qatype, metric = args.time_series.split('-') outfile= qaprod_dir+'/QA_time_{:s}.png'.format(args.time_series) dqqp.prod_time_series(qa_prod, qatype, metric, outfile=outfile, bright_dark=args.bright_dark) # <S/N> plot if args.S2N_plot: # Load up qa_prod.load_data() qa_prod.load_exposure_s2n() # Plot outfile= qaprod_dir+'/QA_S2N_{:s}.png'.format(args.xaxis) dqqp.prod_avg_s2n(qa_prod, optypes=['ELG', 'LRG', 'QSO'], xaxis=args.xaxis, outfile=outfile) # ZP plot if args.ZP_plot: # Load up qa_prod.load_data() # Plot outfile= qaprod_dir+'/QA_ZP_{:s}.png'.format(args.xaxis) dqqp.prod_ZP(qa_prod, xaxis=args.xaxis, outfile=outfile) # HTML if args.html: html.calib(qaprod_dir=qaprod_dir, specprod_dir=specprod_dir) html.make_exposures(qaprod_dir=qaprod_dir) html.toplevel(qaprod_dir=qaprod_dir)
def main(): '''Runs the process ''' # Check environmental variables are set assert 'DESI_SPECTRO_DATA' in os.environ, 'Missing $DESI_SPECTRO_DATA environment variable' assert 'SPECPROD' in os.environ, 'Missing $SPECPROD environment variable' assert 'DESI_SPECTRO_REDUX' in os.environ, 'Missing $DESI_SPECTRO_REDUX environment variable' # Grab nights in data redux nights = glob.glob(dio_meta.specprod_root()+'/exposures/*') if len(nights) == 0: raise ValueError('No nights in exposures!') # Build up list of fibermap files fibermap_files = [] for night in nights: onight = night[night.rfind('/'):] files = glob.glob(dio_meta.rawdata_root()+'/'+onight+'/fibermap*') # fibermap_files += files # Get list of zbest files zbest_files = glob.glob(dio_meta.specprod_root()+'/bricks/*/zbest*') if len(zbest_files) == 0: raise ValueError('No redshifts?!') # Meta meta = get_meta() # Load+write table simtab_fil = dio_meta.specprod_root()+'/QA/sim_z_table.fits' dio_util.makepath(simtab_fil) simz_tab = dsqa_z.load_z(fibermap_files, zbest_files) simz_tab.meta = meta simz_tab.write(simtab_fil,overwrite=True) # Summary stats summ_file = dio_meta.specprod_root()+'/QA/sim_z_summ.yaml' dio_util.makepath(summ_file) summ_dict = dsqa_z.summ_stats(simz_tab) # Write with open(summ_file, 'w') as outfile: outfile.write( yaml.dump(meta))#, default_flow_style=True) ) outfile.write( yaml.dump(summ_dict, default_flow_style=False) ) #import pdb #pdb.set_trace() ''' # Reorder + cut summ_tab=full_summ_tab['OBJTYPE', 'NTARG', 'N_SURVEY', 'EFF', 'MED_DZ', 'CAT_RATE', 'REQ_FINAL'] # Write summ_tab.meta = meta summ_tab.write(summ_file,format='ascii.ecsv', formats=dict(MED_DZ='%8.6f',EFF='%5.3f',CAT_RATE='%6.4f'))#,overwrite=True) ''' # QA Figures fig_file = dio_meta.specprod_root()+'/QA/sim_z.pdf' dio_util.makepath(fig_file) pp = PdfPages(fig_file) # Summ dsqa_z.summ_fig(simz_tab, summ_dict, meta, pp=pp) for objtype in ['ELG','LRG', 'QSO_T', 'QSO_L']: dsqa_z.obj_fig(simz_tab, objtype, summ_dict, pp=pp) # All done pp.close()
def main(args) : from desispec.qa import QA_Prod from desispec.qa import html from desiutil.log import get_logger from desispec.io import meta from desispec.qa import qa_plots as dqqp log=get_logger() log.info("starting") # Initialize specprod_dir = meta.specprod_root() if args.qaprod_dir is None: qaprod_dir = meta.qaprod_root() else: qaprod_dir = args.qaprod_dir qa_prod = QA_Prod(specprod_dir, qaprod_dir=qaprod_dir) # Remake Frame QA? if args.make_frameqa > 0: log.info("(re)generating QA related to frames") if (args.make_frameqa % 4) >= 2: make_frame_plots = True else: make_frame_plots = False # Run if (args.make_frameqa & 2**0) or (args.make_frameqa & 2**1): qa_prod.make_frameqa(make_plots=make_frame_plots, clobber=args.clobber) # Slurp and write? if args.slurp: qa_prod.slurp_nights(make=(args.make_frameqa > 0), remove=args.remove, write_nights=True) # Channel histograms if args.channel_hist is not None: # imports from matplotlib.backends.backend_pdf import PdfPages # qa_prod.load_data() outfile = qa_prod.prod_name+'_chist.pdf' pp = PdfPages(outfile) # Default? if args.channel_hist == 'default': dqqp.prod_channel_hist(qa_prod, 'FIBERFLAT', 'MAX_RMS', pp=pp, close=False) dqqp.prod_channel_hist(qa_prod, 'SKYSUB', 'MED_RESID', xlim=(-15,15), pp=pp, close=False) dqqp.prod_channel_hist(qa_prod, 'FLUXCALIB', 'MAX_ZP_OFF', pp=pp, close=False) # Finish print("Writing {:s}".format(outfile)) pp.close() # Time plots if args.time_series is not None: # QATYPE-METRIC qa_prod.load_data() # Run qatype, metric = args.time_series.split('-') outfile= qaprod_dir+'/QA_time_{:s}.png'.format(args.time_series) dqqp.prod_time_series(qa_prod, qatype, metric, outfile=outfile, bright_dark=args.bright_dark) # <S/N> plot if args.S2N_plot: # Load up qa_prod.load_data() qa_prod.load_exposure_s2n() # Plot outfile= qaprod_dir+'/QA_S2N_{:s}.png'.format(args.xaxis) dqqp.prod_avg_s2n(qa_prod, optypes=['ELG', 'LRG', 'QSO'], xaxis=args.xaxis, outfile=outfile) # ZP plot if args.ZP_plot: # Load up qa_prod.load_data() # Plot outfile= qaprod_dir+'/QA_ZP_{:s}.png'.format(args.xaxis) dqqp.prod_ZP(qa_prod, xaxis=args.xaxis, outfile=outfile) # HTML if args.html: html.calib(qaprod_dir=qaprod_dir) html.make_exposures(qaprod_dir=qaprod_dir) html.toplevel(qaprod_dir=qaprod_dir)
def main(): """Runs the process """ # Check environmental variables are set assert "DESI_SPECTRO_DATA" in os.environ, "Missing $DESI_SPECTRO_DATA environment variable" assert "PRODNAME" in os.environ, "Missing $PRODNAME environment variable" assert "DESI_SPECTRO_REDUX" in os.environ, "Missing $DESI_SPECTRO_REDUX environment variable" # Grab nights in data redux nights = glob.glob(dio_meta.specprod_root() + "/exposures/*") if len(nights) == 0: raise ValueError("No nights in exposures!") # Build up list of fibermap files fibermap_files = [] for night in nights: onight = night[night.rfind("/") :] files = glob.glob(dio_meta.data_root() + "/" + onight + "/fibermap*") # fibermap_files += files # Get list of zbest files zbest_files = glob.glob(dio_meta.specprod_root() + "/bricks/*/zbest*") if len(zbest_files) == 0: raise ValueError("No redshifts?!") # Meta meta = get_meta() # Load+write table simtab_fil = dio_meta.specprod_root() + "/QA/sim_z_table.fits" dio_util.makepath(simtab_fil) simz_tab = dsqa_z.load_z(fibermap_files, zbest_files) simz_tab.meta = meta simz_tab.write(simtab_fil, overwrite=True) # Summary stats summ_file = dio_meta.specprod_root() + "/QA/sim_z_summ.yaml" dio_util.makepath(summ_file) summ_dict = dsqa_z.summ_stats(simz_tab) # Write with open(summ_file, "w") as outfile: outfile.write(yaml.dump(meta)) # , default_flow_style=True) ) outfile.write(yaml.dump(summ_dict, default_flow_style=False)) # import pdb # pdb.set_trace() """ # Reorder + cut summ_tab=full_summ_tab['OBJTYPE', 'NTARG', 'N_SURVEY', 'EFF', 'MED_DZ', 'CAT_RATE', 'REQ_FINAL'] # Write summ_tab.meta = meta summ_tab.write(summ_file,format='ascii.ecsv', formats=dict(MED_DZ='%8.6f',EFF='%5.3f',CAT_RATE='%6.4f'))#,clobber=True) """ # QA Figures fig_file = dio_meta.specprod_root() + "/QA/sim_z.pdf" dio_util.makepath(fig_file) pp = PdfPages(fig_file) # Summ dsqa_z.summ_fig(simz_tab, summ_dict, meta, pp=pp) for objtype in ["ELG", "LRG", "QSO_T", "QSO_L"]: dsqa_z.obj_fig(simz_tab, objtype, summ_dict, pp=pp) # All done pp.close()