Content
Parsing of input parameters
Parsing "on knees"
import sys import os def get_input_parameters() : nargs = len(sys.argv) print 'sys.argv[0]: ', sys.argv[0] print 'nargs: ', nargs # Then do something with arguments...
Use OptionParser
from optparse import OptionParser def input_option_parser() : def_fname = 'spec-xppi0412-r0060-20120507-125420.198726277.txt' def_cols = 100 parser = OptionParser(description='Process optional input parameters.', usage = "usage: %prog [options]") parser.add_option('-f', '--fname', dest='fname', default=def_fname, action='store', type='string', help='input file name') parser.add_option('-c', '--cols', dest='cols', default=def_cols, action='store', type='int', help='number of columns in the image array') parser.add_option('-v', dest='verbose', action='store_true', help='set flag to print more details', default=True) parser.add_option('-q', dest='verbose', action='store_false', help='set flag to print less details') (opts, args) = parser.parse_args() print 'opts:',opts print 'args:',args return (opts, args)
Manipulation with directories and files
Access to files in the derectory
def getListOfFilesInDir(dirname) : return os.listdir(dirname) def printListOfFilesInDir(dirname) : print 'List of files in the dir.', dirname for name in os.listdir(dirname) : print name print '\n'
Parsing the pathname
root, ext = os.path.splitext(path) # i.e. path='root-part.tail-part' basename = os.path.basename(path) dirname = os.path.dirname(path) lexist = os.path.lexists(path) isfile = os.path.isfile(path) isdir = os.path.isdir(path) head, tail= os.path.split(path) # i.e. path='head-part/tail-part' ...
http://docs.python.org/library/os.path.html
Useful string parsing options
http://docs.python.org/library/string.html
string.rsplit(str, sep, maxsplit) string.capitalize(word) string.lower(s) start = string.find(symbolic_string, pattern) pattern_length = len(pattern)
http://docs.python.org/library/parser.html?
Or use more shorter methods for str
object:
http://docs.python.org/library/stdtypes.html, for example:
par_str = line[pos_eq+1:].strip(' ').rstrip('\n')
Python - useful references
Built-in functions
http://docs.python.org/library/functions.html
setattr - gives dynamic variables in python
http://docs.python.org/library/functions.html#setattr
Matplotlib
In examples below we assume
axes = fig.add_subplot(111) axim = axes.imshow(arrwin, interpolation='nearest', origin='bottom', aspect='auto')
How to define empty axes with limits
fig = plt.figure(figsize=(10,10), dpi=100, facecolor='w',edgecolor='w',frameon=True) axes = fig.add_subplot(111) axes.set_xlim((-50,1750)) axes.set_ylim((-50,1750))
How to draw line
import matplotlib.lines as lines line = lines.Line2D(arrx, arry, linewidth=1, color='r') axes.add_artist(line)
How to draw axis without labels
import matplotlib.ticker as mtick axes.xaxis.set_major_formatter( mtick.NullFormatter() )
How to rotate axis labels
for label in axes.get_xticklabels() : label.set_rotation(60) # rotate by 60 degree label.set_horizontalalignment('center') # 'right', etc.
How to change axis label position on the plot
axes.xaxis.set_ticks_position('top') axes.yaxis.set_ticks_position('right')
How to make figure with non-equal subplots
import matplotlib.gridspec as gridspec gs = gridspec.GridSpec(20, 20) # Naive direction [ Y , X ] axsa = fig.add_subplot(gs[ 1:16, 0:14]) axsb = fig.add_subplot(gs[ 1:16, 14:19]) axsc = fig.add_subplot(gs[16: , 0:14])
How to draw a color bar as a separate sub-plot
axCB = fig.add_subplot(gs[ 0, 0:14]) colb = fig.colorbar(axim, cax=axCB, orientation='horizontal') axCB.xaxis.set_ticks_position('top') # change position of axis labels
How draw text
plt.text(x, y, text, fontsize=7, color='k', ha='left', rotation=45)
At the edge of matplotlib and PyQt4
We assume that everything is done in our backend basis:
import matplotlib matplotlib.use('Qt4Agg') import matplotlib.pyplot as plt
How to get the current matplotlib figure window position on monitor
pos = fig.canvas.manager.window.pos() print 'x,y=', pos.x(), pos.y()
How to move the matplotlib figure window in certain (x,y) position
fig.canvas.manager.window.move(x,y) # in pixels from top-left corner
How to move the matplotlib figure window on top (of all pileup windows)
fig.canvas.manager.window.activateWindow() # Makes window active fig.canvas.manager.window.raise_() # Moves window on top
the attribute trick is that the fig.canvas.manager.window
returns the QtGui.QMainWindow
, which is subclass of QtGui.QWidget
with all that useful methods.
How to add figure as a widget of the QtGui
fig = plt.figure(num=None figsize=(5,10), dpi=100, facecolor='w',edgecolor='w',frameon=True) vbox = QtGui.QVBoxLayout() vbox.addWidget(fig.canvas) # Wraps figure canvas in widget self.setLayout(vbox)
How to receive a signal in program when window is activated by the mouse click on frame ?
I do not know yet...
But, if you click on figure canvas (the region inside the window frame, use
fig.canvas.mpl_connect('button_press_event', self.onButtonPressEvent) #Should be implemented something like: def onButtonPressEvent( self, event ): """Figure is picked""" print 'click on fig number =', event.canvas.figure.number
How to receive a signal in program when close window by the click on "X"
fig.canvas.mpl_connect('close_event', self.onCloseEvent) #Should be implemented something like: def onCloseEvent( self, event ): print 'close event, fig number =', event.canvas.figure.number
How to close figure from program call
plt.close( num ) # close figure with known number num ... plt.close('all') # close all figures
Overview
Content Tools