Beispiel #1
0
 def test_state_space(self):
     net = bnet.WTNetwork([[1]])
     self.assertEqual(2, len(list(net.state_space())))
     net = bnet.WTNetwork([[1, 0], [1, 1]])
     self.assertEqual(4, len(list(net.state_space())))
     net = bnet.WTNetwork([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
     self.assertEqual(8, len(list(net.state_space())))
Beispiel #2
0
    def test_init_weights(self):
        net = bnet.WTNetwork([[1]])
        self.assertEqual(1, net.size)
        self.assertTrue(np.array_equal([[1]], net.weights))
        self.assertTrue(np.array_equal([0], net.thresholds))
        self.assertIsNone(net.names)

        net = bnet.WTNetwork([[1, 0], [0, 1]])
        self.assertEqual(2, net.size)
        self.assertTrue(np.array_equal([[1, 0], [0, 1]], net.weights))
        self.assertTrue(np.array_equal([0, 0], net.thresholds))
        self.assertIsNone(net.names)

        net = bnet.WTNetwork([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
        self.assertEqual(3, net.size)
        self.assertTrue(
            np.array_equal([[1, 0, 0], [0, 1, 0], [0, 0, 1]], net.weights))
        self.assertTrue(np.array_equal([0, 0, 0], net.thresholds))
        self.assertIsNone(net.names)

        net = bnet.WTNetwork(1)
        self.assertEqual(1, net.size)
        self.assertTrue(np.array_equal([[0]], net.weights))
        self.assertTrue(np.array_equal([0], net.thresholds))
        self.assertIsNone(net.names)

        net = bnet.WTNetwork(2)
        self.assertEqual(2, net.size)
        self.assertTrue(np.array_equal([[0, 0], [0, 0]], net.weights))
        self.assertTrue(np.array_equal([0, 0], net.thresholds))
        self.assertIsNone(net.names)
Beispiel #3
0
    def test_init_thresholds(self):
        with self.assertRaises(TypeError):
            bnet.WTNetwork([[1]], theta=5)

        net = bnet.WTNetwork([[1]])
        self.assertEqual(bnet.WTNetwork.split_threshold, net.theta)

        net = bnet.WTNetwork([[1]], theta=bnet.WTNetwork.negative_threshold)
        self.assertEqual(bnet.WTNetwork.negative_threshold, net.theta)

        net = bnet.WTNetwork([[1]], theta=bnet.WTNetwork.positive_threshold)
        self.assertEqual(bnet.WTNetwork.positive_threshold, net.theta)
Beispiel #4
0
 def test_update_values_none(self):
     net = bnet.WTNetwork([[1, 0], [-1, 1]], [0.5, 0.0],
                          theta=bnet.WTNetwork.positive_threshold)
     xs = [0, 0]
     self.assertEqual([0, 1], net.update(xs, values=None))
     xs = [0, 0]
     self.assertEqual([0, 1], net.update(xs, values={}))
Beispiel #5
0
 def test_update_invalid_values(self):
     net = bnet.WTNetwork([[1, 0], [-1, 1]], [0.5, 0.0],
                          theta=bnet.WTNetwork.positive_threshold)
     with self.assertRaises(ValueError):
         net.update([0, 0], values={0: 2})
     with self.assertRaises(ValueError):
         net.update([0, 0], values={0: -1})
Beispiel #6
0
 def test_update_pin_invalid_indicies(self):
     net = bnet.WTNetwork([[1, 0], [-1, 1]], [0.5, 0.0],
                          theta=bnet.WTNetwork.positive_threshold)
     with self.assertRaises(IndexError):
         net.update([0, 0], values={-3: 0})
     with self.assertRaises(IndexError):
         net.update([0, 0], values={2: 0})
Beispiel #7
0
    def test_complex(self):
        net = nb.WTNetwork([
            [0, 1, 0, 0, 0, 0, 0, 0, 0, 0],
            [1, 0, 0, 0, 0, 0, 0, 0, 0, 0],
            [0, 0, 0, -1, 0, 0, 0, 0, 0, 0],
            [0, 0, 1, 0, 0, 0, 0, 0, 0, 0],
            [1, 0, -1, -1, 1, 1, 0, 0, 0, 0],
            [0, -1, 0, -1, 1, 1, 0, 0, 0, 0],
            [0, 0, 0, 0, 0, 0, -1, 1, 0, 0],
            [0, 0, 0, 0, 1, 0, -1, 1, 0, 0],
            [0, 0, 0, 0, 0, 1, 0, 0, -1, -1],
            [0, 0, 0, 0, -1, 0, 0, 0, 1, 0],
        ])

        g = net.to_networkx_graph()
        self.assertEqual([[8, 9], [6, 7], [4, 5], [0, 1], [2, 3]],
                         list(map(list, nx.strongly_connected_components(g))))
        self.assertEqual([(2, 1), (2, 0), (3, 2), (4, 2)],
                         list(nx.condensation(g).edges))

        expect = ns.attractors(net)

        got = main.attractors(net)

        self.assertUnorderedEqual(expect, got)
Beispiel #8
0
    def test_neighbors_WTNetwork(self):
        net = bnet.WTNetwork([[1, 0], [1, 1]])

        with self.assertRaises(ValueError):
            neighbors(net, 0, direction='')

        self.assertTrue(neighbors(net, 0), [set([0])])
Beispiel #9
0
    def test_fission_yeast_numpy(self):
        net = bnet.WTNetwork(
            [[-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
             [0.0, 0.0, -1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 0.0],
             [-1.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0],
             [-1.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0],
             [0.0, 0.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, 0.0],
             [0.0, 0.0, -1.0, -1.0, -1.0, 0.0, -1.0, 1.0, 0.0],
             [0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0],
             [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0],
             [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, -1.0]],
            [0.0, -0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0])

        self.assertEqual(9, net.size)
        self.assertEqual(512, len(list(net.state_space())))

        init = np.asarray([1, 0, 1, 1, 0, 0, 1, 0, 0])
        bio_sequence = np.asarray([[0, 0, 0, 0, 0, 0, 1, 0, 0],
                                   [0, 1, 0, 0, 0, 0, 1, 0, 0],
                                   [0, 1, 0, 0, 0, 0, 0, 1, 0],
                                   [0, 1, 0, 0, 0, 1, 0, 1, 0],
                                   [0, 1, 0, 0, 1, 1, 0, 1, 0],
                                   [0, 0, 0, 0, 1, 0, 0, 1, 1],
                                   [0, 0, 1, 1, 0, 0, 1, 0, 1],
                                   [0, 0, 1, 1, 0, 0, 1, 0, 0]])

        for expected in bio_sequence:
            self.assertTrue(np.array_equal(expected, net.update(init)))
Beispiel #10
0
 def test_update_pin_index_clash(self):
     net = bnet.WTNetwork([[1, 0], [-1, 1]], [0.5, 0.0],
                          theta=bnet.WTNetwork.positive_threshold)
     with self.assertRaises(ValueError):
         net.update([0, 0], index=0, pin=[1])
     with self.assertRaises(ValueError):
         net.update([0, 0], index=1, pin=[1])
     with self.assertRaises(ValueError):
         net.update([0, 0], index=1, pin=[0, 1])
Beispiel #11
0
 def test_update_values_index_clash(self):
     net = bnet.WTNetwork([[1, 0], [-1, 1]], [0.5, 0.0],
                          theta=bnet.WTNetwork.positive_threshold)
     with self.assertRaises(ValueError):
         net.update([0, 0], index=0, values={0: 1})
     with self.assertRaises(ValueError):
         net.update([0, 0], index=1, values={1: 0})
     with self.assertRaises(ValueError):
         net.update([0, 0], index=1, values={0: 0, 1: 0})
Beispiel #12
0
    def test_update(self):
        net = bnet.WTNetwork([[1, 0], [-1, 1]], [0.5, 0.0])

        self.assertEqual(bnet.WTNetwork.split_threshold, net.theta)

        xs = [0, 0]
        self.assertEqual([0, 0], net.update(xs))
        self.assertEqual([0, 0], xs)

        xs = [1, 0]
        self.assertEqual([1, 0], net.update(xs))
        self.assertEqual([1, 0], xs)

        xs = [0, 1]
        self.assertEqual([0, 1], net.update(xs))
        self.assertEqual([0, 1], xs)

        xs = [1, 1]
        self.assertEqual([1, 1], net.update(xs))
        self.assertEqual([1, 1], xs)

        net.theta = bnet.WTNetwork.negative_threshold

        xs = [0, 0]
        self.assertEqual([0, 0], net.update(xs))
        self.assertEqual([0, 0], xs)

        xs = [1, 0]
        self.assertEqual([1, 0], net.update(xs))
        self.assertEqual([1, 0], xs)

        xs = [0, 1]
        self.assertEqual([0, 1], net.update(xs))
        self.assertEqual([0, 1], xs)

        xs = [1, 1]
        self.assertEqual([1, 0], net.update(xs))
        self.assertEqual([1, 0], xs)

        net.theta = bnet.WTNetwork.positive_threshold

        xs = [0, 0]
        self.assertEqual([0, 1], net.update(xs))
        self.assertEqual([0, 1], xs)

        xs = [1, 0]
        self.assertEqual([1, 0], net.update(xs))
        self.assertEqual([1, 0], xs)

        xs = [0, 1]
        self.assertEqual([0, 1], net.update(xs))
        self.assertEqual([0, 1], xs)

        xs = [1, 1]
        self.assertEqual([1, 1], net.update(xs))
        self.assertEqual([1, 1], xs)
Beispiel #13
0
    def test_update_pin(self):
        net = bnet.WTNetwork([[1, 0], [-1, 1]], [0.5, 0.0])

        net.theta = bnet.WTNetwork.negative_threshold
        xs = [1, 1]
        self.assertEqual([1, 0], net.update(xs, pin=[0]))

        net.theta = bnet.WTNetwork.positive_threshold
        xs = [0, 0]
        self.assertEqual([0, 0], net.update(xs, pin=[1]))
Beispiel #14
0
    def test_update_values(self):
        net = bnet.WTNetwork([[1, 0], [-1, 1]], [0.5, 0.0],
                             theta=bnet.WTNetwork.negative_threshold)

        xs = [1, 1]
        self.assertEqual([1, 1], net.update(xs, values={1: 1}))

        net.theta = bnet.WTNetwork.positive_threshold
        xs = [0, 0]
        self.assertEqual([1, 1], net.update(xs, values={0: 1}))
Beispiel #15
0
    def test_neighbors_both_split_threshold(self):

        net = bnet.WTNetwork(
            [[-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
             [0.0, 0.0, -1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 0.0],
             [-1.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0],
             [-1.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0],
             [0.0, 0.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, 0.0],
             [0.0, 0.0, -1.0, -1.0, -1.0, 0.0, -1.0, 1.0, 0.0],
             [0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0],
             [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0],
             [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, -1.0]],
            [0.0, -0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0])

        self.assertEqual(net.neighbors(2), set([0, 1, 2, 5, 8]))
Beispiel #16
0
    def test_neighbors_out_negative_threshold(self):

        net = bnet.WTNetwork(
            [[-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
             [0.0, 0.0, -1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 0.0],
             [-1.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0],
             [-1.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0],
             [0.0, 0.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, 0.0],
             [0.0, 0.0, -1.0, -1.0, -1.0, 0.0, -1.0, 1.0, 0.0],
             [0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0],
             [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0],
             [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, -1.0]],
            [0.0, -0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0],
            theta=bnet.WTNetwork.negative_threshold)

        self.assertEqual(net.neighbors_out(2), set([1, 5]))
Beispiel #17
0
    def test_update_invalid_states(self):
        net = bnet.WTNetwork([[1, 0], [1, 1]])
        with self.assertRaises(ValueError):
            net.update([-1, 0])

        with self.assertRaises(ValueError):
            net.update([1, -1])

        with self.assertRaises(ValueError):
            net.update([2, 0])

        with self.assertRaises(ValueError):
            net.update([1, 2])

        with self.assertRaises(ValueError):
            net.update([[1], [0]])

        with self.assertRaises(ValueError):
            net.update("101")
Beispiel #18
0
    def test_neighbors_in_split_threshold(self):

        net = bnet.WTNetwork(
            [[-1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0],
             [0.0, 0.0, -1.0, -1.0, -1.0, 0.0, 0.0, 0.0, 0.0],
             [-1.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0],
             [-1.0, -1.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 1.0],
             [0.0, 0.0, 0.0, 0.0, -1.0, 1.0, 0.0, 0.0, 0.0],
             [0.0, 0.0, -1.0, -1.0, -1.0, 0.0, -1.0, 1.0, 0.0],
             [0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0],
             [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -1.0],
             [0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, -1.0]],
            [0.0, -0.5, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0])

        self.assertEqual(net.neighbors_in(2), set([0, 1, 2, 5, 8]))

        with self.assertRaises(IndexError):
            self.assertEqual(net.neighbors_in(2.0))

        with self.assertRaises(IndexError):
            self.assertEqual(net.neighbors_in('2'))
Beispiel #19
0
    def test_init_names(self):
        with self.assertRaises(TypeError):
            bnet.WTNetwork([[1]], names=5)

        with self.assertRaises(ValueError):
            bnet.WTNetwork([[1]], names=["A", "B"])

        with self.assertRaises(ValueError):
            bnet.WTNetwork([[1]], names=["A", "B"])

        net = bnet.WTNetwork([[1]], names=["A"])
        self.assertEqual(['A'], net.names)

        net = bnet.WTNetwork([[1, 0], [1, 1]], names=['A', 'B'])
        self.assertEqual(['A', 'B'], net.names)

        net = bnet.WTNetwork([[1]], names="A")
        self.assertEqual(['A'], net.names)

        net = bnet.WTNetwork([[1, 0], [1, 1]], names="AB")
        self.assertEqual(['A', 'B'], net.names)
Beispiel #20
0
    def test_user_defined_threshold(self):
        def reverse_negative(values, states):
            if isinstance(values, list) or isinstance(values, np.ndarray):
                for i, x in enumerate(values):
                    if x <= 0:
                        states[i] = 1
                    else:
                        states[i] = 0
                return states
            else:
                if values <= 0:
                    return 1
                else:
                    return 0

        net = bnet.WTNetwork([[1, 0], [-1, 1]], [0.5, 0.0],
                             theta=reverse_negative)
        xs = [0, 0]
        self.assertEqual([1, 1], net.update(xs))
        self.assertEqual([1, 1], xs)

        xs = [0, 0]
        self.assertEqual([1, 0], net.update(xs, 0))
        self.assertEqual([1, 0], xs)

        xs = [0, 0]
        self.assertEqual([0, 1], net.update(xs, 1))
        self.assertEqual([0, 1], xs)

        xs = [1, 0]
        self.assertEqual([0, 1], net.update(xs))
        self.assertEqual([0, 1], xs)

        xs = [1, 0]
        self.assertEqual([0, 0], net.update(xs, 0))
        self.assertEqual([0, 0], xs)

        xs = [1, 0]
        self.assertEqual([1, 1], net.update(xs, 1))
        self.assertEqual([1, 1], xs)

        xs = [0, 1]
        self.assertEqual([1, 0], net.update(xs))
        self.assertEqual([1, 0], xs)

        xs = [0, 1]
        self.assertEqual([1, 1], net.update(xs, 0))
        self.assertEqual([1, 1], xs)

        xs = [0, 1]
        self.assertEqual([0, 0], net.update(xs, 1))
        self.assertEqual([0, 0], xs)

        xs = [1, 1]
        self.assertEqual([0, 1], net.update(xs))
        self.assertEqual([0, 1], xs)

        xs = [1, 1]
        self.assertEqual([0, 1], net.update(xs, 0))
        self.assertEqual([0, 1], xs)

        xs = [1, 1]
        self.assertEqual([1, 1], net.update(xs, 1))
        self.assertEqual([1, 1], xs)
Beispiel #21
0
 def test_has_metadata(self):
     net = bnet.WTNetwork([[1]])
     self.assertTrue(hasattr(net, 'metadata'))
     self.assertEqual(type(net.metadata), dict)
Beispiel #22
0
 def test_is_network(self):
     from neet.interfaces import is_network
     self.assertTrue(is_network(bnet.WTNetwork))
     self.assertTrue(is_network(bnet.WTNetwork([[1]])))
Beispiel #23
0
 def test_is_fixed_sized(self):
     from neet.interfaces import is_fixed_sized
     self.assertTrue(is_fixed_sized(bnet.WTNetwork))
     self.assertTrue(is_fixed_sized(bnet.WTNetwork([[1]])))
Beispiel #24
0
 def test_update_empty_states(self):
     net = bnet.WTNetwork([[1, 0], [1, 1]])
     with self.assertRaises(ValueError):
         net.update([])
Beispiel #25
0
    def test_init_failed(self):
        with self.assertRaises(ValueError):
            bnet.WTNetwork(None)

        with self.assertRaises(ValueError):
            bnet.WTNetwork('a')

        with self.assertRaises(ValueError):
            bnet.WTNetwork(0)

        with self.assertRaises(ValueError):
            bnet.WTNetwork(-1)

        with self.assertRaises(ValueError):
            bnet.WTNetwork([[1]], 'a')

        with self.assertRaises(ValueError):
            bnet.WTNetwork([[1]], 0)

        with self.assertRaises(ValueError):
            bnet.WTNetwork([[1]], -1)

        with self.assertRaises(ValueError):
            bnet.WTNetwork([])

        with self.assertRaises(ValueError):
            bnet.WTNetwork([[]])

        with self.assertRaises(ValueError):
            bnet.WTNetwork([[1]], [])

        with self.assertRaises(ValueError):
            bnet.WTNetwork([[1]], [1, 2])
Beispiel #26
0
 def test_update_invalid_index(self):
     net = bnet.WTNetwork([[1, 0], [1, 1]])
     with self.assertRaises(IndexError):
         net.update([0, 0], 2)
Beispiel #27
0
 def test_average_sensitivity(self):
     net = NB.WTNetwork([[1, -1], [0, 1]], [0.5, 0])
     self.assertEqual(1.0, average_sensitivity(net))
Beispiel #28
0
    def test_to_networkx_graph_names_fail(self):
        net = bnet.WTNetwork([[1, 0], [0, 1]])

        with self.assertRaises(ValueError):
            net.to_networkx_graph(labels='names')
Beispiel #29
0
    def test_average_sensitivity_lengths(self):
        net = NB.WTNetwork([[1, -1], [0, 1]], [0.5, 0])

        with self.assertRaises(ValueError):
            average_sensitivity(
                net, states=[[0, 0], [0, 1]], weights=[0, 1, 2])