from scipy.stats import norm import numpy as np import os def score(outputs): weight = 0.03 binding_size_dist = np.load(os.path.join(os.path.dirname(__file__), "../params/binding_size_train_dist.npy")) mean = np.mean(binding_size_dist) std = np.std(binding_size_dist) dist = norm(mean, std) max_score = 0 scores = np.exp(outputs[0])[:, 1] indices = np.argsort(-1*scores) for j in range(1, len(indices)): score = (1-weight)*np.mean(scores[indices[:j]]) + weight*(dist.pdf(j/len(indices))) if score > max_score: max_score = score return max_score