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())
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