Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 14 additions & 13 deletions test/diffcalc/hkl/vlieg/test_geometry.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import random
import unittest
from math import pi
import pytest

try:
from numpy import matrix
Expand Down Expand Up @@ -120,7 +121,15 @@ def baseAnglesToLabVector(delta, gamma):
return GAMMA * DELTA * y_vector


def checkGammaOnArmToBase(alpha, deltaA, gammaA):
alpha_params = [angle * TORAD for angle in [-89.9, -45, -1, 0, 1, 45, 89.9]]
delta_params = [angle * TORAD for angle in [-179.9, -135, -91, -89.9, -89, -46, -45, -44, -1, 0,
1, 44, 45, 46, 89, 89.9, 91, 135, 179.9]]
gamma_params = [angle * TORAD for angle in [-89.9, -46, -45, -44, -1, 0, 1, 44, 45, 46, 89.9]]

@pytest.mark.parametrize("alpha", alpha_params)
@pytest.mark.parametrize("deltaA", delta_params)
@pytest.mark.parametrize("gammaA", gamma_params)
def testCheckGammaOnArmToBase(alpha, deltaA, gammaA):
deltaB, gammaB = gammaOnArmToBase(deltaA, gammaA, alpha)

labA = armAnglesToLabVector(alpha, deltaA, gammaA)
Expand Down Expand Up @@ -156,7 +165,10 @@ def checkBaseArmBaseReciprocity(alpha, delta_orig, gamma_orig):
raise AssertionError(s)


def checkArmBaseArmReciprocity(alpha, delta_orig, gamma_orig):
@pytest.mark.parametrize("alpha", alpha_params)
@pytest.mark.parametrize("delta_orig", delta_params)
@pytest.mark.parametrize("gamma_orig", gamma_params)
def testcheckArmBaseArmReciprocity(alpha, delta_orig, gamma_orig):
(deltaA, gammaA) = (delta_orig, gamma_orig)
(deltaB, gammaB) = gammaOnArmToBase(deltaA, gammaA, alpha)
(deltaA, gammaA) = gammaOnBaseToArm(deltaB, gammaB, alpha)
Expand All @@ -173,17 +185,6 @@ def checkArmBaseArmReciprocity(alpha, delta_orig, gamma_orig):
raise AssertionError(s)


def test_generator_for_cases():
for alpha in [-89.9, -45, -1, 0, 1, 45, 89.9]:
for gamma in [-89.9, -46, -45, -44, -1, 0, 1, 44, 45, 46, 89.9]:
for delta in [-179.9, -135, -91, -89.9, -89, -46, -45, -44, -1, 0,
1, 44, 45, 46, 89, 89.9, 91, 135, 179.9]:
yield (checkGammaOnArmToBase, alpha * TORAD, delta * TORAD,
gamma * TORAD)
yield (checkArmBaseArmReciprocity, alpha * TORAD,
delta * TORAD, gamma * TORAD)


class TestFiveCirclePlugin(object):

def setup_method(self):
Expand Down
148 changes: 78 additions & 70 deletions test/diffcalc/ub/test_calculation_vlieg.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
from math import cos, sin, pi

from mock import Mock
import pytest
from nose.tools import raises
from diffcalc import settings
try:
Expand Down Expand Up @@ -221,68 +222,74 @@ def check(self, testname, hklref1, hklref2, expectedUMatrix):
self.addref(hklref2)
matrixeq_(expectedUMatrix, self.ubcalc.U)

def test_with_squarely_mounted(self):
href = ((1, 0, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=0, phi=0))
lref = ((0, 0, 1),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=90, phi=0))
pairs = (("hl", href, lref, I),
("lh", lref, href, I))
for testname, ref1, ref2, u in pairs:
yield self.check, testname, ref1, ref2, u
squarely_mounted_href = ((1, 0, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=0, phi=0))

def test_with_x_mismount(self):
U = x_rotation(ROT)
href = ((1, 0, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=0, phi=0))
kref = ((0, 1, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30 - ROT + 90, chi=90,
squarely_mounted_lref = ((0, 0, 1),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=90, phi=0))

@pytest.mark.parametrize("testname, ref1, ref2, u", [("hl", squarely_mounted_href, squarely_mounted_lref, I),
("lh", squarely_mounted_lref, squarely_mounted_href, I)])
def test_with_squarely_mounted(self, testname, ref1, ref2, u):
self.check(testname, ref1, ref2, u)


U_x_mismount = x_rotation(ROT)
href_x_mismount = ((1, 0, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=0, phi=0))
kref_x_mismount = ((0, 1, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30 - ROT + 90, chi=90,
phi=0))
lref = ((0, 0, 1),
Pos(alpha=0, delta=60, gamma=0, omega=30 - ROT, chi=90, phi=0))
pairs = (("hk", href, kref, U),
("hl", href, lref, U),
("kh", kref, href, U),
("kl", kref, lref, U),
("lk", lref, kref, U),
("lh", lref, href, U))
for testname, ref1, ref2, u in pairs:
yield self.check, testname, ref1, ref2, u

def test_with_y_mismount(self):
U = y_rotation(ROT)
href = ((1, 0, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=0 - ROT, phi=0))
lref = ((0, 0, 1),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=90 - ROT, phi=0))
pairs = (("hl", href, lref, U),
("lh", lref, href, U))
for testname, ref1, ref2, u in pairs:
yield self.check, testname, ref1, ref2, u
lref_x_mismount = ((0, 0, 1),
Pos(alpha=0, delta=60, gamma=0, omega=30 - ROT, chi=90, phi=0))

def test_with_z_mismount(self):
U = z_rotation(ROT)
href = ((1, 0, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=0, phi=0 + ROT))
lref = ((0, 0, 1), # phi degenerate
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=90, phi=67))
pairs = (("hl", href, lref, U),
("lh", lref, href, U))
for testname, ref1, ref2, u in pairs:
yield self.check, testname, ref1, ref2, u
@pytest.mark.parametrize("testname, ref1, ref2, u", (("hk", href_x_mismount, kref_x_mismount, U_x_mismount),
("hl", href_x_mismount, lref_x_mismount, U_x_mismount),
("kh", kref_x_mismount, href_x_mismount, U_x_mismount),
("kl", kref_x_mismount, lref_x_mismount, U_x_mismount),
("lk", lref_x_mismount, kref_x_mismount, U_x_mismount),
("lh", lref_x_mismount, href_x_mismount, U_x_mismount)))
def test_with_x_mismount(self, testname, ref1, ref2, u):
self.check(testname, ref1, ref2, u)



U_y_mismount = y_rotation(ROT)
href_y_mismount = ((1, 0, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=0 - ROT, phi=0))
lref_y_mismounr = ((0, 0, 1),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=90 - ROT, phi=0))

@pytest.mark.parametrize("testname, ref1, ref2, u", (("hl", href_y_mismount, lref_y_mismounr, U_y_mismount),
("lh", lref_y_mismounr, href_y_mismount, U_y_mismount)))
def test_with_y_mismount(self, testname, ref1, ref2, u):
self.check(testname, ref1, ref2, u)

def test_with_zy_mismount(self):
U = z_rotation(ROT) * y_rotation(ROT)
href = ((1, 0, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=0 - ROT,
phi=0 + ROT))
lref = ((0, 0, 1),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=90 - ROT,
phi=ROT)) # chi degenerate
pairs = (("hl", href, lref, U),
("lh", lref, href, U))
for testname, ref1, ref2, u in pairs:
yield self.check, testname, ref1, ref2, u

U_z_mismount = z_rotation(ROT)
href_z_mismount = ((1, 0, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=0, phi=0 + ROT))
lref_z_mismount = ((0, 0, 1), # phi degenerate
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=90, phi=67))

@pytest.mark.parametrize("testname, ref1, ref2, u", (("hl", href_z_mismount, lref_z_mismount, U_z_mismount),
("lh", lref_z_mismount, href_z_mismount, U_z_mismount)))
def test_with_z_mismount(self,testname, ref1, ref2, u):
self.check(testname, ref1, ref2, u)


U_zy_mismount = z_rotation(ROT) * y_rotation(ROT)
href_zy_mismount = ((1, 0, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=0 - ROT,
phi=0 + ROT))
lref_zy_mismount = ((0, 0, 1),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=90 - ROT,
phi=ROT)) # chi degenerate

@pytest.mark.parametrize("testname, ref1, ref2, u", (("hl", href_zy_mismount, lref_zy_mismount, U_zy_mismount),
("lh", lref_zy_mismount, href_zy_mismount, U_zy_mismount)))
def test_with_zy_mismount(self, testname, ref1, ref2, u):
self.check(testname, ref1, ref2, u)


class TestUBCalcWithcubicOneRef(TestUBCalcWithCubic):
Expand All @@ -293,19 +300,20 @@ def check(self, testname, hklref, expectedUMatrix):
self.ubcalc.calculate_UB_from_primary_only()
matrixeq_(expectedUMatrix, self.ubcalc.U)

def test_with_squarely_mounted(self):
href = ((1, 0, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=0, phi=0))
href_b = ((1, 0, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30 + 90, chi=90,

href_sq = ((1, 0, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=0, phi=0))
href_b_sq = ((1, 0, 0),
Pos(alpha=0, delta=60, gamma=0, omega=30 + 90, chi=90,
phi=-90))
lref = ((0, 0, 1), # degenerate in phi
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=90, phi=67))
pairs = (("h", href, I),
("hb", href_b, I),
("l", lref, I))
for testname, ref, u in pairs:
yield self.check, testname, ref, u
lref_sq = ((0, 0, 1), # degenerate in phi
Pos(alpha=0, delta=60, gamma=0, omega=30, chi=90, phi=67))

@pytest.mark.parametrize("testname, ref, u",(("h", href_sq, I),
("hb", href_b_sq, I),
("l", lref_sq, I)))
def test_with_squarely_mounted(self, testname, ref, u):
self.check(testname, ref, u)

def test_with_x_mismount_h(self):
U = x_rotation(ROT)
Expand Down