Commit 87cea8f7e8957a54760d84946e55bbcb7f7cf6b9

Authored by bmarechal
1 parent b2e5864fc4
Exists in master

replace 4 spaces by tabs

Showing 1 changed file with 87 additions and 87 deletions Inline Diff

#!/usr/bin/env python 1 1 #!/usr/bin/env python
2 2
import argparse, allantools, numpy, csv, glob, Gnuplot, fnmatch, os 3 3 import argparse, allantools, numpy, csv, glob, Gnuplot, fnmatch, os
import matplotlib.pyplot as plt 4 4 import matplotlib.pyplot as plt
5 5
#============================================================================== 6 6 #==============================================================================
7 7
# Default filename 8 8 # Default filename
FILENAME = '*.dat' 9 9 FILENAME = '*.dat'
COLUMNS = '2' 10 10 COLUMNS = '2'
RATE = 1 11 11 RATE = 1
12 12
#============================================================================== 13 13 #==============================================================================
14 14
def parse(): 15 15 def parse():
""" 16 16 """
Specific parsing procedure for Allan Deviation plotting tool. 17 17 Specific parsing procedure for Allan Deviation plotting tool.
:returns: populated namespace (parser) 18 18 :returns: populated namespace (parser)
""" 19 19 """
parser = argparse.ArgumentParser(description = 'Plot Allan Deviation from timeseries file', 20 20 parser = argparse.ArgumentParser(description = 'Plot Allan Deviation from timeseries file',
epilog = 'Example: \'./allanplot.py -f \'toto.dat\' -c 2 3\' compute and plot Allan Deviation form columns 2 and 3 of toto.dat') 21 21 epilog = 'Example: \'./allanplot.py -f \'toto.dat\' -c 2 3\' compute and plot Allan Deviation form columns 2 and 3 of toto.dat')
22 22
parser.add_argument('-f', 23 23 parser.add_argument('-f',
action='store', 24 24 action='store',
dest='filename', 25 25 dest='filename',
default=FILENAME, 26 26 default=FILENAME,
help='File(s) to import (default '+FILENAME+')') 27 27 help='File(s) to import (default '+FILENAME+')')
28 28
parser.add_argument('-c', 29 29 parser.add_argument('-c',
nargs = '+', 30 30 nargs = '+',
action='store', 31 31 action='store',
dest='columns', 32 32 dest='columns',
default=COLUMNS, 33 33 default=COLUMNS,
help='Columns to import (default '+str(COLUMNS)+')') 34 34 help='Columns to import (default '+str(COLUMNS)+')')
35 35
parser.add_argument('-r', 36 36 parser.add_argument('-r',
action='store', 37 37 action='store',
dest='rate', 38 38 dest='rate',
default=RATE, 39 39 default=RATE,
help='Time rate in seconds (default '+str(RATE)+')') 40 40 help='Time rate in seconds (default '+str(RATE)+')')
41 41
parser.add_argument('-R', 42 42 parser.add_argument('-R',
action='store_true', 43 43 action='store_true',
dest='rel', 44 44 dest='rel',
default=False, 45 45 default=False,
help='Relative ADev') 46 46 help='Relative ADev')
47 47
args = parser.parse_args() 48 48 args = parser.parse_args()
return args 49 49 return args
50 50
#============================================================================== 51 51 #==============================================================================
52 52
def main(): 53 53 def main():
""" 54 54 """
Main script 55 55 Main script
""" 56 56 """
# Parse command line 57 57 # Parse command line
args = parse() 58 58 args = parse()
# filename 59 59 # filename
filename = args.filename 60 60 filename = args.filename
# columns 61 61 # columns
columns = map(int, args.columns) 62 62 columns = map(int, args.columns)
# rate 63 63 # rate
rate = int(args.rate) 64 64 rate = int(args.rate)
# rel 65 65 # rel
rel = bool(args.rel) 66 66 rel = bool(args.rel)
67 67
try: 68 68 try:
list_files = [] 69 69 list_files = []
filename = filename.split() 70 70 filename = filename.split()
for name in filename: 71 71 for name in filename:
list_files.extend(sorted(glob.glob(name))) 72 72 list_files.extend(sorted(glob.glob(name)))
73 73
for name in list_files: 74 74 for name in list_files:
print(name) 75 75 print(name)
data = [] 76 76 data = []
77 77
for f in list_files: 78 78 for f in list_files:
with open(f, 'r') as dest_f: 79 79 with open(f, 'r') as dest_f:
data_iter = csv.reader(dest_f, delimiter = '\t', quotechar = '"') 80 80 data_iter = csv.reader(dest_f, delimiter = '\t', quotechar = '"')
temp_data = [value for value in data_iter] 81 81 temp_data = [value for value in data_iter]
data.extend(temp_data) 82 82 data.extend(temp_data)
83 83
data = numpy.asarray(data, dtype = float) 84 84 data = numpy.asarray(data, dtype = float)
85 85
del(temp_data, list_files, value, f) 86 86 del(temp_data, list_files, value, f)
87 87
g = Gnuplot.Gnuplot(persist = 1) 88 88 g = Gnuplot.Gnuplot(persist = 1)
g('set logscale x') 89 89 g('set logscale x')
g('set logscale y') 90 90 g('set logscale y')
g('set grid') 91 91 g('set grid')
g('set format y "%0.1e"') 92 92 g('set format y "%0.1e"')
g.xlabel('Tau (s)') 93 93 g.xlabel('Tau (s)')
g.ylabel('Adev') 94 94 g.ylabel('Adev')
95 95
for i in columns: 96 96 for i in columns:
if rel: 97 97 if rel:
(tau2, ad, ade, adn) = allantools.adev(data[:,i]/data[:,i].mean(), rate=rate, data_type="freq", taus='decade') 98 98 (tau2, ad, ade, adn) = allantools.adev(data[:,i]/data[:,i].mean(), rate=rate, data_type="freq", taus='decade')
else: 99 99 else:
(tau2, ad, ade, adn) = allantools.adev(data[:,i], rate=rate, data_type="freq", taus='decade') 100 100 (tau2, ad, ade, adn) = allantools.adev(data[:,i], rate=rate, data_type="freq", taus='decade')
g.replot(Gnuplot.Data(tau2, ad, ade, with_='yerrorbars', title='%s : %s'%(name, str(i)))) 101 101 g.replot(Gnuplot.Data(tau2, ad, ade, with_='yerrorbars', title='%s : %s'%(name, str(i))))
102 102
except Exception as ex: 103 103 except Exception as ex:
print 'Oups '+str(ex) 104 104 print 'Oups '+str(ex)
print 'Program ending\n' 105 105 print 'Program ending\n'
106 106
#============================================================================== 107 107 #==============================================================================
108 108
if __name__ == "__main__": 109 109 if __name__ == "__main__":
main() 110 110 main()
111 111