Mercurial > hg > nsaunier > traffic-intelligence
comparison python/utils.py @ 332:a6ca86107f27
reorganized utils module
| author | Nicolas Saunier <nicolas.saunier@polymtl.ca> |
|---|---|
| date | Fri, 14 Jun 2013 09:53:32 -0400 |
| parents | 99ca91a46007 |
| children | c9201f6b143a |
comparison
equal
deleted
inserted
replaced
| 331:40790d93200e | 332:a6ca86107f27 |
|---|---|
| 18 'Returns the dictionary that provides for each element in the input list its index in the input list' | 18 'Returns the dictionary that provides for each element in the input list its index in the input list' |
| 19 result = {} | 19 result = {} |
| 20 for i,x in enumerate(l): | 20 for i,x in enumerate(l): |
| 21 result[x] = i | 21 result[x] = i |
| 22 return result | 22 return result |
| 23 | |
| 24 ######################### | |
| 25 # CLI utils | |
| 26 ######################### | |
| 27 | |
| 28 def parseCLIOptions(helpMessage, options, cliArgs, optionalOptions=[]): | |
| 29 ''' Simple function to handle similar argument parsing | |
| 30 Returns the dictionary of options and their values | |
| 31 | |
| 32 * cliArgs are most likely directly sys.argv | |
| 33 (only the elements after the first one are considered) | |
| 34 | |
| 35 * options should be a list of strings for getopt options, | |
| 36 eg ['frame=','correspondences=','video='] | |
| 37 A value must be provided for each option, or the program quits''' | |
| 38 import sys, getopt | |
| 39 from numpy.core.fromnumeric import all | |
| 40 optionValues, args = getopt.getopt(cliArgs[1:], 'h', ['help']+options+optionalOptions) | |
| 41 optionValues = dict(optionValues) | |
| 42 | |
| 43 if '--help' in optionValues.keys() or '-h' in optionValues.keys(): | |
| 44 print(helpMessage+ | |
| 45 '\n - Compulsory options: '+' '.join([opt.replace('=','') for opt in options])+ | |
| 46 '\n - Non-compulsory options: '+' '.join([opt.replace('=','') for opt in optionalOptions])) | |
| 47 sys.exit() | |
| 48 | |
| 49 missingArgument = [('--'+opt.replace('=','') in optionValues.keys()) for opt in options] | |
| 50 if not all(missingArgument): | |
| 51 print('Missing argument') | |
| 52 print(optionValues) | |
| 53 sys.exit() | |
| 54 | |
| 55 return optionValues | |
| 56 | 23 |
| 57 ######################### | 24 ######################### |
| 58 # simple statistics | 25 # simple statistics |
| 59 ######################### | 26 ######################### |
| 60 | 27 |
| 285 | 252 |
| 286 ######################### | 253 ######################### |
| 287 # plotting section | 254 # plotting section |
| 288 ######################### | 255 ######################### |
| 289 | 256 |
| 257 def plotPolygon(poly, options = ''): | |
| 258 'Plots shapely polygon poly' | |
| 259 from numpy.core.multiarray import array | |
| 260 from matplotlib.pyplot import plot | |
| 261 from shapely.geometry import Polygon | |
| 262 | |
| 263 tmp = array(poly.exterior) | |
| 264 plot(tmp[:,0], tmp[:,1], options) | |
| 265 | |
| 290 def stepPlot(X, firstX, lastX, initialCount = 0, increment = 1): | 266 def stepPlot(X, firstX, lastX, initialCount = 0, increment = 1): |
| 291 '''for each value in X, increment by increment the initial count | 267 '''for each value in X, increment by increment the initial count |
| 292 returns the lists that can be plotted | 268 returns the lists that can be plotted |
| 293 to obtain a step plot increasing by one for each value in x, from first to last value | 269 to obtain a step plot increasing by one for each value in x, from first to last value |
| 294 firstX and lastX should be respectively smaller and larger than all elements in X''' | 270 firstX and lastX should be respectively smaller and larger than all elements in X''' |
| 418 if (os.path.exists(filename)): | 394 if (os.path.exists(filename)): |
| 419 os.remove(filename) | 395 os.remove(filename) |
| 420 else: | 396 else: |
| 421 print(filename+' does not exist') | 397 print(filename+' does not exist') |
| 422 | 398 |
| 423 def plotPolygon(poly, options = ''): | |
| 424 from numpy.core.multiarray import array | |
| 425 from matplotlib.pyplot import plot | |
| 426 from shapely.geometry import Polygon | |
| 427 | |
| 428 tmp = array(poly.exterior) | |
| 429 plot(tmp[:,0], tmp[:,1], options) | |
| 430 | |
| 431 def line2Floats(l, separator=' '): | 399 def line2Floats(l, separator=' '): |
| 432 '''Returns the list of floats corresponding to the string''' | 400 '''Returns the list of floats corresponding to the string''' |
| 433 return [float(x) for x in l.split(separator)] | 401 return [float(x) for x in l.split(separator)] |
| 434 | 402 |
| 435 def line2Ints(l, separator=' '): | 403 def line2Ints(l, separator=' '): |
| 436 '''Returns the list of ints corresponding to the string''' | 404 '''Returns the list of ints corresponding to the string''' |
| 437 return [int(x) for x in l.split(separator)] | 405 return [int(x) for x in l.split(separator)] |
| 406 | |
| 407 ######################### | |
| 408 # CLI utils | |
| 409 ######################### | |
| 410 | |
| 411 def parseCLIOptions(helpMessage, options, cliArgs, optionalOptions=[]): | |
| 412 ''' Simple function to handle similar argument parsing | |
| 413 Returns the dictionary of options and their values | |
| 414 | |
| 415 * cliArgs are most likely directly sys.argv | |
| 416 (only the elements after the first one are considered) | |
| 417 | |
| 418 * options should be a list of strings for getopt options, | |
| 419 eg ['frame=','correspondences=','video='] | |
| 420 A value must be provided for each option, or the program quits''' | |
| 421 import sys, getopt | |
| 422 from numpy.core.fromnumeric import all | |
| 423 optionValues, args = getopt.getopt(cliArgs[1:], 'h', ['help']+options+optionalOptions) | |
| 424 optionValues = dict(optionValues) | |
| 425 | |
| 426 if '--help' in optionValues.keys() or '-h' in optionValues.keys(): | |
| 427 print(helpMessage+ | |
| 428 '\n - Compulsory options: '+' '.join([opt.replace('=','') for opt in options])+ | |
| 429 '\n - Non-compulsory options: '+' '.join([opt.replace('=','') for opt in optionalOptions])) | |
| 430 sys.exit() | |
| 431 | |
| 432 missingArgument = [('--'+opt.replace('=','') in optionValues.keys()) for opt in options] | |
| 433 if not all(missingArgument): | |
| 434 print('Missing argument') | |
| 435 print(optionValues) | |
| 436 sys.exit() | |
| 437 | |
| 438 return optionValues | |
| 439 | |
| 440 | |
| 438 | 441 |
| 439 ######################### | 442 ######################### |
| 440 # sqlite | 443 # sqlite |
| 441 ######################### | 444 ######################### |
| 442 | 445 |
