示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#5
0
文件: reduction.py 项目: cwfinn/COS
    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)
示例#6
0
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) )
示例#7
0
    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

示例#8
0
    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...'
示例#9
0
   


    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 )
示例#10
0
                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)
示例#11
0
def calibrate_files(outputfolder, item):
	calcos.calcos(item ,outdir=outputfolder)