diff --git a/modelling/do_plots.py b/modelling/do_plots.py index edf64f27d7341933ce202ad4bb4357543796156e..e3d47f7b637ad82a5c39784a42306c74832dd5d4 100644 --- a/modelling/do_plots.py +++ b/modelling/do_plots.py @@ -1,6 +1,7 @@ import matplotlib.pyplot as plt import json import numpy as np +import math promod_label = 'ProMod3' @@ -41,8 +42,6 @@ for key in promod_data: probity_diffs.append(probity_values_promod[-1] - probity_values_modeller[-1]) keys.append(key) -for a,b in zip(keys, lddt_diffs): - print(a,b) # plot both in the same plot xs = np.linspace(-7.0, 7.0, 300) n_lddt, bins_lddt, patches_lddt = plt.hist(lddt_diffs, 50, range=(-7.0,7.0), @@ -79,49 +78,62 @@ for key in promod_data: probity_ramachandran_outliers_modeller.append(modeller_data[key]['Ramachandran outliers']) keys.append(key) -#plt.clf() - -fig, axs = plt.subplots(2, 2) +plt.clf() + +def DoThingsWithAxes(ax, x_values, y_values, title, xlabel, ylabel): + + ax.plot(x_values, y_values, '.', color = (128.0/255,0.0,0.0)) + ax.plot([-1.0,1000.0], [-1.0,1000], color = 'k',linestyle='--') + ax.set_title(title, loc='left', y=1.08, x=-0.11, fontsize='x-large') + ax.set_xlabel(xlabel, fontsize='large') + ax.set_ylabel(ylabel, fontsize='large') + max_val = math.ceil(max([max(x_values), max(y_values)])) + ax.set_xlim([0, max_val]) + ax.set_ylim([0, max_val]) + ax.set_aspect('equal', 'box') + + tick_locations = list() + step_size = None + if max_val <= 5: + step_size = 1 + elif max_val <= 14: + step_size = 2 + elif max_val <= 30: + step_size = 5 + elif max_val <= 100: + step_size = 10 + else: + step_size = 50 + for i in range(0, int(max_val)+step_size, step_size): + tick_locations.append(i) + + ax.set_xticks(tick_locations) + ax.set_yticks(tick_locations) + +fig, axs = plt.subplots(2, 2, figsize=(7,7)) probity_overall_ax = axs[0, 0] probity_clash_ax = axs[0, 1] probity_rotamer_ax = axs[1, 0] probity_ramachandran_ax = axs[1, 1] -probity_overall_ax.plot(probity_values_promod, probity_values_modeller,'.', color = cred) -# plot zero line -probity_overall_ax.plot([0.0,5.0], [0.0,5.0], '.', color = 'k',linestyle='--') -probity_overall_ax.set_title('a) Overall Score', loc='left', y=1.05) -probity_overall_ax.set_xlabel(promod_label) -probity_overall_ax.set_ylabel(modeller_label) - -probity_clash_ax.plot(probity_clash_promod, probity_clash_modeller,'.', color = cred) -# plot zero line -probity_clash_ax.plot([0.0,180.0], [0.0,180.0], color = 'k',linestyle='--') -probity_clash_ax.set_title('b) Clash Score', loc='left', y=1.05) -probity_clash_ax.set_xlabel(promod_label) -probity_clash_ax.set_ylabel(modeller_label) +DoThingsWithAxes(probity_overall_ax, probity_values_promod, + probity_values_modeller, 'a) Overall Score', + promod_label, modeller_label) +DoThingsWithAxes(probity_clash_ax, probity_clash_promod, + probity_clash_modeller, 'b) Clash Score', + promod_label, modeller_label) -probity_rotamer_ax.plot(probity_rotamer_outliers_promod, probity_rotamer_outliers_modeller, - '.', color = cred) -# plot zero line -probity_rotamer_ax.plot([0.0,20.0], [0.0,20.0], color = 'k',linestyle='--') -probity_rotamer_ax.set_title('c) Rotamer Outliers', loc='left', y=1.05) -probity_rotamer_ax.set_xlabel(promod_label) -probity_rotamer_ax.set_ylabel(modeller_label) +DoThingsWithAxes(probity_rotamer_ax, probity_rotamer_outliers_promod, + probity_rotamer_outliers_modeller, 'c) Rotamer Outliers', + promod_label, modeller_label) - -probity_ramachandran_ax.plot(probity_ramachandran_outliers_promod, - probity_ramachandran_outliers_modeller, '.', color = cred) -# plot zero line -probity_ramachandran_ax.plot([0.0,30.0], [0.0,30.0], color = 'k',linestyle='--') -probity_ramachandran_ax.set_title('d) Ramachandran Outliers', loc='left', y=1.05) -probity_ramachandran_ax.set_xlabel(promod_label) -probity_ramachandran_ax.set_ylabel(modeller_label) +DoThingsWithAxes(probity_ramachandran_ax, probity_ramachandran_outliers_promod, + probity_ramachandran_outliers_modeller, + 'd) Ramachandran Outliers', promod_label, modeller_label) plt.tight_layout(pad=1.2, h_pad=1.5, w_pad=1.5, rect=None) - plt.savefig(molprobity_plot_name) print('avg. lddt value', promod_label, np.mean(lddt_values_promod)) diff --git a/modelling/promod3_vs_modeller_molprobity_scores.png b/modelling/promod3_vs_modeller_molprobity_scores.png index 021e1cae015bdd77d4173e27a26cadb9d7224e5f..a2ec373b2349a2f18043e416e5006c4acf57e2a4 100644 Binary files a/modelling/promod3_vs_modeller_molprobity_scores.png and b/modelling/promod3_vs_modeller_molprobity_scores.png differ