Exemple #1
0
 def readIdxrefLp(pathToIdxrefLp, resultXDSIndexing=None):
     if resultXDSIndexing is None:
         resultXDSIndexing = {}
     if pathToIdxrefLp.exists():
         with open(str(pathToIdxrefLp)) as f:
             listLines = f.readlines()
         indexLine = 0
         doParseParameters = False
         doParseLattice = False
         while indexLine < len(listLines):
             if "DIFFRACTION PARAMETERS USED AT START OF INTEGRATION" in listLines[
                     indexLine]:
                 doParseParameters = True
                 doParseLattice = False
             elif "DETERMINATION OF LATTICE CHARACTER AND BRAVAIS LATTICE" in listLines[
                     indexLine]:
                 doParseParameters = False
                 doParseLattice = True
             if doParseParameters:
                 if "MOSAICITY" in listLines[indexLine]:
                     resultXDSIndexing['mosaicity'] = float(
                         listLines[indexLine].split()[-1])
                 elif "DETECTOR COORDINATES (PIXELS) OF DIRECT BEAM" in listLines[
                         indexLine]:
                     resultXDSIndexing['xBeam'] = float(
                         listLines[indexLine].split()[-1])
                     resultXDSIndexing['yBeam'] = float(
                         listLines[indexLine].split()[-2])
                 elif "CRYSTAL TO DETECTOR DISTANCE" in listLines[
                         indexLine]:
                     resultXDSIndexing['distance'] = float(
                         listLines[indexLine].split()[-1])
             elif doParseLattice:
                 if listLines[indexLine].startswith(
                         " * ") and not listLines[indexLine +
                                                  1].startswith(" * "):
                     listLine = listLines[indexLine].split()
                     latticeCharacter = int(listLine[1])
                     bravaisLattice = listLine[2]
                     spaceGroup = UtilsSymmetry.getMinimumSymmetrySpaceGroupFromBravaisLattice(
                         bravaisLattice)
                     spaceGroupNumber = UtilsSymmetry.getITNumberFromSpaceGroupName(
                         spaceGroup)
                     qualityOfFit = float(listLine[3])
                     resultXDSIndexing.update({
                         'latticeCharacter': latticeCharacter,
                         'spaceGroupNumber': spaceGroupNumber,
                         'qualityOfFit': qualityOfFit,
                         'a': float(listLine[4]),
                         'b': float(listLine[5]),
                         'c': float(listLine[6]),
                         'alpha': float(listLine[7]),
                         'beta': float(listLine[8]),
                         'gamma': float(listLine[9])
                     })
             indexLine += 1
     return resultXDSIndexing
 def test_getMinimumSymmetrySpaceGroupFromBravaisLattice(self):
     """
     Testing retrieving the lowest symmetry space group from all Bravais Lattices
     """
     listBravaisLattice = [
         "aP",
         "mP",
         "mC",
         "mI",
         "oP",
         "oA",
         "oB",
         "oC",
         "oS",
         "oF",
         "oI",
         "tP",
         "tC",
         "tI",
         "tF",
         "hP",
         "hR",
         "cP",
         "cF",
         "cI",
     ]
     listSpaceGroup = [
         "P1",
         "P2",
         "C2",
         "C2",
         "P222",
         "C222",
         "C222",
         "C222",
         "C222",
         "F222",
         "I222",
         "P4",
         "P4",
         "I4",
         "I4",
         "P3",
         "H3",
         "P23",
         "F23",
         "I23",
     ]
     for index in range(len(listBravaisLattice)):
         self.assertEqual(
             listSpaceGroup[index],
             UtilsSymmetry.getMinimumSymmetrySpaceGroupFromBravaisLattice(
                 listBravaisLattice[index]),
         )
Exemple #3
0
 def parseLattice(indexLine, listLines, resultXDSIndexing):
     if listLines[indexLine].startswith(
             " * ") and not listLines[indexLine + 1].startswith(" * "):
         listLine = listLines[indexLine].split()
         latticeCharacter = int(listLine[1])
         bravaisLattice = listLine[2]
         spaceGroup = UtilsSymmetry.getMinimumSymmetrySpaceGroupFromBravaisLattice(
             bravaisLattice)
         spaceGroupNumber = UtilsSymmetry.getITNumberFromSpaceGroupName(
             spaceGroup)
         qualityOfFit = float(listLine[3])
         resultXDSIndexing.update({
             "latticeCharacter": latticeCharacter,
             "spaceGroupNumber": spaceGroupNumber,
             "qualityOfFit": qualityOfFit,
             "a": float(listLine[4]),
             "b": float(listLine[5]),
             "c": float(listLine[6]),
             "alpha": float(listLine[7]),
             "beta": float(listLine[8]),
             "gamma": float(listLine[9]),
         })