Пример #1
0
    def __init__(self, run, datadir=None, ending=".dat"):
        '''Specify a run number (or file name) and data directory

        Arguments:
        run -- integer (negative values mean relative to last run number) or filename
        datadir -- data directory
        ending -- file name ending, defaults to ".dat"
        '''
#        try:
#            self.run = int(run)
#            if run <= 0:
#                try:
#                    import gda.data.NumTracker as NumTracker #@UnresolvedImport
#                    self.run += NumTracker().getCurrentFileNumber()
#                except ImportError:
#                    print "No gda configuration access so cannot support negative numbers"
#                    raise
#
#            if datadir is None:
#                datadir = self._getgdadir()
#            self.srsfile = _path.join(datadir, self.run + ending)
#            if not _os.access(self.srsfile, _os.R_OK):
#                self.srsfile = self._findsrs(datadir, ending)
#        except ValueError:
#            if isinstance(run, str):
#                if run.startswith('/'):
#                    datadir = ""
#                else:
#                    if datadir is None:
#                        datadir = self._getgdadir()
#                self.srsfile = _path.join(datadir, run)
#            else:
#                print "run must be a number or a file path"
        self.run = int(run)
        self.srsfile = self._findsrs(datadir, ending)

        print 'file is', self.srsfile
        self.basedir = _path.dirname(self.srsfile)
        dh = load(self.srsfile, formats=['srs'])
        DataHolder.__init__(self, dh.items(), dh.metadata.items())
Пример #2
0
    def __init__(self, scan, data_dir, visit=None, year=None, ending=".dat"):
        '''Specify a scan number (or file name) and data directory

        Looks for file in data_dir/year/visit/
        Arguments:
        scan      - scan number
        data_dir - beamline data directory, such as '/dls/i01/data'
        visit    - visit-ID, such as cm1234-1 (defaults to data_dir and its sub-directories)
        year     - calendar year (defaults to visit directory and any year in range 2000-99)
        ending   - suffix or list of suffices (defaults to '.dat')
        '''
        scan = int(scan)
        files = find_scan_files(scan, data_dir, visit, year, ending)
        if len(files) == 1:
            srsfile = files[0]
        else:
            # find shortest name
            ls = [len(f) for f in files]
            lc = min(ls)
            if ls.count(lc) > 1: # if there is more than one of same length
                for l, f in zip(ls, files):
                    if l == lc:
                        if f.endswith(ending[0]): # prefer first ending
                            srsfile = f
                            break
            else:
                srsfile = files[ls.index(lc)]

        dh = load(srsfile, format='srs')
        itms = []
        mds = []
        for i in dh.items():
            if i[0] == 'metadata':
                mds = i[1].items()
            else:
                itms.append(i)
        _DataHolder.__init__(self, itms, mds)
        self.__scan = scan
        self.__file = srsfile
Пример #3
0
    def __init__(self, scan, data_dir, visit=None, year=None, ending=".dat"):
        '''Specify a scan number (or file name) and data directory

        Looks for file in data_dir/year/visit/
        Arguments:
        scan      - scan number
        data_dir - beamline data directory, such as '/dls/i01/data'
        visit    - visit-ID, such as cm1234-1 (defaults to data_dir and its sub-directories)
        year     - calendar year (defaults to visit directory and any year in range 2000-99)
        ending   - suffix or list of suffices (defaults to '.dat')
        '''
        scan = int(scan)
        files = find_scan_files(scan, data_dir, visit, year, ending)
        if len(files) == 1:
            srsfile = files[0]
        else:
            # find shortest name
            ls = [len(f) for f in files]
            lc = min(ls)
            if ls.count(lc) > 1:  # if there is more than one of same length
                for l, f in zip(ls, files):
                    if l == lc:
                        if f.endswith(ending[0]):  # prefer first ending
                            srsfile = f
                            break
            else:
                srsfile = files[ls.index(lc)]

        dh = load(srsfile, format='srs')
        itms = []
        mds = []
        for i in dh.items():
            if i[0] == 'metadata':
                mds = i[1].items()
            else:
                itms.append(i)
        _DataHolder.__init__(self, itms, mds)
        self.__scan = scan
        self.__file = srsfile