def testBadCif(self): """Make sure we can read all cif files.""" from pyobjcryst import ObjCrystException fname = datafile('ni.stru') infile = open(fname, 'rb') self.assertRaises(ObjCrystException, CreateCrystalFromCIF, infile) infile.close() return
def _testPutAtomsInMolecule(self): """Make sure this utility method is correct.""" from math import floor f = lambda v: v - floor(v) import glob from pyobjcryst.tests.pyobjcrysttestutils import datafile pat = os.path.join(datafile(''), '*.cif') for fname in glob.glob(pat): print fname c = CreateCrystalFromCIF(file(fname)) from diffpy.Structure import Structure s = Structure(filename = fname) # Get positions from unmodified structure pos1 = [] scl = c.GetScatteringComponentList() for s in scl: xyz = map(f, [s.X, s.Y, s.Z]) xyz = c.FractionalToOrthonormalCoords(*xyz) pos1.append(xyz) # Get positions from molecular structure putAtomsInMolecule(c) pos2 = [] scl = c.GetScatteringComponentList() for s in scl: xyz = map(f, [s.X, s.Y, s.Z]) xyz = c.FractionalToOrthonormalCoords(*xyz) pos2.append(xyz) # Now compare positions self.assertEqual(len(pos1), len(pos2)) for p1, p2 in zip(pos1, pos2): for i in range(3): self.assertAlmostEqual(p1[i], p2[i]) return
def _testPutAtomsInMolecule(self): """Make sure this utility method is correct.""" from math import floor f = lambda v: v - floor(v) import glob from pyobjcryst.tests.pyobjcrysttestutils import datafile pat = os.path.join(datafile(''), '*.cif') for fname in glob.glob(pat): print fname c = CreateCrystalFromCIF(file(fname)) from diffpy.Structure import Structure s = Structure(filename=fname) # Get positions from unmodified structure pos1 = [] scl = c.GetScatteringComponentList() for s in scl: xyz = map(f, [s.X, s.Y, s.Z]) xyz = c.FractionalToOrthonormalCoords(*xyz) pos1.append(xyz) # Get positions from molecular structure putAtomsInMolecule(c) pos2 = [] scl = c.GetScatteringComponentList() for s in scl: xyz = map(f, [s.X, s.Y, s.Z]) xyz = c.FractionalToOrthonormalCoords(*xyz) pos2.append(xyz) # Now compare positions self.assertEqual(len(pos1), len(pos2)) for p1, p2 in zip(pos1, pos2): for i in range(3): self.assertAlmostEqual(p1[i], p2[i]) return