def test_getHKLsUsingFilter(self):
        generator = ReflectionGenerator(self.crystalStructure)
        hkls = generator.getHKLsUsingFilter(1.0, 10.0, ReflectionConditionFilter.StructureFactor)

        self.assertEqual(len(hkls), 130)

        # The 222 is gone now
        self.assertFalse(V3D(2, 2, 2) in hkls)
Exemplo n.º 2
0
    def test_getHKLsUsingFilter(self):
        generator = ReflectionGenerator(self.crystalStructure)
        hkls = generator.getHKLsUsingFilter(1.0, 10.0, ReflectionConditionFilter.StructureFactor)

        self.assertEqual(len(hkls), 130)

        # The 222 is gone now
        self.assertFalse(V3D(2, 2, 2) in hkls)
Exemplo n.º 3
0
class StructFactor():
    def __init__(self, cif_file, qrange=[1, 6], unique=False):
        self.cif = cif_file
        self.qrange = qrange
        self.unique = unique
        self.structf()

    def structf(self):
        sample_ws = CreateSampleWorkspace()
        LoadCIF(sample_ws, self.cif)
        self.sample = sample_ws.sample().getCrystalStructure()
        self.generator = ReflectionGenerator(self.sample)
        if self.unique == True:
            hkls = self.generator.getUniqueHKLsUsingFilter(
                self.qrange[0], self.qrange[1],
                ReflectionConditionFilter.StructureFactor)
        else:
            hkls = self.generator.getHKLsUsingFilter(
                self.qrange[0], self.qrange[1],
                ReflectionConditionFilter.StructureFactor)

        pg = self.sample.getSpaceGroup().getPointGroup()

        df = pd.DataFrame(data=np.array(hkls), columns=list('hkl'))

        df['d(A)'] = self.generator.getDValues(hkls)
        df['F^2'] = self.generator.getFsSquared(hkls)
        df['hkl'] = hkls
        df['M'] = df['hkl'].map(lambda x: len(pg.getEquivalents(x)))
        df['II_powder'] = df['F^2'] * df['M']
        df['q'] = 2 * np.pi / df['d(A)']
        df['qh'] = df['h'].map(lambda x: np.sign(x) * 2 * np.pi / self.
                               generator.getDValues([V3D(x, 0, 0)])[0])
        df['qk'] = df['k'].map(lambda x: np.sign(x) * 2 * np.pi / self.
                               generator.getDValues([V3D(0, x, 0)])[0])
        df['ql'] = df['l'].map(lambda x: np.sign(x) * 2 * np.pi / self.
                               generator.getDValues([V3D(0, 0, x)])[0])
        self.data = df