コード例 #1
0
    def test_multiple_bnd_templates(self):
        dummy_partner = SiteActor(
            protoform=Protoform("C"),
            region=Region(name="C_RegionActor"),
            site=Site(name="C_SiteActor"))

        enzyme = SiteActor(
            protoform=Protoform("A", bound_to=[dummy_partner]),
            region=Region(name="A_RegionActor", bound_to=[dummy_partner]),
            site=Site(name="A_SiteActor", bound_to=[dummy_partner]))
        substrate = SiteActor(
            protoform=Protoform("B", bound_to=[dummy_partner]),
            region=Region(name="B_RegionActor", bound_to=[dummy_partner]),
            site=Site(name="B_SiteActor", bound_to=[dummy_partner]))

        mod = Modification(
            enzyme,
            substrate,
            target=Residue("Y", 100, State("phosphorylation", False)),
            value=True)

        corpus = KamiCorpus("test")
        identifier = EntityIdentifier(
            corpus.action_graph,
            corpus.get_action_graph_typing())
        generator = ModGenerator(identifier)
        n, _, _, _ = generator.generate(mod)
コード例 #2
0
    def test_mod_generator(self):
        """Test generation of a modification nugget graph."""
        enzyme_gene = Protoform("A")
        enzyme_region_actor = RegionActor(
            protoform=enzyme_gene,
            region=Region("Pkinase"))
        enzyme_site_actor = SiteActor(
            protoform=enzyme_gene,
            region=Region("Pkinase"),
            site=Site("tail"))

        substrate_gene = Protoform("B")
        substrate_region_actor = RegionActor(
            protoform=substrate_gene,
            region=Region("SH2"))
        substrate_site_actor = SiteActor(
            protoform=substrate_gene,
            region=Region("SH2"),
            site=Site("finger"))

        residue_mod_target = Residue("Y", 100, State("activity", False))
        state_mod_target = State("activity", False)

        mod1 = Modification(
            enzyme=enzyme_gene,
            substrate=substrate_gene,
            target=state_mod_target
        )

        mod2 = Modification(
            enzyme=enzyme_region_actor,
            substrate=substrate_gene,
            target=state_mod_target
        )

        mod3 = Modification(
            enzyme=enzyme_site_actor,
            substrate=substrate_gene,
            target=state_mod_target
        )

        mod4 = Modification(
            enzyme=enzyme_site_actor,
            substrate=substrate_region_actor,
            target=state_mod_target
        )

        mod5 = Modification(
            enzyme=enzyme_site_actor,
            substrate=substrate_site_actor,
            target=residue_mod_target
        )
        corpus = KamiCorpus("test")
        identifier = EntityIdentifier(
            corpus.action_graph,
            corpus.get_action_graph_typing())
        generator = ModGenerator(identifier)
        n, _, _, _ = generator.generate(mod5)
        print_graph(n.graph)
コード例 #3
0
 def __init__(self):
     """Define some initial content of the corpus."""
     corpus = KamiCorpus("test")
     protoform = Protoform("A")
     gene_id = corpus.add_protoform(protoform)
     identifier = EntityIdentifier(
         corpus.action_graph,
         corpus.get_action_graph_typing())
     self.generator = Generator(identifier)
     self.default_ag_gene = gene_id
コード例 #4
0
    def test_bnd_generation(self):
        """Test generation of a binding nugget graph."""
        left = SiteActor(Protoform("A"), Site("pY"), Region("Reg"))
        right = Protoform("B")
        bnd = Binding(left, right)

        corpus = KamiCorpus("test")
        identifier = EntityIdentifier(
            corpus.action_graph,
            corpus.get_action_graph_typing())
        generator = BndGenerator(identifier)
        n, _, _, _ = generator.generate(bnd)
        print_graph(n.graph)
コード例 #5
0
    def test_ligandmod_generation(self):
        """Test generation of a transmodification nugget graph."""
        enzyme_gene = Protoform("A")
        enzyme_region_actor = RegionActor(
            protoform=enzyme_gene,
            region=Region("Pkinase"))

        substrate = Protoform("B")

        automod = LigandModification(
            enzyme_region_actor,
            substrate,
            Residue("Y", 100, State("phosphorylation", True)),
            value=True,
            enzyme_bnd_region=Region("EbndRegion"),
            substrate_bnd_region=Region("SbndRegion"),
            substrate_bnd_site=Site("SbndSite"))

        corpus = KamiCorpus("test")
        identifier = EntityIdentifier(
            corpus.action_graph,
            corpus.get_action_graph_typing())
        generator = LigandModGenerator(identifier)
        n, _, _, _ = generator.generate(automod)
        print_graph(n.graph)

        inter = LigandModification(
            enzyme=RegionActor(protoform=Protoform(uniprotid="P30530",
                                         hgnc_symbol="AXL"),
                               region=Region(name="Tyr_kinase",
                                             interproid="IPR020635",
                                             start=536, end=807)),
            substrate=SiteActor(protoform=Protoform(uniprotid="P06239",
                                          hgnc_symbol="LCK"),
                                site=Site(name="pY394",
                                          start=391, end=397)),
            target=Residue(aa="Y", loc=394,
                           state=State("phosphorylation", False)),
            value=True,
            rate=10,
            enzyme_bnd_region=Region(name="Tyr_kinase",
                                     interproid="IPR020635",
                                     start=536, end=807),
            substrate_bnd_site=Site(name='pY394',
                                    start=391, end=397)
        )
        corpus = KamiCorpus("test")
        corpus.add_interaction(inter, anatomize=False)
        print_graph(corpus.get_nugget('test_nugget_1'))
コード例 #6
0
    def test_anonymous_mod_generation(self):
        """Test generation of an anonymous modification nugget graph."""
        protoform = Protoform("A")
        region_actor = RegionActor(
            protoform=protoform,
            region=Region("Pkinase"))

        mod = AnonymousModification(
            region_actor,
            Residue("Y", 100, State("phosphorylation", False)),
            value=True)

        corpus = KamiCorpus("test")
        identifier = EntityIdentifier(
            corpus.action_graph,
            corpus.get_action_graph_typing())
        generator = AnonymousModGenerator(identifier)
        n, _, _, _ = generator.generate(mod)
        print_graph(n.graph)
コード例 #7
0
    def test_selfmod_generation(self):
        """Test generation of an automodification nugget graph."""
        enzyme_gene = Protoform("A")
        enzyme_region_actor = RegionActor(
            protoform=enzyme_gene,
            region=Region("Pkinase"))

        automod = SelfModification(
            enzyme_region_actor,
            Residue("Y", 100, State("phosphorylation", True)),
            value=True,
            substrate_region=Region("Region"),
            substrate_site=Site("Site"))

        corpus = KamiCorpus("test")
        identifier = EntityIdentifier(
            corpus.action_graph,
            corpus.get_action_graph_typing())
        generator = SelfModGenerator(identifier)
        n, _, _, _ = generator.generate(automod)
        print_graph(n.graph)
コード例 #8
0
    def test_sh2_py_semantics(self):
        """."""
        phos = State("phosphorylation", True)
        dok1_py398 = Protoform("Q99704",
                               synonyms=["DOK1", "p62DOK1"],
                               residues=[Residue("Y", 398, phos)])

        abl2 = Protoform("P42684", synonyms=["ABL2"])
        sh2 = Region(name="SH2")

        abl2_sh2 = RegionActor(abl2, sh2)

        bnd = Binding(dok1_py398, abl2_sh2)

        corpus = KamiCorpus("test")
        nugget_id = corpus.add_interaction(bnd)

        semantic_entities = [
            "sh2_domain", "sh2_domain_pY_bnd", "pY_site", "pY_residue",
            "phosphorylation"
        ]

        print(corpus.get_nugget(nugget_id).nodes())
        assert ("pY_site" in corpus.get_nugget(nugget_id).nodes())
        assert ("pY_residue" in corpus.get_nugget(nugget_id).nodes())
        assert ("pY_residue_phospho" in corpus.get_nugget(nugget_id).nodes())

        assert ((nugget_id, "sh2_pY_binding_semantic_nugget")
                in corpus.nugget_relations())

        for entity in semantic_entities:
            assert (entity in corpus._hierarchy.get_relation(
                "sh2_pY_binding_semantic_nugget", nugget_id).keys())

        site_actor_no_residue = SiteActor(Protoform("A"),
                                          Site("pY-site", start=100, end=150))

        bnd = Binding(abl2_sh2, site_actor_no_residue)
        nugget_id = corpus.add_interaction(bnd)
        assert (len(corpus.get_nugget(nugget_id).nodes()) == 7)
        binding_nodes = []
        for n in corpus.action_graph.nodes():
            if corpus.get_action_graph_typing()[n] == "bnd":
                binding_nodes.append(n)
        assert (len(binding_nodes) == 1)

        assert ((nugget_id, "sh2_pY_binding_semantic_nugget")
                in corpus.nugget_relations())

        for entity in semantic_entities:
            assert (entity in corpus._hierarchy.get_relation(
                "sh2_pY_binding_semantic_nugget", nugget_id).keys())

        site_actor_no_phospho = SiteActor(
            Protoform("A"),
            Site("pY-site", start=100, end=150, residues=[Residue("Y")]))
        bnd = Binding(abl2_sh2, site_actor_no_phospho)
        nugget_id = corpus.add_interaction(bnd)
        assert (len(corpus.get_nugget(nugget_id).nodes()) == 8)
        binding_nodes = []
        for n in corpus.action_graph.nodes():
            if corpus.get_action_graph_typing()[n] == "bnd":
                binding_nodes.append(n)
        assert (len(binding_nodes) == 1)
        assert ((nugget_id, "sh2_pY_binding_semantic_nugget")
                in corpus.nugget_relations())

        for entity in semantic_entities:
            assert (entity in corpus._hierarchy.get_relation(
                "sh2_pY_binding_semantic_nugget", nugget_id).keys())

        site_actor_with_residue = SiteActor(
            Protoform("A"),
            Site("pY-site",
                 start=100,
                 end=150,
                 residues=[
                     Residue("Y", loc=145, state=State("phosphorylation"))
                 ]))

        bnd = Binding(abl2_sh2, site_actor_with_residue)
        nugget_id = corpus.add_interaction(bnd)
        assert (len(corpus.get_nugget(nugget_id).nodes()) == 7)
        binding_nodes = []
        for n in corpus.action_graph.nodes():
            if corpus.get_action_graph_typing()[n] == "bnd":
                binding_nodes.append(n)
        assert (len(binding_nodes) == 1)
        assert ((nugget_id, "sh2_pY_binding_semantic_nugget")
                in corpus.nugget_relations())

        for entity in semantic_entities:
            assert (entity in corpus._hierarchy.get_relation(
                "sh2_pY_binding_semantic_nugget", nugget_id).keys())

        site_actor_with_residue1 = SiteActor(
            Protoform("B"),
            Site("pY-site",
                 residues=[
                     Residue("Y", loc=145, state=State("phosphorylation"))
                 ]))
        site_actor_with_residue2 = SiteActor(
            Protoform("B"),
            Site("some site",
                 residues=[
                     Residue("Y", loc=145, state=State("phosphorylation"))
                 ]))
        bnd1 = Binding(abl2_sh2, site_actor_with_residue1)
        bnd2 = Binding(abl2_sh2, site_actor_with_residue2)
        corpus.add_interactions([bnd1, bnd2])
        print_graph(corpus.action_graph)
コード例 #9
0
ファイル: test_kami_corpus.py プロジェクト: Kappa-Dev/KAMI
class TestKamiCorpus(object):
    """Class for testing KAMI model."""
    def __init__(self):
        """Initialize test class with a model."""
        self.model = KamiCorpus("test")

        egfr = Protoform("P00533")
        fgfr1 = Protoform("P11362")
        fgfr1_pysite = SiteActor(
            Protoform("P11362"),
            Site("pY",
                 residues=[Residue("Y", 463, State("phosphorylation", True))]))
        abl1_sh2 = RegionActor(Protoform("P00519"), Region("SH2"))

        target = Residue("Y", 463, State("phosphorylation", False))
        modification = Modification(enzyme=egfr,
                                    substrate=fgfr1,
                                    target=target)
        binding = Binding(abl1_sh2, fgfr1_pysite)

        self.model.add_interactions([modification, binding])

    def test_empty_hierarchy(self):
        """Test getters for various model components."""
        model = KamiCorpus("test")
        assert (model.action_graph is not None)
        assert (len(model.nuggets()) == 0)
        assert (model.empty())

        model.export_json("test_empty_hierarchy.json")
        new_model = KamiCorpus.load_json("test", "test_empty_hierarchy.json")
        assert (isinstance(new_model, KamiCorpus))
        # assert(new_model._hierarchy == model._hierarchy)

        assert (model.mod_template is
                model._hierarchy.get_graph("mod_template"))
        assert (model.bnd_template is
                model._hierarchy.get_graph("bnd_template"))
        assert (model.semantic_action_graph is
                model._hierarchy.get_graph("semantic_action_graph"))

    def test_non_empty_hierarchy(self):
        """."""
        model = KamiCorpus("test")

        plcg1_pY1253 = Protoform("P19174",
                                 synonyms=["PLCG1"],
                                 residues=[
                                     Residue("Y",
                                             1253,
                                             state=State(
                                                 "phosphorylation", True))
                                 ])
        sh2 = Region(name="SH2")
        abl1 = Protoform("P00519", synonyms=["ABL1"])
        abl1_sh2 = RegionActor(abl1, sh2)
        bnd = Binding(plcg1_pY1253, abl1_sh2)

        model.add_interactions([bnd], model)
        assert (model.empty() is False)

        model.export_json("test_non_empty_hierarchy.json")
        new_model = KamiCorpus.load_json("test",
                                         "test_non_empty_hierarchy.json")
        assert (isinstance(new_model, KamiCorpus))
        assert (("test_action_graph", "meta_model")
                in new_model._hierarchy.edges())
        # print(model._hierarchy.graphs())
        # print(new_model._hierarchy.graphs())
        # assert(model._hierarchy == new_model._hierarchy)

    def test_add_gene_component(self):
        identifier = EntityIdentifier(self.model.action_graph,
                                      self.model.get_action_graph_typing())
        protoform = identifier.identify_protoform(Protoform("P00533"))

        residue = Residue("Y", 200)
        residue_id = self.model.add_residue(residue, protoform)
        assert ((residue_id, protoform) in self.model.action_graph.edges())
        for region in self.model.get_attached_regions(protoform):
            edge = get_edge(self.model.action_graph, region, protoform)
            if "start" in edge.keys() and\
               "end" in edge.keys() and\
               min(edge["start"]) < 200 and\
               max(edge["end"]) > 200:
                assert ((residue_id, region)
                        in self.model.action_graph.edges())
        for site in self.model.get_attached_sites(protoform):
            edge = get_edge(self.model.action_graph, site, protoform)
            if "start" in edge.keys() and\
               "end" in edge.keys() and\
               min(edge["start"]) < 200 and\
               max(edge["end"]) > 200:
                assert ((residue_id, site) in self.model.action_graph.edges())

        site = Site("TestSite", start=200, end=250)
        site_id = self.model.add_site(site, protoform, semantics="pY_site")

        assert ((site_id, protoform) in self.model.action_graph.edges())

        for region in self.model.get_attached_regions(protoform):
            edge = get_edge(self.model.action_graph, region, protoform)
            if "start" in edge.keys() and\
               "end" in edge.keys() and\
               min(edge["start"]) < 200 and\
               max(edge["end"]) > 250:
                assert ((site_id, region) in self.model.action_graph.edges())

        for residue in self.model.get_attached_residues(protoform):
            edge = get_edge(self.model.action_graph, residue, protoform)
            if "loc" in edge.keys() and\
               list(edge["loc"])[0] > 200 and\
               list(edge["loc"])[0] < 250:
                assert ((residue, site_id) in self.model.action_graph.edges())

        region = Region("TestRegion", start=100, end=500)
        region_id = self.model.add_region(region,
                                          protoform,
                                          semantics="protein_kinase")

        for residue in self.model.get_attached_residues(protoform):
            edge = get_edge(self.model.action_graph, residue, protoform)
            if "loc" in edge.keys() and\
               list(edge["loc"])[0] > 100 and\
               list(edge["loc"])[0] < 500:
                assert ((residue, region_id)
                        in self.model.action_graph.edges())

        for site in self.model.get_attached_sites(protoform):
            edge = get_edge(self.model.action_graph, site, protoform)
            if "start" in edge.keys() and\
               "end" in edge.keys() and\
               min(edge["start"]) > 100 and\
               max(edge["end"]) < 500:
                assert ((site, region_id) in self.model.action_graph.edges())
コード例 #10
0
ファイル: test_identifiers.py プロジェクト: Kappa-Dev/KAMI
class TestIdentifiers(object):
    """Test identifiers of entities in the action graph."""
    def __init__(self):
        """Initialize with common hierarchy."""
        self.hierarchy = KamiCorpus("test")

        protoform = Protoform("A")
        self.gene_id = self.hierarchy.add_protoform(protoform)

        named_region = Region("Kinase")
        interval_region = Region(start=100, end=200)
        named_ordered_region1 = Region("SH2", order=1)
        named_ordered_region2 = Region("SH2", order=2)
        self.named_region = self.hierarchy.add_region(named_region,
                                                      self.gene_id)
        self.interval_region = self.hierarchy.add_region(
            interval_region, self.gene_id)
        self.named_ordered_region1 = self.hierarchy.add_region(
            named_ordered_region1, self.gene_id)
        self.named_ordered_region2 = self.hierarchy.add_region(
            named_ordered_region2, self.gene_id)

        named_site = Site("ATP binding")
        interval_site = Site(start=100, end=200)
        named_ordered_site1 = Site("pY", order=1)
        named_ordered_site2 = Site("pY", order=2)
        self.named_site = self.hierarchy.add_site(named_site, self.gene_id)
        self.interval_site = self.hierarchy.add_site(interval_site,
                                                     self.gene_id)
        self.named_ordered_site1 = self.hierarchy.add_site(
            named_ordered_site1, self.gene_id)
        self.named_ordered_site2 = self.hierarchy.add_site(
            named_ordered_site2, self.gene_id)

        residue = Residue("Y", 150)
        residue_no_loc = Residue("T")
        self.residue = self.hierarchy.add_residue(residue, self.gene_id)
        self.residue_no_loc = self.hierarchy.add_residue(
            residue_no_loc, self.gene_id)

        residue_state = State("activity", True)
        site_state = State("activity", True)
        region_state = State("activity", True)
        gene_state = State("activity", True)

        self.residue_state = self.hierarchy.add_state(residue_state,
                                                      self.residue)
        self.site_state = self.hierarchy.add_state(site_state, self.named_site)
        self.region_state = self.hierarchy.add_state(region_state,
                                                     self.named_region)
        self.gene_state = self.hierarchy.add_state(gene_state, self.gene_id)

    def test_identify_protoform(self):
        """Test protoform identification."""
        gene1 = Protoform("A")
        gene2 = Protoform("B")
        identifier = EntityIdentifier(self.hierarchy.action_graph,
                                      self.hierarchy.get_action_graph_typing())
        result1 = identifier.identify_protoform(gene1)
        result2 = identifier.identify_protoform(gene2)
        assert (result1 == self.gene_id)
        assert (result2 is None)

    def test_identify_region(self):
        """Test region identification."""
        identifier = EntityIdentifier(self.hierarchy.action_graph,
                                      self.hierarchy.get_action_graph_typing())
        res = identifier.identify_region(Region("Protein kinase"),
                                         self.gene_id)
        assert (res == self.named_region)
        res = identifier.identify_region(Region(start=101, end=199),
                                         self.gene_id)
        assert (res == self.interval_region)
        res = identifier.identify_region(Region("SH2"), self.gene_id)
        assert (res is None)
        res = identifier.identify_region(Region("SH2", order=1), self.gene_id)
        assert (res == self.named_ordered_region1)
        res = identifier.identify_region(Region("SH2", order=5), self.gene_id)
        assert (res is None)
        res = identifier.identify_region(
            Region("SH2", start=101, end=185, order=2), self.gene_id)
        assert (res == self.interval_region)

    def test_identify_site(self):
        """Test site identification."""
        identifier = EntityIdentifier(self.hierarchy.action_graph,
                                      self.hierarchy.get_action_graph_typing())
        res = identifier.identify_site(Site("ATP bind"), self.gene_id)
        assert (res == self.named_site)
        res = identifier.identify_site(Site("ATP binding site"), self.gene_id)
        assert (res == self.named_site)

        res = identifier.identify_site(Site(start=101, end=199), self.gene_id)
        assert (res == self.interval_site)
        res = identifier.identify_site(Site("pY"), self.gene_id)
        assert (res is None)
        res = identifier.identify_site(Site("pY", order=1), self.gene_id)
        assert (res == self.named_ordered_site1)
        res = identifier.identify_site(Site("pY", order=5), self.gene_id)
        assert (res is None)
        res = identifier.identify_site(Site("pY", start=101, end=185, order=2),
                                       self.gene_id)
        assert (res == self.interval_site)

    def test_identify_residue(self):
        """Test residue identification."""
        identifier = EntityIdentifier(self.hierarchy.action_graph,
                                      self.hierarchy.get_action_graph_typing())
        res = identifier.identify_residue(Residue("S", 150), self.gene_id)
        assert (res == self.residue)
        res = identifier.identify_residue(Residue("T"), self.gene_id)
        assert (res == self.residue_no_loc)
        res = identifier.identify_residue(Residue("S"), self.gene_id)
        assert (res is None)

    def test_identify_state(self):
        """Test state identification."""
        identifier = EntityIdentifier(self.hierarchy.action_graph,
                                      self.hierarchy.get_action_graph_typing())
        res = identifier.identify_state(State("activity", False), self.residue)
        assert (res == self.residue_state)
        res = identifier.identify_state(State("activity", False),
                                        self.named_site)
        assert (res == self.site_state)
        res = identifier.identify_state(State("activity", False),
                                        self.named_region)
        assert (res == self.region_state)
        res = identifier.identify_state(State("activity", False), self.gene_id)
        assert (res == self.gene_state)
コード例 #11
0
    def test_advanced_ligand_mod_generator(self):
        """Test generation with advanced usage of LigandModification."""

        corpus = KamiCorpus("test")
        identifier = EntityIdentifier(
            corpus.action_graph,
            corpus.get_action_graph_typing())
        generator = LigandModGenerator(identifier)

        enzyme = SiteActor(
            protoform=Protoform("A"),
            region=Region(name="RegionActor"),
            site=Site(name="SiteActor"))
        substrate = SiteActor(
            protoform=Protoform("B"),
            region=Region(name="RegionActor"),
            site=Site(name="SiteActor"))

        # simple subactors switching
        subactors = ["protoform", "region", "site"]
        for ea in subactors:
            for sa in subactors:
                mod = LigandModification(
                    enzyme=enzyme,
                    substrate=substrate,
                    target=Residue("Y", 100, State("phosphorylation", True)),
                    value=False,
                    enzyme_bnd_subactor=ea,
                    substrate_bnd_subactor=sa)

            n, _, _, _ = generator.generate(mod)

        mod = LigandModification(
            enzyme=enzyme,
            substrate=substrate,
            target=Residue("Y", 100, State("phosphorylation", True)),
            value=False,
            enzyme_bnd_region=Region(name="SpecialBindingRegion"),
            substrate_bnd_region=Region(name="SpecialBindingRegion"))

        n, _, _, _ = generator.generate(mod)

        mod = LigandModification(
            enzyme=enzyme,
            substrate=substrate,
            target=Residue("Y", 100, State("phosphorylation", True)),
            value=False,
            enzyme_bnd_subactor="region",
            substrate_bnd_subactor="region",
            enzyme_bnd_site=Site(name="SpecialBindingSite"),
            substrate_bnd_site=Site(name="SpecialBindingSite"))

        n, _, _, _ = generator.generate(mod)

        mod = LigandModification(
            enzyme=enzyme,
            substrate=substrate,
            target=Residue("Y", 100, State("phosphorylation", True)),
            value=False,
            enzyme_bnd_region=Region(name="SpecialBindingRegion"),
            substrate_bnd_region=Region(name="SpecialBindingRegion"),
            enzyme_bnd_site=Site(name="SpecialBindingSite"),
            substrate_bnd_site=Site(name="SpecialBindingSite"))

        n, _, _, _ = generator.generate(mod)
        print_graph(n.graph)