def from_fil(filename): """ Create a DataArray from a sigproc filterbank file Args: filename (str): Path to filterbank file. Returns a DataArray object with mem-mapped filterbank data. """ # Filterbank reading from blimpy.io import sigproc hdr = sigproc.read_header(filename) hdrlen = sigproc.len_header(filename) n_int = sigproc.calc_n_ints_in_file(filename) shape = (n_int, hdr['nbeams'], hdr['nchans']) data = np.memmap(filename=filename, dtype='float32', offset=hdrlen, shape=shape) attrs = {'name': os.path.basename(filename), 'source': hdr['source_name'], 'sky_coord': SkyCoord(hdr['src_raj'], hdr['src_dej'])} dims = ('time', 'feed_id', 'frequency') scales = { 'time': TimeScale('time', hdr['tstart'], hdr['tsamp'], data.shape[0], time_format='mjd', time_delta_format='sec'), 'feed_id': DimensionScale('feed_id', 0, 0, data.shape[1], units=''), 'frequency': DimensionScale('frequency', hdr['fch1'], hdr['foff'], data.shape[2], units='MHz') } d = DataArray(data, dims, scales, attrs) return d
def read_header(self, return_idxs=False): """ Read blimpy header and return a Python dictionary of key:value pairs Args: filename (str): name of file to open Optional args: return_idxs (bool): Default False. If true, returns the file offset indexes for values Returns: Python dict of key:value pairs, OR returns file offset indexes for values. """ self.header = sigproc.read_header(self.filename, return_idxs=return_idxs) return self.header