Source code for PSCalib.DCInterface

#-----------------------------------------------------------------------------
# File and Version Information:
#  $Id: DCInterface.py 12730 2016-10-11 21:11:56Z dubrovin@SLAC.STANFORD.EDU $
#-----------------------------------------------------------------------------

"""
:py:class:`PSCalib.DCInterface` - abstract interface for the Detector Calibration (DC) project.

@see project modules
    * :py:class:`PSCalib.DCStore`
    * :py:class:`PSCalib.DCType`
    * :py:class:`PSCalib.DCRange`
    * :py:class:`PSCalib.DCVersion`
    * :py:class:`PSCalib.DCBase`
    * :py:class:`PSCalib.DCInterface`
    * :py:class:`PSCalib.DCUtils`
    * :py:class:`PSCalib.DCDetectorId`
    * :py:class:`PSCalib.DCConfigParameters`
    * :py:class:`PSCalib.DCFileName`
    * :py:class:`PSCalib.DCLogger`
    * :py:class:`PSCalib.DCMethods`
    * :py:class:`PSCalib.DCEmail`

This software was developed for the SIT project.
If you use all or part of it, please give an appropriate acknowledgment.

@version $Id: DCInterface.py 12730 2016-10-11 21:11:56Z dubrovin@SLAC.STANFORD.EDU $

@author Mikhail S. Dubrovin
"""

#---------------------------------
__version__ = "$Revision: 12730 $"
#---------------------------------

import sys
from PSCalib.DCBase import DCBase

#------------------------------


[docs]class DCStoreI(DCBase) : """Abstract interface class for the Detector Calibration (DC) project cs = DCStoreI(fname) tscfile = cs.tscfile() # (int) time stamp of the file creation dettype = cs.dettype() # (str) detector type detid = cs.detid() # (str) detector id detname = cs.detname() # (str) detector name of self object predecessor = cs.predecessor() # (str) detname of predecessor or None successor = cs.successor() # (str) detname of successor or None ctypes = cs.ctypes() # (list) calibration types in the file cto = cs.ctypeobj(ctype) # (DCType ~ h5py.Group) calibration type object cs.set_tscfile(ts) # set (int) time stamp of the file creation cs.set_dettype(dettype) # set (str) detector type cs.set_detid(detid) # set (str) detector id cs.set_detname(detname) # set (str) detector name of self object cs.set_predecessor(pred) # set (str) detname of predecessor or None cs.set_successor(succ) # set (str) detname of successor or None cs.add_ctype(ctype) # add (str) calibration type to the DCStore object ct = cs.mark_ctype(ctype) # mark ctype (str) from the DCStore object, returns (str) ctype or None cs.mark_ctypes() # mark all ctypes from the DCStore object cs.clear_ctypes(ctype) # clear dictionary of ctypes in the DCStore object cs.save(path, mode) # save current calibration in the file specified by path, if path is Null - update current file. cs.load(path) # load content of the file in DCStore object """ def __init__(self, fname, cmt=None) : DCBase.__init__(self, cmt) #super(DCStoreI, self).__init__() self._name = self.__class__.__name__
[docs] def tscfile(self) : print_warning(self, sys._getframe()); return None
[docs] def dettype(self) : print_warning(self, sys._getframe()); return None
[docs] def detid(self) : print_warning(self, sys._getframe()); return None
[docs] def detname(self) : print_warning(self, sys._getframe()); return None
[docs] def predecessor(self) : print_warning(self, sys._getframe()); return None
[docs] def successor(self) : print_warning(self, sys._getframe()); return None
[docs] def ctypes(self) : print_warning(self, sys._getframe()); return None
[docs] def ctypeobj(self, ctype) : print_warning(self, sys._getframe()); return None
[docs] def set_tscfile(self, ts) : print_warning(self, sys._getframe())
[docs] def set_dettype(self, dettype) : print_warning(self, sys._getframe())
[docs] def set_detid(self, detid) : print_warning(self, sys._getframe())
[docs] def set_detname(self, detname) : print_warning(self, sys._getframe())
[docs] def set_predecessor(self, pred) : print_warning(self, sys._getframe())
[docs] def set_successor(self, succ) : print_warning(self, sys._getframe())
[docs] def add_ctype(self, ctype, cmt=None) : print_warning(self, sys._getframe()); return None
[docs] def mark_ctype(self, ctype) : print_warning(self, sys._getframe()); return None
[docs] def mark_ctypes(self) : print_warning(self, sys._getframe())
[docs] def clear_ctypes(self) : print_warning(self, sys._getframe())
[docs] def save(self, path) : print_warning(self, sys._getframe())
[docs] def load(self, path) : print_warning(self, sys._getframe())
[docs] def print_obj(self, offset) : print_warning(self, sys._getframe()) #------------------------------
[docs]class DCTypeI(DCBase) : """Abstract interface class for the Detector Calibration (DC) project cto = DCTypeI(type) ctype = cto.ctype() # (str) of ctype name ranges = cto.ranges() # (list) of time ranges for ctype ro = cto.rangeobj(begin, end) # (DCRange ~ h5py.Group) time stamp validity range object ro = cto.range_for_tsec(tsec) # (DCRange) range object for time stamp in (double) sec ro = cto.range_for_evt(evt) # (DCRange) range object for psana.Evt object cto.add_range(tsr) # add (str) of time ranges for ctype keyr = cto.mark_range(begin, end) # mark range from the DCType object keyr = cto.mark_range_for_key(keyr) # mark range from the DCType object cto.mark_ranges(tsr) # mark all ranges from the DCType object cto.print_obj() """ def __init__(self, ctype, cmt=None) : DCBase.__init__(self, cmt) self._name = self.__class__.__name__
[docs] def ctype(self) : print_warning(self, sys._getframe()); return None
[docs] def ranges(self) : print_warning(self, sys._getframe()); return None
[docs] def range(self, begin, end) : print_warning(self, sys._getframe()); return None
[docs] def add_range(self, begin, end, cmt=None) : print_warning(self, sys._getframe()); return None
[docs] def mark_range(self, begin, end) : print_warning(self, sys._getframe()); return None
[docs] def mark_range_for_key(self, k) : print_warning(self, sys._getframe()); return None
[docs] def mark_ranges(self) : print_warning(self, sys._getframe())
[docs] def clear_ranges(self) : print_warning(self, sys._getframe())
[docs] def range_for_tsec(self, tsec) : print_warning(self, sys._getframe())
[docs] def range_for_evt(self, evt) : print_warning(self, sys._getframe())
[docs] def save(self, group) : print_warning(self, sys._getframe())
[docs] def load(self, path) : print_warning(self, sys._getframe())
[docs] def print_obj(self) : print_warning(self, sys._getframe()) #------------------------------
[docs]class DCRangeI(DCBase) : """Abstract interface class for the Detector Calibration (DC) project o = DCRangeI(begin, end) tsbegin = o.begin() # (int) time stamp beginning validity range tsend = o.end() # (int) time stamp ending validity range dico = o.versions() # (list of uint) versions of calibrations vnum = o.vnum_def() # (DCVersion ~ h5py.Group) reference to the default version in the time-range object vo = o.version(vers) # (DCVersion ~ h5py.Group) specified version in the time-range object bool = o.tsec_in_range(tsec) # (bool) True/False if tsec is/not in the validity range bool = o.evt_in_range(evt) # (bool) True/False if evt is/not in the validity range o.set_begin(tsbegin) # set (int) time stamp beginning validity range o.set_end(tsend) # set (int) time stamp ending validity range o.add_version(vers) # set (DCVersion ~ h5py.Group) versions of calibrations o.set_versdef(vers) # set (DCVersion ~ h5py.Group) versions of calibrations vnum = o.mark_version(vers) # del version o.mark_versions() # del all registered versions """ def __init__(self, begin, end, cmt=None) : DCBase.__init__(self, cmt) self._name = self.__class__.__name__
[docs] def begin(self) : print_warning(self, sys._getframe()); return None
[docs] def end(self) : print_warning(self, sys._getframe()); return None
[docs] def versions(self) : print_warning(self, sys._getframe()); return None
[docs] def version(self, vnum) : print_warning(self, sys._getframe()); return None
[docs] def vnum_def(self) : print_warning(self, sys._getframe()); return None
[docs] def vnum_last(self) : print_warning(self, sys._getframe()); return None
[docs] def set_begin(self, begin) : print_warning(self, sys._getframe())
[docs] def set_end(self, end) : print_warning(self, sys._getframe())
[docs] def add_version(self, cmt=None): print_warning(self, sys._getframe()); return None
[docs] def set_vnum_def(self, vnum) : print_warning(self, sys._getframe())
[docs] def mark_version(self, vnum) : print_warning(self, sys._getframe()); return None
[docs] def mark_versions(self) : print_warning(self, sys._getframe())
[docs] def clear_versions(self) : print_warning(self, sys._getframe())
[docs] def tsec_in_range(self, tsec) : print_warning(self, sys._getframe()); return False
[docs] def evt_in_range(self, evt) : print_warning(self, sys._getframe()); return False
[docs] def save(self, group) : print_warning(self, sys._getframe())
[docs] def load(self, group) : print_warning(self, sys._getframe())
[docs] def print_obj(self) : print_warning(self, sys._getframe()) #------------------------------
[docs]class DCVersionI(DCBase) : """Abstract interface class for the Detector Calibration (DC) project o = DCVersionI(vnum, tsprod=None, arr=None) o.set_vnum(vnum) # sets (int) version o.set_tsprod(tsprod) # sets (double) time stamp of the version production o.add_data(nda) # sets (np.array) calibration array vnum = o.vnum() # returns (int) version number s_vnum = o.str_vnum() # returns (str) version number tsvers = o.tsprod() # returns (double) time stamp of the version production nda = o.data() # returns (np.array) calibration array o.save(group) # saves object content under h5py.group in the hdf5 file. o.load(group) # loads object content from the h5py.group of hdf5 file. """ def __init__(self, vnum, tsprod=None, arr=None, cmt=None) : DCBase.__init__(self, cmt) self._name = self.__class__.__name__
[docs] def set_vnum(self, vnum) : print_warning(self, sys._getframe())
[docs] def set_tsprod(self, tsprod) : print_warning(self, sys._getframe())
[docs] def add_data(self, nda) : print_warning(self, sys._getframe())
[docs] def vnum(self) : print_warning(self, sys._getframe()); return None
[docs] def str_vnum(self) : print_warning(self, sys._getframe()); return None
[docs] def tsprod(self) : print_warning(self, sys._getframe()); return None
[docs] def data(self) : print_warning(self, sys._getframe()); return None
[docs] def save(self, group) : print_warning(self, sys._getframe())
[docs] def load(self, group) : print_warning(self, sys._getframe())
[docs] def print_obj(self) : print_warning(self, sys._getframe()) #------------------------------ #------------------------------ #----------- TEST ------------- #------------------------------ #------------------------------
[docs]def test_DCStoreI() : o = DCStoreI(None) # 'cfname.hdf5' r = o.tscfile() r = o.dettype() r = o.detid() r = o.detname() r = o.predecessor() r = o.successor() r = o.ctypes() r = o.ctypeobj(None) o.set_tscfile(None) o.set_dettype(None) o.set_detid(None) o.set_detname(None) o.set_predecessor(None) o.set_successor(None) o.add_ctype(None) t = o.mark_ctype(None) o.mark_ctypes() o.clear_ctypes() o.save(None) o.load(None) #------------------------------
[docs]def test_DCTypeI() : o = DCTypeI(None) r = o.ctype() r = o.ranges() r = o.range(None, None) o.add_range(None, None) o.mark_range(None, None) r = o.mark_range_for_key(None) o.mark_ranges() o.save(None) o.load(None) #------------------------------
[docs]def test_DCRangeI() : o = DCRangeI(None, None) b = o.begin() e = o.end() v = o.versions() n = o.vnum_def() r = o.version(None) o.set_begin(None) o.set_end(None) v = o.add_version() o.set_vnum_def(None) v = o.del_version(None) o.del_versions() o.save(None) o.load(None) #------------------------------
[docs]def test_DCVersionI() : o = DCVersionI(None) r = o.vnum() r = o.str_vnum() r = o.tsprod() r = o.data() o.set_vnum(None) o.set_tsprod(None) o.add_data(None) o.save(None) o.load(None) #------------------------------
[docs]def test() : if len(sys.argv)==1 : print 'For test(s) use command: python %s <test-number=1-4>' % sys.argv[0] elif(sys.argv[1]=='1') : test_DCStoreI() elif(sys.argv[1]=='2') : test_DCTypeI() elif(sys.argv[1]=='3') : test_DCRangeI() elif(sys.argv[1]=='4') : test_DCVersionI() else : print 'Non-expected arguments: sys.argv = %s use 1,2,...' % sys.argv #------------------------------
if __name__ == "__main__" : test() sys.exit( 'End of %s test.' % sys.argv[0]) #------------------------------