Beispiel #1
0
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]
Beispiel #3
0
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
Beispiel #4
0
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