Ejemplo n.º 1
0
class TestCELL(TestCase):
    def setUp(self) -> None:
        self.shx = Shelxfile()
        self.shx.read_file('tests/resources/p21c.res')

    def test_volume(self):
        self.assertEqual(4493.0474, round(self.shx.cell.volume, 4))
Ejemplo n.º 2
0
class TestRESI(TestCase):
    def setUp(self) -> None:
        self.shx = Shelxfile()
        self.shx.read_file('tests/resources/p21c.res')

    def test_get_resi_1_tol(self):
        r = RESI(None, 'RESI 1 TOL'.split())
        self.assertEqual(
            ('TOL', 1, None, None),
            (r.residue_class, r.residue_number, r.chain_id, r.alias))

    def test_tol_1(self):
        r = RESI(None, 'RESI TOL 1'.split())
        self.assertEqual(
            ('TOL', 1, None, None),
            (r.residue_class, r.residue_number, r.chain_id, r.alias))

    def test_resi_chainid_tol(self):
        r = RESI(None, 'RESI A:100 TOL'.split())
        self.assertEqual(
            ('TOL', 100, 'A', None),
            (r.residue_class, r.residue_number, r.chain_id, r.alias))

    def test_resi__negative_chain_tol(self):
        r = RESI(None, 'RESI -10 TOL'.split())
        self.assertEqual(
            ('TOL', -10, None, None),
            (r.residue_class, r.residue_number, r.chain_id, r.alias))

    def test_resi_b_chain_tol(self):
        r = RESI(None, 'RESI b:-10 TOL'.split())
        self.assertEqual(
            ('TOL', -10, 'b', None),
            (r.residue_class, r.residue_number, r.chain_id, r.alias))
Ejemplo n.º 3
0
class TestLSCycles(TestCase):
    def setUp(self) -> None:
        self.shx = Shelxfile()
        self.shx.read_file('tests/resources/p21c.res')
        self.ref = ShelxlRefine(self.shx, Path('./resources/p21c.res'))

    def test_set_refine_cycles(self):
        self.shx.cycles.set_refine_cycles(44)
        self.assertEqual('L.S. 44',
                         self.shx._reslist[self.shx.cycles.index].__repr__())
Ejemplo n.º 4
0
class TestWGHT(TestCase):
    def setUp(self) -> None:
        self.shx = Shelxfile()
        self.shx.read_file('tests/resources/p21c.res')

    def test_wght(self):
        self.assertEqual('WGHT   0.049 0.0', self.shx.wght.__repr__())

    def test_wght_differene(self):
        self.assertEqual([0.0, 0.0], self.shx.wght.difference())
Ejemplo n.º 5
0
class TestSADI(TestCase):
    def setUp(self) -> None:
        self.shx = Shelxfile()
        self.shx.read_file('tests/resources/I-43d.res')

    def test_sadi_normal(self):
        a = SADI(self.shx, 'SADI C1 C2 C2 C3 C3 C4'.split())
        self.assertEqual([['C1', 'C2'], ['C2', 'C3'], ['C3', 'C4']], a.atoms)
        self.assertEqual('', a.residue_class)
        self.assertEqual([0], a.residue_number)

    def test_sadi_normal_with_resinum(self):
        a = SADI(self.shx, 'SADI_1 C1 C2 C2 C3 C3 C4'.split())
        self.assertEqual([['C1', 'C2'], ['C2', 'C3'], ['C3', 'C4']], a.atoms)
        self.assertEqual('', a.residue_class)
        self.assertEqual([1], a.residue_number)

    def test_sadi_normal_with_resinum_on_atoms(self):
        a = SADI(self.shx, 'SADI C1_1 C2_1 C2_2 C3_2 C3_2 C4_2'.split())
        self.assertEqual(
            [['C1_1', 'C2_1'], ['C2_2', 'C3_2'], ['C3_2', 'C4_2']], a.atoms)
        self.assertEqual('', a.residue_class)
        self.assertEqual([0], a.residue_number)

    def test_sadi_normal_with_name(self):
        a = SADI(self.shx, 'SADI_CCF3 C1 C2 C2 C3 C3 C4'.split())
        self.assertEqual([['C1', 'C2'], ['C2', 'C3'], ['C3', 'C4']], a.atoms)

    def test_sadi_with_name_2(self):
        a = SADI(self.shx, 'SADI_CCF3 C1 C2 C2 C3 C3 C4'.split())
        self.assertEqual('', a.residue_class)
        self.assertEqual([0], a.residue_number)

    def test_sadi_with_name_3(self):
        a = SADI(self.shx, 'SADI_CCF3 C1 C2 C2 C3 C3 C4'.split())
        self.assertEqual(0.02, a.s)

    def test_sadi_with_name_4(self):
        a = SADI(self.shx, 'SADI_CCF3 0.001 C1 C2 C2 C3 C3 C4'.split())
        self.assertEqual(0.001, a.s)
Ejemplo n.º 6
0
class TestSymmetryElement(TestCase):
    def setUp(self) -> None:
        self.shx = Shelxfile()
        self.shx.read_file('tests/resources/p21c.res')

    def test_to_shelxl(self):
        self.assertEqual(
            '[+X, +Y, +Z, -X, -Y, -Z, -X, 0.5+Y, 0.5-Z, +X, -0.5-Y, -0.5+Z]',
            self.shx.symmcards._symmcards.__repr__())

    def test_repr(self):
        self.assertEqual(SymmetryElement(['-X', '-Y', '-Z']),
                         self.shx.symmcards[1])

    def test_string(self):
        self.assertEqual(
            "|-1  0  0|   | 0.0|\n"
            "| 0  1  0| + | 0.5|\n"
            "| 0  0 -1|   | 0.5|\n", self.shx.symmcards[2].__str__())

    def test_equals_false(self):
        self.assertEqual(False, self.shx.symmcards[0] == self.shx.symmcards[1])

    def test_equals_True(self):
        self.assertEqual(True, self.shx.symmcards[1] == self.shx.symmcards[1])

    def test_s12_equals(self):
        s1 = SymmetryElement(['0.5', '0.5', '0.5'])
        s2 = SymmetryElement(['0.5', '0.5', '0.5'])
        self.assertEqual(True, s1 == s2)

    def test_s12_equals2(self):
        s1 = SymmetryElement(['1.5', '1.5', '1.5'])
        s2 = SymmetryElement(['0.5', '0.5', '0.5'])
        self.assertEqual(True, s1 == s2)

    def test_s34_not_equals(self):
        s3 = SymmetryElement(['1', '0.5', '0.5'])
        s4 = SymmetryElement(['0.5', '0.5', '0.5'])
        self.assertEqual(False, s3 == s4)
Ejemplo n.º 7
0
class TestSFACTable(TestCase):
    def setUp(self) -> None:
        self.shx = Shelxfile()
        self.shx.read_file('tests/resources/p21c.res')

    def test_sfac_table(self):
        self.assertEqual('SFAC C  H  O  F  Al  Ga', str(self.shx.sfac_table))

    def test_unit_table(self):
        self.assertEqual('UNIT 1  2  3  4  5  6', str(self.shx.unit))

    def test_sfac_add_element(self):
        self.shx.sfac_table.add_element('Au')
        self.assertEqual('SFAC C  H  O  F  Al  Ga  Au',
                         str(self.shx.sfac_table))

    def test_unit_add_element(self):
        self.shx.sfac_table.add_element('Au')
        self.assertEqual('UNIT 1  2  3  4  5  6  1', self.shx.unit.__repr__())

    def test_unit_add_element_string_repr(self):
        self.shx.sfac_table.add_element('Au')
        self.assertEqual('UNIT 1  2  3  4  5  6  1', str(self.shx.unit))
Ejemplo n.º 8
0
class TestACTA(TestCase):
    def setUp(self) -> None:
        self.shx = Shelxfile()
        self.shx.read_file('tests/resources/p21c.res')
        self.ref = ShelxlRefine(self.shx, Path('./tests/resources/p21c.res'))

    def test_acta(self):
        self.assertEqual('ACTA 45', self.shx._reslist[12].__repr__())
        self.assertEqual('ACTA 45', self.shx.acta.__repr__())

    def test_remove_acta(self):
        self.ref.remove_acta_card(self.shx.acta)
        self.assertEqual('SIZE 0.12 0.23 0.33',
                         self.shx._reslist[12].__repr__())

    def test_restore_acta(self):
        self.ref.remove_acta_card(self.shx.acta)
        self.ref.restore_acta_card()
        self.assertEqual(8, self.shx.index_of(self.shx.acta))
        self.assertEqual([
            'UNIT 1  2  3  4  5  6', 'ACTA 45',
            'LIST 4 ! automatically inserted. Change 6 to 4 for CHECKCIF!!'
        ], [str(x) for x in self.shx._reslist[7:10]])
Ejemplo n.º 9
0
class TestwithDEFS(TestCase):
    def setUp(self) -> None:
        self.shx = Shelxfile()
        self.shx.read_file('tests/resources/p21c.res')

    def test_sadi_with_s(self):
        a = SADI(self.shx, 'SADI_CCF3 0.001 C1 C2 C2 C3 C3 C4'.split())
        self.assertEqual(0.001, a.s)

    def test_sadi_without_s(self):
        a = SADI(self.shx, 'SADI C1 C2 C2 C3 C3 C4'.split())
        self.assertEqual(0.0234, a.s)

    def test_DFIX_without_s(self):
        a = DFIX(self.shx, 'DFIX 1.45 C1 C2 C2 C3 C3 C4'.split())
        self.assertEqual(1.45, a.d)
        self.assertEqual(0.0234, a.s)
        self.assertEqual(0.0234, self.shx.defs.sd)

    def test_DFIX_with_s(self):
        a = DFIX(self.shx, 'DFIX 1.45 0.022 C1 C2 C2 C3 C3 C4'.split())
        self.assertEqual(1.45, a.d)
        self.assertEqual(0.022, a.s)
Ejemplo n.º 10
0
 def setUp(self) -> None:
     self.shx = Shelxfile()
     self.shx.read_file('tests/resources/p21c.res')
Ejemplo n.º 11
0
 def setUp(self) -> None:
     self.shx = Shelxfile()
     self.shx.read_file('tests/resources/p21c.res')
     self.ref = ShelxlRefine(self.shx, Path('./resources/p21c.res'))
Ejemplo n.º 12
0
 def test_fmap_number(self):
     shx = Shelxfile()
     shx.read_file('tests/resources/p21c.res')
     self.assertEqual(2.0, shx.fmap.code)
Ejemplo n.º 13
0
 def test_abin(self):
     a = ABIN(Shelxfile(), 'ABIN 1.234 4'.split())
     self.assertEqual(1.234, a.n1)
     self.assertEqual(4, a.n2)
Ejemplo n.º 14
0
 def test_anis_atoms(self):
     a = ANIS(Shelxfile(), 'ANIS C12 C23 Al3a'.split())
     self.assertEqual(['C12', 'C23', 'Al3a'], a.atoms)
     self.assertEqual(False, hasattr(a, 'n'))
Ejemplo n.º 15
0
 def test_anis_n(self):
     a = ANIS(Shelxfile(), 'ANIS 12'.split())
     self.assertEqual([], a.atoms)
     self.assertEqual(12, a.n)
Ejemplo n.º 16
0
    astar = (b * c * sin(radians(alpha))) / V
    bstar = (c * a * sin(radians(beta))) / V
    cstar = (a * b * sin(radians(gamma))) / V
    # matrix with the reciprocal lattice vectors:
    N = Matrix([[astar, 0, 0],
                [0, bstar, 0],
                [0, 0, cstar]])
    # Finally transform Uij values from fractional to cartesian axis system:
    Ucart = A * N * Uij * N.T * A.T
    return Ucart


if __name__ == "__main__":
    from shelxfile.shelx.shelx import Shelxfile

    shx = Shelxfile()
    shx.read_file('shelxfile/tests/resources/p-31c.res')
    t1 = time.perf_counter()
    sdm = SDMR(shx)
    needsymm = sdm.calc_sdm()
    print('Zeit für sdm:', round(time.perf_counter() - t1, 3), 's')
    print(needsymm)
    packed_atoms = sdm.packer(sdm, needsymm)
    print(len(shx.atoms))
    print(len(packed_atoms))
    assert str(packed_atoms[90]) == 'H2>>1_b 2   0.557744    0.080938   0.300634   21.00000   -1.30000'
    assert str(packed_atoms[
                   129]) == 'C15>>2_a  1    1.145639    0.497216    0.299794    11.00000    0.01803    0.01661      0.03458    0.00038   -0.00408    0.01187'
    # [[1, 5, 5, 5, 4], [1, 5, 5, 5, 5], [2, 6, 5, 5, 5], [3, 6, 6, 5, 5], [1, 5, 5, 5, 3], [2, 6, 6, 5, 3],
    # 88
    # 208