예제 #1
0
 def test_get_labels_bond_order(self):
     a = ConnectivityTree(depth=3, use_bond_order=True)
     X = a.fit_transform([METHANE])
     labels = a.get_labels()
     self.assertEqual(X.shape[1], len(labels))
     expected = ('1-C_1_H-1__2-H_1_C-3', '1-H_1_C-1__1-H_1_H-3')
     self.assertEqual(labels, expected)
예제 #2
0
 def test_get_labels_unknown(self):
     a = ConnectivityTree(depth=2, add_unknown=True)
     X = a.fit_transform([METHANE])
     labels = a.get_labels()
     self.assertEqual(X.shape[1], len(labels))
     expected = ('0-Root-C-1__1-C-H-4', '0-Root-H-1__1-H-C-1', UNKNOWN)
     self.assertEqual(labels, expected)
예제 #3
0
 def test_get_labels_coordination(self):
     a = ConnectivityTree(depth=1, use_coordination=True)
     X = a.fit_transform([METHANE])
     labels = a.get_labels()
     self.assertEqual(X.shape[1], len(labels))
     expected = ('0-Root-C4-1', '0-Root-H1-1')
     self.assertEqual(labels, expected)
예제 #4
0
 def test_fit_depth_3_preserve_paths(self):
     a = ConnectivityTree(depth=3, use_parent_element=False,
                          preserve_paths=True)
     a.fit(ALL_DATA)
     expected = (
         ((0, -1, 'C', 1), (1, 0, 'C', 1), (1, 1, 'C', 1), (1, 4, 'C', 1),
          (2, 1, 'C', 1), (2, 1, 'H', 1), (2, 4, 'H', 1), (2, 4, 'N', 1),
          (2, 7, 'C', 1)),
         ((0, -1, 'C', 1), (1, 0, 'C', 1), (1, 1, 'C', 1), (1, 4, 'H', 1),
          (2, 1, 'C', 1), (2, 1, 'H', 1), (2, 4, 'C', 1), (2, 4, 'H', 1)),
         ((0, -1, 'C', 1), (1, 0, 'C', 1), (1, 1, 'C', 1), (1, 4, 'O', 1),
          (2, 1, 'C', 1), (2, 1, 'H', 1), (2, 4, 'C', 1), (2, 4, 'N', 1),
          (2, 7, 'C', 1)),
         ((0, -1, 'C', 1), (1, 0, 'C', 1), (1, 1, 'N', 1), (1, 4, 'C', 1),
          (2, 1, 'C', 1), (2, 1, 'O', 1), (2, 4, 'C', 1), (2, 6, 'C', 1),
          (2, 6, 'O', 1)),
         ((0, -1, 'C', 1), (1, 0, 'C', 1), (1, 1, 'N', 1), (2, 1, 'C', 2)),
         ((0, -1, 'C', 1), (1, 0, 'O', 1), (1, 1, 'H', 1), (1, 3, 'H', 1),
          (1, 4, 'H', 1), (2, 1, 'C', 1)),
         ((0, -1, 'H', 1), (1, 0, 'C', 1), (2, 1, 'H', 2), (2, 1, 'O', 1)),
         ((0, -1, 'N', 1), (1, 0, 'C', 1), (1, 1, 'C', 1), (2, 1, 'C', 1),
          (2, 1, 'N', 1), (2, 4, 'C', 1), (2, 4, 'H', 1)),
         ((0, -1, 'O', 1), (1, 0, 'C', 1), (1, 1, 'C', 1), (2, 1, 'C', 2),
          (2, 4, 'C', 2))
     )
     self.assertEqual(a._base_groups[::5], expected)
예제 #5
0
 def test_unknown(self):
     a = ConnectivityTree(add_unknown=True)
     expected_results = numpy.array([[1,  4, 0],
                                     [2,  3, 4],
                                     [25, 15, 9]])
     a.fit([METHANE])
     self.assertTrue((a.transform(ALL_DATA) == expected_results).all())
예제 #6
0
    def test_fit_depth_1_coordination(self):
        a = ConnectivityTree(depth=1, use_coordination=True)
        a.fit(ALL_DATA)

        bases = ('C1', 'C2', 'C3', 'C4', 'H0', 'H1',
                 'N1', 'N2', 'N3', 'O0', 'O1', 'O2')
        expected = tuple(((0, 'Root', x, 1), ) for x in bases)
        self.assertEqual(a._base_groups, expected)
예제 #7
0
 def test_fit_depth_1_use_bond_order(self):
     # This should be the exact same thing as doing it with
     # use_bond_order=False
     a = ConnectivityTree(depth=1, use_parent_element=False,
                          use_bond_order=True)
     a.fit(ALL_DATA)
     base = ('C', 'H', 'N', 'O')
     self.assertEqual(a._base_groups, tuple(((0, x, 1), ) for x in base))
예제 #8
0
 def test_fit_depth_2_use_bond_order(self):
     a = ConnectivityTree(depth=2,
                          use_parent_element=False,
                          use_bond_order=True)
     a.fit(ALL_DATA)
     expected = (((0, 'H', 1), ), ((1, 'C_1_O', 1), (1, 'C_Ar_O', 1)),
                 ((1, 'C_2_C', 1), (1, 'N_3_C', 1)), ((1, 'C_Ar_C', 1), ),
                 ((1, 'C_Ar_C', 2), (1, 'H_1_C', 1)), ((1, 'H_1_C', 4), ))
     self.assertEqual(a._base_groups[::5], expected)
예제 #9
0
 def test_tfidf(self):
     a = ConnectivityTree(do_tfidf=True)
     expected = numpy.array([[0., 0., 0., 0.], [0., 0., 0., 1.62186043],
                             [0., 0., 5.49306144, 1.62186043]])
     a.fit(ALL_DATA)
     try:
         m = a.transform(ALL_DATA)
         numpy.testing.assert_array_almost_equal(m, expected)
     except AssertionError as e:
         self.fail(e)
예제 #10
0
 def test_fit_depth_2(self):
     a = ConnectivityTree(depth=2, use_parent_element=False)
     a.fit(ALL_DATA)
     expected = (
         ((0, 'C', 1), (1, 'C', 1)),
         ((0, 'C', 1), (1, 'C', 1), (1, 'H', 1), (1, 'N', 1)),
         ((0, 'C', 1), (1, 'C', 1), (1, 'N', 1), (1, 'O', 1)),
         ((0, 'C', 1), (1, 'C', 1), (1, 'O', 1)),
         ((0, 'C', 1), (1, 'C', 2), (1, 'H', 1)),
         ((0, 'C', 1), (1, 'C', 2), (1, 'O', 1)),
         ((0, 'C', 1), (1, 'H', 3), (1, 'O', 1)), ((0, 'H', 1),),
         ((0, 'H', 1), (1, 'H', 1)),
         ((0, 'H', 1), (1, 'O', 1)),
         ((0, 'N', 1), (1, 'C', 1), (1, 'H', 2)), ((0, 'O', 1),),
         ((0, 'O', 1), (1, 'C', 1), (1, 'H', 1)),
         ((0, 'O', 1), (1, 'O', 1)),
     )
     self.assertEqual(a._base_groups[::2], expected)
예제 #11
0
 def test_fit_transform(self):
     a = ConnectivityTree(depth=2)
     self.assertTrue((a.fit_transform(ALL_DATA) == ALL_ATOM_TREE).all())
예제 #12
0
 def test_transform_before_fit(self):
     a = ConnectivityTree()
     with self.assertRaises(ValueError):
         a.transform(ALL_DATA)
예제 #13
0
 def test_large_to_small_transform(self):
     a = ConnectivityTree(depth=2)
     a.fit([BIG])
     idxs = numpy.where(ALL_ATOM_TREE[2] != 0)[0]
     expected = ALL_ATOM_TREE[:, idxs]
     self.assertTrue((a.transform(ALL_DATA) == expected).all())
예제 #14
0
 def test_transform(self):
     a = ConnectivityTree()
     a.fit(ALL_DATA)
     self.assertTrue((a.transform(ALL_DATA) == ALL_ATOM).all())
예제 #15
0
 def test_fit_depth_1_separated(self):
     a = ConnectivityTree(depth=1)
     a.fit([METHANE2])
     self.assertTrue(
         (a.transform([METHANE2]) == numpy.array([[1, 4]])).all())
예제 #16
0
 def test_fit_depth_1(self):
     a = ConnectivityTree(depth=1, use_parent_element=False)
     a.fit(ALL_DATA)
     base = ('C', 'H', 'N', 'O')
     self.assertEqual(a._base_groups, tuple(((0, x, 1), ) for x in base))