In [6]:
import glob
import csv
from operator import add
from scipy import stats
#Dateiliste erstellen
files = []
for filename in glob.glob('/Users/robinweiss/Documents/RWeiss/final data/*.csv'):
files.append(filename)
names = [filename[17:19] for filename in files]
sems = []
legend = list(names)
i = 0
#read files
for filename in files:
seen = 0
trials = 0
catchseen = 0
catchtrials = 0
deltas = []
freqs = []
data = csv.reader(open(filename, "rb"), delimiter=',')
data.next()
data.next()
data.next()
for row in data:
freqdiff = abs(int(row[0][0:-2])-int(row[1][0:-2]))
if float(row[3]) < float(row[4]):
if row[0] != row[1]:
trials += 1
if row[5] == 'y':
seen += 1
deltas.append((freqdiff,1))
freqs.append((int(row[0][0:-2]),int(row[1][0:-2]),1))
else:
deltas.append((freqdiff,0))
freqs.append((int(row[0][0:-2]),int(row[1][0:-2]),0))
if row[0] == row[1]:
catchtrials += 1
if row[5] == 'n':
catchseen += 1
else:
print row
d_delta = {}
for freq, count in deltas:
if freq not in d_delta:
d_delta[freq] = [0,0]
d_delta[freq][0] += 1
if count:
d_delta[freq][1] += 1
d_freqs = {}
for freq1, freq2, count in freqs:
if (freq1, freq2) not in d_freqs:
d_freqs[(freq1, freq2)] = [0,0]
d_freqs[(freq1, freq2)][0] += 1
if count:
d_freqs[(freq1, freq2)][1] += 1
d_all = d_freqs.copy()
d_all['overall\ncorrectness'] = (1, round(float(seen)/trials, 3))
d_all['false\npositives'] = (1, 1-round(float(catchseen)/catchtrials, 3))
names[i] = d_delta.copy()
sems.append([stats.sem(concatenate((ones((d_delta[key][1])),zeros(((d_delta[key][0]-d_delta[key][1])))))) for key in sorted(d_delta)])
i += 1
f, p = plt.subplots(2, 3, figsize=(8,5), sharex=True, sharey=True)
print sems[0]
for i in range(3):
p[0,i].errorbar(range(len(names[i])), [float(names[i][key][1])/names[i][key][0] for key in sorted(names[i])], marker='o', label=legend[i], yerr=list(sems[i]), ecolor='b')
line = stats.linregress(range(len(names[i])), [float(names[i][key][1])/names[i][key][0] for key in sorted(names[i])])
x = range(len(names[i]))
p[0,i].plot(x, [line[0]*x+line[1] for x in range(len(names[i]))], color='lime')
p[0,i].set_xticks(range(len(names[i])))
p[0,i].set_xticklabels(sorted(names[i]))
p[0,0].set_ylabel('P', fontsize=15)
#p[0,i].grid()
p[0,i].text(4, .1, legend[i], fontsize=15)
#p[0,i].legend(loc='lower right')
p[0,i].set_ylim(0,1.1)
p[0,i].set_xlim(-1, 5)
p[0,i].tick_params(labelsize=12)
for i in range(3):
p[1,i].errorbar(range(len(names[i])), [float(names[i+3][key][1])/names[i+3][key][0] for key in sorted(names[i])], marker='o', yerr=list(sems[i+3]), label=legend[i+3])
p[1,i].set_xticks(range(len(names[i])))
p[1,i].set_xticklabels(sorted(names[i]))
line = stats.linregress(range(len(names[i])), [float(names[i+3][key][1])/names[i+3][key][0] for key in sorted(names[i])])
x = range(len(names[i]))
p[1,i].plot(x, [line[0]*x+line[1] for x in range(len(names[i]))], color='lime')
p[1,0].set_ylabel('P', fontsize=15)
p[1,i].set_xlabel('$\Delta f$ [Hz]', fontsize=15)
#p[1,i].grid()
p[1,i].text(4, .1, legend[i+3], fontsize=15)
#p[1,i].legend(loc='lower right')
p[1,i].set_ylim(0,1.1)
p[1,i].set_xlim(-1, 5)
p[1,i].tick_params(labelsize=12)
plt.tight_layout()
#plt.savefig('/home/weiss/ba/figures/vergleiche.pdf')
In [ ]: