change stdev to confidence intervals in plot, clean up parse script

This commit is contained in:
theano
2015-11-09 17:22:54 -08:00
committed by Bastian Bloessl
parent a42e59c5b9
commit 2853ddaa00
2 changed files with 26 additions and 19 deletions
+24 -17
View File
@@ -3,6 +3,8 @@
import glob, os, re, sys import glob, os, re, sys
import numpy as np import numpy as np
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
import scipy as sp
import scipy.stats as ss
log_info = [] log_info = []
table = {} table = {}
@@ -16,6 +18,14 @@ ntrials = int(sys.argv[2])
snr_list = [] snr_list = []
def mean_confidence_interval(data, confidence=0.95):
a = 1.0 * np.array(data)
n = len(a)
m, se = np.mean(a), ss.sem(a)
h = se * ss.t._ppf((1 + confidence)/2., n-1)
return m, h
for filename in glob.glob(os.path.join(path, "*.log")): for filename in glob.glob(os.path.join(path, "*.log")):
snr_arg = re.search(r"s([-+]?\d+.\d+)", filename) # SNR snr_arg = re.search(r"s([-+]?\d+.\d+)", filename) # SNR
nfiles_arg = re.search(r"n(\d+)", filename) # Nfiles nfiles_arg = re.search(r"n(\d+)", filename) # Nfiles
@@ -40,29 +50,26 @@ for filename in glob.glob(os.path.join(path, "*.log")):
table[encode] = {} table[encode] = {}
if snr not in table[encode]: if snr not in table[encode]:
table[encode][snr] = [] table[encode][snr] = []
table[encode][snr].append(pdrate) # could sum here but want to check table[encode][snr].append(pdrate)
# we got enough datapoints
for enc in table.keys():
for snr in table[enc].keys():
print table[enc][snr]
try:
assert len(table[enc][snr]) == ntrials
except AssertionError:
print "You don't have enough datapoints; exiting!"
sys.exit()
snr_list.sort() snr_list.sort()
for enc in sorted(table.keys()): # sort so legend labels are in order for enc in sorted(table.keys()): # sort so legend labels are in order
y = [sum(table[enc][snr])/float(ntrials) for snr in snr_list] # Check first that we got all datapoints for each trial
for snr in table[enc].keys():
try:
assert len(table[enc][snr]) == ntrials
except AssertionError:
print "You don't have enough datapoints; exiting!"
sys.exit()
print [table[enc][snr] for snr in snr_list] y = [mean_confidence_interval(table[enc][snr]) for snr in snr_list]
yerr = [np.std(table[enc][snr]) for snr in snr_list]
print enc, snr_list, y # print enc_table[enc], snr_list, y
print yerr plt.errorbar(snr_list, [m for m,h in y],
plt.errorbar(snr_list, y, yerr=yerr, marker='o', label="%s" % enc_table[enc]) yerr=[h for m,h in y],
marker='o',
label="%s" % enc_table[enc])
plt.ylabel("PDR") plt.ylabel("PDR")
plt.xlabel("SNR") plt.xlabel("SNR")
+2 -2
View File
@@ -1,6 +1,6 @@
#!/bin/bash #!/bin/bash
ntrials=5 ntrials=20
if [ $1 ] if [ $1 ]
then then
@@ -18,7 +18,7 @@ echo
for e in {0..3} for e in {0..3}
do do
for s in `seq 1.0 2 16.0` for s in `seq 1.0 2 9.0`
do do
for t in `seq 1 1 $ntrials` for t in `seq 1 1 $ntrials`
do do