示例#1
0
    def setUp(self):
        self.graph = egf_graph.copy()
        self.original_number_nodes = self.graph.number_of_nodes()
        self.original_number_edges = self.graph.number_of_edges()

        self.manager = MockQueryManager()
        self.network_id = self.manager.insert_graph(self.graph).id

        build_delete_node_by_hash(self.manager)
        build_expand_node_neighborhood_by_hash(self.manager)
示例#2
0
class TestBoundMutation(unittest.TestCase):
    """Random test for mutation functions."""

    def setUp(self):
        self.graph = egf_graph.copy()
        self.original_number_nodes = self.graph.number_of_nodes()
        self.original_number_edges = self.graph.number_of_edges()

        self.manager = MockQueryManager()
        self.network_id = self.manager.insert_graph(self.graph).id

        build_delete_node_by_hash(self.manager)
        build_expand_node_neighborhood_by_hash(self.manager)

    def tearDown(self):
        """Remove definitions of the built functions"""
        del mapped['expand_node_neighborhood_by_hash']
        del mapped['delete_node_by_hash']

    def test_functions_registered(self):
        self.assertIn('delete_node_by_hash', mapped)
        self.assertIn('expand_node_neighborhood_by_hash', mapped)

    def check_original_unchanged(self):
        self.assertEqual(self.original_number_nodes, self.graph.number_of_nodes(),
                         msg='original graph nodes should remain unchanged')
        self.assertEqual(self.original_number_edges, self.graph.number_of_edges(),
                         msg='original graph edges should remain unchanged')

    def test_mock_contents(self):
        self.assertIn(nfkb_complex, self.graph, msg='Graph missing NFKB complex')
        self.assertIn(rela, self.graph, msg='Graph missing RELA')

        self.assertIn(nfkb_complex.md5, self.manager.hash_to_node, msg='NFKB is unindexed')
        self.assertIn(rela.md5, self.manager.hash_to_node, msg='RELA is unindexed')

        self.assertIn(nfkb_complex, self.manager.hash_to_node.values(), msg='NFKB is unindexed')
        self.assertIn(rela, self.manager.hash_to_node.values(), msg='RELA is unindexed')

    def test_bound_mutation(self):
        """Test when a node is deleted then re-expanded."""
        pipeline = Pipeline()
        pipeline.append('delete_node_by_hash', nfkb_complex.md5)
        pipeline.append('expand_node_neighborhood_by_hash', rela.md5)
        result = pipeline.run(self.graph)

        self.check_original_unchanged()

        self.assertEqual(self.original_number_nodes, result.number_of_nodes())
        self.assertGreater(self.original_number_edges, result.number_of_edges())
示例#3
0
文件: test_query.py 项目: smoe/pybel
 def setUp(self):
     """Set up each test with a mock query manager."""
     self.manager = MockQueryManager()
     self.query = Query()
示例#4
0
文件: test_query.py 项目: smoe/pybel
 def setUp(self):
     """Setup each test with an empty mock query manager."""
     self.manager = MockQueryManager()
示例#5
0
文件: test_query.py 项目: smoe/pybel
class QueryTest(unittest.TestCase):
    """Test the query"""
    def setUp(self):
        """Setup each test with an empty mock query manager."""
        self.manager = MockQueryManager()

    def test_pipeline(self):
        graph = egf_graph.copy()
        enrich_protein_and_rna_origins(graph)

        self.assertEqual(
            32,  # 10 protein nodes already there + complex + bp +  2*10 (genes and rnas)
            graph.number_of_nodes())

        # 6 already there + 5 complex hasComponent edges + new 2*10 edges
        self.assertEqual(31, graph.number_of_edges())

        network = self.manager.insert_graph(graph)

        pipeline = Pipeline()
        pipeline.append(collapse_to_genes)

        query = Query(network_ids=[network.id], pipeline=pipeline)
        result_graph = query.run(self.manager)

        self.assertEqual(12, result_graph.number_of_nodes()
                         )  # same number of nodes than there were
        self.assertEqual(11, result_graph.number_of_edges()
                         )  # same number of edges than there were

    def test_pipeline_2(self):
        graph = egf_graph.copy()

        network = self.manager.insert_graph(graph)
        network_id = network.id

        query = Query(network_ids=[network_id])
        query.append_seeding_neighbors(vcp)
        query.append_pipeline(get_subgraph_by_annotation_value, 'Species',
                              '9606')

        result = query.run(self.manager)
        self.assertIsNotNone(result, msg='Query returned none')

        self.assertEqual(3, result.number_of_nodes())

    def test_query_multiple_networks(self):
        sialic_acid_graph_id = self.manager.insert_graph(
            sialic_acid_graph.copy()).id
        egf_graph_id = self.manager.insert_graph(egf_graph.copy()).id

        query = Query()
        query.append_network(sialic_acid_graph_id)
        query.append_network(egf_graph_id)
        query.append_seeding_neighbors([syk])
        query.append_pipeline(enrich_protein_and_rna_origins)

        result = query.run(self.manager)
        self.assertIsNotNone(result, msg='Query returned none')

        self.assertIn(shp1, result)
        self.assertIn(shp2, result)
        self.assertIn(trem2, result)
        self.assertIn(dap12, result)

        self.assertEqual(15, result.number_of_nodes())
        self.assertEqual(14, result.number_of_edges())

    def test_get_subgraph_by_annotation_value(self):
        graph = homology_graph.copy()

        result = get_subgraph_by_annotation_value(graph, 'Species', '10090')

        self.assertIsNotNone(result, msg='Query returned none')
        self.assertIsInstance(result, BELGraph)
        self.assertLess(0, result.number_of_nodes())

        self.assertIn(mouse_mapk1_protein,
                      result,
                      msg='nodes:\n{}'.format(list(map(repr, graph))))
        self.assertIn(mouse_csf1_protein, result)

        self.assertEqual(2, result.number_of_nodes())
        self.assertEqual(1, result.number_of_edges())

    def test_seeding_1(self):
        test_network_1 = self.manager.insert_graph(homology_graph.copy())

        query = Query(network_ids=[test_network_1.id])
        query.append_seeding_neighbors([mouse_csf1_rna, mouse_mapk1_rna])

        result = query.run(self.manager)
        self.assertIsNotNone(result, msg='Query returned none')
        self.assertIsInstance(result, BELGraph)

        self.assertIn(mouse_mapk1_rna, result)
        self.assertIn(mouse_csf1_rna, result)
        self.assertIn(mouse_mapk1_protein, result)
        self.assertIn(mouse_csf1_protein, result)

        self.assertEqual(6, result.number_of_nodes())
        self.assertEqual(4, result.number_of_edges())

    def test_seeding_with_pipeline(self):
        test_network_1 = self.manager.insert_graph(sialic_acid_graph.copy())

        query = Query(network_ids=[test_network_1.id])
        query.append_seeding_neighbors([trem2, dap12, shp2])
        query.append_pipeline(expand_nodes_neighborhoods, [trem2, dap12, shp2])
        result = query.run(self.manager)
        self.assertIsNotNone(result, msg='Query returned none')
        self.assertIsInstance(result, BELGraph)

        self.assertIn(trem2, result)
        self.assertIn(dap12, result)
        self.assertIn(shp2, result)
        self.assertIn(syk, result)
        self.assertIn(cd33_phosphorylated, result)

        self.assertEqual(5, result.number_of_nodes())
        self.assertEqual(4, result.number_of_edges())

    def test_query_multiple_networks_with_api(self):
        test_network_1 = self.manager.insert_graph(homology_graph.copy())

        pipeline = Pipeline()
        pipeline.append(expand_node_neighborhood, mouse_mapk1_protein)

        query = Query(network_ids=[test_network_1.id], pipeline=pipeline)
        query.append_seeding_annotation('Species', {'10090'})

        result = query.run(self.manager)

        self.assertIsNotNone(result, msg='Query returned none')

        self.assertEqual(3, result.number_of_nodes())
        self.assertIn(mouse_mapk1_protein, result)
        self.assertIn(mouse_csf1_protein, result)

        self.assertEqual(2, result.number_of_edges())
示例#6
0
 def test_add_graph(self):
     """Test adding a graph with insert_graph."""
     manager = MockQueryManager()
     graph = egf_graph.copy()
     manager.insert_graph(graph)
     self.assertEqual(1, manager.count_networks())
示例#7
0
 def test_make_with_graph(self):
     """Test counting networks in the mock query manager."""
     manager = MockQueryManager(graphs=[egf_graph])
     self.assertEqual(1, manager.count_networks())
示例#8
0
 def test_make(self):
     """Test instantiating the mock query manager."""
     manager = MockQueryManager()
     self.assertEqual(0, manager.count_networks())