In [1]:
import glob
import csv
from operator import add
#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 row[3] < 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
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
print 'seeing-prob:', round(100.*seen/trials, 3), '%'
print 'catchtrial accuracy:', round(100.*catchseen/catchtrials), '%'
p1 = plt.bar(range(len(d_delta)), [d_delta[key][0] for key in sorted(d_delta)], align='edge', width=0.1, color='c')
p2 = plt.bar(range(len(d_delta)), [d_delta[key][1] for key in sorted(d_delta)], align='edge', width=-0.1, color='b')
#plt.xticks(range(len(d_delta)), sorted(d_delta))
plt.xlabel('$\Delta f$ in $Hz$')
plt.ylabel('Anzahl')
plt.title('Richtige Antworten pro $\Delta f$')
plt.legend((p2, p1), ('gesehen', 'gezeigt'))
plt.grid()
plt.ylim(0,70)
figure()
plt.figure(figsize=(20,4))
p = plt.bar(range(len(d_freqs)), [float(d_freqs[key][1])/d_freqs[key][0] for key in sorted(d_freqs)], align='center', width=.2, color='m')
plt.xticks(range(len(d_freqs)), sorted(d_freqs))
plt.ylim(0, .8)
plt.grid()
plt.title('Probability of Seeing')
plt.xlabel('Frequenzpaar')
plt.ylabel('P(seeing)')
#plt.tight_layout()
figure()
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(f[1])/f[0]-1 for f in sorted(d_freqs) if f[0]<f[1]]
contrastplot = plt.bar(range(len(contrasts)), [(float(item[1])/item[0]) for item in contrastsum], align='center', width=.2, color='c')
plt.xticks(range(len(contrasts)), contrasts)
plt.grid()
plt.ylim(0, 1.1)
plt.xlabel('contrast')
plt.ylabel('P(seeing)')
print list(sorted(d_delta))
In [11]: