@@ -15,6 +15,12 @@ def test_network(sdf_file):
1515 return network
1616
1717
18+ @pytest .fixture (name = 'network' )
19+ def long_test_network ():
20+ network = sg .ScaffoldNetwork .from_smiles_file ('tests/test_smiles.smi' )
21+ return network
22+
23+
1824def test_network_from_sdf (sdf_file ):
1925 network = sg .ScaffoldNetwork .from_sdf (sdf_file )
2026 assert network .num_scaffold_nodes == 8
@@ -33,5 +39,47 @@ def test_hiers(sdf_file):
3339 assert network .num_molecule_nodes == 2
3440
3541
42+ def test_hierarchy_functions (network ):
43+ hierarchy_sizes = network .get_hierarchy_sizes ()
44+ assert hierarchy_sizes [1 ] == 7
45+ assert hierarchy_sizes [2 ] == 10
46+ assert hierarchy_sizes [3 ] == 7
47+ assert hierarchy_sizes [4 ] == 1
48+ assert network .max_hierarchy () == 4
49+ assert network .min_hierarchy () == 1
50+ s_in_h2 = {
51+ 'C1=Cn2cnnc2CN=C1' , 'O=C1CN=C(c2ccccn2)C=CN1' , 'O=C1CN=Cc2ccccc2N1' ,
52+ 'C1=CC(c2ccccc2)=[NH+]CC=N1' , 'C1=Nc2ccccc2C=[NH+]C1' ,
53+ 'O=C1CC(=O)N(c2ccccc2)C=CN1' , 'O=C1CC(=O)Nc2ccccc2N1' ,
54+ 'O=C1CN=C(c2ccccc2)C=CN1' , 'O=C1C[NH+]=Cc2ccccc2N1' ,
55+ 'O=C1C[NH+]=C(c2ccccc2)C=CN1'
56+ }
57+ assert s_in_h2 == set (network .get_scaffolds_in_hierarchy (2 ))
58+
59+
60+ def test_simple_functions (network ):
61+ assert network .scaffold_in_graph ('C1=Cn2cnnc2CN=C1' ) is True
62+ # Below is the non-canonical SMILES of the above
63+ assert network .scaffold_in_graph ('C1=C-n2:c:n:n:c:2-C-N=C-1' ) is True
64+ assert network .scaffold_in_graph ('c1ccccc1CCNc2ccccc2' ) is False
65+ assert network .molecule_in_graph ('Adinazolam' ) is True
66+ assert network .molecule_in_graph ('Citalopram' ) is False
67+
68+
69+ def test_traversal (network ):
70+ s_for_adinazolam = {
71+ 'c1ccc(C2=NCc3nncn3-c3ccccc32)cc1' , 'C1=NCc2nncn2-c2ccccc21' ,
72+ 'C1=Cn2cnnc2CN=C1c1ccccc1' , 'C1=Cn2cnnc2CN=C1' , 'c1nnc[nH]1'
73+ }
74+ assert set (network .get_scaffolds_for_molecule ('Adinazolam' )) == s_for_adinazolam
75+ m_for_scaffold = {'Adinazolam' , 'Alprazolam' }
76+ assert set (network .get_molecules_for_scaffold ('c1nnc[nH]1' )) == m_for_scaffold
77+
78+
79+ def test_separate_disconnected (network ):
80+ assert len (network .separate_disconnected_components ()) == 2
81+ assert type (network .separate_disconnected_components ()[0 ]) == type (network )
82+
83+
3684def test_repr (test_net ):
3785 assert repr (test_net ) == '<ScaffoldNetwork at {}>' .format (hex (id (test_net )))
0 commit comments