コード例 #1
0
ファイル: qdv.py プロジェクト: hanswenzel/opticks
 def _get_maxlevel(self):
     """
     Overall level of the table : INFO, WARNING, ERROR or FATAL 
     based on the maximum level of the lines
     """
     levs = map(lambda dv: dv.lev.level, self.dvs)
     mxl = max(levs) if len(levs) > 0 else None
     return Level.FromLevel(mxl) if mxl is not None else None
コード例 #2
0
ファイル: absmry.py プロジェクト: hanswenzel/opticks
 def dvlev(self, dvn):
     levk = self.dvk(dvn, "level")
     levn = self[levk]
     return Level.FromName(levn)
コード例 #3
0
ファイル: absmry.py プロジェクト: hanswenzel/opticks
 def init(self):
     self.lev = None if self.level is None else Level.FromLevel(self.level)
コード例 #4
0
ファイル: qdv.py プロジェクト: hanswenzel/opticks
    def __init__(self, tab, idx, sel, dv, ndv, lcu, dvmax, msg=""):
        """
       :param tab: QDVTab instance 
       :param idx: unskipped orignal seqhis line index
       :param sel: single line selection eg 'TO BT BT SA'
       :param dv: photon max deviations within seqhis code selection  
       :param ndv: number of elements aggregated in the max
       :param lcu: list of length 3 with (seqhis-bigint, a-count, b-count)
       :param dvmax: triplet of floats for warn/error/fatal deviation levels

       Access an Dv instance in ipython::

            In [12]: ab.ox_dv.dvs[2]
            Out[12]:  0002            :                 TO BT BR BT SA :     561      527  :          27       324/       14: 0.043  mx/mn/av   0.00238/        0/3.823e-05  eps:0.0002    

       Get at the values::

           In [16]: av,bv = ab.ox_dv.dvs[2].av, ab.ox_dv.dvs[2].bv   

        
       Change in meaning of fractions
       -------------------------------- 

       The transition from dv.py to qdv.py changes the meaning of the 
       warning fractions : it used to be fraction of compared elements with deviation exceeding cut
       it is now fraction of photons with aggregated max deviation exceeding cut

       This tends to reduce the fractions, but its more meaningful as single elements dont go wrong 
       on there own : usually its the photon that goes wrong with many elements deviating together.
       So a fraction of deviant photons is more pertinent.
       """
        label = self.LMT % (idx, msg, sel, lcu[1], lcu[2])
        assert len(dvmax) == 3

        nitem = len(dv)
        npoi = len(sel.split())
        nelem = ndv * npoi * nitem

        if nelem > 0:
            mx = dv.max()
            mn = dv.min()
            avg = dv.sum() / float(nelem)
            disc = [dv[dv > dvmax[0]], dv[dv > dvmax[1]], dv[dv > dvmax[2]]]
            ndisc = map(len, disc)  # elements, not items
            fdisc = map(lambda _: float(_) / float(nelem), ndisc)
        else:
            mx = None
            mn = None
            avg = None
            ndisc = None
            fdisc = None
        pass

        self.tab = tab
        self.label = label
        self.nitem = nitem
        self.nelem = nelem

        self.mx = mx
        self.mn = mn
        self.avg = avg
        self.ndisc = ndisc
        self.fdisc = fdisc
        self.ismax = False  # set from DvTab

        self.dv = dv
        self.ndv = ndv
        self.lcu = lcu
        self.dvmax = dvmax
        self.msg = msg

        if self.mx > self.dvmax[2]:
            lev = Level.FromName("FATAL")
            lmsg = "  > dvmax[2] %.4f " % self.dvmax[2]
        elif self.mx > self.dvmax[1]:
            lev = Level.FromName("ERROR")
            lmsg = "  > dvmax[1] %.4f " % self.dvmax[1]
        elif self.mx > self.dvmax[0]:
            lev = Level.FromName("WARNING")
            lmsg = "  > dvmax[0] %.4f " % self.dvmax[0]
        else:
            lev = Level.FromName("INFO")
            lmsg = ""
        pass
        self.fn_ = lev.fn_
        self.lev = lev
        self.lmsg = lmsg