def exercise_asu(): sg_type = sgtbx.space_group_type("P 41") asu = sgtbx.reciprocal_space_asu(sg_type) miller_indices = flex.miller_index(((1, 2, 3), (3, 5, 0))) for h in miller_indices: h_eq = miller.sym_equiv_indices(sg_type.group(), h) for i_eq in xrange(h_eq.multiplicity(False)): h_i = h_eq(i_eq) for anomalous_flag in (False, True): a = miller.asym_index(sg_type.group(), asu, h_i.h()) assert a.h() == h o = a.one_column(anomalous_flag) assert o.i_column() == 0 t = a.two_column(anomalous_flag) assert t.h() == h assert (o.h() != h) == (t.i_column() == 1) assert not anomalous_flag or (t.i_column() != 0) == h_i.friedel_flag() assert anomalous_flag or t.i_column() == 0 miller.map_to_asu(sg_type, False, miller_indices) data = flex.double((0, 0)) miller.map_to_asu(sg_type, False, miller_indices, data) miller.map_to_asu(sg_type, False, miller_indices, data, False) miller.map_to_asu(sg_type, False, miller_indices, data, True) data = flex.complex_double((0, 0)) miller.map_to_asu(sg_type, False, miller_indices, data) data = flex.hendrickson_lattman(((1, 2, 3, 4), (2, 3, 4, 5))) miller.map_to_asu(sg_type, False, miller_indices, data) for sg_symbol in ("P 41", "P 31 1 2"): exercise_map_to_asu(sg_symbol) # sg_type = sgtbx.space_group_type("P 2") miller_indices = flex.miller_index(((1, 2, 3), (-1, -2, -3))) assert not miller.is_unique_set_under_symmetry( space_group_type=sg_type, anomalous_flag=False, miller_indices=miller_indices) assert miller.is_unique_set_under_symmetry(space_group_type=sg_type, anomalous_flag=True, miller_indices=miller_indices) assert list( miller.unique_under_symmetry_selection( space_group_type=sg_type, anomalous_flag=False, miller_indices=miller_indices)) == [0] assert list( miller.unique_under_symmetry_selection( space_group_type=sg_type, anomalous_flag=True, miller_indices=miller_indices)) == [0, 1]
def exercise_asu(): sg_type = sgtbx.space_group_type("P 41") asu = sgtbx.reciprocal_space_asu(sg_type) miller_indices = flex.miller_index(((1,2,3), (3,5,0))) for h in miller_indices: h_eq = miller.sym_equiv_indices(sg_type.group(), h) for i_eq in xrange(h_eq.multiplicity(False)): h_i = h_eq(i_eq) for anomalous_flag in (False,True): a = miller.asym_index(sg_type.group(), asu, h_i.h()) assert a.h() == h o = a.one_column(anomalous_flag) assert o.i_column() == 0 t = a.two_column(anomalous_flag) assert t.h() == h assert (o.h() != h) == (t.i_column() == 1) assert not anomalous_flag or (t.i_column() != 0) == h_i.friedel_flag() assert anomalous_flag or t.i_column() == 0 miller.map_to_asu(sg_type, False, miller_indices) data = flex.double((0,0)) miller.map_to_asu(sg_type, False, miller_indices, data) miller.map_to_asu(sg_type, False, miller_indices, data, False) miller.map_to_asu(sg_type, False, miller_indices, data, True) data = flex.complex_double((0,0)) miller.map_to_asu(sg_type, False, miller_indices, data) data = flex.hendrickson_lattman(((1,2,3,4),(2,3,4,5))) miller.map_to_asu(sg_type, False, miller_indices, data) for sg_symbol in ("P 41", "P 31 1 2"): exercise_map_to_asu(sg_symbol) # sg_type = sgtbx.space_group_type("P 2") miller_indices = flex.miller_index(((1,2,3), (-1,-2,-3))) assert not miller.is_unique_set_under_symmetry( space_group_type=sg_type, anomalous_flag=False, miller_indices=miller_indices) assert miller.is_unique_set_under_symmetry( space_group_type=sg_type, anomalous_flag=True, miller_indices=miller_indices) assert list(miller.unique_under_symmetry_selection( space_group_type=sg_type, anomalous_flag=False, miller_indices=miller_indices)) == [0] assert list(miller.unique_under_symmetry_selection( space_group_type=sg_type, anomalous_flag=True, miller_indices=miller_indices)) == [0,1]
def verify(sg_fcalc, sg_hl, sg_cns, p1_cns): sg_phase_integrals = miller.array( miller_set=miller.set( crystal_symmetry=sg_fcalc, indices=sg_cns.miller_indices, anomalous_flag=sg_fcalc.anomalous_flag()), data=sg_cns.hl).phase_integrals() for h, cns_pi, miller_pi in zip(sg_cns.miller_indices, sg_cns.pi.data, sg_phase_integrals.data()): if (abs(cns_pi - miller_pi) > 1.e-2): print "Error:", h, cns_pi, miller_pi if (0): return raise AssertionError # p1_phase_integrals = miller.array( miller_set=miller.set( crystal_symmetry=sg_fcalc.cell_equivalent_p1(), indices=p1_cns.miller_indices, anomalous_flag=sg_fcalc.anomalous_flag()), data=p1_cns.hl).phase_integrals() for h, cns_pi, miller_pi in zip(p1_cns.miller_indices, p1_cns.pi.data, p1_phase_integrals.data()): if (abs(cns_pi - miller_pi) > 1.e-2): print "Error:", h, cns_pi, miller_pi if (0): return raise AssertionError # space_group = sg_fcalc.space_group() asu = sg_fcalc.space_group_info().reciprocal_space_asu() lookup_dict = miller.make_lookup_dict(sg_fcalc.indices()) for p1_i, h in enumerate(p1_cns.miller_indices): h_asu = miller.asym_index(space_group, asu, h) h_eq = h_asu.one_column(sg_fcalc.anomalous_flag()) fcalc_asu = h_eq.complex_eq(p1_cns.fcalc.data[p1_i]) hl_asu = h_eq.hendrickson_lattman_eq(p1_cns.hl[p1_i]) sg_i = lookup_dict[h_eq.h()] assert abs(sg_fcalc.data()[sg_i] - fcalc_asu) < 1.e-2 if (not approx_equal(sg_hl[sg_i], hl_asu, eps=1.e-2)): print "Error:", sg_fcalc.space_group_info() print sg_fcalc.indices()[sg_i] print "i:", sg_hl[sg_i] print "o:", hl_asu if (0): return raise AssertionError
def verify(sg_fcalc, sg_hl, sg_cns, p1_cns): sg_phase_integrals = miller.array(miller_set=miller.set( crystal_symmetry=sg_fcalc, indices=sg_cns.miller_indices, anomalous_flag=sg_fcalc.anomalous_flag()), data=sg_cns.hl).phase_integrals() for h, cns_pi, miller_pi in zip(sg_cns.miller_indices, sg_cns.pi.data, sg_phase_integrals.data()): if (abs(cns_pi - miller_pi) > 1.e-2): print("Error:", h, cns_pi, miller_pi) if (0): return raise AssertionError # p1_phase_integrals = miller.array(miller_set=miller.set( crystal_symmetry=sg_fcalc.cell_equivalent_p1(), indices=p1_cns.miller_indices, anomalous_flag=sg_fcalc.anomalous_flag()), data=p1_cns.hl).phase_integrals() for h, cns_pi, miller_pi in zip(p1_cns.miller_indices, p1_cns.pi.data, p1_phase_integrals.data()): if (abs(cns_pi - miller_pi) > 1.e-2): print("Error:", h, cns_pi, miller_pi) if (0): return raise AssertionError # space_group = sg_fcalc.space_group() asu = sg_fcalc.space_group_info().reciprocal_space_asu() lookup_dict = miller.make_lookup_dict(sg_fcalc.indices()) for p1_i, h in enumerate(p1_cns.miller_indices): h_asu = miller.asym_index(space_group, asu, h) h_eq = h_asu.one_column(sg_fcalc.anomalous_flag()) fcalc_asu = h_eq.complex_eq(p1_cns.fcalc.data[p1_i]) hl_asu = h_eq.hendrickson_lattman_eq(p1_cns.hl[p1_i]) sg_i = lookup_dict[h_eq.h()] assert abs(sg_fcalc.data()[sg_i] - fcalc_asu) < 1.e-2 if (not approx_equal(sg_hl[sg_i], hl_asu, eps=1.e-2)): print("Error:", sg_fcalc.space_group_info()) print(sg_fcalc.indices()[sg_i]) print("i:", sg_hl[sg_i]) print("o:", hl_asu) if (0): return raise AssertionError