Beispiel #1
0
def get_all_patterns(obs_name):
    patterns = []
    for val_num, val_str in zip((0, 1), ('low', 'high')):
        fstr = mc.always_formula(obs_name, val_num)
        pattern = (
            '(:type "no_change" '
            ':value (:type "qualitative" :value "%s"))' % val_str
            )
        patterns.append((fstr, pattern))
    for val_num, val_str in zip((0, 1), ('low', 'high')):
        fstr = mc.eventual_formula(obs_name, val_num)
        pattern = (
            '(:type "eventual_value" '
            ':value (:type "qualitative" :value "%s"))' % val_str
            )
        patterns.append((fstr, pattern))
    fstr = mc.transient_formula(obs_name)
    pattern = '(:type "transient")'
    patterns.append((fstr, pattern))
    fstr = mc.sustained_formula(obs_name)
    pattern = '(:type "sustained")'
    patterns.append((fstr, pattern))
    for val_num, val_str in zip((0, 1), ('low', 'high')):
        fstr = mc.sometime_formula(obs_name, val_num)
        pattern = (
            '(:type "sometime_value" '
            ':value (:type "qualitative" :value "%s"))' % val_str
            )
        patterns.append((fstr, pattern))
    fstr = mc.noact_formula(obs_name)
    pattern = '(:type "no_change")'
    patterns.append((fstr, pattern))
    return patterns
Beispiel #2
0
def get_all_patterns(obs_name):
    patterns = []
    for val_num, val_str in zip((0, 1), ('low', 'high')):
        fstr = mc.always_formula(obs_name, val_num)
        pattern = ('(:type "always_value" '
                   ':value (:type "qualitative" :value "%s"))' % val_str)
        patterns.append((fstr, pattern))
    for val_num, val_str in zip((0, 1), ('low', 'high')):
        fstr = mc.eventual_formula(obs_name, val_num)
        pattern = ('(:type "eventual_value" '
                   ':value (:type "qualitative" :value "%s"))' % val_str)
        patterns.append((fstr, pattern))
    fstr = mc.transient_formula(obs_name)
    pattern = '(:type "transient")'
    patterns.append((fstr, pattern))
    fstr = mc.sustained_formula(obs_name)
    pattern = '(:type "sustained")'
    patterns.append((fstr, pattern))
    for val_num, val_str in zip((0, 1), ('low', 'high')):
        fstr = mc.sometime_formula(obs_name, val_num)
        pattern = ('(:type "sometime_value" '
                   ':value (:type "qualitative" :value "%s"))' % val_str)
        patterns.append((fstr, pattern))
    fstr = mc.noact_formula(obs_name)
    pattern = '(:type "no_change")'
    patterns.append((fstr, pattern))
    return patterns
Beispiel #3
0
def get_all_patterns(obs_name):
    patterns = []

    # Always high/low
    for val_num, val_str in zip((0, 1), ('low', 'high')):
        fstr = mc.always_formula(obs_name, val_num)
        kpattern = (
            '(:type "no_change" '
            ':value (:type "qualitative" :value "%s"))' % val_str
            )
        pattern = TemporalPattern('no_change', [], None,
                                  value=MolecularQuantity('qualitative',
                                                          '%s' % val_str))
        patterns.append((fstr, kpattern, pattern))

    # Eventually high/low
    for val_num, val_str in zip((0, 1), ('low', 'high')):
        fstr = mc.eventual_formula(obs_name, val_num)
        kpattern = (
            '(:type "eventual_value" '
            ':value (:type "qualitative" :value "%s"))' % val_str
            )
        pattern = TemporalPattern('eventual_value', [], None,
                                  value=MolecularQuantity('qualitative',
                                                          '%s' % val_str))
        patterns.append((fstr, kpattern, pattern))

    # Transient
    fstr = mc.transient_formula(obs_name)
    kpattern = '(:type "transient")'
    pattern = TemporalPattern('transient', [], None)
    patterns.append((fstr, kpattern, pattern))

    # Sustined
    fstr = mc.sustained_formula(obs_name)
    kpattern = '(:type "sustained")'
    pattern = TemporalPattern('sustained', [], None)
    patterns.append((fstr, kpattern, pattern))

    # Sometime high/low
    for val_num, val_str in zip((0, 1), ('low', 'high')):
        fstr = mc.sometime_formula(obs_name, val_num)
        kpattern = (
            '(:type "sometime_value" '
            ':value (:type "qualitative" :value "%s"))' % val_str
            )
        pattern = TemporalPattern('sometime_value', [], None,
                                  value=MolecularQuantity('qualitative',
                                                          '%s' % val_str))
        patterns.append((fstr, kpattern, pattern))

    # No change any value
    fstr = mc.noact_formula(obs_name)
    kpattern = '(:type "no_change")'
    pattern = TemporalPattern('no_change', [], None)
    patterns.append((fstr, kpattern, pattern))

    return patterns
Beispiel #4
0
def get_ltl_from_pattern(pattern, obs):
    if not pattern.pattern_type:
        return None
    if pattern.pattern_type == 'transient':
        fstr = mc.transient_formula(obs.name)
    elif pattern.pattern_type == 'sustained':
        fstr = mc.sustained_formula(obs.name)
    elif pattern.pattern_type in ('no_change', 'always_value'):
        if not hasattr(pattern, 'value') or pattern.value is None:
            fstr = mc.noact_formula(obs.name)
        elif not pattern.value.quant_type == 'qualitative':
            msg = 'Cannot handle always value of "%s" type.' % \
                pattern.value.quant_type
            raise InvalidTemporalPatternError(msg)
        else:
            if pattern.value.value == 'low':
                val = 0
            elif pattern.value.value == 'high':
                val = 1
            else:
                msg = 'Cannot handle always value of "%s".' % \
                    pattern.value.value
                raise InvalidTemporalPatternError(msg)
            fstr = mc.always_formula(obs.name, val)
    elif pattern.pattern_type == 'eventual_value':
        if not pattern.value.quant_type == 'qualitative':
            msg = 'Cannot handle eventual value of "%s" type.' % \
                pattern.value.quant_type
            raise InvalidTemporalPatternError(msg)
        if pattern.value.value == 'low':
            val = 0
        elif pattern.value.value == 'high':
            val = 1
        else:
            msg = 'Cannot handle eventual value of "%s".' % \
                pattern.value.value
            raise InvalidTemporalPatternError(msg)
        fstr = mc.eventual_formula(obs.name, val)
    elif pattern.pattern_type == 'sometime_value':
        if not pattern.value.quant_type == 'qualitative':
            msg = 'Cannot handle sometime value of "%s" type.' % \
                pattern.value.quant_type
            raise InvalidTemporalPatternError(msg)
        if pattern.value.value == 'low':
            val = 0
        elif pattern.value.value == 'high':
            val = 1
        else:
            msg = 'Cannot handle sometime value of "%s".' % \
                pattern.value.value
            raise InvalidTemporalPatternError(msg)
        fstr = mc.sometime_formula(obs.name, val)
    else:
        msg = 'Unknown pattern %s' % pattern.pattern_type
        raise InvalidTemporalPatternError(msg)
    return fstr
Beispiel #5
0
def get_ltl_from_pattern(pattern, obs):
    if not pattern.pattern_type:
        return None
    if pattern.pattern_type == 'transient':
        fstr = mc.transient_formula(obs.name)
    elif pattern.pattern_type == 'sustained':
        fstr = mc.sustained_formula(obs.name)
    elif pattern.pattern_type in ('no_change', 'always_value'):
        if not hasattr(pattern, 'value') or pattern.value is None:
            fstr = mc.noact_formula(obs.name)
        elif not pattern.value.quant_type == 'qualitative':
            msg = 'Cannot handle always value of "%s" type.' % \
                pattern.value.quant_type
            raise InvalidTemporalPatternError(msg)
        else:
            if pattern.value.value == 'low':
                val = 0
            elif pattern.value.value == 'high':
                val = 1
            else:
                msg = 'Cannot handle always value of "%s".' % \
                    pattern.value.value
                raise InvalidTemporalPatternError(msg)
            fstr = mc.always_formula(obs.name, val)
    elif pattern.pattern_type == 'eventual_value':
        if not pattern.value.quant_type == 'qualitative':
            msg = 'Cannot handle eventual value of "%s" type.' % \
                pattern.value.quant_type
            raise InvalidTemporalPatternError(msg)
        if pattern.value.value == 'low':
            val = 0
        elif pattern.value.value == 'high':
            val = 1
        else:
            msg = 'Cannot handle eventual value of "%s".' % \
                pattern.value.value
            raise InvalidTemporalPatternError(msg)
        fstr = mc.eventual_formula(obs.name, val)
    elif pattern.pattern_type == 'sometime_value':
        if not pattern.value.quant_type == 'qualitative':
            msg = 'Cannot handle sometime value of "%s" type.' % \
                pattern.value.quant_type
            raise InvalidTemporalPatternError(msg)
        if pattern.value.value == 'low':
            val = 0
        elif pattern.value.value == 'high':
            val = 1
        else:
            msg = 'Cannot handle sometime value of "%s".' % \
                pattern.value.value
            raise InvalidTemporalPatternError(msg)
        fstr = mc.sometime_formula(obs.name, val)
    else:
        msg = 'Unknown pattern %s' % pattern.pattern_type
        raise InvalidTemporalPatternError(msg)
    return fstr