示例#1
0
    def setUp(self) :
        Reader = fitsGBT.Reader(test_file, feedback=0)
        blocks = Reader.read((),())
        for Data in blocks :
            rotate_pol.rotate(Data, (1,2,3,4))
        Writer = fitsGBT.Writer(blocks, feedback=0)
        Writer.write('test_rot.testout.fits')

        self.params = {'pc_file_middles' : ("test",),
                       'pc_input_end' : "_rot.testout.fits",
                       'pc_output_end' : "_polcal.testout.fits",
                       'pc_mueler_file' : test_mueler_file
                       }
示例#2
0
    def process_file(self, file_ind):
        """Process on file from the list to be processed based on the passed
        index.
        """

        self.file_ind = file_ind
        params = self.params
        file_middle = params['file_middles'][file_ind]
        input_fname = (params['input_root'] + file_middle +
                       params['input_end'])
        output_fname = (params['output_root'] + file_middle +
                        params['output_end'])
        Writer = fitsGBT.Writer(feedback=self.feedback)

        # Read in the data, and loop over data blocks.
        Reader = fitsGBT.Reader(input_fname, feedback=self.feedback)
        if hasattr(self, 'feedback_title') and self.feedback > 1:
            print self.feedback_title,
        # Get the number of scans if asked for all of them.
        scan_inds = params['scans']
        if len(scan_inds) == 0 or scan_inds is None:
            scan_inds = range(len(Reader.scan_set))
        # Loop over scans.
        for thisscan in scan_inds:
            Blocks = Reader.read(thisscan, params['IFs'], force_tuple=True)

            # Function that loops over DataBlocks within a scan.
            NewBlocks = self.scan_action(Blocks)
            del Blocks
            Writer.add_data(NewBlocks)

        # Go to a new line if we are printing statistics.
        if hasattr(self, 'feedback_title') and self.feedback > 1:
            print ''
        # Finally write the data back to file.
        utils.mkparents(output_fname)
        Writer.write(output_fname)
示例#3
0
def replace(in_dir, out_dir):

    kiyopy.utils.mkdir_p(out_dir)
    files = glob.glob(in_dir + '/*.fits')
    data_dir = os.getenv('GBT_DATA')
    for file in files:
        out_fname = out_dir + file.split('/')[-1]
        data_fname = data_dir + '/'.join(file.split('/')[-2:])
        if not os.path.isfile(data_fname):
            msg = "Raw data file: %s missing" % data_fname
            raise ValueError(msg)
        raw_Reader = fitsGBT.Reader(data_fname)
        raw_data_list = raw_Reader.read()
        Reader = fitsGBT.Reader(file)
        data_list = Reader.read()
        if len(raw_data_list) != len(data_list):
            raise ValueError("Wrong number of scans in raw data.")
        for ii in range(len(data_list)):
            raw_data = raw_data_list[ii]
            ra = raw_data.field['RA']
            ra_format = raw_data.field_formats['RA']
            ra_axes = raw_data.field_axes['RA']
            data_list[ii].set_field('RA',
                                    ra,
                                    axis_names=ra_axes,
                                    format=ra_format)

            dec = raw_data.field['DEC']
            dec_format = raw_data.field_formats['DEC']
            dec_axes = raw_data.field_axes['DEC']
            data_list[ii].set_field('DEC',
                                    dec,
                                    axis_names=dec_axes,
                                    format=dec_format)
        Writer = fitsGBT.Writer(data_list)
        Writer.write(out_fname)
示例#4
0
    def process_file(self, file_ind):
        params = self.params
        file_middle = params['file_middles'][file_ind]
        input_fname = (params['input_root'] + file_middle +
                       params['input_end'])
        sub_input_fname = (params['subtracted_input_root'] + file_middle +
                           params['input_end'])
        output_fname = (params['output_root'] + file_middle +
                        params['output_end'])
        sub_output_fname = (params['subtracted_output_root'] + file_middle +
                            params['output_end'])
        Writer = fitsGBT.Writer(feedback=self.feedback)
        SubWriter = fitsGBT.Writer(feedback=self.feedback)

        # Read in the data, and loop over data blocks.
        Reader = fitsGBT.Reader(input_fname, feedback=self.feedback)
        SubReader = fitsGBT.Reader(sub_input_fname, feedback=self.feedback)
        if (sp.any(Reader.scan_set != SubReader.scan_set)
                or sp.any(Reader.IF_set != SubReader.IF_set)):
            raise ce.DataError("IFs and scans don't match signal subtracted"
                               " data.")
        # Get the number of scans if asked for all of them.
        scan_inds = params['scans']
        if len(scan_inds) == 0 or scan_inds is None:
            scan_inds = range(len(Reader.scan_set))
        if_inds = params['IFs']
        if len(if_inds) == 0 or scan_inds is None:
            if_inds = range(len(Reader.IF_set))
        if self.feedback > 1:
            print "New flags each block:",
        # Loop over scans and IFs
        for thisscan in scan_inds:
            for thisIF in if_inds:
                Data = Reader.read(thisscan, thisIF)
                SubData = SubReader.read(thisscan, thisIF)
                # Make sure they have agreeing masks to start.
                SubData.data[ma.getmaskarray(Data.data)] = ma.masked
                Data.data[ma.getmaskarray(SubData.data)] = ma.masked
                # Get initial number of flags.
                n_flags = ma.count_masked(Data.data)
                # Now do the flagging.
                flag(Data, SubData, params['thres'],
                     params['max_noise_factor'],
                     params['smooth_modes_subtract'], params['filter_type'])
                Data.add_history(
                    "Reflaged for outliers.",
                    ("Used file: " +
                     utils.abbreviate_file_path(sub_input_fname), ))
                SubData.add_history("Reflaged for outliers.")
                Writer.add_data(Data)
                SubWriter.add_data(SubData)
                # Report the number of new flags.
                n_flags = ma.count_masked(Data.data) - n_flags
                if self.feedback > 1:
                    print n_flags,
        if self.feedback > 1:
            print ''
        # Finally write the data back to file.
        utils.mkparents(output_fname)
        utils.mkparents(sub_output_fname)
        Writer.write(output_fname)
        SubWriter.write(sub_output_fname)
import scipy as sp
import pyfits

from core import fitsGBT, data_block
from time_stream import stitch_windows_crude

# A calibration file from which I will copy headers and the like.
data_file_name = (os.getenv('GBT10B_DATA') +
                  '/05_3c286_onoff_161-164.raw.acs.fits')

# Where I saved Kevin's Tables.
kevin_table_dir = os.getenv('GBT10B_OUT') + '/kevin_cal/'
out_file = kevin_table_dir + 'cal_21.fits'
input_root = kevin_table_dir + '21_3c48_113-116_noisecal_'
Writer = fitsGBT.Writer()

Reader = fitsGBT.Reader(data_file_name)
Blocks = Reader.read(0, ())

required_fields = ('CRVAL1', 'CDELT1', 'CRPIX1', 'SCAN')
CalBlocks = ()

# Loop over IFs and read in the appropriate cal data.
for Data in Blocks:
    CalT = data_block.DataBlock()

    for field in required_fields:
        CalT.set_field(field, Data.field[field], Data.field_axes[field],
                       Data.field_formats[field])
    elif not band2:
        band2 = band
        band2_Blocks.append(Data)
    else :
        raise RuntimeError()

# Measure the parameters.
file_pars[band1] = measure_noise.measure_noise_parameters(band1_Blocks, 
                            ["channel_var", "mean_over_f",
                             "freq_modes_over_f_2", "freq_modes_over_f_4",
                             "freq_modes_over_f_6"])
file_pars[band2] = measure_noise.measure_noise_parameters(band2_Blocks, 
                            ["channel_var", "mean_over_f",
                             "freq_modes_over_f_2", "freq_modes_over_f_4",
                             "freq_modes_over_f_6"])
out_db = shelve.open('./testdata/testfile_guppi_noise_parameters.shelve', 'n')
out_db["testfile_guppi_rotated"] = file_pars
out_db.close()



Writer = fitsGBT.Writer(Blocks)
Writer.write('./testdata/testfile_guppi_rebinned.fits')
Writer = fitsGBT.Writer(split_Blocks)
Writer.write('./testdata/testfile_guppi_split.fits')
Writer = fitsGBT.Writer(comb_Blocks)
Writer.write('./testdata/testfile_guppi_combined.fits')
Writer = fitsGBT.Writer(rot_Blocks)
Writer.write('./testdata/testfile_guppi_rotated.fits')