def rmsd_start_final_plots_annealing(pdb_file, random_displacements_parameterization, tst_tardy_pdb_params, parameter_trial_table, cp_n_trials, rmsds, write_separate_pages): ttd = dict(parameter_trial_table) plot_data = {} for h in ttd["structure_factors_high_resolution"]: plot_data[h] = {} for e in ttd["emulate_cartesian"]: plot_data[h][e] = {} for d in ttd["real_space_gradients_delta_resolution_factor"]: plot_data[h][e][d] = {} for w in ttd["real_space_target_weight"]: plot_data[h][e][d][w] = {} for t in ttd["start_temperature_kelvin"]: plot_data[h][e][d][w][t] = {} for c in ttd["number_of_cooling_steps"]: plot_data[h][e][d][w][t][c] = group_args( rmsd_start=flex.double(), rmsd_final=flex.double()) # p = tst_tardy_pdb_params for cp_i_trial in xrange(cp_n_trials): tst_tardy_comprehensive.set_parameters( params=p, trial_table=parameter_trial_table, cp_i_trial=cp_i_trial) plot = plot_data[p.structure_factors_high_resolution][ p.emulate_cartesian][ p.real_space_gradients_delta_resolution_factor][ p.real_space_target_weight][p.start_temperature_kelvin][ p.number_of_cooling_steps] for rmsd in rmsds[cp_i_trial]: plot.rmsd_start.append(rmsd[0]) plot.rmsd_final.append(rmsd[-1]) # extra_type = None if (pdb_file == "1yjp_box.pdb"): if (random_displacements_parameterization == "constrained"): extra_type = 0 elif (pdb_file == "1yjp_no_water.pdb"): if (random_displacements_parameterization == "cartesian"): extra_type = 1 if (extra_type is not None): extra_page = plot_grid(grid=(4, 3), top_labels=[], more_narrow_shift=30) else: extra_page = None mpp = multi_page_plots(file_name="plots_h_e.pdf") for i_h, h in enumerate(ttd["structure_factors_high_resolution"]): for e in ttd["emulate_cartesian"]: short_label = "h%.2f_e%d" % (h, int(e)) print short_label top_labels = [ compose_top_label(pdb_file, random_displacements_parameterization, e) ] top_labels.append("high resol: %.2f, algorithm: annealing" % h) page = plot_grid(grid=(4, 3), top_labels=top_labels) plot_xy_max = iceil(h * 1.3) for d in ttd["real_space_gradients_delta_resolution_factor"]: for i_w, w in enumerate(ttd["real_space_target_weight"]): for i_t, t in enumerate(ttd["start_temperature_kelvin"]): for i_c, c in enumerate( ttd["number_of_cooling_steps"]): pd = plot_data[h][e][d][w][t][c] rf = flex.mean(pd.rmsd_final) label = "w%04.0f_t%.0f_c%d: %.2f" % (w, t, c, rf) print " ", label page.process(grid_ij=(i_t * 2 + i_c, i_w), xy_max=plot_xy_max, label=label, data=zip(pd.rmsd_start, pd.rmsd_final)) if (extra_type == 0 and h == 3.75 and t == 5000 and c == 500): extra_label = "w_rs = %.0f" % w extra_page.process(grid_ij=(i_w + 1, int(e)), xy_max=plot_xy_max, label=extra_label, data=zip( pd.rmsd_start, pd.rmsd_final), label_font_size=14) elif (extra_type == 1 and w == 100 and (h == 3.75 or h == 5.00) and c == 500): extra_label = u"resol. = %.2f \u00C5" % h extra_page.process(grid_ij=(i_h, int(e)), xy_max=plot_xy_max, label=extra_label, data=zip( pd.rmsd_start, pd.rmsd_final), label_font_size=14) if (write_separate_pages): page.write_to_file(file_name="plot_%s.pdf" % short_label) mpp.add_page(page=page) mpp.write_to_file() if (extra_page is not None): from reportlab.graphics.shapes import String if (extra_type == 0): ty = 540 else: ty = 372 extra_page.top_group.add( String(120, ty, "Torsion-Angle SA", fontSize=16, textAnchor="middle")) extra_page.top_group.add( String(280 + 2 / 3, ty, "Cartesian SA", fontSize=16, textAnchor="middle")) extra_page.write_to_file(file_name="plot_extra.pdf") # mms = min_mean_stats(algorithm="annealing", random_displacements_parameterization= random_displacements_parameterization, pdb_file=pdb_file) assert ttd["emulate_cartesian"] == (False, True) assert len(ttd["real_space_gradients_delta_resolution_factor"]) == 1 for h in ttd["structure_factors_high_resolution"]: for d in ttd["real_space_gradients_delta_resolution_factor"]: for w in ttd["real_space_target_weight"]: for t in ttd["start_temperature_kelvin"]: for c in ttd["number_of_cooling_steps"]: mms.collect(rmsd_t_c=[ plot_data[h][e][d][w][t][c].rmsd_final for e in (False, True) ], param_values=(h, w, t, c)) mms.finalize().show().pickle()
def rmsd_start_final_plots_annealing( pdb_file, random_displacements_parameterization, tst_tardy_pdb_params, parameter_trial_table, cp_n_trials, rmsds, write_separate_pages): ttd = dict(parameter_trial_table) plot_data = {} for h in ttd["structure_factors_high_resolution"]: plot_data[h] = {} for e in ttd["emulate_cartesian"]: plot_data[h][e] = {} for d in ttd["real_space_gradients_delta_resolution_factor"]: plot_data[h][e][d] = {} for w in ttd["real_space_target_weight"]: plot_data[h][e][d][w] = {} for t in ttd["start_temperature_kelvin"]: plot_data[h][e][d][w][t] = {} for c in ttd["number_of_cooling_steps"]: plot_data[h][e][d][w][t][c] = group_args( rmsd_start=flex.double(), rmsd_final=flex.double()) # p = tst_tardy_pdb_params for cp_i_trial in xrange(cp_n_trials): tst_tardy_comprehensive.set_parameters( params=p, trial_table=parameter_trial_table, cp_i_trial=cp_i_trial) plot = plot_data[ p.structure_factors_high_resolution][ p.emulate_cartesian][ p.real_space_gradients_delta_resolution_factor][ p.real_space_target_weight][ p.start_temperature_kelvin][ p.number_of_cooling_steps] for rmsd in rmsds[cp_i_trial]: plot.rmsd_start.append(rmsd[0]) plot.rmsd_final.append(rmsd[-1]) # extra_type = None if (pdb_file == "1yjp_box.pdb"): if (random_displacements_parameterization == "constrained"): extra_type = 0 elif (pdb_file == "1yjp_no_water.pdb"): if (random_displacements_parameterization == "cartesian"): extra_type = 1 if (extra_type is not None): extra_page = plot_grid( grid=(4,3), top_labels=[], more_narrow_shift=30) else: extra_page = None mpp = multi_page_plots(file_name="plots_h_e.pdf") for i_h,h in enumerate(ttd["structure_factors_high_resolution"]): for e in ttd["emulate_cartesian"]: short_label = "h%.2f_e%d" % (h, int(e)) print short_label top_labels = [compose_top_label( pdb_file, random_displacements_parameterization, e)] top_labels.append("high resol: %.2f, algorithm: annealing" % h) page = plot_grid(grid=(4,3), top_labels=top_labels) plot_xy_max = iceil(h * 1.3) for d in ttd["real_space_gradients_delta_resolution_factor"]: for i_w,w in enumerate(ttd["real_space_target_weight"]): for i_t,t in enumerate(ttd["start_temperature_kelvin"]): for i_c,c in enumerate(ttd["number_of_cooling_steps"]): pd = plot_data[h][e][d][w][t][c] rf = flex.mean(pd.rmsd_final) label = "w%04.0f_t%.0f_c%d: %.2f" % (w, t, c, rf) print " ", label page.process( grid_ij=(i_t*2+i_c, i_w), xy_max=plot_xy_max, label=label, data=zip(pd.rmsd_start, pd.rmsd_final)) if (extra_type == 0 and h == 3.75 and t == 5000 and c == 500): extra_label = "w_rs = %.0f" % w extra_page.process( grid_ij=(i_w+1, int(e)), xy_max=plot_xy_max, label=extra_label, data=zip(pd.rmsd_start, pd.rmsd_final), label_font_size=14) elif (extra_type == 1 and w == 100 and (h == 3.75 or h == 5.00) and c == 500): extra_label = u"resol. = %.2f \u00C5" % h extra_page.process( grid_ij=(i_h, int(e)), xy_max=plot_xy_max, label=extra_label, data=zip(pd.rmsd_start, pd.rmsd_final), label_font_size=14) if (write_separate_pages): page.write_to_file(file_name="plot_%s.pdf" % short_label) mpp.add_page(page=page) mpp.write_to_file() if (extra_page is not None): from reportlab.graphics.shapes import String if (extra_type == 0): ty = 540 else: ty = 372 extra_page.top_group.add(String( 120, ty, "Torsion-Angle SA", fontSize=16, textAnchor="middle")) extra_page.top_group.add(String( 280+2/3, ty, "Cartesian SA", fontSize=16, textAnchor="middle")) extra_page.write_to_file(file_name="plot_extra.pdf") # mms = min_mean_stats( algorithm="annealing", random_displacements_parameterization=random_displacements_parameterization, pdb_file=pdb_file) assert ttd["emulate_cartesian"] == (False, True) assert len(ttd["real_space_gradients_delta_resolution_factor"]) == 1 for h in ttd["structure_factors_high_resolution"]: for d in ttd["real_space_gradients_delta_resolution_factor"]: for w in ttd["real_space_target_weight"]: for t in ttd["start_temperature_kelvin"]: for c in ttd["number_of_cooling_steps"]: mms.collect( rmsd_t_c=[plot_data[h][e][d][w][t][c].rmsd_final for e in (False, True)], param_values=(h,w,t,c)) mms.finalize().show().pickle()
def rmsd_start_final_plots_minimization(pdb_file, random_displacements_parameterization, tst_tardy_pdb_params, parameter_trial_table, cp_n_trials, rmsds, rmsd_n_n, write_separate_pages): ttd = dict(parameter_trial_table) plot_data = {} for h in ttd["structure_factors_high_resolution"]: plot_data[h] = {} for e in ttd["emulate_cartesian"]: plot_data[h][e] = {} for d in ttd["real_space_gradients_delta_resolution_factor"]: plot_data[h][e][d] = {} for w in ttd["real_space_target_weight"]: plot_data[h][e][d][w] = group_args( rmsd_start=flex.double(), rmsd_final=flex.double(), rmsd_n=flex.double()) # p = tst_tardy_pdb_params for cp_i_trial in xrange(cp_n_trials): tst_tardy_comprehensive.set_parameters( params=p, trial_table=parameter_trial_table, cp_i_trial=cp_i_trial) plot = plot_data[p.structure_factors_high_resolution][ p.emulate_cartesian][ p.real_space_gradients_delta_resolution_factor][ p.real_space_target_weight] for rmsd in rmsds[cp_i_trial]: plot.rmsd_start.append(rmsd[0]) plot.rmsd_final.append(rmsd[-1]) plot.rmsd_n.append(rmsd[min(len(rmsd) - 1, rmsd_n_n)]) # mpp = multi_page_plots(file_name="plots_h_e.pdf") for e in ttd["emulate_cartesian"]: short_label = "e%d" % int(e) print short_label top_labels = [ compose_top_label(pdb_file, random_displacements_parameterization, e), "algorithm: minimization" ] page = plot_grid(grid=(4, 3), top_labels=top_labels) w_d_ranks_rn = {} w_d_ranks_rf = {} for d in ttd["real_space_gradients_delta_resolution_factor"]: for w in ttd["real_space_target_weight"]: w_d_ranks_rn[(w, d)] = [] w_d_ranks_rf[(w, d)] = [] for i_h, h in enumerate(ttd["structure_factors_high_resolution"]): plot_xy_max = iceil(h * 1.3) page_rn = [] page_rf = [] for d in ttd["real_space_gradients_delta_resolution_factor"]: for i_w, w in enumerate(ttd["real_space_target_weight"]): pd = plot_data[h][e][d][w] rn = flex.mean(pd.rmsd_n) rf = flex.mean(pd.rmsd_final) page_rn.append((rn, (w, d))) page_rf.append((rf, (w, d))) label = "h%.2f_w%04.0f: %d=%.2f, %.2f" % (h, w, rmsd_n_n, rn, rf) print " ", label page.process(grid_ij=(i_h, i_w), xy_max=plot_xy_max, label=label, data=zip(pd.rmsd_start, pd.rmsd_final)) def cmp_rx(a, b): result = cmp(a[0], b[0]) if (result == 0): result = cmp(a[1], b[1]) return result page_rn.sort(cmp_rx) page_rf.sort(cmp_rx) for i, (r, w_d) in enumerate(page_rn): w_d_ranks_rn[w_d].append(i) for i, (r, w_d) in enumerate(page_rf): w_d_ranks_rf[w_d].append(i) if (write_separate_pages): page.write_to_file(file_name="plot_%s.pdf" % short_label) mpp.add_page(page=page) w_d_ranks_rn = w_d_ranks_rn.items() w_d_ranks_rf = w_d_ranks_rf.items() def cmp_w_d_ranks(a, b): result = cmp(sum(a[1]), sum(b[1])) if (result == 0): result = cmp(sorted(a[1]), sorted(b[1])) if (result == 0): result = cmp(a[1], b[1]) if (result == 0): result = cmp(a[0], b[0]) return result w_d_ranks_rn.sort(cmp_w_d_ranks) w_d_ranks_rf.sort(cmp_w_d_ranks) print "emulate_cartesian = %s" % str(e) for prefix, w_d_ranks in [("rn:", w_d_ranks_rn), ("rf:", w_d_ranks_rf)]: for w_d, ranks in w_d_ranks: print prefix, "%4.0f %4.2f" % w_d, "%2d" % sum(ranks), \ "[" + ", ".join(["%2d" % r for r in ranks]) + "]" prefix = " " print mpp.write_to_file() # mms = min_mean_stats(algorithm="minimization", random_displacements_parameterization= random_displacements_parameterization, pdb_file=pdb_file) assert ttd["emulate_cartesian"] == (False, True) assert len(ttd["real_space_gradients_delta_resolution_factor"]) == 1 for h in ttd["structure_factors_high_resolution"]: for d in ttd["real_space_gradients_delta_resolution_factor"]: for w in ttd["real_space_target_weight"]: mms.collect(rmsd_t_c=[ plot_data[h][e][d][w].rmsd_final for e in (False, True) ], param_values=(h, w)) mms.finalize().show().pickle()
def rmsd_start_final_plots_minimization( pdb_file, random_displacements_parameterization, tst_tardy_pdb_params, parameter_trial_table, cp_n_trials, rmsds, rmsd_n_n, write_separate_pages): ttd = dict(parameter_trial_table) plot_data = {} for h in ttd["structure_factors_high_resolution"]: plot_data[h] = {} for e in ttd["emulate_cartesian"]: plot_data[h][e] = {} for d in ttd["real_space_gradients_delta_resolution_factor"]: plot_data[h][e][d] = {} for w in ttd["real_space_target_weight"]: plot_data[h][e][d][w] = group_args( rmsd_start=flex.double(), rmsd_final=flex.double(), rmsd_n=flex.double()) # p = tst_tardy_pdb_params for cp_i_trial in xrange(cp_n_trials): tst_tardy_comprehensive.set_parameters( params=p, trial_table=parameter_trial_table, cp_i_trial=cp_i_trial) plot = plot_data[ p.structure_factors_high_resolution][ p.emulate_cartesian][ p.real_space_gradients_delta_resolution_factor][ p.real_space_target_weight] for rmsd in rmsds[cp_i_trial]: plot.rmsd_start.append(rmsd[0]) plot.rmsd_final.append(rmsd[-1]) plot.rmsd_n.append(rmsd[min(len(rmsd)-1, rmsd_n_n)]) # mpp = multi_page_plots(file_name="plots_h_e.pdf") for e in ttd["emulate_cartesian"]: short_label = "e%d" % int(e) print short_label top_labels = [ compose_top_label( pdb_file, random_displacements_parameterization, e), "algorithm: minimization"] page = plot_grid(grid=(4,3), top_labels=top_labels) w_d_ranks_rn = {} w_d_ranks_rf = {} for d in ttd["real_space_gradients_delta_resolution_factor"]: for w in ttd["real_space_target_weight"]: w_d_ranks_rn[(w,d)] = [] w_d_ranks_rf[(w,d)] = [] for i_h,h in enumerate(ttd["structure_factors_high_resolution"]): plot_xy_max = iceil(h * 1.3) page_rn = [] page_rf = [] for d in ttd["real_space_gradients_delta_resolution_factor"]: for i_w,w in enumerate(ttd["real_space_target_weight"]): pd = plot_data[h][e][d][w] rn = flex.mean(pd.rmsd_n) rf = flex.mean(pd.rmsd_final) page_rn.append((rn, (w,d))) page_rf.append((rf, (w,d))) label = "h%.2f_w%04.0f: %d=%.2f, %.2f" % (h, w, rmsd_n_n, rn, rf) print " ", label page.process( grid_ij=(i_h,i_w), xy_max=plot_xy_max, label=label, data=zip(pd.rmsd_start, pd.rmsd_final)) def cmp_rx(a, b): result = cmp(a[0], b[0]) if (result == 0): result = cmp(a[1], b[1]) return result page_rn.sort(cmp_rx) page_rf.sort(cmp_rx) for i,(r,w_d) in enumerate(page_rn): w_d_ranks_rn[w_d].append(i) for i,(r,w_d) in enumerate(page_rf): w_d_ranks_rf[w_d].append(i) if (write_separate_pages): page.write_to_file(file_name="plot_%s.pdf" % short_label) mpp.add_page(page=page) w_d_ranks_rn = w_d_ranks_rn.items() w_d_ranks_rf = w_d_ranks_rf.items() def cmp_w_d_ranks(a, b): result = cmp(sum(a[1]), sum(b[1])) if (result == 0): result = cmp(sorted(a[1]), sorted(b[1])) if (result == 0): result = cmp(a[1], b[1]) if (result == 0): result = cmp(a[0], b[0]) return result w_d_ranks_rn.sort(cmp_w_d_ranks) w_d_ranks_rf.sort(cmp_w_d_ranks) print "emulate_cartesian = %s" % str(e) for prefix,w_d_ranks in [("rn:", w_d_ranks_rn), ("rf:", w_d_ranks_rf)]: for w_d,ranks in w_d_ranks: print prefix, "%4.0f %4.2f" % w_d, "%2d" % sum(ranks), \ "[" + ", ".join(["%2d" % r for r in ranks]) + "]" prefix = " " print mpp.write_to_file() # mms = min_mean_stats( algorithm="minimization", random_displacements_parameterization=random_displacements_parameterization, pdb_file=pdb_file) assert ttd["emulate_cartesian"] == (False, True) assert len(ttd["real_space_gradients_delta_resolution_factor"]) == 1 for h in ttd["structure_factors_high_resolution"]: for d in ttd["real_space_gradients_delta_resolution_factor"]: for w in ttd["real_space_target_weight"]: mms.collect( rmsd_t_c=[plot_data[h][e][d][w].rmsd_final for e in (False, True)], param_values=(h,w)) mms.finalize().show().pickle()