Source code for deepsulci.sulci_labeling.analyse.stats

from __future__ import print_function
from __future__ import absolute_import
from sklearn.metrics import recall_score
import numpy as np


[docs]def acc_score(y_true, y_pred): ''' ACC score ''' y_true = np.asarray(y_true) y_pred = np.asarray(y_pred) return len(y_true[y_true == y_pred]) / float(len(y_true))
[docs]def bacc_score(y_true, y_pred, labels): ''' BACC score ''' return recall_score(y_true, y_pred, labels, average='macro')
[docs]def esi_score(y_true, y_pred, labels): ''' ESI score ''' y_true = np.asarray(y_true) y_pred = np.asarray(y_pred) tp, fp, fn, s = {}, {}, {}, {} for ss in labels: names_ss = y_pred[y_true == ss] labels_ss = y_true[y_pred == ss] tp[ss] = float(len(names_ss[names_ss == ss])) fp[ss] = float(len(labels_ss[labels_ss != ss])) fn[ss] = float(len(names_ss[names_ss != ss])) s[ss] = float(len(names_ss)) sum_s = sum(s.values()) esi = {} for ss in labels: if fp[ss] + fn[ss] + 2*tp[ss] != 0 and sum_s != 0: esi[ss] = s[ss]/sum_s*(fp[ss]+fn[ss]) / (fp[ss]+fn[ss]+2*tp[ss]) else: esi[ss] = 0 return sum(esi.values())