In [2]:
import glob
import csv
from operator import add
from scipy import stats
#Dateiliste erstellen
files = []
for filename in glob.glob('/home/weiss/data/TW*.csv'):
files.append(filename)
#read files
seen = 0
trials = 0
catchseen = 0
catchtrials = 0
deltas = []
freqs = []
for filename in files:
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))
print 'seeing-prob:', round(100.*seen/trials, 3), '%'
print 'catchtrial accuracy:', round(100.*catchseen/catchtrials), '%'
xachse = ['(200,\n400)', '(200,\n500)', '(200,\n600)', '(200,\n800)', '(400,\n200)', '(400,\n500)', '(400,\n600)', '(400,\n800)', '(500,\n200)', '(500,\n400)', '(500,\n600)', '(500,\n800)', '(600,\n200)', '(600,\n400)', '(600,\n500)', '(600,\n800)', '(800,\n200)', '(800,\n400)', '(800,\n500)', '(800,\n600)']
TWsem = [0,0,.099999999999,0,0,0,.16329931618554522,0,0,.099999999999,0,.15275252316,.099999999999,.13333333333,0,.0999999999,0,.13333333333,.16329931618554522,0]
figure(figsize=(12,5))
barplot = plt.bar(range(len(d_freqs)), [float(d_freqs[key][1])/d_freqs[key][0] for key in sorted(d_freqs)], color='bbbbyyyyccccggggrrrr', align='center', alpha=.4, width=.3, yerr=TWsem, ecolor='k', error_kw={'linewidth':2})
plt.plot([],[],color='b',label='200 Hz')
plt.plot([],[],color='y',label='400 Hz')
plt.plot([],[],color='c',label='500 Hz')
plt.plot([],[],color='g',label='600 Hz')
plt.plot([],[],color='r',label='800 Hz')
plt.xticks(range(len(d_freqs)), xachse)
plt.ylim(0, 1.1)
plt.xlim(-.5, 19.5)
#plt.grid()
plt.xlabel('Frequenzen [Hz]', fontsize=15)
plt.ylabel('P', fontsize=15)
plt.xticks(fontsize=12)
plt.yticks(fontsize=15)
#plt.legend(bbox_to_anchor=(1,1), loc='upper left')
plt.legend(loc='lower right', fontsize=10, title='Grundfrequenzen')
plt.tight_layout()
#plt.savefig('/home/weiss/ba/figures/finalTW.pdf')
contrastsum = []
for key in sorted(d_freqs):
if key[0]<key[1]:
contrastsum.append(map(add, d_freqs[key], d_freqs[tuple(reversed(key))]))
contrasts = [float(fr[1])/fr[0]-1 for fr in sorted(d_freqs) if fr[0]<fr[1]]
contrastticks = []
i = 0
for key in sorted(d_freqs):
if key[0]<key[1]:
contrasts[i] = str(contrasts[i])+'\n'+str((key[0],key[1]))
i += 1
'''
print [float(d_delta[key][1])/d_delta[key][0] for key in sorted(d_delta)]
print [float(d_all[key][1])/d_all[key][0] for key in sorted(d_all)]
print [(float(item[1])/item[0]) for item in contrastsum]
'''
In [49]:
In [22]:
In [22]:
In [ ]: