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]
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)
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("&")
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 "&"