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))


seeing-prob: 59.296 %
catchtrial accuracy: 98.0 %
[100, 200, 300, 400, 600]
<matplotlib.figure.Figure at 0x7ffa1e0ae850>

In [11]: