def test_Vec3(self): a = gemmi.Vec3(-3, 3, 13) b = gemmi.Vec3(2, 0, -2) self.assertEqual((-a).tolist(), [3, -3, -13]) self.assertEqual((a+b).tolist(), [-1, 3, 11]) self.assertEqual((a-b).tolist(), [-5, 3, 15]) a -= b self.assertEqual(a.tolist(), [-5, 3, 15]) a += b self.assertEqual(a.tolist(), [-3, 3, 13])
def test_ortho_cell(self): cell = UnitCell(25.14, 39.50, 45.07, 90, 90, 90) self.assertTrue( cell.orthogonalization_matrix.row_copy(1).approx( gemmi.Vec3(0, 39.5, 0), 0)) self.assertTrue( cell.orthogonalization_matrix.column_copy(0).approx( gemmi.Vec3(25.14, 0, 0), 0)) pos = Position(5, -6, 7) frac = cell.fractionalize(pos) self.assertAlmostEqual(frac.x, 0.198886, delta=1e-6) self.assertAlmostEqual(frac.y, -0.151899, delta=1e-6) self.assertAlmostEqual(frac.z, 0.155314, delta=1e-6) pos2 = cell.orthogonalize(frac) self.assertAlmostEqual(pos.x, pos2.x, delta=1e-12) self.assertAlmostEqual(pos.y, pos2.y, delta=1e-12) self.assertAlmostEqual(pos.z, pos2.z, delta=1e-12) corner = cell.orthogonalize(gemmi.Fractional(1, 1, 1)) self.assertAlmostEqual(corner.x, cell.a, delta=1e-12) self.assertAlmostEqual(corner.y, cell.b, delta=1e-12) self.assertAlmostEqual(corner.z, cell.c, delta=1e-12) rec = cell.reciprocal() self.assertEqual([rec.alpha, rec.beta, rec.gamma], [90, 90, 90]) self.assertAlmostEqual(rec.a, 1 / cell.a, delta=1e-17)