def load(filename, path='', sep=',', which=('spec', 'sens')): with open(path + filename) as infile: X, Y = unzip2([line.strip().split(sep) for line in infile]) X, Y = [float(x) for x in X], [float(y) for y in Y] if which == ('spec', 'sens'): X, Y = ss2phidelta(X, Y) # print "LOAD X, Y = ", X, Y return X, Y
def make_grid(size=50): "Evaluate a phidelta grid --virtually, a square grid (testing only)" xlim = ylim = np.linspace(0.,+1.,size) grid = np.zeros ( shape=(size*size,), dtype = tuple ) for k, (spec, sens) in enumerate(product(xlim,ylim)): grid[k] = (spec,sens) phi, delta = phidelta_std(*unzip2(grid)) return phi, delta
def fill(self,ax,color='lightgrey'): "Fill the background of a phidelta diagram" X, Y = unzip2(multiple_get(self.borders,self.border_keys)) ax.fill ( X + X[:1], Y + Y[:1], color=color, zorder=0 )
def draw_borders(self, ax): "Draws borders of a rhombus" X, Y = unzip2(multiple_get(self.borders,self.border_keys)) ax.plot ( X + X[:1], Y + Y[:1], color='r', zorder=1 )
points = [ (0.95,0.95), (0.95,0.05), (0.05,0.95), (0.05,0.05) ] colors = [ 0., 0.3, 0.6, 0.9 ] #for ratio in [ 1., 3., 6., 1/6.]: for ratio in [ 1., 2. ]: # model = phidelta_model(ratio=ratio, intervals = 100, _eval = ('grid')) view = phidelta_view(ratio=ratio, labels = (r'$\varphi_{b}$',r'$\delta_{b}$', 'Entropy')) view('axes', 'borders', 'crossings', 'fill') #view('axes', 'borders', 'crossings') #view('axes', 'borders', 'fill') view.projection = '2d' phi, delta = unzip2(eval_coords(points,ratio)) view.scatter2D(phi,delta,colors=colors) #ax = view.plot() #S, D = model.get_iso_recall('specificity') #S, D = model.get_iso_precision('precision') #S, D = model.get_iso_precision('neg predictive value') #S, D = model.get_iso_accuracy('accuracy') #view.draw_lines(S,D)
from utils import runCtrl run = runCtrl() << { 'file': True, 'four_points': False } # ONE should be true ... def load(filename, path='', sep=',', which=('spec', 'sens')): with open(path + filename) as infile: X, Y = unzip2([line.strip().split(sep) for line in infile]) X, Y = [float(x) for x in X], [float(y) for y in Y] if which == ('spec', 'sens'): X, Y = ss2phidelta(X, Y) # print "LOAD X, Y = ", X, Y return X, Y if run['file']: phi, delta = load('test.csv') elif run['four_points']: spec, sens = unzip2([(0.95, 0.95), (0.95, 0.05), (0.05, 0.95), (0.05, 0.05)]) phi, delta = ss2phidelta(spec, sens) # phi, delta = phi[1:2], delta[1:2] # Running the slider view = phidelta_view(ratio=1., labels=('$\phi$', '$\delta$', '')) view('borders') slider = slider2D(view=view, points=(phi, delta)) slider.show()
def fill(self, size=160): "Fill the background of a phidelta diagram" X, Y = unzip2(multiple_get(self.borders, self.border_keys)) self.axes.fill(X + X[:1], Y + Y[:1], color='lightgrey', zorder=0)
def draw_borders(self): "Draw borders of a phidelta diagram" X, Y = unzip2(multiple_get(self.borders, self.border_keys)) self.axes.plot(X + X[:1], Y + Y[:1], color='r', zorder=1)