예제 #1
0
    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)
예제 #2
0
    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)
예제 #3
0
    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)
예제 #4
0
    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)
예제 #5
0
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