def run(args): assert len(args) in [0,2], "n_sites, n_trials" if (len(args) == 0): n_sites, n_trials = 3, 2 out = null_out() else: n_sites, n_trials = [int(arg) for arg in args] out = sys.stdout # show_times_at_exit() class type_info(object): def __init__(O, type, use_analytical_gradients): O.type = type O.use_analytical_gradients = use_analytical_gradients def __str__(O): return "%s(use_analytical_gradients=%s)" % ( O.type.__name__, str(O.use_analytical_gradients)) spherical_types = [ type_info(euler_params, False), type_info(euler_params, True), type_info(euler_angles_xyz, False), type_info(euler_angles_xyz, True), type_info(euler_angles_zxz, False), type_info(euler_angles_zxz, True), type_info(euler_angles_yxyz, False), type_info(euler_angles_xyzy, False), type_info(inf_euler_params, False), type_info(inf_axis_angle, False)] nfun_accu = {} n_failed = {} for ti in spherical_types: nfun_accu[str(ti)] = flex.size_t() n_failed[str(ti)] = 0 mersenne_twister = flex.mersenne_twister(seed=0) for i_trial in xrange(n_trials): sites = [matrix.col(s) for s in flex.vec3_double( mersenne_twister.random_double(size=n_sites*3)*2-1)] c = center_of_mass_from_sites(sites) r = matrix.sqr(mersenne_twister.random_double_r3_rotation_matrix()) wells = [r*(s-c)+c for s in sites] for ti in spherical_types: r = refinery(spherical_type_info=ti, sites=sites, wells=wells, out=out) nfun_accu[str(ti)].append(r.nfun) if (r.failed): n_failed[str(ti)] += 1 nfun_sums = [] annotations = [] for ti in spherical_types: print >> out, ti nfuns = nfun_accu[str(ti)] stats = nfuns.as_double().min_max_mean() stats.show(out=out, prefix=" ") nfun_sums.append((str(ti), flex.sum(nfuns))) if (n_failed[str(ti)] == 0): annotations.append(None) else: annotations.append("failed: %d" % n_failed[str(ti)]) print >> out show_sorted_by_counts( label_count_pairs=nfun_sums, reverse=False, out=out, annotations=annotations) print >> out print "OK"
def __init__(O, sites): O.pivot = center_of_mass_from_sites(sites=sites) O.normal = None O.T0b = matrix.rt(((1,0,0,0,1,0,0,0,1), -O.pivot)) O.Tb0 = matrix.rt(((1,0,0,0,1,0,0,0,1), O.pivot))
def run(args): assert len(args) in [0, 2], "n_sites, n_trials" if (len(args) == 0): n_sites, n_trials = 3, 2 out = null_out() else: n_sites, n_trials = [int(arg) for arg in args] out = sys.stdout # show_times_at_exit() class type_info(object): def __init__(O, type, use_analytical_gradients): O.type = type O.use_analytical_gradients = use_analytical_gradients def __str__(O): return "%s(use_analytical_gradients=%s)" % ( O.type.__name__, str(O.use_analytical_gradients)) spherical_types = [ type_info(euler_params, False), type_info(euler_params, True), type_info(euler_angles_xyz, False), type_info(euler_angles_xyz, True), type_info(euler_angles_zxz, False), type_info(euler_angles_zxz, True), type_info(euler_angles_yxyz, False), type_info(euler_angles_xyzy, False), type_info(inf_euler_params, False), type_info(inf_axis_angle, False) ] nfun_accu = {} n_failed = {} for ti in spherical_types: nfun_accu[str(ti)] = flex.size_t() n_failed[str(ti)] = 0 mersenne_twister = flex.mersenne_twister(seed=0) for i_trial in xrange(n_trials): sites = [ matrix.col(s) for s in flex.vec3_double( mersenne_twister.random_double(size=n_sites * 3) * 2 - 1) ] c = center_of_mass_from_sites(sites) r = matrix.sqr(mersenne_twister.random_double_r3_rotation_matrix()) wells = [r * (s - c) + c for s in sites] for ti in spherical_types: r = refinery(spherical_type_info=ti, sites=sites, wells=wells, out=out) nfun_accu[str(ti)].append(r.nfun) if (r.failed): n_failed[str(ti)] += 1 nfun_sums = [] annotations = [] for ti in spherical_types: print >> out, ti nfuns = nfun_accu[str(ti)] stats = nfuns.as_double().min_max_mean() stats.show(out=out, prefix=" ") nfun_sums.append((str(ti), flex.sum(nfuns))) if (n_failed[str(ti)] == 0): annotations.append(None) else: annotations.append("failed: %d" % n_failed[str(ti)]) print >> out show_sorted_by_counts(label_count_pairs=nfun_sums, reverse=False, out=out, annotations=annotations) print >> out print "OK"
def __init__(O, sites): O.pivot = center_of_mass_from_sites(sites=sites) O.normal = None O.T0b = matrix.rt(((1, 0, 0, 0, 1, 0, 0, 0, 1), -O.pivot)) O.Tb0 = matrix.rt(((1, 0, 0, 0, 1, 0, 0, 0, 1), O.pivot))