Commit 9706dd154119fcb622b0106875d83cc4c38ba23d

Authored by mer0m
Committed by GitHub
1 parent 7ba967f278
Exists in master

Add files via upload

Showing 1 changed file with 95 additions and 0 deletions Side-by-side Diff

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