Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Parsing the pathname

Code Block
path        = '/reg/d/psdm/cxi/cxif5315/calib/pnccd/pnccd-123456.data'

root, ext = os.path.splitext(path) # i.e. path='root-part.tail-part'
        ('/reg/d/psdm/cxi/cxif5315/calib/pnccd/pnccd-123456', '.data') # or '' if something is missing
basename  = os.path.basename(path)
 #       pnccd-123456.data 
dirname   = os.path.dirname(path)
  # /reg/d/psdm/cxi/cxif5315/calib/pnccd
lexist     lexist    = os= os.path.lexists(path)
        # False
isfile    = os.path.isfile(path)
        # False
isdir     = os.path.isdir(path)
    #    False
head, tail= os.path.split(path)    # i.e. path='head-part/tail-part' ('/reg/d/psdm/cxi/cxif5315/calib/pnccd', 'pnccd-123456.data') # or '' if something is missing
...

http://docs.python.org/library/os.path.html

...

Code Block
s = ' '.join(sys.argv)

...

Join path and name

Code Block
        path_name = os.path.join(path,fname)

...

Code Block
exp = 'xpptut13'
if 'tut' is in exp : <do something> 

...

String alignment

Code Block
msg = '%s' % (k.ljust(16))

Useful string parsing options

...

Code Block
 my_string.replace("abcde","cde")

 

String formatting

Code Block
s = 'some text %s  %s' % (msg.ljust(30), str(val).rjust(30)

...

Code Block
    print 'string properties:'
    print 'punctuation    :  ', string.punctuation
    print 'digits         :  ', string.digits
    print 'octdigits      :  ', string.octdigits
    print 'hexdigits      :  ', string.hexdigits
    print 'ascii_letters  :  ', string.ascii_letters
    print 'ascii_lowercase:  ', string.ascii_lowercase
    print 'ascii_uppercase:  ', string.ascii_uppercase
    print 'lowercase      :  ', string.lowercase
    print 'uppercase      :  ', string.uppercase
    print 'letters        :  ', string.letters
    print 'printable      :  ', string.printable
    print 'whitespace     :  ', string.whitespace      

Time stamp

Class name

Code Block
self.__class__.__name__

Function name

Code Block
sys._getframe().f_code.co_name

Function parameters

Code Block
locals() # returns (dict) of method input parameters

Converting integer to bin(), oct(), hex() string

using built-in functions

Code Block
ival = 123456
str_bin = bin(ival)
str_oct = oct(ival)
str_hex = hex(ival)

Time stamp

Code Block
from time import localtime, gmtime, strftime, clock, time

time_sec = time() # epoch time
Code Block
from time import localtime, gmtime, strftime, clock, time

time_sec = time() # epoch time

def get_current_local_time_stamp(fmt='%Y-%m-%d %H:%M:%S %Z'):
    return strftime(fmt, localtime())

def get_current_gm_time_stamp(fmt='%Y-%m-%d %H:%M:%S %Z'):
    return strftime(fmt, gmtime())

def get_local_time_str(time_sec, fmt='%Y-%m-%d %H:%M:%S %Z'):
    return strftime(fmt, localtime(time_sec))

def get_gm_time_str(time_sec, fmt='%Y-%m-%d %H:%M:%S %Z'):
    return strftime(fmt, gmtime(time_sec))

...

Set PYTHONPATH

In command-line:

...

Code Block
import os
os.environ['PYTHONPATH'] = '/reg/neh/home1/dubrovin/LCLS/git-work/pyapps:%s' % os.environ.get('PYTHONPATH', '')

...

 

Replace symbols in string

Code Block
text.replace("|",":").replace("-",".")
range.replace('9999','end')
msg.replace('\n',' ')

 

List of comprehension

list_of_x2 = [x*x for x in list_of_x]

list_of_x_selected = [x for x,y in zip(list_of_x, list_of_y) if y>0]

map -  built-in method

)
range.replace('9999','end')
msg.replace('\n',' ')

List of comprehension

list_of_x2 = [x*x for x in list_of_x]

list_of_x_selected = [x for x,y in zip(list_of_x, list_of_y) if y>0]

map -  built-in method

Code Block
def f(x,y) :
    return x if y>0 else -x

list = map(f, arrX, arrY)

Constructor, destructor etc.

Code Block
class PeakListFile :
    def __init__(self, fname) :
	    print 'constructor'
        self.f=open(fname,'r')

    def __del__(self) :
	    print 'destructor'
        try :
            self.f.close()

    def __call__(self) :
	    print 'this is a default method of this object called as obj()'

Polymorphism

Derived class initialization

Code Block
class Base :
    def __init__(self) :
       ...
       
class Derived(Base) :
    def __init__(self) :
        Base.__init__(self)
        # OR
        super(Derived, self).__init__()  

Create/save temporary file

Code Block
import tempfile
tmp_file = tempfile.NamedTemporaryFile(mode='r+b',suffix='.tiff')
tfile = tmp_file.name

Good example of __main__

Code Block
import sys

def test_all(
Code Block
def f(x,y) :
    return x if y>0 else -x

list = map(f, arrX, arrY)

 

Constructor, destructor etc.

Code Block
class PeakListFile :
    def __init__(self, fname) :
	    print 'constructor'
        self.f=open(fname,'r')

    def __del__(self) :
	    print 'destructorprint _sep_, '\n%s' % sys._getframe().f_code.co_name
    test_ricker()
    test_morlet()

#------------------------------
if __name__ == "__main__" :
    from time import time
    tname = sys.argv[1] if len(sys.argv) > 1 else '0'
    print 50*'_', '\nTest %s:' try% :tname
    t0_sec        self.f.close= time()

    def __call__(self) :
	   if   tname print== 'this is a default method of this object called as obj()'

 

Polymorphism

Derived class initialization

Code Block
class Base :
    def __init__(self) :
       ...0': test_all() 
    elif tname == '1': test_ricker()
    elif tname == '2': test_morlet()
    else : print 'Not-recognized test name: %s' % tname
    msg =  
class Derived(Base) :
    def __init__(self) :
    'End of test %s, consumed time (sec) = %.6f' % (tname, time()-t0_sec)
    Base.__init__(self)
        # OR
  sys.exit(msg)

Virtualenv

Code Block
virtualenv dir-name
source <directoryName>/bin/activate.csh # for tcsh
# or
source <directoryName>/bin/activate      super(Derived, self).__init__()   

 

Create/save temporary file

Code Block
import tempfile
tmp_file = tempfile.NamedTemporaryFile(mode='r+b',suffix='.tiff')
tfile = tmp_file.name

 

 

 

# for bash
pip install <packageName>

... work

deactivate

Python - useful references

Built-in functions

http://docs.python.org/library/functions.html

setattr, getattr - set/get dynamic variables in python

http://docs.python.org/library/functions.html

setattr - gives dynamic variables in python

http://docs.python.org/library/functions.html#setattr

 

 

PyQt4

/library/functions.html#setattr

PyQt4

Know How

  • QGraphicsScene item priority is set by setZValue(v)
  • All re-implemented Event methods like {{mouseMoveEvent(self, e)}} etc. in items will get control only if QGraphicsView their default version will be called.

PyQt4 PyQt4 class references

All classes
Selected:

...

Code Block
fig.clear()

Graphic

Code Block
import pyimgalgos.Graphics as gr
axes.clear()
axes.plot(xarr1, yarr1, '-r', xarr2, yarr2,  '-g')
gr.show(mode='do_not_hold') 

Histogram

Code Block
axes.clear()
axes.hist(arr, bins=100, range=(10,50), log=False) # log for vertical scale only

Image (with colorbar)

Code Block
img = axes.imshow(arr2d, interpolation='nearest', origin='bottom', aspect='auto')
img.set_clim(Amin,Amax)

cbar = self.fig.colorbar(img, orientation='vertical', \
                         fraction=0.1, pad=0.01, shrink=1.0, aspect=20)

        # fraction - of the 2d plot occupied by the color bar
        # pad      - is a space between 2d image and color bar
        # shrink   - factor for the length of the color bar
        # aspect   - ratio length/width of the color bar

...

Other supported formats: gif, pdf, png, jpeg, eps

 

eps

Check tiff file

To check tiff file format one may use command:

% identify -verbose <file-name>.tiff

Save image in 16-bit TIFF file

...

Use np.select

Code Block
V = np.array(...)
Vmin, Vmax, Nbins1 <--- scalar valuer
indarr = np...)
Vmin, Vmax, Nbins1 <--- scalar valuer
indarr = np.int32( factor * (V-Vmin) )
arrint32( factor * (V-Vmin) )
arr = np.select([V==Vmax, indarr<0, indarr>Nbins1], [Nbins1, 0, 0], default=indarr)

protected division:

Code Block
def divideZeroProteced(nda_num, nda_den, val_subst_zero=0) :
    pro_num = np.select([nda_den==0], [val_subst_zero], default=nda_num)
    pro_den = np.select([Vnda_den==Vmax0], indarr<0, indarr>Nbins1], [Nbins1, 0, 0], default=indarr)[1],              default=nda_den)
    return pro_num / pro_den

 

SciPy

Import

Code Block
#!/usr/bin/env python
import numpy as np
from scipy.optimize import curve_fit

...