PageRenderTime 45ms CodeModel.GetById 19ms RepoModel.GetById 0ms app.codeStats 0ms

/scripts/getpeakrange.py

https://github.com/Gim6626/casconvection
Python | 56 lines | 45 code | 9 blank | 2 comment | 11 complexity | 9a9553f5b4b309ae9d21c96ed33fca94 MD5 | raw file
Possible License(s): GPL-2.0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import os
  4. import sys
  5. from optparse import OptionParser
  6. from libextrema import extremamax
  7. usage = "usage: %prog [options] LOWERBOUND UPPERBOUND"
  8. parser = OptionParser(usage = usage)
  9. parser.add_option("-i", "--input", dest="inputfile",
  10. help="input file, two tab separated columns -- xvals and yvals",
  11. metavar="INPUT")
  12. (options, args) = parser.parse_args()
  13. if options.inputfile == None:
  14. inputfile = sys.stdin
  15. else:
  16. inputfile = open(options.inputfile, 'r')
  17. if len(args) != 2:
  18. parser.print_usage()
  19. os._exit(1)
  20. lower = float(args[0])
  21. upper = float(args[1])
  22. xvals = []
  23. yvals = []
  24. for line in inputfile:
  25. vals = [float(i) for i in line.split()]
  26. x = vals[0]
  27. y = vals[1]
  28. if x >= lower and x <= upper:
  29. xvals.append(x)
  30. yvals.append(y)
  31. size = len(xvals)
  32. if size == 0:
  33. print "Error, input is empty"
  34. os._exit(1)
  35. from numpy import array
  36. xvals = array(xvals)
  37. yvals = array(yvals)
  38. (indices, values) = extremamax(yvals)
  39. prev = None
  40. for i in indices:
  41. cur = i
  42. if prev == None:
  43. print '{0}\t\t{1}'.format(xvals[cur], yvals[cur])
  44. else:
  45. print '{0}\t{1}\t{2}'.format(xvals[cur], xvals[cur] - xvals[prev],
  46. yvals[cur])
  47. prev = i