예제 #1
0
def test_expand_families():
    # Get the Expander
    exp = ef.Expander(hierarchies)
    # Declare some agents
    akt = Agent('AKT', db_refs={'BE': 'AKT'})
    raf = Agent('RAF', db_refs={'BE': 'RAF'})
    mek = Agent('MEK', db_refs={'BE': 'MEK'})
    mapk1 = Agent('MAPK1', db_refs={'BE': 'MAPK1'})
    ampk = Agent('AMPK', db_refs={'BE': 'AMPK'})
    # Test case where one agent is a family and the other is a gene
    st = Phosphorylation(mek, mapk1)
    expanded_stmts = exp.expand_families([st])
    assert len(expanded_stmts) == 2
    # Test for case involving None for one of the agents
    st = Phosphorylation(None, akt)
    expanded_stmts = exp.expand_families([st])
    assert len(expanded_stmts) == 3
    # Statement with two families: 3 Rafs x 2 Meks
    st = Phosphorylation(raf, mek, 'S', '202')
    expanded_stmts = exp.expand_families([st])
    assert len(expanded_stmts) == 6
    # Test also for case involving both family and complex relationships
    st = Phosphorylation(ampk, mek)
    expanded_stmts = exp.expand_families([st])
    assert len(expanded_stmts) == 14
예제 #2
0
def test_db_ref_keys():
    # test that expanded families get TEXT, UP, HGNC keys in their db_refs
    # Get the Expander
    exp = ef.Expander(hierarchies)
    # Declare some agents
    grb2 = Agent('GRB2',
                 db_refs={'TEXT': 'Grb2', 'UP': 'P62993', 'HGNC': '4566'})
    shc = Agent('SHC', db_refs={'FPLX':'SHC'})
    # Test case where one agent is a family and the other is a gene
    st = Activation(grb2, shc)
    expanded_stmts = exp.expand_families([st])
    for st in expanded_stmts:
        for agent in st.agent_list():
            if agent is not None:
                assert set(list(agent.db_refs)) == \
                set(['TEXT','UP','HGNC'])
    # Test for case involving None for one of the agents
    st = Phosphorylation(None, shc)
    expanded_stmts = exp.expand_families([st])
    for st in expanded_stmts:
        for agent in st.agent_list():
            if agent is not None:
                assert set(list(agent.db_refs)) == \
                set(['TEXT','UP','HGNC'])
    # Statement with two families: 4x4 SHC
    st = Activation(shc, shc)
    expanded_stmts = exp.expand_families([st])
    for st in expanded_stmts:
        for agent in st.agent_list():
            if agent is not None:
                assert set(list(agent.db_refs)) == \
                set(['TEXT','UP','HGNC'])
예제 #3
0
def test_complexes_from_hierarchy():
    exp = ef.Expander(hierarchies)
    complexes = exp.complexes_from_hierarchy()
    keys = [c.matches_key() for c in complexes]
    probe_stmt = Complex([Agent('AMPK_alpha', db_refs={'FPLX':'AMPK_alpha'}),
                          Agent('AMPK_beta', db_refs={'FPLX':'AMPK_beta'}),
                          Agent('AMPK_gamma', db_refs={'FPLX':'AMPK_gamma'})])
    assert probe_stmt.matches_key() in keys
예제 #4
0
def test_expanded_complexes_from_hierarchy():
    exp = ef.Expander(hierarchies)
    complexes = exp.expanded_complexes_from_hierarchy()
    stmt_ag_names = []
    for stmt in complexes:
        sorted_names = tuple(sorted([ag.name for ag in stmt.agent_list()]))
        stmt_ag_names.append(sorted_names)
    ampk_alphas = ('PRKAA1', 'PRKAA2')
    ampk_betas = ('PRKAB1', 'PRKAB2')
    ampk_gammas = ('PRKAG1', 'PRKAG2', 'PRKAG3')
    for alpha, beta, gamma in itertools.product(ampk_alphas, ampk_betas,
                                                ampk_gammas):
        assert tuple(sorted((alpha, beta, gamma))) in stmt_ag_names
예제 #5
0
def test_get_children():
    exp = ef.Expander(hierarchies)
    raf = Agent('RAF', db_refs={'BE': 'RAF'})
    braf = Agent('BRAF', db_refs={'HGNC': '1097'})
    # Look up RAF
    rafs = exp.get_children(raf)
    # Should get three family members
    assert isinstance(rafs, list)
    assert len(rafs) == 3
    assert unicode_strs(rafs)
    # The lookup of a gene-level entity should not return any additional
    # entities
    brafs = exp.get_children(braf)
    assert isinstance(brafs, list)
    assert len(brafs) == 0
    assert unicode_strs(brafs)
    # The lookup for a top-level family (e.g., MAPK, which has as children
    # both the intermediate family ERK as well as all MAPK1-15 members)
    # should not return the intermediate families when a filter is applied.
    mapk = Agent('MAPK', db_refs={'BE': 'MAPK'})
    mapks = exp.get_children(mapk, ns_filter=None)
    assert len(mapks) == 12
    assert ('HGNC', 'MAPK1') in mapks
    assert ('HGNC', 'MAPK9') in mapks
    assert ('BE', 'ERK') in mapks
    assert ('BE', 'JNK') in mapks
    assert unicode_strs(mapks)
    # Now do the same expansion with a namespace filter
    mapks = exp.get_children(mapk, ns_filter='HGNC')
    assert unicode_strs(mapks)
    assert len(mapks) == 9
    assert ('HGNC', 'MAPK3') in mapks
    assert ('HGNC', 'MAPK10') in mapks
    assert ('BE', 'ERK') not in mapks
    # Make sure we can also do this in a case involving both family and complex
    # relationships
    ampk = Agent('AMPK', db_refs={'BE': 'AMPK'})
    ampks = exp.get_children(ampk, ns_filter=None)
    assert len(ampks) == 22
    ampks = exp.get_children(ampk, ns_filter='HGNC')
    assert len(ampks) == 7
    # Test that the default filter is HGNC
    ampks = exp.get_children(ampk)
    assert len(ampks) == 7
    ag_none = None
    none_children = exp.get_children(ag_none)
    assert isinstance(none_children, list)
    assert len(none_children) == 0
예제 #6
0
mod_map = {
    'demethylate': 'Demethylation',
    'methylate': 'Methylation',
    'phosphorylate': 'Phosphorylation',
    'dephosphorylate': 'Dephosphorylation',
    'ubiquitinate': 'Ubiquitination',
    'deubiquitinate': 'Deubiquitination',
    'activate': 'Activation',
    'inhibit': 'Inhibition'
}


affect_verbs = ['affect', 'regulate', 'control', 'target'] + \
    list(mod_map.keys())

expander = expand_families.Expander()


def suggest_relevant_relations(groundings):
    def make_nice_list(lst):
        if len(lst) == 1:
            return lst[0]
        pre = ', '.join(lst[:-1])
        full = '%s, or %s' % (pre, lst[-1])
        return full

    prefix1 = 'By the way, I recognized'
    prefix2 = 'I also recognized'
    msg_parts = []
    for entity_txt, (dbn, dbi) in groundings.items():
        if dbn == 'FPLX':