def test_beam_object_comparison(): direction = matrix.col((0.013142, 0.002200, 1.450476)) unit_direction = direction.normalize() wavelength = 0.689400 s0 = -unit_direction * 1.0 / wavelength # Equal beams with scan-points set b1 = Beam(s0) b1.set_s0_at_scan_points([s0] * 5) b2 = Beam(s0) b2.set_s0_at_scan_points([s0] * 5) assert b1 == b2 assert b1.is_similar_to(b2) # Different direction b3 = Beam(-s0) b3.set_s0_at_scan_points([-s0] * 5) assert b1 != b3 assert not b1.is_similar_to(b3) # Different wavelength b4 = Beam(s0 * 1.5) b4.set_s0_at_scan_points([s0 * 1.5] * 5) assert b1 != b4 assert not b1.is_similar_to(b4)
def test_beam_with_scan_points(): b1 = Beam((1, 0, 0), 2, 0.1, 0.1) s0_static = matrix.col(b1.get_s0()) b1.set_s0_at_scan_points([s0_static] * 5) d = b1.to_dict() b2 = BeamFactory.from_dict(d) for s0comp in d["s0_at_scan_points"]: assert matrix.col(s0comp) == s0_static for s0comp in b2.get_s0_at_scan_points(): assert matrix.col(s0comp) == s0_static assert b1 == b2
def test_beam_with_scan_points(): from dxtbx.model import Beam, BeamFactory b1 = Beam((1, 0, 0), 2, 0.1, 0.1) from scitbx import matrix s0_static = matrix.col(b1.get_s0()) b1.set_s0_at_scan_points([s0_static] * 5) d = b1.to_dict() b2 = BeamFactory.from_dict(d) for s0comp in d['s0_at_scan_points']: assert matrix.col(s0comp) == s0_static for s0comp in b2.get_s0_at_scan_points(): assert matrix.col(s0comp) == s0_static assert b1 == b2
def tst_scan_varying(): from scitbx import matrix direction = matrix.col((0.013142, 0.002200, 1.450476)) unit_direction = direction.normalize() wavelength = 0.689400 s0 = -unit_direction * 1.0 / wavelength # Create the beam b = Beam(s0) assert b.get_num_scan_points() == 0 assert b.get_s0_at_scan_points().size() == 0 try: b.get_s0_at_scan_point(0) # should raise RuntimeError except RuntimeError: pass # set varying beam num_scan_points = 11 s0_static = matrix.col(b.get_s0()) s0_as_scan_points = [s0_static] axis = matrix.col.random(3, -1., 1.).normalize() for i in range(num_scan_points - 1): s0_as_scan_points.append(s0_as_scan_points[-1].rotate_around_origin( axis, angle=0.01, deg=True)) b.set_s0_at_scan_points(s0_as_scan_points) assert b.get_num_scan_points() == 11 assert b.get_s0_at_scan_points().size() == 11 for t in range(num_scan_points): s0_t = matrix.col(b.get_s0_at_scan_point(t)) assert s0_t == s0_as_scan_points[t] # also test setting as tuple b.set_s0_at_scan_points(tuple(s0_as_scan_points)) assert b.get_num_scan_points() == 11 assert b.get_s0_at_scan_points().size() == 11 # test resetting b.reset_scan_points() assert b.get_num_scan_points() == 0 assert b.get_s0_at_scan_points().size() == 0 print 'OK'