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
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'
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'
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
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
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
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
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
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'
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
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
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
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'
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_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
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
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_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
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'
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'
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'
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'
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'
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'
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'
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
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'
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
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
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 == {}
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 == {}