def test_singleton(self): self.assertTrue(M.dummy() is M.dummy()) self.assertTrue(M.dummy('a') is M.dummy('a')) self.assertTrue(M.dummy('a') is not M.dummy('b')) self.assertTrue(M.dummy('a') is not M.unknown('a')) self.assertTrue(M.dummy('C') is not M.element('C')) self.assertTrue(M.element('C') is M.element('C'))
def test_bonds(self): carbon = M.atom(M.element("C")) # Bond specified by only one atom self.assertRaises(ValueError, lambda: M.fragment('m', (), (('C1', carbon), ('C2', carbon)), (('C1', ),))) # Bond specified by two atoms but no bond order self.assertRaises(ValueError, lambda: M.fragment('m', (), (('C1', carbon), ('C2', carbon)), (('C1', 'C2'),))) # Bond specified by two identical atoms self.assertRaises(ValueError, lambda: M.fragment('m', (), (('C1', carbon), ('C2', carbon)), (('C1', 'C1', ''),))) # Bond specified by an atom name that is undefined self.assertRaises(ValueError, lambda: M.fragment('m', (), (('C1', carbon), ('C2', carbon)), (('C1', 'C3', ''),))) # Bond specified at the wrong fragment level f = M.fragment('x', (), (('C1', carbon), ('C2', carbon)), ()) self.assertRaises(ValueError, lambda: M.fragment('m', (('x', f),), (('C3', carbon),), (('x.C1', 'x.C2', ''),)))
def test_fragment(self): carbon = M.atom(M.element("C")) # Illegal fragments self.assertRaises(TypeError, lambda: M.fragment('m', None, (("C", carbon),), ())) self.assertRaises(TypeError, lambda: M.fragment('m', [1, 2], (("C", carbon),), ())) self.assertRaises(TypeError, lambda: M.fragment('m', (("C", carbon),), (), ())) # Illegal atoms self.assertRaises(TypeError, lambda: M.fragment('m', (), None, ())) self.assertRaises(TypeError, lambda: M.fragment('m', (), [1, 2], ())) self.assertRaises(TypeError, lambda: M.fragment('m', (), (carbon,), ())) self.assertRaises(ValueError, lambda: M.fragment('m', (), (("C", carbon), ("C", carbon)), ())) # Illegal bond lists self.assertRaises(TypeError, lambda: M.fragment('m', (), (("C", carbon),), None)) self.assertRaises(TypeError, lambda: M.fragment('m', (), (("C", carbon),), [1, 2, 3])) self.assertRaises(TypeError, lambda: M.fragment('m', (), (("C", carbon),), (('X', 'X')))) self.assertRaises(TypeError, lambda: M.fragment('m', (), (("C", carbon),), (['X', 'X', 'single'])))
def _make_molecule(self): C = M.element('C') H = M.element('H') N = M.element('N') O = M.element('O') peptide_group = M.fragment('peptide', (), (('CA', M.atom(C)), ('HA', M.atom(H)), ('H', M.atom(H)), ('N', M.atom(N)), ('C', M.atom(C)), ('O', M.atom(O))), (('N', 'H', "single"), ('N', 'CA', "single"), ('CA', 'HA', "single"), ('CA', 'C', "single"), ('C', 'O', "double"))) ala_sidechain = M.fragment('ala_sidechain', (), (('CB', M.atom(C)), ('HB1', M.atom(H)), ('HB2', M.atom(H)), ('HB3', M.atom(H))), (('CB', 'HB1', "single"), ('CB', 'HB2', "single"), ('CB', 'HB3', "single"),)) ala = M.fragment('alanine', (('peptide', peptide_group), ('sidechain', ala_sidechain)), (), (('peptide.CA', 'sidechain.CB', "single"),)) return M.polymer('alanine_dipeptide', (('ALA1', ala), ('ALA2', ala)), (('ALA1.peptide.C', 'ALA2.peptide.N', "single"),), 'polypeptide')
def test_universe(self): mol = M.fragment("water", (), (("H1", M.atom(M.element("H"), 8)), ("H2", M.atom(M.element("H"), 8)), ("O", M.atom(M.element("O"), 2))), (("H1", "O", "single"), ("H2", "O", "single"))) self.assertRaises(TypeError, lambda: M.universe(0, [(mol, 'water', 10)])) self.assertRaises(ValueError, lambda: M.universe('strange', [(mol, 'water', 10)])) self.assertRaises(ValueError, lambda: M.universe('strange', [(mol, 10)])) self.assertRaises(TypeError, lambda: M.universe('infinite', mol)) self.assertRaises(ValueError, lambda: M.universe('infinite', [("water", 10)])) self.assertRaises(TypeError, lambda: M.universe('infinite', [mol])) self.assertRaises(ValueError, lambda: M.universe('infinite', [(10, mol)])) self.assertRaises(ValueError, lambda: M.universe('infinite', [(mol, 'water', 10)], [(IN.zeros((3,3), N.float64), IN.zeros((3,), N.float64))]))
def test_equality(self): same_mol = make_water_fragment() changed_bond_order = M.fragment("water", (), (("H1", M.atom(M.element("H"))), ("H2", M.atom(M.element("H"))), ("O", M.atom(M.element("O")))), (("O", "H2", "single"), ("O", "H1", "single"))) changed_atom_order = M.fragment("water", (), (("O", M.atom(M.element("O"))), ("H1", M.atom(M.element("H"))), ("H2", M.atom(M.element("H")))), (("O", "H1", "single"), ("O", "H2", "single"))) self.assertEqual(self.mol, self.mol) self.assertEqual(self.mol, same_mol) self.assertEqual(self.mol, changed_bond_order) self.assertNotEqual(self.mol, changed_atom_order)
def __init__(self, mode='r'): self.file = h5py.File(self.filename, mode) def close(self): self.file.close() def __enter__(self): return self.file def __exit__(self, type, value, traceback): self.close() return False water = M.fragment("water", (), (("H1", M.atom(M.element("H"), 1)), ("H2", M.atom(M.element("H"), 1)), ("O", M.atom(M.element("O"), 1))), (("H1", "O", "single"), ("H2", "O", "single"))) class WriteReadTest(unittest.TestCase): def setUp(self): TestHDF5File.initialize() def tearDown(self): TestHDF5File.cleanup() def test_infinite(self): universe = M.universe('infinite', [(water, 'water', 5)]) nsites = universe.number_of_sites
def test_type(self): self.assertEqual(M.dummy().type, "dummy") self.assertEqual(M.unknown().type, "") self.assertEqual(M.element('O').type, "element") self.assertEqual(M.cgparticle('ala').type, "cgparticle")
def make_water_fragment(nsites=1): return M.fragment("water", (), (("H1", M.atom(M.element("H"), nsites)), ("H2", M.atom(M.element("H"), nsites)), ("O", M.atom(M.element("O"), nsites))), (("H1", "O", "single"), ("H2", "O", "single")))
def test_atom(self): carbon = M.element("C") self.assertRaises(TypeError, lambda: M.atom('C', 1)) self.assertRaises(ValueError, lambda: M.atom(carbon, 0))
def test_atom_descriptor(self): self.assertRaises(TypeError, lambda: M.dummy(42)) self.assertRaises(ValueError, lambda: M.element(42)) self.assertRaises(ValueError, lambda: M.element("X"))