DM_limits.py
1 ## @package python.demo.DM_limits
2 #
3 # example script accessing the limits of an existing ODM
4 # (script works in python 2 and 3)
5 #
6 
7 from __future__ import print_function # print function syntax as in python 3
8 import sys, time
9 from os import path
10 from optparse import OptionParser
11 
12 from opals import pyDM
13 
14 
15 ##
16 # this function is called when _import is called directly
17 def main(argv=sys.argv):
18  # raw_input("Press Enter to continue...")
19 
20  scriptName = path.basename(path.splitext(__file__)[0])
21 
22  parser = OptionParser(usage="Usage: %prog [options]\n" + __doc__)
23  parser.add_option("-i", "--input", help="odm input file", dest="filename")
24 
25  (options, args) = parser.parse_args(argv)
26 
27  if not options.filename:
28  print("ERROR: No ODM file specified")
29  print()
30  parser.print_help()
31  return
32 
33  if pyDM.Datamanager.isValidODM(options.filename) == False:
34  print("ERROR: " + options.filename + " is not a valid ODM")
35  return
36 
37  if sys.version_info >= (3, 3):
38  start = time.perf_counter()
39  else:
40  start = time.clock()
41 
42  # slow method: fully open the ODM
43  # dm = pyDM.Datamanager.load(options.filename,True,False)
44  # limit = dm.getLimit()
45 
46  # fast method: directly accessing the ODM header
47  limit = pyDM.Datamanager.getLimitODM(options.filename)
48 
49  if sys.version_info >= (3, 3):
50  end = time.perf_counter()
51  else:
52  end = time.clock()
53 
54  # output some odm statistics
55  # print("ODM contains",dm.sizePoint(),"points")
56  print("2D-limit (%.3f," % limit.xmin, "%.3f) -" % limit.ymin, "(%.3f," % limit.xmax, "%.3f)" % limit.ymax)
57  print("finished in", "%.2f [s]" % (end - start))
58 
59 
60 if __name__ == "__main__":
61  main()