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]
'''


['200.0', '800.0', '1.3', '0.6', '0.30572104454', 'y', '1']
seeing-prob: 59.296 %
catchtrial accuracy: 98.0 %

In [49]:


In [22]:


In [22]:


In [ ]: