def test_graph_radial_hub_fingerprint(self): db = DBMolecules('test/radial/', radial=True, fingerprint=True, fast=True, hub="ejm_46.mol2") strict, loose = db.build_matrices() graph = db.build_graph() mol2_graph = nx.read_gpickle( "test/radial/radial_hub_fingerprint_fast.gpickle") dic1_nodes = graph.nodes(data=True) dic1_edges = graph.edges(data=True) dic2_nodes = mol2_graph.nodes(data=True) dic2_edges = mol2_graph.edges(data=True) self.assertEqual(True, dic1_nodes == dic2_nodes) self.assertEqual(True, dic2_edges == dic2_edges) nm = iso.categorical_node_match(['fname_comp', 'ID'], ['noname', -1]) em = iso.categorical_edge_match(['strict_flag', 'similarity'], [False, -1.0]) self.assertEqual( True, nx.is_isomorphic(graph, mol2_graph, node_match=nm, edge_match=em))
def test_serial_parallel(self): db = DBMolecules('test/basic') s_strict, s_loose = db.build_matrices() db.options.paralell = multiprocessing.cpu_count() p_strict, p_loose = db.build_matrices() self.assertEqual(True, all(s_strict == p_strict)) self.assertEqual(True, all(s_loose == p_loose))
def setUp(self): self.inst = DBMolecules('test/basic/', parallel=1, verbose='off', output=False, time=20, ecrscore=0.0, name='out', display=False, max=6, cutoff=0.4)
class TestLomap(unittest.TestCase): def setUp(self): self.inst = DBMolecules('test/basic/', parallel=1, verbose='off', output=False, time=20, ecrscore=0.0, name='out', display=False, max=6, cutoff=0.4) # Test class Inizialitazion # Check wrong number of argumetns or wrong options def test_InsufficientArgs(self): self.assertRaises(TypeError, self.inst.__init__) # Check passed input Types def test_TypeArgs(self): self.assertRaises(argparse.ArgumentTypeError, self.inst.__init__, 'test/nodir/') self.assertRaises(argparse.ArgumentTypeError, self.inst.__init__, 'test/basic', time=-1) self.assertRaises(argparse.ArgumentTypeError, self.inst.__init__, 'test/basic', parallel=-1) self.assertRaises(SystemExit, self.inst.__init__, 'test/basic', parallel=-1.5) self.assertRaises(SystemExit, self.inst.__init__, 'test/basic', verbose='err_option') self.assertRaises(SystemExit, self.inst.__init__, 'test/basic', time=-1.5) self.assertRaises(argparse.ArgumentTypeError, self.inst.__init__, 'test/basic', ecrscore=-1.5) self.assertRaises(argparse.ArgumentTypeError, self.inst.__init__, 'test/basic', ecrscore=2.0) self.assertRaises(TypeError, self.inst.__init__, 'test/basic', output=-5.0) self.assertRaises(TypeError, self.inst.__init__, 'test/basic', display=-5.0) self.assertRaises(argparse.ArgumentTypeError, self.inst.__init__, 'test/basic', max=-5) self.assertRaises(SystemExit, self.inst.__init__, 'test/basic', max=-5.0) self.assertRaises(argparse.ArgumentTypeError, self.inst.__init__, 'test/basic', cutoff=-5) self.assertRaises(SystemExit, self.inst.__init__, 'test/basic', max='string') # Test class methods # Check iter and next def test_iter_next(self): for i in range(0, self.inst.nums()): self.inst.next() self.assertRaises(StopIteration, self.inst.next) # Check get, set and add def test_get_set_add(self): self.assertRaises(IndexError, self.inst.__getitem__, self.inst.nums() + 1) self.assertRaises(IndexError, self.inst.__setitem__, self.inst.nums() + 1, self.inst[1]) self.assertRaises(ValueError, self.inst.__setitem__, 0, 'no_mol_obj') self.assertRaises(ValueError, self.inst.__add__, 'no_mol_obj') # Check read mol2 files def test_read_mol2_files(self): db = DBMolecules('test/basic') db.options.directory = 'test/' self.assertRaises(IOError, db.read_mol2_files) # Check serial and parallel mode def test_serial_parallel(self): db = DBMolecules('test/basic') s_strict, s_loose = db.build_matrices() db.options.paralell = multiprocessing.cpu_count() p_strict, p_loose = db.build_matrices() self.assertEqual(True, all(s_strict == p_strict)) self.assertEqual(True, all(s_loose == p_loose)) # Check Graph def test_graph(self): db = self.inst strict, loose = db.build_matrices() graph = db.build_graph() self.assertRaises(IOError, nx.nx_agraph.write_dot, graph, '/check.dot') mol2_graph = nx.read_gpickle("test/basic/molecules.gpickle") dic1_nodes = graph.nodes(data=True) dic1_edges = graph.edges(data=True) dic2_nodes = mol2_graph.nodes(data=True) dic2_edges = mol2_graph.edges(data=True) self.assertEqual(True, dic1_nodes == dic2_nodes) self.assertEqual(True, dic2_edges == dic2_edges) nm = iso.categorical_node_match(['fname_comp', 'ID'], ['noname', -1]) em = iso.categorical_edge_match(['strict_flag', 'similarity'], [False, -1.0]) self.assertEqual( True, nx.is_isomorphic(graph, mol2_graph, node_match=nm, edge_match=em)) def test_mcs(self): f = open('test/basic/MCS.pickle', 'rb') data = pickle.load(f) data_no_hydrogens = data[0] data_hydrogens = data[1] db = self.inst nohyds = {} hyds = {} lg = RDLogger.logger() lg.setLevel(RDLogger.CRITICAL) for i in range(0, db.nums()): for j in range(i + 1, db.nums()): MCS_no_hyds = MCS.getMapping(db[i].getMolecule(), db[j].getMolecule()) MCS_hyds = MCS.getMapping(db[i].getMolecule(), db[j].getMolecule(), hydrogens=True) nohyds[(i, j)] = MCS_no_hyds hyds[(i, j)] = MCS_hyds self.assertEqual(True, nohyds == data_no_hydrogens) self.assertEqual(True, hyds == data_hydrogens)
def test_read_mol2_files(self): db = DBMolecules('test/basic') db.options.directory = 'test/' self.assertRaises(IOError, db.read_mol2_files)