You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 12 Next »

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?

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
  • No labels