Exemple #1
0
def test_get_agent_hgnc():
    mek = protein(name='MAP2K1', namespace='HGNC')
    agent = pb.get_agent(mek, {})
    assert isinstance(agent, Agent)
    assert agent.name == 'MAP2K1'
    assert agent.db_refs.get('HGNC') == mek_hgnc_id
    assert agent.db_refs.get('UP') == mek_up_id

    # Now create an agent with an identifier
    mek = protein(name='Foo', namespace='HGNC', identifier='6840')
    agent = pb.get_agent(mek, {})
    assert isinstance(agent, Agent)
    assert agent.name == 'MAP2K1'
    assert agent.db_refs.get('HGNC') == mek_hgnc_id
    assert agent.db_refs.get('UP') == mek_up_id
Exemple #2
0
def test_get_agent_rgd():
    node = protein(namespace='RGD', name='Tp53')
    agent = pb.get_agent(node, {})
    assert isinstance(agent, Agent)
    assert agent.name == 'Tp53'
    assert len(agent.db_refs) == 1
    assert agent.db_refs.get('RGD') == 'Tp53'
Exemple #3
0
def test_get_agent_mgi():
    node = protein(namespace='MGI', name='Nr1h3')
    agent = pb.get_agent(node, {})
    assert isinstance(agent, Agent)
    assert agent.name == 'Nr1h3'
    assert len(agent.db_refs) == 1
    assert agent.db_refs.get('MGI') == 'Nr1h3'
Exemple #4
0
def test_get_agent_with_activity():
    mek = protein(name='MAP2K1', namespace='HGNC')
    agent = pb.get_agent(mek, activity('act'))
    assert isinstance(agent, Agent)
    assert isinstance(agent.activity, ActivityCondition)
    assert agent.activity.activity_type == 'activity'
    assert agent.activity.is_active
Exemple #5
0
def test_get_agent_with_activity():
    mek = Protein(name='MAP2K1', namespace='HGNC')
    agent = pb.get_agent(mek, activity('act'))
    assert isinstance(agent, Agent)
    assert isinstance(agent.activity, ActivityCondition)
    assert agent.activity.activity_type == 'activity'
    assert agent.activity.is_active
Exemple #6
0
def test_get_agent_up():
    mek = protein(namespace='UP', identifier='Q02750')
    agent = pb.get_agent(mek, {})
    assert isinstance(agent, Agent)
    assert agent.name == 'MAP2K1'
    assert agent.db_refs.get('HGNC') == mek_hgnc_id
    assert agent.db_refs.get('UP') == mek_up_id
Exemple #7
0
def test_get_agent_schem():
    node_data = Abundance(namespace='SCHEM', name='Promegestone')
    agent = pb.get_agent(node_data)
    assert isinstance(agent, Agent)
    assert agent.name == 'Promegestone'
    assert len(agent.db_refs) == 2, agent.db_refs
    assert agent.db_refs['SCHEM'] == 'A2173', agent.db_refs
Exemple #8
0
def test_get_agent_sdis():
    node_data = Pathology(namespace='SDIS', name='metastasis')
    agent = pb.get_agent(node_data)
    assert isinstance(agent, Agent)
    assert agent.name == 'metastasis'
    assert len(agent.db_refs) == 1
    assert agent.db_refs['SDIS'] == 'D0340', agent.db_refs
Exemple #9
0
def test_get_agent_chebi():
    node_data = Abundance(namespace='CHEBI', name='nitric oxide')
    agent = pb.get_agent(node_data)
    assert isinstance(agent, Agent)
    assert agent.name == 'nitric oxide'
    assert len(agent.db_refs) == 1
    assert agent.db_refs['CHEBI'] == 'CHEBI:16480'
Exemple #10
0
def test_get_agent_rgd():
    node = Protein(namespace='RGD', name='Tp53')
    agent = pb.get_agent(node, {})
    assert isinstance(agent, Agent)
    assert agent.name == 'Tp53'
    assert len(agent.db_refs) == 1
    assert agent.db_refs.get('UP') == 'P10361', agent.db_refs
Exemple #11
0
def test_get_agent_mgi():
    node = Protein(namespace='MGI', name='Nr1h3')
    agent = pb.get_agent(node, {})
    assert isinstance(agent, Agent)
    assert agent.name == 'Nr1h3'
    assert len(agent.db_refs) == 1
    assert agent.db_refs.get('UP') == 'Q9Z0Y9', agent.db_refs
Exemple #12
0
def test_get_agent_up():
    mek = Protein(namespace='UP', identifier='Q02750')
    agent = pb.get_agent(mek, {})
    assert isinstance(agent, Agent)
    assert agent.name == 'MAP2K1'
    assert agent.db_refs.get('HGNC') == mek_hgnc_id
    assert agent.db_refs.get('UP') == mek_up_id
Exemple #13
0
def test_get_agent_fusion():
    node_data = ProteinFusion(
        partner_5p=Protein(namespace='HGNC', name='BCR'),
        partner_3p=Protein(namespace='HGNC', name='ABL1'),
    )
    agent = pb.get_agent(node_data)
    assert agent is None
def test_get_agent_with_translocation():
    node_data = protein(name='MAPK1', namespace='HGNC')
    # Some example edge data
    edge_data = translocation(from_loc=Entity('GOCC', 'intracellular'),
                              to_loc=Entity('GOCC', 'extracellular space'))
    agent = pb.get_agent(node_data, edge_data)
    assert isinstance(agent, Agent)
    assert agent.name == 'MAPK1'
    assert agent.location == 'extracellular space'
def test_get_agent_egid():
    node_data = {'function': 'Protein', 'name': '5008', 'namespace': 'EGID'}
    agent = pb.get_agent(node_data)
    assert isinstance(agent, Agent)
    assert agent.name == 'OSM'
    assert len(agent.db_refs) == 3
    assert agent.db_refs['EGID'] == '5008'
    assert agent.db_refs['HGNC'] == '8506'
    assert agent.db_refs['UP'] == 'P13725'
def test_get_agent_egid():
    node_data = Protein(name='5008', namespace='EGID')
    agent = pb.get_agent(node_data)
    assert isinstance(agent, Agent)
    assert agent.name == 'OSM'
    assert len(agent.db_refs) == 3
    assert agent.db_refs['EGID'] == '5008'
    assert agent.db_refs['HGNC'] == '8506'
    assert agent.db_refs['UP'] == 'P13725'
Exemple #17
0
def test_get_agent_egid():
    node_data = {'function': 'Protein', 'name': '5008', 'namespace': 'EGID'}
    agent = pb.get_agent(node_data)
    assert isinstance(agent, Agent)
    assert agent.name == 'OSM'
    assert len(agent.db_refs) == 3
    assert agent.db_refs['EGID'] == '5008'
    assert agent.db_refs['HGNC'] == '8506'
    assert agent.db_refs['UP'] == 'P13725'
Exemple #18
0
def test_get_agent_fusion():
    node_data = {'function': 'Protein',
                 'fusion': {
                     'partner_5p': {'namespace': 'HGNC', 'name': 'BCR'},
                     'range_5p': {'missing': '?'},
                     'range_3p': {'missing': '?'},
                     'partner_3p': {'namespace': 'HGNC', 'name': 'ABL1'}}}
    agent = pb.get_agent(node_data)
    assert agent is None
Exemple #19
0
def test_get_agent_named_complex_go():
    # TODO: Handle named complexes and map to FamPlex where possible
    node_data = {
            'cname': '0043509',
            'function': 'Complex',
            'name': '0043509',
            'namespace': 'GOCCID'}
    agent = pb.get_agent(node_data)
    assert agent is None
Exemple #20
0
def test_get_agent_with_translocation():
    node_data = protein(name='MAPK1', namespace='HGNC')
    # Some example edge data
    edge_data = translocation(from_loc=Entity('GOCC', 'intracellular'),
                              to_loc=Entity('GOCC', 'extracellular space'))
    agent = pb.get_agent(node_data, edge_data)
    assert isinstance(agent, Agent)
    assert agent.name == 'MAPK1'
    assert agent.location == 'extracellular space'
Exemple #21
0
def test_get_agent_complex_none_agent():
    """If one of the agents in the complex can't be obtained (e.g., an
    unhandled namespace), then the complex itself should be None."""
    # Prime agent is None
    mek = protein(name='MAP2K1', namespace='FOO')
    erk = protein(name='MAPK1', namespace='HGNC',
                  variants=[pmod('Ph', position=185, code='Thr')])
    cplx = complex_abundance([mek, erk])
    agent = pb.get_agent(cplx)
    assert agent is None

    # Bound agent is None
    mek = protein(name='MAP2K1', namespace='HGNC')
    erk = protein(name='MAPK1', namespace='FOO',
                  variants=[pmod('Ph', position=185, code='Thr')])
    cplx = complex_abundance([mek, erk])
    agent = pb.get_agent(cplx)
    assert agent is None
Exemple #22
0
def test_get_agent_with_muts():
    mek = protein(name='MAP2K1', namespace='HGNC',
                  variants=[hgvs('p.Val600Glu')])
    agent = pb.get_agent(mek, {})
    assert isinstance(agent, Agent)
    assert len(agent.mutations) == 1
    mut = agent.mutations[0]
    assert mut.position == '600'
    assert mut.residue_from == 'V'
    assert mut.residue_to == 'E'
def test_get_agent_with_mods():
    mek = Protein(name='MAP2K1', namespace='HGNC', variants=[pmod('Ph')])
    agent = pb.get_agent(mek, {})
    assert isinstance(agent, Agent)
    assert len(agent.mods) == 1
    mod = agent.mods[0]
    assert mod.mod_type == 'phosphorylation'
    assert not mod.residue
    assert not mod.position

    mek = Protein(name='MAP2K1',
                  namespace='HGNC',
                  variants=[pmod('Ph', code='Ser')])
    agent = pb.get_agent(mek, {})
    assert isinstance(agent, Agent)
    assert len(agent.mods) == 1
    mod = agent.mods[0]
    assert mod.mod_type == 'phosphorylation'
    assert mod.residue == 'S'
    assert not mod.position

    mek = Protein(name='MAP2K1',
                  namespace='HGNC',
                  variants=[pmod('Ph', position=218)])
    agent = pb.get_agent(mek, {})
    assert isinstance(agent, Agent)
    assert len(agent.mods) == 1
    mod = agent.mods[0]
    assert mod.mod_type == 'phosphorylation'
    assert not mod.residue
    assert mod.position == '218'

    mek = Protein(name='MAP2K1',
                  namespace='HGNC',
                  variants=[pmod('Ph', position=218, code='Ser')])
    agent = pb.get_agent(mek, {})
    assert isinstance(agent, Agent)
    assert len(agent.mods) == 1
    mod = agent.mods[0]
    assert mod.mod_type == 'phosphorylation'
    assert mod.residue == 'S'
    assert mod.position == '218'
Exemple #24
0
def test_get_agent_sdis():
    node_data = {
            'cname': 'metastasis',
            'function': 'Pathology',
            'name': 'metastasis',
            'namespace': 'SDIS'}
    agent = pb.get_agent(node_data)
    assert isinstance(agent, Agent)
    assert agent.name == 'metastasis'
    assert len(agent.db_refs) == 1
    assert agent.db_refs['SDIS'] == 'metastasis'
Exemple #25
0
def test_get_agent_chebi():
    node_data = {
            'cname': 'nitric oxide',
            'function': 'Abundance',
            'name': 'nitric oxide',
            'namespace': 'CHEBI'}
    agent = pb.get_agent(node_data)
    assert isinstance(agent, Agent)
    assert agent.name == 'nitric oxide'
    assert len(agent.db_refs) == 1
    assert agent.db_refs['CHEBI'] == 'CHEBI:16480'
Exemple #26
0
def test_get_agent_schem():
    node_data = {
            'cname': 'Promegestone',
            'function': 'Abundance',
            'name': 'Promegestone',
            'namespace': 'SCHEM'}
    agent = pb.get_agent(node_data)
    assert isinstance(agent, Agent)
    assert agent.name == 'Promegestone'
    assert len(agent.db_refs) == 1
    assert agent.db_refs['SCHEM'] == 'Promegestone'
Exemple #27
0
def test_get_agent_mirna():
    node_data = {
            'cname': 'MIR218-1',
            'function': 'miRNA',
            'name': 'MIR218-1',
            'namespace': 'HGNC'}
    agent = pb.get_agent(node_data)
    assert isinstance(agent, Agent)
    assert agent.name == 'MIR218-1'
    assert len(agent.db_refs) == 1
    assert agent.db_refs['HGNC'] == '31595'
def test_get_agent_sfam():
    node_data = Protein(
        namespace='SFAM',
        name='PRKC Family',
    )
    agent = pb.get_agent(node_data)
    assert isinstance(agent, Agent)
    assert len(agent.db_refs) == 2
    assert agent.db_refs['SFAM'] == 'PRKC Family'
    assert agent.db_refs['FPLX'] == 'PKC'
    assert agent.name == 'PKC'
def test_get_agent_mirna():
    m = MicroRna(namespace='HGNC', name='MIRLET7A1')
    agent = pb.get_agent(m, {})
    assert isinstance(agent, Agent)
    assert agent.name == 'MIRLET7A1'
    assert agent.db_refs.get('MIRBASE') == 'MI0000060'
    assert agent.db_refs.get('HGNC') == '31476'

    m = MicroRna(namespace='HGNC', name='MIRLET7A1', identifier='31476')
    agent = pb.get_agent(m, {})
    assert isinstance(agent, Agent)
    assert agent.name == 'MIRLET7A1'
    assert agent.db_refs.get('MIRBASE') == 'MI0000060'
    assert agent.db_refs.get('HGNC') == '31476'

    m = MicroRna(namespace='MIRBASE', name='hsa-let-7a-1')
    agent = pb.get_agent(m, {})
    assert isinstance(agent, Agent)
    assert agent.name == 'MIRLET7A1'
    assert agent.db_refs.get('MIRBASE') == 'MI0000060'
    assert agent.db_refs.get('HGNC') == '31476'
Exemple #30
0
def test_get_agent_sfam():
    node_data = {
            'cname': 'PRKC Family',
            'function': 'Protein',
            'name': 'PRKC Family',
            'namespace': 'SFAM'}
    agent = pb.get_agent(node_data)
    assert isinstance(agent, Agent)
    assert len(agent.db_refs) == 2
    assert agent.db_refs['SFAM'] == 'PRKC Family'
    assert agent.db_refs['FPLX'] == 'PKC'
    assert agent.name == 'PKC'
Exemple #31
0
def test_get_agent_with_mods():
    mek = protein(name='MAP2K1', namespace='HGNC',
                  variants=[pmod('Ph')])
    agent = pb.get_agent(mek, {})
    assert isinstance(agent, Agent)
    assert len(agent.mods) == 1
    mod = agent.mods[0]
    assert mod.mod_type == 'phosphorylation'
    assert not mod.residue
    assert not mod.position

    mek = protein(name='MAP2K1', namespace='HGNC',
                  variants=[pmod('Ph', code='Ser')])
    agent = pb.get_agent(mek, {})
    assert isinstance(agent, Agent)
    assert len(agent.mods) == 1
    mod = agent.mods[0]
    assert mod.mod_type == 'phosphorylation'
    assert mod.residue == 'S'
    assert not mod.position

    mek = protein(name='MAP2K1', namespace='HGNC',
                  variants=[pmod('Ph', position=218)])
    agent = pb.get_agent(mek, {})
    assert isinstance(agent, Agent)
    assert len(agent.mods) == 1
    mod = agent.mods[0]
    assert mod.mod_type == 'phosphorylation'
    assert not mod.residue
    assert mod.position == '218'

    mek = protein(name='MAP2K1', namespace='HGNC',
                  variants=[pmod('Ph', position=218, code='Ser')])
    agent = pb.get_agent(mek, {})
    assert isinstance(agent, Agent)
    assert len(agent.mods) == 1
    mod = agent.mods[0]
    assert mod.mod_type == 'phosphorylation'
    assert mod.residue == 'S'
    assert mod.position == '218'
Exemple #32
0
    def get_nodes_to_agents(self):
        """Return a dictionary mapping PyBEL nodes to INDRA agents."""
        if self.nodes_to_agents:
            return self.nodes_to_agents

        # This import is done here rather than at the top level to avoid
        # making pybel an implicit dependency of the model checker
        from indra.sources.bel.processor import get_agent
        self.nodes_to_agents = {
            node: get_agent(node)
            for node in self.model.nodes
        }
        return self.nodes_to_agents
Exemple #33
0
def test_get_agent_complex():
    mek = protein(name='MAP2K1', namespace='HGNC')
    erk = protein(name='MAPK1', namespace='HGNC',
                  variants=[pmod('Ph', position=185, code='Thr')])
    cplx = complex_abundance([mek, erk])
    agent = pb.get_agent(cplx)
    assert isinstance(agent, Agent)
    assert agent.name == 'MAP2K1'
    assert len(agent.bound_conditions) == 1
    bc = agent.bound_conditions[0]
    assert isinstance(bc, BoundCondition)
    assert bc.is_bound is True
    bc_agent = bc.agent
    assert bc_agent.name == 'MAPK1'
    assert len(bc_agent.mods) == 1
    assert bc_agent.mods[0].mod_type == 'phosphorylation'
    assert bc_agent.mods[0].residue == 'T'
    assert bc_agent.mods[0].position == '185'
Exemple #34
0
def stmts_from_pybel_path(path, model, from_db=True, stmts=None):
    """Return source Statements corresponding to a path in a PyBEL model.

    Parameters
    ----------
    path : list[tuple[str, int]]
        A list of tuples where the first element of the tuple is the
        name of an agent, and the second is the associated polarity along
        a path.
    model : pybel.BELGraph
        A PyBEL BELGraph model.
    from_db : bool
        If True, uses statement hashes to query the database. Otherwise, looks
        for path statements in provided stmts.
    stmts : Optional[list[indra.statements.Statement]]
        A list of INDRA Statements from which the model was assembled. Required
        if from_db is set to False.

    Returns
    -------
    path_stmts : list[[indra.statements.Statement]]
        A list of lists of INDRA statements explaining the path (each inner
        corresponds to one step in the path because PyBEL model can have
        multiple edges representing multiple statements and evidences between
        two nodes).
    """
    import pybel.constants as pc
    from indra.sources.bel.processor import get_agent
    steps = []
    for i in range(len(path[:-1])):
        source = path[i]
        target = path[i + 1]
        # Check if the signs of source and target nodes are the same
        positive = (source[1] == target[1])
        reverse = False
        try:
            all_edges = model[source[0]][target[0]]
        except KeyError:
            # May be a symmetric edge
            all_edges = model[target[0]][source[0]]
            reverse = True
        # Only keep the edges with correct sign or non-causal
        edges = {}
        key = 0
        for edge_data in all_edges.values():
            if edge_data['relation'] not in pc.CAUSAL_RELATIONS:
                edges[key] = edge_data
                key += 1
            if positive and \
                    edge_data['relation'] in pc.CAUSAL_INCREASE_RELATIONS:
                edges[key] = edge_data
                key += 1
            elif not positive and \
                    edge_data['relation'] in pc.CAUSAL_DECREASE_RELATIONS:
                edges[key] = edge_data
                key += 1
            else:
                continue
        hashes = set()
        for j in range(len(edges)):
            try:
                hashes.add(edges[j]['annotations']['stmt_hash'])
            # partOf and hasVariant edges don't have hashes
            except KeyError:
                continue
        # If we didn't get any hashes, we can get PybelEdge object from
        # partOf and hasVariant edges
        if not hashes:
            statements = []
            # Can't get statements without hash from db
            for edge_v in edges.values():
                rel = edge_v['relation']
                edge = PybelEdge(get_agent(source[0]), get_agent(target[0]),
                                 rel, reverse)
                statements.append(edge)
                # Stop if we have an edge to avoid duplicates
                if len(statements) > 0:
                    break
        # If we have hashes, retrieve statements from them
        else:
            if from_db:
                statements = get_statements_by_hash(list(hashes),
                                                    simple_response=True)
            else:
                statements = [
                    stmt for stmt in stmts if stmt.get_hash() in hashes
                ]
        steps.append(statements)
    return steps
Exemple #35
0
def test_get_agent_up_no_id():
    mek = protein(name='MAP2K1', namespace='UP')
    agent = pb.get_agent(mek, {})
    assert agent is None
def test_get_agent_named_complex_go():
    # TODO: Handle named complexes and map to FamPlex where possible
    node_data = NamedComplexAbundance(namespace='GOCCID', name='0043509')
    agent = pb.get_agent(node_data)
    assert agent is None
def test_get_agent_meshd():
    hyperoxia = bioprocess(name='Hyperoxia', namespace='MESHD')
    agent = pb.get_agent(hyperoxia)
    assert isinstance(agent, Agent)
    assert agent.name == 'Hyperoxia'
    assert 'MESH' in agent.db_refs
def test_get_agent_meshpp():
    apoptosis = bioprocess(name='Apoptosis', namespace='MESHPP')
    agent = pb.get_agent(apoptosis)
    assert isinstance(agent, Agent)
    assert agent.name == 'Apoptosis'
    assert 'MESH' in agent.db_refs
def test_get_agent_up_no_id():
    mek = Protein(name='MAP2K1', namespace='UP')
    agent = pb.get_agent(mek, {})
    assert agent is None
Exemple #40
0
def test_get_agent_meshpp():
    apoptosis = bioprocess(name='Apoptosis', namespace='MESHPP')
    agent = pb.get_agent(apoptosis)
    assert isinstance(agent, Agent)
    assert agent.name == 'Apoptosis'
    assert agent.db_refs == {}
Exemple #41
0
def test_get_agent_meshd():
    hyperoxia = bioprocess(name='Hyperoxia', namespace='MESHD')
    agent = pb.get_agent(hyperoxia)
    assert isinstance(agent, Agent)
    assert agent.name == 'Hyperoxia'
    assert agent.db_refs == {}