P2DFlow / analysis /eval_result.py
Holmes
test
ca7299e
import os
import re
import sys
sys.path.append('./analysis')
import argparse
import pandas as pd
from src.eval import evaluate_prediction
from merge_pred_pdb import merge_pdb_full
from Ramachandran_plot import ramachandran_eval
if __name__ == '__main__':
parser = argparse.ArgumentParser()
parser.add_argument("--pred_org_dir", type=str, default="./inference_outputs/weights/pretrained/2025-03-13_10-08")
parser.add_argument("--valid_csv_file", type=str, default="./inference/valid_seq.csv")
parser.add_argument("--pred_merge_dir", type=str, default="./inference/test/pred_merge_results")
parser.add_argument("--target_dir", type=str, default="./inference/test/target_dir")
parser.add_argument("--crystal_dir", type=str, default="./inference/test/crystal_dir")
args = parser.parse_args()
# merge pdb
pred_org_dir = args.pred_org_dir
valid_csv_file = args.valid_csv_file
pred_merge_dir = args.pred_merge_dir
merge_pdb_full(pred_org_dir, valid_csv_file, pred_merge_dir)
# cal_eval
pred_merge_dir = args.pred_merge_dir
target_dir = args.target_dir
crystal_dir = args.crystal_dir
evaluate_prediction(pred_merge_dir, target_dir, crystal_dir)
# cal_RP
all_paths = [
args.target_dir,
args.pred_merge_dir,
]
results={}
for file in os.listdir(all_paths[0]):
if re.search('\.pdb',file):
pdb_file = file
print(file)
result_tmp = ramachandran_eval(
all_paths=all_paths,
pdb_file=pdb_file,
output_dir=args.pred_merge_dir,
)
for pred_paths in all_paths[1:]:
key_name = os.path.basename(pred_paths)
if key_name is results.keys():
results[key_name].append(result_tmp[key_name])
else:
results[key_name] = [result_tmp[key_name]]
out_total_df = pd.DataFrame(results)
out_total_df.to_csv(os.path.join(args.pred_merge_dir, f'Ramachandran_plot_validity.csv'), index=False)
print(f"RP results saved to {os.path.join(args.pred_merge_dir, f'Ramachandran_plot_validity.csv')}")