def test_fuv_timetag_1(self): """ FUV COS regression test #1 """ asn_file = 'lckg01070_asn.fits' # Prepare input files. self.get_input_file(asn_file) # Run CALCOS calcos.calcos(asn_file) # Compare results. # The first outroot is the output from whole ASN, # the rest are individual members. outroots = [ 'lckg01070', 'lckg01czq', 'lckg01d4q', 'lckg01d9q', 'lckg01dcq' ] outputs = [] for sfx in ('x1dsum', 'x1dsum1', 'x1dsum2', 'x1dsum3', 'x1dsum4'): fname = '{}_{}.fits'.format(outroots[0], sfx) outputs.append((fname, fname)) for outroot in outroots[1:]: for sfx in ('corrtag_a', 'corrtag_b', 'counts_a', 'counts_b', 'flt_a', 'flt_b', 'lampflash', 'x1d'): fname = '{}_{}.fits'.format(outroot, sfx) outputs.append((fname, fname)) self.compare_outputs(outputs, rtol=3e-7)
def test_fuv_timetag_1(self): """ FUV COS regression test #1 """ asn_file = 'lckg01070_asn.fits' # Prepare input files. self.get_input_file(asn_file) # Run CALCOS calcos.calcos(asn_file) # Compare results. # The first outroot is the output from whole ASN, # the rest are individual members. outroots = ['lckg01070', 'lckg01czq', 'lckg01d4q', 'lckg01d9q', 'lckg01dcq'] outputs = [] for sfx in ('x1dsum', 'x1dsum1', 'x1dsum2', 'x1dsum3', 'x1dsum4'): fname = '{}_{}.fits'.format(outroots[0], sfx) outputs.append((fname, fname)) for outroot in outroots[1:]: for sfx in ('corrtag_a', 'corrtag_b', 'counts_a', 'counts_b', 'flt_a', 'flt_b', 'lampflash', 'x1d'): fname = '{}_{}.fits'.format(outroot, sfx) outputs.append((fname, fname)) self.compare_outputs(outputs, rtol=3e-7)
def test_fuva_dark(self): """ FUV COS regression test #2 """ files_to_download = [ 'la7803fiq_rawtag_a.fits', 'la7803fiq_rawtag_b.fits', 'la7803fiq_spt.fits' ] # Prepare input files. self.get_input_files(files_to_download) input_file = 'la7803fiq_rawtag_a.fits' # Run CALCOS calcos.calcos(input_file) # Compare results. # The first outroot is the output from whole ASN, # the rest are individual members. outroots = ['la7803fiq'] outputs = [] for outroot in outroots: for sfx in ('corrtag_a', 'corrtag_b', 'counts_a', 'counts_b', 'flt_a', 'flt_b'): fname = '{}_{}.fits'.format(outroot, sfx) outputs.append((fname, fname)) self.compare_outputs(outputs, rtol=3e-7)
def calcos_iraf(input, verbosity=1, savetmp=no, outdir="", find_target=no, cutoff=-1., shift_file="", csum=no, raw_csum=no, compress=no, comp_param="gzip,-0.01", binx=1, biny=1, stimfile="", livefile="", burstfile="", version=None): # Interpret input parameters find_target = _toBoolean(find_target) csum = _toBoolean(csum) raw_csum = _toBoolean(raw_csum) savetmp = _toBoolean(savetmp) compress = _toBoolean(compress) if outdir.strip() == "": outdir = None if outdir is not None: outdir = iraf.osfn(outdir) if cutoff <= 0.: cutoff = None if shift_file.strip() == "": shift_file = None if stimfile.strip() == "": stimfile = None if livefile.strip() == "": livefile = None if burstfile.strip() == "": burstfile = None calcos.calcos(input, outdir=outdir, verbosity=verbosity, find_target={ "flag": find_target, "cutoff": cutoff }, create_csum_image=csum, raw_csum_coords=raw_csum, binx=binx, biny=biny, compress_csum=compress, compression_parameters=comp_param, shift_file=shift_file, save_temp_files=savetmp, stimfile=stimfile, livetimefile=livefile, burstfile=burstfile)
def reduce(self, output_directory): """ Runs the CalCOS pipeline. Parameters ---------- output_directory : str Path for the reduced data products. """ try: import calcos except: raise ImportError('CalCOS not installed') print('\nWill run CalCOS on the following raw data products:\n') self.info.pprint(max_lines=50) run = raw_input('\nContinue? (y)/n ') if run != 'n': for asn in self.asn: calcos.calcos(asn, verbosity=2, outdir=output_directory)
def test_gsag_calibration(gsagtab): """Move gsagtab into TEST_DIR and calibrate with CalCOS. Any datasets that fail calibration will be emailed to the user. """ print '#-------------------------#' print 'Calibrating with %s'%(gsagtab) print '#-------------------------#' os.environ['lref'] = '/grp/hst/cdbs/lref/' os.environ['testdir'] = TEST_DIR if not os.path.exists(TEST_DIR): os.mkdir(TEST_DIR) shutil.copy( gsagtab ,os.path.join(TEST_DIR,'new_gsag.fits') ) test_datasets = glob.glob( os.path.join(TEST_DIR, '*rawtag_a.fits') ) #Remove products for ext in ('*_counts*.fits','*_flt*.fits','*_x1d*.fits','*lampflash*.fits','*corrtag*.fits'): os.system('rm '+TEST_DIR+'/'+ext) for item in test_datasets: pyfits.setval( item,'RANDSEED',value=8675309,ext=0 ) pyfits.setval( item,'GSAGTAB',value='testdir$new_gsag.fits',ext=0 ) failed_runs = [] for item in test_datasets: try: status = calcos.calcos( item,outdir=TEST_DIR ) print "CalCOS exit status is",status except: failed_runs.append( item ) if status != 0: failed_runs.append( item ) if len(failed_runs): send_email(subject='GSAGTAB Calibration Error',message='Failed calibration\n\n'+'\n'+'\n'.join(failed_runs) )
for omit in omitlist: phdr.update(omit, 'OMIT') for per in performlist: phdr.update(per, 'PERFORM') for key in reffiles: phdr.update(key, reffiles[key]) for key in statflag: phdr.update(key, statflag[key]) fd.close() print 'Keywords of file %s have been modified...' % file #calibration filelist = [file[:-14] for file in filelist if 'rawtag_a.fits' in file] for file in filelist: C.calcos(file) #collapsing #for file in filelist: #which file should be process? # data = PF.open(file[] + '_corr_a/b.fits')[1].data #find centre, collapse dispersion direction and find max #define area, + / - width #collapse in cross-dispersion direction #save a new file
for omit in omitlist: phdr.update(omit, 'OMIT') for per in performlist: phdr.update(per, 'PERFORM') for key in reffiles: phdr.update(key, reffiles[key]) for key in statflag: phdr.update(key, statflag[key]) fd.close() print 'Keywords of file %s have been modified...' % file #calibration filelist = [file[:-14] for file in filelist if 'rawtag_a.fits' in file] for file in filelist: C.calcos(file) #collapsing #for file in filelist: #which file should be process? # data = PF.open(file[] + '_corr_a/b.fits')[1].data #find centre, collapse dispersion direction and find max #define area, + / - width #collapse in cross-dispersion direction #save a new file print 'Script ends...'
os.chdir(out_dir) if not os.path.exists('out/'): os.mkdir('out/') for item in glob.glob('*asn.fits'): shutil.copy( item, 'out/' ) cal_list = glob.glob('*corrtag_a*') for corrtag in cal_list: try: calcos.calcos(corrtag, 'out/') except: print 'Exception occured' pass os.chdir( 'out/' ) for item in glob.glob( '*x1d.fits' ): fits = pyfits.open( item ) for i in range(len( fits[1].data ) ): if not fits[1].data[i]['FLUX'].any(): fits[1].data[i]['DQ_WGT'] = 0 fits.writeto( item, clobber=True ) for item in glob.glob( '*asn.fits' ): remake_asn( item )
else: shutil.copy(file_name, os.path.join(out_dir, file_name)) os.chdir(out_dir) if not os.path.exists('out/'): os.mkdir('out/') for item in glob.glob('*asn.fits'): shutil.copy(item, 'out/') cal_list = glob.glob('*corrtag_a*') for corrtag in cal_list: try: calcos.calcos(corrtag, 'out/') except: print 'Exception occured' pass os.chdir('out/') for item in glob.glob('*x1d.fits'): fits = pyfits.open(item) for i in range(len(fits[1].data)): if not fits[1].data[i]['FLUX'].any(): fits[1].data[i]['DQ_WGT'] = 0 fits.writeto(item, clobber=True) for item in glob.glob('*asn.fits'): remake_asn(item)
def calibrate_files(outputfolder, item): calcos.calcos(item ,outdir=outputfolder)