Beispiel #1
0
    def test_build_edge_map_single_edge_of_each_type(self):
        adjud = RedundantEdgeAdjudicator()
        net = NiceCXNetwork()

        # try empty network
        neighbor, controls, other = adjud._build_edge_map(net)
        self.assertEqual({}, neighbor)
        self.assertEqual({}, controls)
        self.assertEqual({}, other)

        # try network with single neighbor, controls, and an another edge
        nid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='neighbor-of')
        cid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='controls-state-change-of')
        oid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='somethingelse')
        neighbor, controls, other = adjud._build_edge_map(net)
        self.assertEqual(nid, neighbor[0][1])
        self.assertEqual(nid, neighbor[1][0])
        self.assertEqual({cid}, controls[0][1])
        self.assertEqual({oid}, other[0][1])
Beispiel #2
0
    def test_build_edge_map_multiple_edges_of_each_type(self):
        # try network with multiple neighbor, controls, and an another edge
        net = NiceCXNetwork()
        adjud = RedundantEdgeAdjudicator()
        nid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='neighbor-of')
        nidtwo = net.create_edge(edge_source=2,
                                 edge_target=3,
                                 edge_interaction='neighbor-of')
        cid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='controls-state-change-of')
        cidtwo = net.create_edge(edge_source=3,
                                 edge_target=4,
                                 edge_interaction='controls-state-change-of')

        oid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='somethingelse')
        oidtwo = net.create_edge(edge_source=5,
                                 edge_target=6,
                                 edge_interaction='anotherthingy')
        neighbor, controls, other = adjud._build_edge_map(net)
        self.assertEqual(nid, neighbor[0][1])
        self.assertEqual(nid, neighbor[1][0])
        self.assertEqual(nidtwo, neighbor[2][3])
        self.assertEqual(nidtwo, neighbor[3][2])
        self.assertEqual({cid}, controls[0][1])
        self.assertEqual({cidtwo}, controls[3][4])
        self.assertEqual({oid}, other[0][1])
        self.assertEqual({oidtwo}, other[5][6])
Beispiel #3
0
    def test_basic_network_where_neighbor_of_citations_merges_disabled(self):
        net = NiceCXNetwork()
        adjud = RedundantEdgeAdjudicator(disablcitededgemerge=True)
        nid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='neighbor-of')

        net.set_edge_attribute(nid,
                               RedundantEdgeAdjudicator.CITATION, ['pubmed:5'],
                               type='list_of_string')
        cid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='controls-state-change-of')

        oid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='someother')

        self.assertEqual('neighbor-of', net.get_edge(nid)['i'])
        self.assertEqual('controls-state-change-of', net.get_edge(cid)['i'])
        self.assertEqual('someother', net.get_edge(oid)['i'])

        self.assertEqual([], adjud.update(net))
        self.assertEqual('neighbor-of', net.get_edge(nid)['i'])
        self.assertEqual(None, net.get_edge(cid))
        self.assertEqual('someother', net.get_edge(oid)['i'])
        res = net.get_edge_attribute(nid, RedundantEdgeAdjudicator.CITATION)
        res['v'].sort()
        self.assertEqual(['pubmed:5'], res['v'])
        res = net.get_edge_attribute(oid, RedundantEdgeAdjudicator.CITATION)

        self.assertEqual((None, None), res)
Beispiel #4
0
    def test_basic_network(self):
        net = NiceCXNetwork()
        adjud = RedundantEdgeAdjudicator()
        nid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='neighbor-of')

        cid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='controls-state-change-of')

        net.set_edge_attribute(cid,
                               RedundantEdgeAdjudicator.CITATION,
                               ['pubmed:123'],
                               type='list_of_string')

        oid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='someother')
        net.set_edge_attribute(oid,
                               RedundantEdgeAdjudicator.CITATION,
                               ['pubmed:123'],
                               type='list_of_string')

        self.assertEqual('neighbor-of', net.get_edge(nid)['i'])
        self.assertEqual('controls-state-change-of', net.get_edge(cid)['i'])
        self.assertEqual('someother', net.get_edge(oid)['i'])

        self.assertEqual([], adjud.update(net))
        self.assertEqual(None, net.get_edge(nid))
        self.assertEqual(None, net.get_edge(cid))
        self.assertEqual('someother', net.get_edge(oid)['i'])
Beispiel #5
0
    def test_remove_if_redundant_with_multiple_edges_same_citations(self):
        net = NiceCXNetwork()
        adjud = RedundantEdgeAdjudicator()
        nid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='neighbor-of')

        net.set_edge_attribute(nid,
                               RedundantEdgeAdjudicator.CITATION,
                               ['pubmed:4', 'pubmed:123'],
                               type='list_of_string')

        cid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='controls-state-change-of')

        net.set_edge_attribute(cid,
                               RedundantEdgeAdjudicator.CITATION,
                               ['pubmed:555', 'pubmed:4'],
                               type='list_of_string')

        cidtwo = net.create_edge(edge_source=0,
                                 edge_target=1,
                                 edge_interaction='controls-state-change-of')

        net.set_edge_attribute(cidtwo,
                               RedundantEdgeAdjudicator.CITATION,
                               ['pubmed:4', 'pubmed:123'],
                               type='list_of_string')

        self.assertEqual('neighbor-of', net.get_edge(nid)['i'])
        adjud._remove_if_redundant(net, nid, [cid, cidtwo])
        self.assertEqual(None, net.get_edge(nid))
Beispiel #6
0
 def test_remove_edge_no_attributes(self):
     adjud = RedundantEdgeAdjudicator()
     net = NiceCXNetwork()
     edgeid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='foo')
     self.assertEqual('foo', net.get_edge(edgeid)['i'])
     adjud._remove_edge(net, edgeid)
     self.assertEqual(None, net.get_edge(edgeid))
Beispiel #7
0
 def test_remove_edge_with_attributes(self):
     adjud = RedundantEdgeAdjudicator()
     net = NiceCXNetwork()
     edgeid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='foo')
     net.set_edge_attribute(edgeid, 'attr1', 'someval')
     self.assertEqual('someval',
                      net.get_edge_attribute(edgeid, 'attr1')['v'])
     self.assertEqual('foo', net.get_edge(edgeid)['i'])
     adjud._remove_edge(net, edgeid)
     self.assertEqual(None, net.get_edge(edgeid))
     self.assertEqual((None, None), net.get_edge_attribute(edgeid, 'attr1'))
Beispiel #8
0
    def test_remove_if_redundant_with_no_citation_on_edge(self):
        net = NiceCXNetwork()
        adjud = RedundantEdgeAdjudicator()
        nid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='neighbor-of')
        cid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='controls-state-change-of')

        self.assertEqual('neighbor-of', net.get_edge(nid)['i'])
        adjud._remove_if_redundant(net, nid, [cid])

        self.assertEqual(None, net.get_edge(nid))
Beispiel #9
0
 def test_add_to_edge_map(self):
     adjud = RedundantEdgeAdjudicator()
     edgemap = {}
     adjud._add_to_edge_map(edgemap, 0, 1, 2)
     self.assertEqual({0}, edgemap[1][2])
     self.assertEqual({0}, edgemap[2][1])
     adjud._add_to_edge_map(edgemap, 0, 1, 2)
     self.assertEqual({0}, edgemap[1][2])
     self.assertEqual({0}, edgemap[2][1])
     adjud._add_to_edge_map(edgemap, 1, 1, 2)
     self.assertEqual({0, 1}, edgemap[1][2])
     self.assertEqual({0, 1}, edgemap[2][1])
Beispiel #10
0
    def test_remove_if_redundant_with_citation_and_other_lacks_citation(self):
        net = NiceCXNetwork()
        adjud = RedundantEdgeAdjudicator()
        nid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='neighbor-of')

        net.set_edge_attribute(nid,
                               RedundantEdgeAdjudicator.CITATION,
                               ['pubmed:123'],
                               type='list_of_string')

        cid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='controls-state-change-of')

        self.assertEqual('neighbor-of', net.get_edge(nid)['i'])
        adjud._remove_if_redundant(net, nid, [cid])
        self.assertEqual('neighbor-of', net.get_edge(nid)['i'])
Beispiel #11
0
    def test_remove_if_redundant_mergecitations_true(self):
        net = NiceCXNetwork()
        adjud = RedundantEdgeAdjudicator()
        nid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='neighbor-of')

        net.set_edge_attribute(nid,
                               RedundantEdgeAdjudicator.CITATION,
                               ['pubmed:4', 'pubmed:123'],
                               type='list_of_string')

        cid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='controls-state-change-of')

        self.assertEqual('neighbor-of', net.get_edge(nid)['i'])
        adjud._remove_if_redundant(net, nid, [cid], mergecitations=True)
        self.assertEqual(None, net.get_edge(nid))
        res = net.get_edge_attribute(cid, RedundantEdgeAdjudicator.CITATION)
        res['v'].sort()
        self.assertEqual(['pubmed:123', 'pubmed:4'], res['v'])
    def test_basic_network_where_neighbor_of_citations_merges_enabled(self):
        net = NiceCXNetwork()
        adjud = RedundantEdgeAdjudicator()
        edge_map = {}
        nid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='neighbor-of')
        net.set_edge_attribute(nid,
                               RedundantEdgeAdjudicator.CITATION, ['pubmed:5'],
                               type='list_of_string')

        cid = net.create_edge(edge_source=0,
                              edge_target=1,
                              edge_interaction='controls-state-change-of')
        net.set_edge_attribute(cid,
                               RedundantEdgeAdjudicator.CITATION, ['pubmed:6'],
                               type='list_of_string')

        neighbor_of_map = {}
        controls_state_change_map = {}
        other_edge_exists = {}
        for k, v in net.get_edges():
            s = v['s']
            t = v['t']
            i = v['i']

            if i == 'neighbor-of':
                if not s in neighbor_of_map:
                    neighbor_of_map[s] = {}
                if not t in neighbor_of_map:
                    neighbor_of_map[t] = {}
                neighbor_of_map[s][t] = k
                neighbor_of_map[t][s] = k
            elif i == 'controls-state-change-of':
                adjud._add_to_edge_map(controls_state_change_map, k, s, t)
            else:
                adjud._add_to_edge_map(other_edge_exists, k, s, t)

        adjud.remove_and_merge_neighbor_of(net, neighbor_of_map, edge_map)

        net.print_summary()
Beispiel #13
0
 def test_remove_nonexistant_edge(self):
     adjud = RedundantEdgeAdjudicator()
     self.assertTrue('Removes' in adjud.get_description())
     net = NiceCXNetwork()
     adjud._remove_edge(net, 1)
Beispiel #14
0
 def test_update_none_passed_in(self):
     adjud = RedundantEdgeAdjudicator()
     self.assertEqual(['Network passed in is None'], adjud.update(None))
Beispiel #15
0
 def test_get_description(self):
     adjud = RedundantEdgeAdjudicator()
     self.assertTrue('Removes' in adjud.get_description())