[271336]: / Metrics.py

Download this file

53 lines (45 with data), 1.6 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# -*- coding: utf-8 -*-
"""
Created on Thu Nov 24 22:50:27 2016
@author: Shreyas_V
"""
import numpy as np
def accuracy(pred, orig_label, msk):
''' calculates complete accuracy
INPUT: predicted labels, original labels, each 2D numpy arrays
OUTPUT: float
'''
acc = len(pred[(pred == orig_label) & msk])/float(len(msk[msk]))
return acc
def DSC_en(pred, orig_label):
TP = len(pred[(pred == 4) & (pred == orig_label)])
denom = len(pred[(pred == 4) & msk]) + len (orig_label[(orig_label == 4)])
if denom == 0:
return 1.
return 2.*TP/float(denom)
def DSC(pred, orig_label):
''' Calculates Dice Score Coefficient
INPUT: predicted, original labels
OUTPUT: float
'''
TP = len(pred[(pred != 0) & (orig_label != 0)])
denom = len(pred[pred!=0]) + len(orig_label[orig_label != 0])
if denom == 0:
return 1
return 2.*TP/float(denom)
def DSC_core_tumor(pred, orig_label):
''' Calculates DSC for core tumor (1, 3 and 4)
INPUT: predicted, original labels
OUTPUT: float
'''
TP = len(pred[((pred!=0) & (pred!=2)) & ((orig_label !=0) & (orig_label !=2))])
denom = len(pred[pred[((pred!=0) & (pred!=2))]) + len(orig_label[(orig_label !=0) & (orig_label !=2)])
if denom == 0:
return 1
return 2.*TP/float(denom)
def PPV(pred, orig_label):
TP = len(pred[((pred!=0) & (pred!=2)) & ((orig_label !=0) & (orig_label !=2))])
FP = len(pred[((pred!=0) & (pred!=2)) & ((orig_label ==0) | (orig_label ==2))])
if TP == 0:
return 0.
return TP/float(TP+FP)