In [1]:
import matplotlib
matplotlib.use('agg')
import cPickle as pickle
import os; import sys; sys.path.append('../../')
import gp
import gp.nets as nets
In [2]:
input_image, input_prob, input_gold, input_rhoana, dojo_bbox = gp.Legacy.read_dojo_data()
In [42]:
import cPickle as pickle
import numpy as np
In [63]:
%pylab inline
In [60]:
def aRE(gt, seg):
# total_vi = 0
slice_vi = []
if type(gt) is list:
z_s = len(gt)
else:
z_s = gt.shape[0]
for i in range(z_s):
current_vi = gp.metrics.adapted_rand(seg[i].astype(np.int64), gt[i].astype(np.int64))
# total_vi += current_vi
slice_vi.append(current_vi)
# total_vi /= 10
return np.mean(slice_vi), np.median(slice_vi), slice_vi
In [ ]:
In [68]:
#
# baseline aRE
#
baseline = aRE(input_gold, input_rhoana)
In [ ]:
In [87]:
gp_experts = ['E1', 'E3']
gp_experts_results = []
gp_experts_mean = [0]*10
for e in gp_experts:
with open('/home/d/GPSTUDY/'+e+'/ui_results.p', 'r') as f:
result = pickle.load(f)
randerror = aRE(input_gold, result)
gp_experts_results.append(randerror[2])
for i in range(10):
gp_experts_mean[i] = (gp_experts_results[0][i] + gp_experts_results[1][i]) / 2.
fp_experts = ['E2', 'E4']
fp_experts_results = []
fp_experts_mean = [0]*10
for e in fp_experts:
with open('/home/d/GPSTUDY/'+e+'/ui_results.p', 'r') as f:
result = pickle.load(f)
randerror = aRE(input_gold, result)
fp_experts_results.append(randerror[2])
for i in range(10):
fp_experts_mean[i] = (fp_experts_results[0][i] + fp_experts_results[1][i]) / 2.
In [91]:
fig = plt.figure()
boxplot = plt.boxplot([baseline[2], gp_experts_mean, fp_experts_mean], labels=['Initial\nSegmentation', 'GP Experts', 'FP Experts'])
In [92]:
FP_USERS = []
GP_USERS = []
FP_EXPERTS = []
GP_EXPERTS = []
with open('/home/d/GPSTUDY/study.csv', 'r') as f:
lines = f.readlines()
for l in lines[1:]:
line = l.strip('\n').split(',')
userid = line[3]
method = line[4]
if method == 'FP':
if userid.startswith('E'):
FP_EXPERTS.append(userid)
else:
FP_USERS.append(userid)
elif method == 'GP':
if userid.startswith('E'):
GP_EXPERTS.append(userid)
else:
GP_USERS.append(userid)
In [97]:
gp_users_results = []
gp_users_mean = [0]*10
for u in GP_USERS:
with open('/home/d/GPSTUDY/'+u+'/ui_results.p', 'r') as f:
result = pickle.load(f)
randerror = aRE(input_gold, result)
gp_users_results.append(randerror[2])
for cur_slice in range(10):
cur_mean = 0
for cur_user in range(len(gp_users_results)):
cur_mean += gp_users_results[cur_user][cur_slice]
cur_mean /= len(gp_users_results)
gp_users_mean[cur_slice] = cur_mean
In [98]:
fp_users_results = []
fp_users_mean = [0]*10
for u in FP_USERS:
with open('/home/d/GPSTUDY/'+u+'/ui_results.p', 'r') as f:
result = pickle.load(f)
randerror = aRE(input_gold, result)
fp_users_results.append(randerror[2])
for cur_slice in range(10):
cur_mean = 0
for cur_user in range(len(fp_users_results)):
cur_mean += fp_users_results[cur_user][cur_slice]
cur_mean /= len(fp_users_results)
fp_users_mean[cur_slice] = cur_mean
In [104]:
fig = plt.figure()
boxplot = plt.boxplot([baseline[2], gp_users_mean, fp_users_mean, gp_experts_mean, fp_experts_mean], labels=['Initial\nSegmentation', 'GP Novices', 'FP Novices', 'GP Experts', 'FP Experts'])
plt.savefig('/tmp/are_plot.pdf')
In [107]:
np.mean(fp_users_mean), np.median(fp_users_mean)
Out[107]:
In [108]:
baseline[0], baseline[1]
Out[108]:
In [109]:
np.mean(gp_users_mean), np.median(gp_users_mean)
Out[109]:
In [111]:
gp_users_mean
Out[111]:
In [114]:
np.round(baseline[2],2)
Out[114]:
In [115]:
np.round(gp_users_mean,2)
Out[115]:
In [116]:
np.round(fp_users_mean,2)
Out[116]:
In [117]:
np.round(gp_experts_mean,2)
Out[117]:
In [137]:
print ' & '.join(["{:.3f}".format(float(v)) for v in np.round(baseline[2],3)])
print ' & '.join(["{:.3f}".format(float(v)) for v in np.round(gp_users_mean,3)])
print ' & '.join(["{:.3f}".format(float(v)) for v in np.round(fp_users_mean,3)])
print ' & '.join(["{:.3f}".format(float(v)) for v in np.round(gp_experts_mean,3)])
print ' & '.join(["{:.3f}".format(float(v)) for v in np.round(fp_experts_mean,3)])
In [132]:
print ' & '.join(["{:.3f}".format(float(v)) for v in np.round(baseline[2],3)])
print ' & '.join(["{:.3f}".format(baseline[2][i]-float(v)) for i,v in enumerate(np.round(gp_users_mean,3))])
print ' & '.join(["{:.3f}".format(baseline[2][i]-float(v)) for i,v in enumerate(np.round(fp_users_mean,3))])
print ' & '.join(["{:.3f}".format(baseline[2][i]-float(v)) for i,v in enumerate(np.round(gp_experts_mean,3))])
print ' & '.join(["{:.3f}".format(baseline[2][i]-float(v)) for i,v in enumerate(np.round(fp_experts_mean,3))])
In [ ]: