コード例 #1
0
def exercise(xray_structure, anomalous_flag, max_n_indices, out):
    xray_structure.show_summary(f=out).show_scatterers(f=out)
    miller_set = miller.build_set(
        crystal_symmetry=xray_structure,
        anomalous_flag=anomalous_flag,
        d_min=max(1,
                  min(xray_structure.unit_cell().parameters()[:3]) / 2.5))
    n_indices = miller_set.indices().size()
    if (n_indices > max_n_indices):
        miller_set = miller_set.select(
            flex.random_size_t(size=max_n_indices) % n_indices)
    sf = structure_factors(xray_structure=xray_structure,
                           miller_set=miller_set)
    f_calc = miller_set.structure_factors_from_scatterers(
        xray_structure=xray_structure, algorithm="direct",
        cos_sin_table=False).f_calc()
    f_calc.show_summary(f=out)
    assert approx_equal(sf.fs(), f_calc.data())
    f_obs = miller_set.array(data=flex.abs(sf.fs()))
    noise_fin = compare_analytical_and_finite(f_obs=f_obs,
                                              xray_structure=xray_structure,
                                              gradients_should_be_zero=True,
                                              eps=1.e-5,
                                              out=out)
    compare_analytical_and_finite(f_obs=f_obs.customized_copy(
        data=f_obs.data() * (flex.random_double(size=f_obs.size()) + 0.5)),
                                  xray_structure=xray_structure,
                                  gradients_should_be_zero=False,
                                  eps=max(1.e-5, noise_fin),
                                  out=out)
コード例 #2
0
def exercise(
      space_group_info,
      use_u_aniso,
      anomalous_flag,
      max_n_indices=5,
      verbose=0):
  if (not verbose):
    out = StringIO()
  else:
    out = sys.stdout
  for n_scatterers in xrange(3,3+1):
    for i_trial in xrange(1):
      xray_structure = random_structure.xray_structure(
        space_group_info=space_group_info,
        elements=["const"]*n_scatterers,
        volume_per_atom=100,
        general_positions_only=True,
        random_f_prime_d_min=1,
        random_f_double_prime=anomalous_flag,
        use_u_aniso = use_u_aniso,
        use_u_iso = (not use_u_aniso),
        random_u_iso=True,
        random_u_iso_scale=0.3,
        random_occupancy=True)
      xray_structure.show_summary(f=out).show_scatterers(f=out)
      miller_set = miller.build_set(
        crystal_symmetry=xray_structure,
        anomalous_flag=anomalous_flag,
        d_min=max(1, min(xray_structure.unit_cell().parameters()[:3])/2.5))
      n_indices = miller_set.indices().size()
      if (n_indices > max_n_indices):
        miller_set = miller_set.select(
          flex.random_size_t(size=max_n_indices) % n_indices)
      sf = structure_factors(
        xray_structure=xray_structure,
        miller_set=miller_set)
      f_calc = miller_set.structure_factors_from_scatterers(
        xray_structure=xray_structure,
        algorithm="direct",
        cos_sin_table=False).f_calc()
      f_calc.show_summary(f=out)
      assert approx_equal(sf.fs(), f_calc.data())
      f_obs = miller_set.array(data=flex.abs(sf.fs()))
      compare_analytical_and_finite(
        f_obs=f_obs,
        xray_structure=xray_structure,
        out=out)
      compare_analytical_and_finite(
        f_obs=f_obs.customized_copy(
          data=f_obs.data()*(flex.random_double(size=f_obs.size())+0.5)),
        xray_structure=xray_structure,
        out=out)
コード例 #3
0
def exercise(space_group_info,
             use_u_aniso,
             anomalous_flag,
             max_n_indices=5,
             verbose=0):
    if (not verbose):
        out = StringIO()
    else:
        out = sys.stdout
    for n_scatterers in xrange(3, 3 + 1):
        for i_trial in xrange(1):
            xray_structure = random_structure.xray_structure(
                space_group_info=space_group_info,
                elements=["const"] * n_scatterers,
                volume_per_atom=100,
                general_positions_only=True,
                random_f_prime_d_min=1,
                random_f_double_prime=anomalous_flag,
                use_u_aniso=use_u_aniso,
                use_u_iso=(not use_u_aniso),
                random_u_iso=True,
                random_u_iso_scale=0.3,
                random_occupancy=True)
            xray_structure.show_summary(f=out).show_scatterers(f=out)
            miller_set = miller.build_set(
                crystal_symmetry=xray_structure,
                anomalous_flag=anomalous_flag,
                d_min=max(
                    1,
                    min(xray_structure.unit_cell().parameters()[:3]) / 2.5))
            n_indices = miller_set.indices().size()
            if (n_indices > max_n_indices):
                miller_set = miller_set.select(
                    flex.random_size_t(size=max_n_indices) % n_indices)
            sf = structure_factors(xray_structure=xray_structure,
                                   miller_set=miller_set)
            f_calc = miller_set.structure_factors_from_scatterers(
                xray_structure=xray_structure,
                algorithm="direct",
                cos_sin_table=False).f_calc()
            f_calc.show_summary(f=out)
            assert approx_equal(sf.fs(), f_calc.data())
            f_obs = miller_set.array(data=flex.abs(sf.fs()))
            compare_analytical_and_finite(f_obs=f_obs,
                                          xray_structure=xray_structure,
                                          out=out)
            compare_analytical_and_finite(f_obs=f_obs.customized_copy(
                data=f_obs.data() *
                (flex.random_double(size=f_obs.size()) + 0.5)),
                                          xray_structure=xray_structure,
                                          out=out)
コード例 #4
0
def exercise(
      xray_structure,
      anomalous_flag,
      max_n_indices,
      out):
  xray_structure.show_summary(f=out).show_scatterers(f=out)
  miller_set = miller.build_set(
    crystal_symmetry=xray_structure,
    anomalous_flag=anomalous_flag,
    d_min=max(1, min(xray_structure.unit_cell().parameters()[:3])/2.5))
  n_indices = miller_set.indices().size()
  if (n_indices > max_n_indices):
    miller_set = miller_set.select(
      flex.random_size_t(size=max_n_indices) % n_indices)
  sf = structure_factors(
    xray_structure=xray_structure,
    miller_set=miller_set)
  f_calc = miller_set.structure_factors_from_scatterers(
    xray_structure=xray_structure,
    algorithm="direct",
    cos_sin_table=False).f_calc()
  f_calc.show_summary(f=out)
  assert approx_equal(sf.fs(), f_calc.data())
  f_obs = miller_set.array(data=flex.abs(sf.fs()))
  noise_fin = compare_analytical_and_finite(
    f_obs=f_obs,
    xray_structure=xray_structure,
    gradients_should_be_zero=True,
    eps=1.e-5,
    out=out)
  compare_analytical_and_finite(
    f_obs=f_obs.customized_copy(
      data=f_obs.data()*(flex.random_double(size=f_obs.size())+0.5)),
    xray_structure=xray_structure,
    gradients_should_be_zero=False,
    eps=max(1.e-5, noise_fin),
    out=out)
コード例 #5
0
def random_elements(size, choices=["O", "Mg", "Si", "Ca"]):
    return flex.select(sequence=choices,
                       permutation=flex.random_size_t(size=size) %
                       len(choices))
コード例 #6
0
def random_elements(size, choices=["O", "Mg", "Si", "Ca"]):
  return flex.select(
    sequence=choices,
    permutation=flex.random_size_t(size=size) % len(choices))