In [1]:
import glob
import csv
from operator import add
import scipy.stats as stat
#Dateiliste erstellen
files = []
for filename in glob.glob('/Users/robinweiss/Documents/Studium/Physik/Bachelorarbeit/final data/*.csv'):
files.append(filename)
#read files
seen = 0
trials = 0
catchseen = 0
catchtrials = 0
deltas = []
freqs = []
catchfreq = []
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
catchfreq.append((int(row[0][0:-2]),int(row[1][0:-2]),0))
if row[5] == 'y':
catchfreq.append((int(row[0][0:-2]),int(row[1][0:-2]),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_catchfreqs = {}
for freq1, freq2, count in catchfreq:
if (freq1, freq2) not in d_catchfreqs:
d_catchfreqs[(freq1, freq2)] = [0,0]
d_catchfreqs[(freq1, freq2)][0] += 1
if count:
d_catchfreqs[(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))
d_3d = d_freqs.copy()
d_3d.update(d_catchfreqs)
print 'seeing-prob:', round(100.*seen/trials, 3), '%'
print 'catchtrial accuracy:', round(100.*catchseen/catchtrials), '%'
delta_std = loadtxt("/Users/robinweiss/Documents/Studium/Physik/Bachelorarbeit/final data/delta_std.txt", delimiter=', ')
d_all_std = loadtxt("/Users/robinweiss/Documents/Studium/Physik/Bachelorarbeit/final data/d_all_std.txt", delimiter=', ')
contrast_std = loadtxt("/Users/robinweiss/Documents/Studium/Physik/Bachelorarbeit/final data/contrast_std.txt", delimiter=', ')
delta_std = [stat.sem(delta_std[:,i]) for i in range(delta_std.shape[1])]
d_all_std = [stat.sem(d_all_std[:,i]) for i in range(d_all_std.shape[1])]
contrast_std = [stat.sem(contrast_std[:,i]) for i in range(contrast_std.shape[1])]
f, p = plt.subplots(3, figsize=(20,12))
p[0].bar(range(len(d_delta)), [float(d_delta[key][1])/d_delta[key][0] for key in sorted(d_delta)], align='center', width=0.1, color='c', yerr=delta_std, ecolor='r')
p[0].set_xticks(range(len(d_delta)))
p[0].set_xticklabels(sorted(d_delta))
p[0].set_xlabel('$\Delta f$ in $Hz$')
p[0].set_ylabel('P(seeing)')
p[0].set_title('Richtige Antworten pro $\Delta f$')
p[0].grid()
p[0].set_ylim(0,1.1)
p[0].set_xlim(-1, 5)
p[1].bar(range(len(d_all)), [float(d_all[key][1])/d_all[key][0] for key in sorted(d_all)], align='center', width=.2, color='g', yerr=d_all_std, ecolor='r')
p[1].set_xticks(range(len(d_all)))
p[1].set_xticklabels(sorted(d_all))
p[1].set_ylim(0, 1.1)
p[1].set_xlim(-1, 22)
p[1].grid()
p[1].set_title('Probability of Seeing')
p[1].set_xlabel('Frequenzpaar')
p[1].set_ylabel('P(seeing)')
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] for fr in sorted(d_freqs) if fr[0]<fr[1]]
contrasts[9] = 1.333
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
#contrast_id = argsort(array(contrasts))
contrast_id = ([7, 4, 9, 5, 8, 6, 0, 1, 2, 3])
contrasts = array(contrasts)[contrast_id]
contrastsum = array(contrastsum)[contrast_id]
contrast_std = array(contrast_std)[contrast_id]
p[2].bar(range(len(contrasts)), [(float(item[1])/item[0]) for item in contrastsum], align='center', width=.1, color='y', yerr=contrast_std, ecolor='r')
p[2].set_xticks(range(len(contrasts)))
p[2].set_xticklabels(contrasts)
p[2].grid()
p[2].set_ylim(0, 1.1)
p[2].set_xlim(-1, 10)
p[2].set_xlabel('contrast\nfreqs')
p[2].set_ylabel('P(seeing)')
f.tight_layout()
In [2]:
f, p = plt.subplots(1, figsize=(12,7))
p.errorbar(range(len(d_delta)), [float(d_delta[key][1])/d_delta[key][0] for key in sorted(d_delta)], marker='o', markersize=8, linewidth=2, yerr=delta_std, ecolor='b')
p.set_xticks(range(len(d_delta)))
p.set_xticklabels(sorted(d_delta))
p.set_xlabel('$\Delta f$ [Hz]', fontsize=15)
p.set_ylabel('P', fontsize=15)
p.set_yticks([0, .5, 1])
#p.grid()
p.set_ylim(0,1.1)
p.set_xlim(-.2, 4.2)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.tight_layout()
#plt.savefig('/home/weiss/ba/figures/deltas_interpol.pdf')
In [4]:
print contrasts
f, p = plt.subplots(1, figsize=(14,7))
p.bar(range(len(contrasts)), [(float(item[1])/item[0]) for item in contrastsum], align='center', alpha=.3, width=.2, yerr=contrast_std, ecolor='k', error_kw={'linewidth':2})
#p.errorbar([1.2,1.25,1.333333,1.5,1.6,2,2,2.5,3,4], [(float(item[1])/item[0]) for item in contrastsum], linestyle='None', marker='o', markersize=8, linewidth=2, yerr=contrast_std, ecolor='b')
p.set_xticks(range(len(contrasts)))
p.set_xticklabels(contrasts)
p.set_yticks([0, .5, 1])
#p.grid()
p.set_ylim(0,1.1)
p.set_xlim(-.2, 9.2)
p.set_xlabel('Frequenzverhaeltnis\nFrequenzen [Hz]', fontsize=15)
p.set_ylabel('P', fontsize=15)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.tight_layout()
#plt.savefig('/home/weiss/ba/figures/contrasts_interpol.pdf')
In [5]:
low = ('false\npositives', (400,500), (500,400), (500,600), (600,500), (600,800), (800,600))
low_vals = [d_all[item] for item in low]
ids = [0, 7, 11, 12, 16, 17, 21]
border = float(d_all['false\npositives'][1])/d_all['false\npositives'][0]
f, p = plt.subplots(1, figsize=(12,7))
p.plot((-.1,6.1), (border,border), linestyle='--', color='r', linewidth=2)
p.bar(range(len(low)), [(float(item[1])/item[0]) for item in low_vals], color='b', alpha=.2, align='center', width=.2, yerr=[d_all_std[i] for i in ids], ecolor='k', error_kw={'linewidth':2})
p.set_xticks(range(len(low)))
p.set_xticklabels(low)
p.set_yticks([0,border, .1])
p.set_yticklabels([0, 'false\npositives\nbias', 0.1])
#p.grid()
p.set_ylim(0,.15)
p.set_xlim(-.2, 6.2)
p.set_xlabel('Frequenzen [Hz]', fontsize=15)
p.set_ylabel('P', fontsize=15)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.tight_layout()
#plt.savefig('/home/weiss/ba/figures/false_positives_bias.pdf')
In [6]:
vgl1 = [6,7,8,9]
vgl2 = [1,3,5]
vgl200 = []
vgl400 = []
for i in vgl1:
vgl200.append(float(contrastsum[i,1])/contrastsum[i,0])
for i in vgl2:
vgl400.append(float(contrastsum[i,1])/contrastsum[i,0])
figure(figsize=(10,6))
errorbar([200,300,400,600], vgl200, marker='o', markersize=8, linewidth=2, yerr=contrast_std[vgl1], ecolor='b', label='200 Hz')
errorbar([100,200,400], vgl400, marker='o', color='g', markersize=8, linewidth=2, yerr=contrast_std[vgl2], ecolor='g', label='400 Hz')
plt.xticks([100,200,300,400,500,600])
plt.xlim(90,610)
plt.legend(loc='lower right', fontsize=15)
plt.yticks([0,.3,.6,.9])
#plt.grid()
plt.ylim(0,1.1)
plt.xlabel('$\Delta f$ [Hz]', fontsize=15)
plt.ylabel('P', fontsize=15)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.tight_layout()
#plt.savefig("/home/weiss/ba/figures/deltasvgl.pdf")
In [7]:
high = [(200,400), (400,200), (200,500), (500,200), (200,600), (600,200), (200,800), (800,200), (400,800), (800,400)]
highvals = [d_all[i] for i in high]
highids = [2,6,3,10,4,14,5,18,9,19]
figure(figsize=(14,7))
plt.bar(range(len(high)), [float(val[1])/val[0] for val in highvals], color='bbbbbbbbgg', alpha=.2, align='center', width=.2, yerr=[d_all_std[i] for i in highids], ecolor='k', error_kw={'linewidth':2})
plt.xticks(range(len(high)), high)
plt.yticks([0,.5,1])
#plt.grid()
plt.xlim(-.5,9.5)
plt.ylim(0,1.1)
plt.xlabel('Frequenzen [Hz]', fontsize=15)
plt.ylabel('P', fontsize=15)
plt.xticks(fontsize=15)
plt.yticks(fontsize=15)
plt.tight_layout()
#plt.savefig("/home/weiss/ba/figures/hohews.pdf")
In [14]:
d_3d[500,500] = [10,0]
u = [100*i for i in range(2,9)]
heatmap = zeros((7,7))
for i,freq1 in enumerate(u):
for j,freq2 in enumerate(u):
try:
heatmap[i,j] = float(d_3d[freq1,freq2][1])/d_3d[freq1,freq2][0]
except KeyError:
heatmap[i,j] = 1.2
f, p = plt.subplots(1, figsize=(8,8))
im = imshow(heatmap, cmap='hot', interpolation='none', extent=(150,850,150,850), origin='lower')
cbar = plt.colorbar(im,fraction=0.046,pad=0.04,ticks=[0.0,.2,.4,.6,.8,1.0,1.2])
cbar.ax.set_yticklabels([0.0,.2,.4,.6,.8,1.0,'keine Daten'])
plt.tight_layout()
#plt.savefig("/Users/robinweiss/Documents/Studium/Physik/Bachelorarbeit/figures/heatmap.png", dpi=f.dpi)
In [35]:
In [ ]: