def __init__(self, filename=None, size_limit = SIZE_LIM,out_dir='./'): if filename and os.path.isfile(filename): self.filename = filename self.out_dir = out_dir if not h5py.is_hdf5(filename): if not sigproc.is_filterbank(filename): raise IOError('No correct format, need .h5. Try again...') else: logger.info("File .fil detected. Attempting to create .h5 file in current directory...") try: self.__make_h5_file() except: raise IOError('Unable to create .h5 file. Please, try again with correct format.') self.filestat = os.stat(filename) self.filesize = self.filestat.st_size/(1024.0**2) if self.filesize > size_limit: logger.info("The file is of size %f MB, exceeding our size limit %f MB. Split needed..."%(self.filesize, size_limit)) self.data_list = self.__split_h5() else: #EE This is here mainly for testing. Since need to keep in mind the band pass shape. logger.debug("File size %f MB within range %f MB, okay..."%(self.filesize, size_limit)) data_obj = DATAH5(filename) self.data_list = [data_obj] self.status = True else: self.status = False logger.error("File %s doesn\'t exists, please check!"%self.filename) raise IOError("File %s doesn\'t exists, please check!"%self.filename)
def __init__(self, filename=None, size_limit=SIZE_LIM, out_dir='./', n_coarse_chan=None, coarse_chans=None): """ :param filename: string, name of file (.h5 or .fil) :param size_limit: float, maximum size in MB that the file is allowed to be :param out_dir: string, directory where output files should be saved """ if filename and os.path.isfile(filename): self.filename = filename self.out_dir = out_dir self.n_coarse_chan = n_coarse_chan self.coarse_chans = coarse_chans if not h5py.is_hdf5(filename): if not sigproc.is_filterbank(filename): raise IOError('No correct format, need .h5. Try again...') else: logger.info( "File .fil detected. Attempting to create .h5 file in current directory..." ) try: self.__make_h5_file() except: raise IOError( 'Unable to create .h5 file. Please, try again with correct format.' ) self.filestat = os.stat(filename) self.filesize = self.filestat.st_size / (1024.0**2) # Make sure file is not larger than limit. If it is, we must split the file if self.filesize > size_limit: logger.info( "The file is of size %f MB, exceeding our size limit %f MB. Split needed..." % (self.filesize, size_limit)) self.data_list = self.__split_h5() else: #EE This is here mainly for testing. Since need to keep in mind the band pass shape. logger.debug("File size %f MB within range %f MB, okay..." % (self.filesize, size_limit)) data_obj = DATAH5(filename) self.data_list = [data_obj] self.status = True else: self.status = False logger.error("File %s doesn\'t exists, please check!" % self.filename) raise IOError("File %s doesn\'t exists, please check!" % self.filename)
def __init__(self, filename=None, out_dir='./', n_coarse_chan=None, coarse_chans=None, kernels=None, gpu_backend=False, precision=2): if not kernels: self.kernels = Kernels(gpu_backend, precision) else: self.kernels = kernels if filename and os.path.isfile(filename): self.filename = filename self.out_dir = out_dir self.n_coarse_chan = n_coarse_chan self.coarse_chans = coarse_chans if not h5py.is_hdf5(filename): if not sigproc.is_filterbank(filename): self.status = False errmsg = 'Not a filterbank file: {}'.format(filename) logger.error(errmsg) raise IOError(errmsg) logger.info( "Filterbank file detected. Attempting to create .h5 file in current directory..." ) try: self.__make_h5_file() except: self.status = False errmsg = 'Unable to create .h5 file from: {}'.format( filename) logger.error(errmsg) raise IOError(errmsg) self.filestat = os.stat(filename) self.filesize = self.filestat.st_size / (1024.0**2) # Grab header from DATAH5 dobj_master = DATAH5(filename, kernels=self.kernels) self.header = dobj_master.header dobj_master.close() # Split the file self.data_list = self.__split_h5() self.status = True else: self.status = False errmsg = "File {} doesn\'t exist, please check!".format(filename) logger.error(errmsg) raise IOError(errmsg)
def __init__(self, filename=None, out_dir='./', n_coarse_chan=None, coarse_chans=None): """ :param filename: string, name of file (.h5 or .fil) :param out_dir: string, directory where output files should be saved :param n_coarse_chan: integer, number of coarse channels :param coarse_chans list or None, list of course channels """ if filename and os.path.isfile(filename): self.filename = filename self.out_dir = out_dir self.n_coarse_chan = n_coarse_chan self.coarse_chans = coarse_chans if not h5py.is_hdf5(filename): if not sigproc.is_filterbank(filename): raise IOError('Not a filterbank file: {}'.format(filename)) logger.info( "Filterbank file detected. Attempting to create .h5 file in current directory..." ) try: self.__make_h5_file() except: raise IOError( 'Unable to create .h5 file from: {}.format(filename)') self.filestat = os.stat(filename) self.filesize = self.filestat.st_size / (1024.0**2) # Grab header from DATAH5 dobj_master = DATAH5(filename) self.header = dobj_master.header dobj_master.close() # Split the file self.data_list = self.__split_h5() self.status = True else: self.status = False errmsg = "File {} doesn\'t exist, please check!".format(filename) logger.error(errmsg) raise IOError(errmsg)
def test_sigproc_is_fil(): """ Check that the is_fil function works """ assert sigproc.is_filterbank(voyager_h5) is False assert sigproc.is_filterbank(voyager_fil) is True