def _bc_agent_from_up_list(self, up_id_list): # Return the first agent with the remaining agents as a bound condition agents_list = [self._agent_from_up_id(up_id) for up_id in up_id_list] agent = agents_list[0] agent.bound_conditions = \ [BoundCondition(a, True) for a in agents_list[1:]] return agent
def test_cljson_stmt(): gtp = Agent('GTP') kras_bound = Agent("KRAS", bound_conditions=[BoundCondition(gtp, True)]) braf = Agent('BRAF') stmt = Phosphorylation(kras_bound, braf, position='373') cj = Bioagent.make_cljson(stmt) stmt2 = Bioagent.get_statement(cj) assert stmt.equals(stmt2)
def test_bound_condition_deep_refinement(): """A statement with more specific bound context should be supported by a less specific statement.""" src = Agent('SRC', db_refs={'HGNC': '11283'}) gtp1 = Agent('GTP', db_refs={'CHEBI': '15996'}) gtp2 = Agent('GTP', mods=[ModCondition('phosphorylation')], db_refs={'CHEBI': '15996'}) nrasgtp1 = Agent('NRAS', db_refs={'HGNC': '7989'}, bound_conditions=[BoundCondition(gtp1, True)]) nrasgtp2 = Agent('NRAS', db_refs={'HGNC': '7989'}, bound_conditions=[BoundCondition(gtp2, True)]) st1 = Phosphorylation(src, nrasgtp1, 'tyrosine', '32') st2 = Phosphorylation(src, nrasgtp2, 'tyrosine', '32') # The top-level list should contain only one statement, the more specific # modification, supported by the less-specific modification. pa = Preassembler(hierarchies, stmts=[st1, st2]) stmts = pa.combine_related() assert len(stmts) == 1 assert stmts[0].equals(st2) assert len(stmts[0].supported_by) == 1 assert stmts[0].supported_by[0].equals(st1)
def test_bound_condition_norefinement(): """A statement with more specific bound context should be supported by a less specific statement.""" src = Agent('SRC', db_refs={'HGNC': '11283'}) gtp = Agent('GTP', db_refs={'CHEBI': '15996'}) nras = Agent('NRAS', db_refs={'HGNC': '7989'}) nrasgtp = Agent('NRAS', db_refs={'HGNC': '7989'}, bound_conditions=[BoundCondition(gtp, True)]) st1 = Phosphorylation(src, nras, 'tyrosine', '32') st2 = Phosphorylation(src, nrasgtp) pa = Preassembler(hierarchies, stmts=[st1, st2]) stmts = pa.combine_related() # The bound condition is more specific in st2 but the modification is less # specific. Therefore these statements should not be combined. assert len(stmts) == 2
def test_bound_condition_mapping_multi(): # Test with multiple agents akt = Agent('pkbA', db_refs={'TEXT': 'Akt', 'UP': 'XXXXXX'}) erk = Agent('ERK1', db_refs={'TEXT': 'ERK1'}) akt.bound_conditions = [BoundCondition(erk)] stmt = Phosphorylation(akt, erk) mapped_stmts = gm.map_stmts([stmt]) s = mapped_stmts[0] mapped_akt = mapped_stmts[0].enz mapped_erk1 = mapped_akt.bound_conditions[0].agent mapped_erk2 = mapped_stmts[0].sub assert mapped_akt.db_refs['TEXT'] == 'Akt' assert mapped_akt.db_refs['FPLX'] == 'AKT' for e in (mapped_erk1, mapped_erk2): assert e.db_refs['TEXT'] == 'ERK1' assert e.db_refs['HGNC'] == '6877' assert e.db_refs['UP'] == 'P27361'
def test_bound_condition_mapping_agent_json(): # Test with agent/json mapping akt = Agent('pkbA', db_refs={'TEXT': 'p-Akt', 'UP': 'XXXXXX'}) erk = Agent('ERK1', db_refs={'TEXT': 'ERK1'}) akt.bound_conditions = [BoundCondition(erk)] stmt = Phosphorylation(None, akt) mapped_stmts = gm.map_stmts([stmt]) s = mapped_stmts[0] mapped_akt = mapped_stmts[0].sub mapped_erk = mapped_akt.bound_conditions[0].agent #assert mapped_akt.db_refs['TEXT'] == 'p-AKT', mapped_akt.db_refs assert mapped_akt.db_refs['FPLX'] == 'AKT', mapped_akt.db_refs assert mapped_erk.db_refs['TEXT'] == 'ERK1' assert mapped_erk.db_refs['HGNC'] == '6877' assert mapped_erk.db_refs['UP'] == 'P27361'
def test_bound_condition_mapping(): # Verify that the grounding mapper grounds the agents within a bound # condition akt = Agent('pkbA', db_refs={'TEXT': 'Akt', 'UP': 'XXXXXX'}) erk = Agent('ERK1', db_refs={'TEXT': 'ERK1'}) akt.bound_conditions = [BoundCondition(erk)] stmt = Phosphorylation(None, akt) mapped_stmts = gm.map_stmts([stmt]) s = mapped_stmts[0] mapped_akt = mapped_stmts[0].sub mapped_erk = mapped_akt.bound_conditions[0].agent assert mapped_akt.db_refs['TEXT'] == 'Akt' assert mapped_akt.db_refs['FPLX'] == 'AKT' assert mapped_erk.db_refs['TEXT'] == 'ERK1' assert mapped_erk.db_refs['HGNC'] == '6877' assert mapped_erk.db_refs['UP'] == 'P27361'
from kqml import KQMLList from indra.statements import Agent, Activation, BoundCondition, stmts_to_json, \ ActivityCondition, Phosphorylation from bioagents.tests.util import get_request from bioagents.bionlg.bionlg_module import BioNLG_Module from bioagents.tests.integration import _IntegrationTest kras = Agent('KRAS') braf = Agent('BRAF') map2k1 = Agent('MAP2K1') mapk3 = Agent('MAPK3') gtp = Agent('GTP') active_braf = Agent('BRAF', activity=ActivityCondition('activity', True)) kras_bound = Agent("KRAS", bound_conditions=[BoundCondition(gtp, True)]) class _NlgTestBase(_IntegrationTest): message_funcs = ['statements'] # Define these in the sub-classes with statements, and sentences that # correspond to those statements. statements = [] sentences = [] def __init__(self, *args, **kwargs): super().__init__(BioNLG_Module) def create_statements(self): content = KQMLList('INDRA-TO-NL')