示例#1
0
def test_ecomap():
    """
    test mappings between GAF codes and ECO
    """
    m = EcoMap()
    assert m.coderef_to_ecoclass('IEA', 'GO_REF:0000002') == 'ECO:0000256'
    assert m.coderef_to_ecoclass('IEA') == 'ECO:0000501'
    assert m.coderef_to_ecoclass('IEA', 'FAKE:ID') == 'ECO:0000501'
    assert m.ecoclass_to_coderef('ECO:0000501') == ('IEA', None)
    assert m.ecoclass_to_coderef('ECO:0000256') == ('IEA', 'GO_REF:0000002')
    assert m.coderef_to_ecoclass('BADCODE', None) == None
    assert m.coderef_to_ecoclass('BADCODE', 'GO_REF:xxx') == None
    assert m.ecoclass_to_coderef('ECO:9999999999999999999') == (None, None)
    assert m.coderef_to_ecoclass('ISO', None) == 'ECO:0000266'
示例#2
0
class AssocFilter:
    def __init__(self, filter_rule : FilterRule):
        self.filter_rule = filter_rule
        self.ecomap = EcoMap()

    def validate_line(self, assoc):
        evi_code = self.ecomap.ecoclass_to_coderef(assoc["evidence"]["type"])[0]
        if evi_code in self.filter_rule.unwanted_evidence_codes:
            return False
        if len(self.filter_rule.unwanted_evi_code_ref_combos) > 0:
            references = assoc["evidence"]["has_supporting_reference"]
            for evi_ref_combo in self.filter_rule.unwanted_evi_code_ref_combos:
                if evi_ref_combo[0] == evi_code and evi_ref_combo[1] in references:
                    return False
        if len(self.filter_rule.unwanted_properties) > 0 and "annotation_properties" in assoc:
            for up in self.filter_rule.unwanted_properties:
                if up in assoc["annotation_properties"]:
                    return False
        if len(self.filter_rule.required_attributes) > 0:
            meets_requirement = False
            for attr in self.filter_rule.required_attributes:
                # a[attr] is dict
                for k in attr.keys():
                    if assoc[k] in attr[k]:
                        meets_requirement = True
            if not meets_requirement:
                return False
        return True