change stdev to confidence intervals in plot, clean up parse script
This commit is contained in:
+21
-14
@@ -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():
|
snr_list.sort()
|
||||||
|
|
||||||
|
for enc in sorted(table.keys()): # sort so legend labels are in order
|
||||||
|
# Check first that we got all datapoints for each trial
|
||||||
for snr in table[enc].keys():
|
for snr in table[enc].keys():
|
||||||
print table[enc][snr]
|
|
||||||
try:
|
try:
|
||||||
assert len(table[enc][snr]) == ntrials
|
assert len(table[enc][snr]) == ntrials
|
||||||
except AssertionError:
|
except AssertionError:
|
||||||
print "You don't have enough datapoints; exiting!"
|
print "You don't have enough datapoints; exiting!"
|
||||||
sys.exit()
|
sys.exit()
|
||||||
|
|
||||||
snr_list.sort()
|
y = [mean_confidence_interval(table[enc][snr]) for snr in snr_list]
|
||||||
|
|
||||||
for enc in sorted(table.keys()): # sort so legend labels are in order
|
# print enc_table[enc], snr_list, y
|
||||||
y = [sum(table[enc][snr])/float(ntrials) for snr in snr_list]
|
plt.errorbar(snr_list, [m for m,h in y],
|
||||||
|
yerr=[h for m,h in y],
|
||||||
print [table[enc][snr] for snr in snr_list]
|
marker='o',
|
||||||
yerr = [np.std(table[enc][snr]) for snr in snr_list]
|
label="%s" % enc_table[enc])
|
||||||
|
|
||||||
print enc, snr_list, y
|
|
||||||
print yerr
|
|
||||||
plt.errorbar(snr_list, y, yerr=yerr, marker='o', label="%s" % enc_table[enc])
|
|
||||||
|
|
||||||
plt.ylabel("PDR")
|
plt.ylabel("PDR")
|
||||||
plt.xlabel("SNR")
|
plt.xlabel("SNR")
|
||||||
|
|||||||
+2
-2
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user