Example #1
0
def get_time_interval(lst: KQMLList) -> tra.TimeInterval:
    try:
        lb = lst.gets('lower-bound')
        ub = lst.gets('upper-bound')
        unit = lst.gets('unit')
        return tra.TimeInterval(lb, ub, unit)
    except Exception as e:
        raise tra.InvalidTimeIntervalError(e)
Example #2
0
def get_molecular_quantity(lst: KQMLList) -> tra.MolecularQuantity:
    try:
        quant_type = lst.gets('type')
        value = lst.gets('value')
        if quant_type == 'concentration':
            unit = lst.gets('unit')
        else:
            unit = None
        return tra.MolecularQuantity(quant_type, value, unit)
    except Exception as e:
        raise tra.InvalidMolecularQuantityError(e)
Example #3
0
def get_molecular_condition(lst: KQMLList) -> tra.MolecularCondition:
    try:
        condition_type = lst.gets('type')
        quantity_ref_lst = lst.get('quantity')
        quantity = get_molecular_quantity_ref(quantity_ref_lst)
        if condition_type == 'exact':
            value = get_molecular_quantity(lst.get('value'))
        elif condition_type == 'multiple':
            value = lst.gets('value')
        else:
            value = None
        return tra.MolecularCondition(condition_type, quantity, value)
    except Exception as e:
        raise tra.InvalidMolecularConditionError(e)
Example #4
0
def get_molecular_quantity_ref(lst: KQMLList) -> tra.MolecularQuantityReference:
    try:
        quant_type = lst.gets('type')
        entity_lst = lst.get('entity')
        entity = get_molecular_entity(entity_lst)
        return tra.MolecularQuantityReference(quant_type, entity)
    except Exception as e:
        raise tra.InvalidMolecularQuantityRefError(e)
Example #5
0
def get_temporal_pattern(lst: KQMLList) -> tra.TemporalPattern:
    pattern_type = lst.gets('type')
    entities_lst = lst.get('entities')
    entities = []
    if entities_lst is None:
        entities_lst = []
    for e in entities_lst:
        entity = get_molecular_entity(e)
        entities.append(entity)
    time_limit_lst = lst.get('time-limit')
    if time_limit_lst is None:
        time_limit = None
    else:
        time_limit = get_time_interval(time_limit_lst)
    # TODO: handle more pattern-specific extra arguments
    value_lst = lst.get('value')
    if value_lst is not None:
        value = get_molecular_quantity(value_lst)
    else:
        value = None
    tp = tra.TemporalPattern(pattern_type, entities, time_limit, value=value)
    return tp