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