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 }
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)
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)
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')