Beispiel #1
0
 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
Beispiel #2
0
 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
Beispiel #3
0
    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
Beispiel #4
0
    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