| 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 | |