Example #1
0
def exercise_n_gaussian():
    assert xray_scattering.n_gaussian_table_size() == 213
    assert xray_scattering.n_gaussian_table_index("H") == 0
    assert xray_scattering.n_gaussian_table_index("Pu6+") == 212
    for n_terms in [6, 5, 4, 3, 2, 1]:
        e = xray_scattering.n_gaussian_table_entry(0, n_terms)
        assert e.label() == "H"
        g = e.gaussian()
        assert g.n_terms() == n_terms
        assert approx_equal(g.at_x(0), 1, eps=0.01 + 1.e-6)
        assert e.max_stol() > 0
        assert e.d_min() > 0
        assert e.max_relative_error() > 0
    for i_entry in range(xray_scattering.n_gaussian_table_size()):
        for n_terms in [6, 5, 4, 3, 2, 1]:
            e = xray_scattering.n_gaussian_table_entry(i_entry, n_terms)
            assert e.gaussian().n_terms() == n_terms
            f = xray_scattering.n_gaussian_table_entry(e.label(), n_terms)
            assert f.label() == e.label()
            assert f.gaussian().n_terms() == n_terms
        for d_min in [0, 10]:
            for max_relative_error in [0, 0.5]:
                e = xray_scattering.n_gaussian_table_entry(
                    i_entry, d_min, max_relative_error)
                f = xray_scattering.n_gaussian_table_entry(
                    e.label(), d_min, max_relative_error)
                assert f.label() == e.label()
                if (d_min == 0):
                    n_terms = 6
                else:
                    n_terms = 1
                assert e.gaussian().n_terms() == n_terms
                assert f.gaussian().n_terms() == n_terms
    label = "Be"
    be_max_stols = []
    be_max_relative_errors = []
    for n_terms in [6, 5, 4, 3, 2, 1]:
        e = xray_scattering.n_gaussian_table_entry(label, n_terms)
        be_max_stols.append(e.max_stol())
        be_max_relative_errors.append(e.max_relative_error())
    for n_terms, stol, max_relative_error in zip([6, 5, 4, 3, 2, 1],
                                                 be_max_stols,
                                                 be_max_relative_errors):
        e = xray_scattering.n_gaussian_table_entry("Be",
                                                   1 / (2 * stol) + 1.e-6,
                                                   max_relative_error + 1.e-6)
        assert e.gaussian().n_terms() == n_terms
        assert approx_equal(e.max_stol(), stol)
        if (n_terms < 6):
            e = xray_scattering.n_gaussian_table_entry(
                "Be", 1 / (2 * stol) - 1.e-6,
                max(be_max_relative_errors) + 1.e-6)
            assert e.gaussian().n_terms() == min(n_terms + 1, 6)
    assert be_max_relative_errors[1] > be_max_relative_errors[2]
def ensure_common_symbols():
  lbl_it = []
  for e in xray_scattering.it1992_iterator(): lbl_it.append(e.label())
  lbl_it.sort()
  lbl_wk = []
  for e in xray_scattering.wk1995_iterator(): lbl_wk.append(e.label())
  lbl_wk.sort()
  assert lbl_wk == lbl_it
  lbl_ng = []
  for i_entry in xrange(xray_scattering.n_gaussian_table_size()):
    lbl_ng.append(xray_scattering.n_gaussian_table_entry(i_entry, 6).label())
  lbl_ng.sort()
  assert lbl_ng == lbl_it
  #
  for label in xray_scattering.standard_labels_list():
    it = xray_scattering.it1992(label, True).fetch()
    wk = xray_scattering.wk1995(label, True).fetch()
    ng = xray_scattering.n_gaussian_table_entry(label, 0, 0).gaussian()
    assert approx_equal(wk.at_stol(0)/it.at_stol(0), 1, 5.e-3)
def exercise_n_gaussian():
  assert xray_scattering.n_gaussian_table_size() == 213
  assert xray_scattering.n_gaussian_table_index("H") == 0
  assert xray_scattering.n_gaussian_table_index("Pu6+") == 212
  for n_terms in [6,5,4,3,2,1]:
    e = xray_scattering.n_gaussian_table_entry(0, n_terms)
    assert e.label() == "H"
    g = e.gaussian()
    assert g.n_terms() == n_terms
    assert approx_equal(g.at_x(0), 1, eps=0.01+1.e-6)
    assert e.max_stol() > 0
    assert e.d_min() > 0
    assert e.max_relative_error() > 0
  for i_entry in xrange(xray_scattering.n_gaussian_table_size()):
    for n_terms in [6,5,4,3,2,1]:
      e = xray_scattering.n_gaussian_table_entry(i_entry, n_terms)
      assert e.gaussian().n_terms() == n_terms
      f = xray_scattering.n_gaussian_table_entry(e.label(), n_terms)
      assert f.label() == e.label()
      assert f.gaussian().n_terms() == n_terms
    for d_min in [0,10]:
      for max_relative_error in [0,0.5]:
        e = xray_scattering.n_gaussian_table_entry(
          i_entry, d_min, max_relative_error)
        f = xray_scattering.n_gaussian_table_entry(
          e.label(), d_min, max_relative_error)
        assert f.label() == e.label()
        if (d_min == 0):
          n_terms = 6
        else:
          n_terms = 1
        assert e.gaussian().n_terms() == n_terms
        assert f.gaussian().n_terms() == n_terms
  label = "Be"
  be_max_stols = []
  be_max_relative_errors = []
  for n_terms in [6,5,4,3,2,1]:
    e = xray_scattering.n_gaussian_table_entry(label, n_terms)
    be_max_stols.append(e.max_stol())
    be_max_relative_errors.append(e.max_relative_error())
  for n_terms,stol,max_relative_error in zip([6,5,4,3,2,1],
                                             be_max_stols,
                                             be_max_relative_errors):
    e = xray_scattering.n_gaussian_table_entry(
      "Be", 1/(2*stol)+1.e-6, max_relative_error+1.e-6)
    assert e.gaussian().n_terms() == n_terms
    assert approx_equal(e.max_stol(), stol)
    if (n_terms < 6):
      e = xray_scattering.n_gaussian_table_entry(
        "Be", 1/(2*stol)-1.e-6, max(be_max_relative_errors)+1.e-6)
      assert e.gaussian().n_terms() == min(n_terms+1, 6)
  assert be_max_relative_errors[1] > be_max_relative_errors[2]
Example #4
0
def ensure_common_symbols():
    lbl_it = []
    for e in xray_scattering.it1992_iterator():
        lbl_it.append(e.label())
    lbl_it.sort()
    lbl_wk = []
    for e in xray_scattering.wk1995_iterator():
        lbl_wk.append(e.label())
    lbl_wk.sort()
    assert lbl_wk == lbl_it
    lbl_ng = []
    for i_entry in range(xray_scattering.n_gaussian_table_size()):
        lbl_ng.append(
            xray_scattering.n_gaussian_table_entry(i_entry, 6).label())
    lbl_ng.sort()
    assert lbl_ng == lbl_it
    #
    for label in xray_scattering.standard_labels_list():
        it = xray_scattering.it1992(label, True).fetch()
        wk = xray_scattering.wk1995(label, True).fetch()
        ng = xray_scattering.n_gaussian_table_entry(label, 0, 0).gaussian()
        assert approx_equal(wk.at_stol(0) / it.at_stol(0), 1, 5.e-3)
Example #5
0
def run(args):
    assert len(args) == 0
    sds_it = xray_scattering.it1992("H").fetch()
    sds_wk = xray_scattering.wk1995("H").fetch()
    sds_ng = xray_scattering.n_gaussian_table_entry("H", 6).gaussian()
    iso_it = xray_scattering.it1992("Hiso").fetch()
    iso_wk = xray_scattering.wk1995("Hiso").fetch()
    iso_ng = xray_scattering.n_gaussian_table_entry("Hiso", 6).gaussian()
    print("@with g0")
    print('@ s0 legend "SDS ITC Tab 6.1.1.2"')
    for i, lbl in enumerate(
        ["SDS IT", "SDS WK", "SDS NG", "ISO IT", "ISO WK", "ISO NG"]):
        print('@ s%d legend "%s"' % (i + 1, lbl))
    print("@ s0 symbol 1")
    print("@ s0 line linestyle 0")
    for x, y in itc_tab_6112:
        print(x, y)
    print("&")
    n_samples = 1000
    for g in [sds_it, sds_wk, sds_ng, iso_it, iso_wk, iso_ng]:
        for i_stol in range(n_samples + 1):
            stol = 6 * i_stol / n_samples
            print(stol, g.at_stol(stol))
        print("&")
Example #6
0
def run(args):
  assert len(args) == 0
  sds_it = xray_scattering.it1992("H").fetch()
  sds_wk = xray_scattering.wk1995("H").fetch()
  sds_ng = xray_scattering.n_gaussian_table_entry("H", 6).gaussian()
  iso_it = xray_scattering.it1992("Hiso").fetch()
  iso_wk = xray_scattering.wk1995("Hiso").fetch()
  iso_ng = xray_scattering.n_gaussian_table_entry("Hiso", 6).gaussian()
  print "@with g0"
  print '@ s0 legend "SDS ITC Tab 6.1.1.2"'
  for i,lbl in enumerate(["SDS IT", "SDS WK", "SDS NG",
                          "ISO IT", "ISO WK", "ISO NG"]):
    print '@ s%d legend "%s"' % (i+1, lbl)
  print "@ s0 symbol 1"
  print "@ s0 line linestyle 0"
  for x,y in itc_tab_6112:
    print x, y
  print "&"
  n_samples = 1000
  for g in [sds_it, sds_wk, sds_ng, iso_it, iso_wk, iso_ng]:
    for i_stol in xrange(n_samples+1):
      stol = 6 * i_stol / n_samples
      print stol, g.at_stol(stol)
    print "&"