コード例 #1
0
def between_wrapper(fstr, token, ai):
    aa = ARGS_REGEX.search(token).group(0)[1:-1].split(',')
    kk = aa[0]
    if '.' in kk:
        kk = kk.split('.')[0].strip()

    for aa in ((DEFLECTION_REGEX, 'obj.get_deflection(attr, current=True)'),
               (BASELINECOR_REGEX, 'aa.get_baseline_corrected_value(attr)'),
               (BASELINE_REGEX, 'aa.get_baseline_value(attr)'),
               (MIN_REGEX, 'aa.get_values(attr, window or -1).min()', kfunc()),
               (MAX_REGEX, 'aa.get_values(attr, window or -1).max()', kfunc()),
               (CP_REGEX, 'aa.get_current_intensity(attr)')):
        if len(aa) == 2:
            r, ff = aa
            kf = lambda x: x
        else:
            r, ff, kf = aa
        # print kk, ai, ff, reg.match(kk)
        if r.match(kk):
            # print 'matrch', ff, kk, ai
            return wrapper(ff, token, kf(kk))
    else:
        # if '.' in ai:
        #     self.unique_warning('invalid modifier teststr="{}"'.format(kk))
        #     return
        # else:
        return wrapper(fstr, token, ai)
コード例 #2
0
ファイル: utilities.py プロジェクト: ael-noblegas/pychron
def extract_attr(key):
    """
    """
    if key.startswith('L2(CDD)'):
        return 'L2(CDD)'

    try:
        aa = ARGS_REGEX.search(key).group(0)[1:-1].split(',')
        key = aa[0]
        if '.' in key:
            key = key.split('.')[0].strip()
    except AttributeError:
        pass

    m = PARENTHESES_REGEX.findall(key)
    if m:
        key = m[0][1:-1]
    else:
        m = KEY_REGEX.findall(key)
        if m:
            k = m[0]
            if k in ('not',):
                k = m[1]
            key = k

    return key
コード例 #3
0
    def _selected_changed(self, new):
        if new:
            teststr = new.teststr
            with no_update(self):
                for a in TAGS.split(','):
                    try:
                        setattr(self, a, getattr(new, a))
                    except AttributeError:
                        continue

                self.function = ''
                self.secondary_value = 0
                self.value = 0
                self.modifier = ''

                for r, a in ((CP_REGEX, 'Current'),
                             (STD_REGEX, 'StdDev'),
                             (ACTIVE_REGEX, 'Inactive'),
                             (BASELINECOR_REGEX, 'BaselineCorrected'),
                             (BASELINE_REGEX, 'Baseline')):
                    if r.search(teststr):
                        setattr(self, 'modifier', a)
                        break

                for r, a in ((MAX_REGEX, 'Max'),
                             (MIN_REGEX, 'Min'),
                             (AVG_REGEX, 'Average'),
                             (SLOPE_REGEX, 'Slope')):
                    if r.search(teststr):
                        setattr(self, 'function', a)
                        break
                else:
                    if BETWEEN_REGEX.search(teststr):
                        self.function = 'Between'
                        self.comparator = ''
                        args = ARGS_REGEX.findall(teststr)[0][1:-1].split(',')
                        self.value = float(args[1].strip())
                        self.secondary_value = float(args[2].strip())

                # extract comparator
                m = COMP_REGEX.findall(teststr)
                if m:
                    m1 = m[0]

                    self.comparator = c = m1
                    self.value = float(teststr.split(c)[-1])

                # extract use invert
                if teststr.startswith('not '):
                    self.use_invert = True

                self._selected_changed_hook()
コード例 #4
0
    def _selected_changed(self, new):
        if new:
            teststr = new.teststr
            with no_update(self):
                for a in TAGS.split(','):
                    try:
                        setattr(self, a, getattr(new, a))
                    except (AttributeError, TraitError):
                        continue

                self.function = ''
                self.secondary_value = 0
                self.value = 0
                self.modifier = ''

                for r, a in ((CP_REGEX, 'Current'), (STD_REGEX, 'StdDev'),
                             (ACTIVE_REGEX, 'Inactive'), (BASELINECOR_REGEX,
                                                          'BaselineCorrected'),
                             (BASELINE_REGEX, 'Baseline')):
                    if r.search(teststr):
                        setattr(self, 'modifier', a)
                        break

                for r, a in ((MAX_REGEX, 'Max'), (MIN_REGEX, 'Min'),
                             (AVG_REGEX, 'Average'), (SLOPE_REGEX, 'Slope')):
                    if r.search(teststr):
                        setattr(self, 'function', a)
                        break
                else:
                    if BETWEEN_REGEX.search(teststr):
                        self.function = 'Between'
                        self.comparator = ''
                        args = ARGS_REGEX.findall(teststr)[0][1:-1].split(',')
                        self.value = float(args[1].strip())
                        self.secondary_value = float(args[2].strip())

                # extract comparator
                m = COMP_REGEX.findall(teststr)
                if m:
                    m1 = m[0]

                    self.comparator = c = m1
                    self.value = float(teststr.split(c)[-1])

                # extract use invert
                if teststr.startswith('not '):
                    self.use_invert = True

                self._selected_changed_hook()
コード例 #5
0
def between_teststr(token):
    args = ARGS_REGEX.search(token).group(0)[1:-1].split(',')
    kk = args[0]
    if '.' in kk:
        kk = kk.replace('.', '_')
    else:
        for rargs in ((MIN_REGEX,),
                      (MAX_REGEX,)):
            if len(rargs) == 2:
                r, kf = rargs
            else:
                r = rargs[0]
                kf = kfunc()
            if r.match(kk):
                kk = kf(kk)
                break
    v1, v2 = args[1:]
    return kk, kk, '{}<={}<={}'.format(v1, kk, v2)