Source code for jade.rosetta_jade.score_util

import os,sys,re
from collections import defaultdict
from jade.basic.path import open_file
from jade.basic.path import get_decoy_name

[docs]def parse_decoy_scores(decoy_path): """ Parse a score from a decoy and return a dictionary. :param decoy_path: :return: defaultdict """ data = defaultdict() labels = [] scores=[] INFILE = open_file(decoy_path) for line in INFILE: if line.startswith("#BEGIN_POSE_ENERGIES_TABLE"): lineSP = line.split() if len(lineSP) == 1: data['decoy'] = get_decoy_name( os.path.basename(decoy_path) ) else: data['decoy'] = get_decoy_name( lineSP[-1] ) elif line.startswith("label"): labels = line.split()[1:] labels = ["total_score" if x=="total" else x for x in labels ] elif line.startswith("pose"): scores = [ float(x) for x in line.split()[1:] ] else: continue INFILE.close() for i in range(0, len(labels)): data[labels[i]] = scores[i]
return data