wuxing0105's picture
Upload folder using huggingface_hub (part 2)
84ff331 verified
Raw
History Blame Contribute Delete
2.36 kB
import json
import os
import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import MaxNLocator
THIS_SCRIPT_PATH = os.path.abspath(__file__)
DATA_PATH = os.path.join(os.path.dirname(THIS_SCRIPT_PATH), "data")
OUTPUT_FOLDER = os.path.join(os.path.dirname(THIS_SCRIPT_PATH), "output", "figureS3")
def main():
PAE_TH = 50
os.makedirs(OUTPUT_FOLDER, exist_ok=True)
pairs_validation_v2 = json.load(open(os.path.join(DATA_PATH, "benchmark1", "pairs_validation.json"), "r"))
pairs_validation_v3 = json.load(open(os.path.join(DATA_PATH, "benchmark2", "pairs_validation.json"), "r"))
v2_scores = []
for jobname in pairs_validation_v2:
for pair_scores in pairs_validation_v2[jobname]["pairs_scores"].values():
scores_to_use = [i for i in pair_scores if i["pae_score"] > PAE_TH]
if len(scores_to_use) == 0:
continue
v2_scores.append(max([i["dockq"] for i in scores_to_use]))
v3_scores = []
for jobname in pairs_validation_v3:
for pair_scores in pairs_validation_v3[jobname]["pairs_scores"].values():
scores_to_use = [i for i in pair_scores if i["pae_score"] > PAE_TH]
if len(scores_to_use) == 0:
continue
v3_scores.append(max([i["dockq"] for i in scores_to_use]))
print("medians", np.median(v2_scores), np.median(v3_scores))
for DOCKQ_TH in [0.23, 0.49, 0.8]:
print("dockq th:", DOCKQ_TH)
print("v2", len(v2_scores), len([i for i in v2_scores if i > DOCKQ_TH]))
print("v3", len(v3_scores), len([i for i in v3_scores if i > DOCKQ_TH]))
data_to_plot = [v2_scores, v3_scores]
fig, ax = plt.subplots(figsize=(2.25, 1.75), dpi=600)
ax.xaxis.set_major_locator(MaxNLocator(6))
ax.yaxis.set_major_locator(MaxNLocator(6))
plt.yticks(fontsize=8)
plt.xticks(fontsize=8)
ax.violinplot(data_to_plot, showmedians=True)
ax.set_xticks([1, 2])
ax.set_xticklabels(["AFMv2\n(Benchmark 1)", "AFMv3\n(Benchmark 2)"])
plt.gca().spines['top'].set_visible(False)
plt.gca().spines['right'].set_visible(False)
plt.ylabel('DockQ', fontsize=11)
plt.savefig(os.path.join(OUTPUT_FOLDER, "FigS3.png"), bbox_inches='tight', dpi=300)
if __name__ == "__main__":
main()