Page History
...
Code Block |
---|
def __cmp__(self, other) : """Method for sorted()""" if self.begin < other.begin : return -1 if self.begin > other.begin : return 1 if self.begin == other.begin : if self.end < other.end : return 1 # inverse comparison for end if self.end > other.end : return -1 if self.end == other.end : return 0 |
Manipulation with directories and files
...
Exceptions
Raise exceprion
Code Block |
---|
def getListOfFilesInDir(dirnameif not os.path.lexists(fname) : raise IOError('File %s is not available' % fname) |
Catch exception
Code Block |
---|
try return os.listdir(dirname) def printListOfFilesInDir(dirname) : print 'List of files inplf the dir.', dirname= PeakListFile(fname) forexcept nameException in os.listdir(dirname) as e: print name 'We cought exception: %s' print '\n' |
...
% e |
User defined exception
Code Block |
---|
class MyError(Exception): root, ext = os.path.splitext(path) # i.e. path='root-part.tail-part'def __init__(self, value): basename self.value = os.path.basename(path)value dirname = os.path.dirname(path)def __str__(self): lexist = os.path.lexists(path) return repr(self.value) ... try: raise MyError(2*2) except MyError as e: print isfile'My exception occurred, = os.path.isfile(path)value:', e.value |
Manipulation with directories and files
Access to files in the derectory
Code Block |
---|
def getListOfFilesInDir(dirname) : isdir =return os.path.isdirlistdir(pathdirname) def printListOfFilesInDir(dirname) : print 'List head, tail= os.path.split(path) # i.e. path='head-part/tail-part' ... |
http://docs.python.org/library/os.path.html
Joint path and name
Code Block |
---|
of files in the dir.', dirname for name in os.listdir(dirname) : print path_name = os.path.join(path,fname) |
Useful string parsing options
http://docs.python.org/library/string.html
Code Block |
---|
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:
Code Block |
---|
par_str = line[pos_eq+1:].strip(' ').rstrip('\n')
|
Replace the part of the string
Code Block |
---|
my_string.replace("abcde","cde")
|
String formatting
Code Block |
---|
s = 'some text %s %s' % (msg.ljust(30), str(val).rjust(30)
|
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) |
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__() |
Python - useful references
...
print '\n'
|
Parsing the pathname
Code Block |
---|
path = '/reg/d/psdm/cxi/cxif5315/calib/pnccd/pnccd-123456.data'
root, ext = os.path.splitext(path) # ('/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 = os.path.lexists(path) # False
isfile = os.path.isfile(path) # False
isdir = os.path.isdir(path) # False
head, tail= os.path.split(path) # ('/reg/d/psdm/cxi/cxif5315/calib/pnccd', 'pnccd-123456.data') # or '' if something is missing
...
|
http://docs.python.org/library/os.path.html
Join list of strings
Code Block |
---|
s = ' '.join(sys.argv) |
Join path and name
Code Block |
---|
path_name = os.path.join(path,fname)
|
Check if string contains pattern
Code Block |
---|
exp = 'xpptut13'
if 'tut' is in exp : <do something> |
String alignment
Code Block |
---|
msg = '%s' % (k.ljust(16)) |
Useful string parsing options
http://docs.python.org/library/string.html
Code Block |
---|
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/functionsparser.html
...
?
Or use more shorter methods for str
object:
http://docs.python.org/library/functions.html#setattr
PyQt4
PyQt4 class references
All classes
Selected:
Open/close/move other GUI window
Try to close window if its object exists, othervise - open:
stdtypes.html, for example:
Code Block |
---|
par_str = line[pos_eq+1:].strip(' ').rstrip('\n')
|
Replace the part of the string
Code Block |
---|
my_string.replace("abcde","cde")
|
String formatting
Code Block |
---|
s = 'some text %s %s' % (msg.ljust(30), str(val).rjust(30)
|
Class string properties
Code Block |
---|
print 'string properties:'
print 'punctuation : ', string.punctuation
print 'digits : ', string.digits
print 'octdigits |
Code Block |
def processConfigPars(self): print 'processConfigPars' try : cp.confpars.guiconfigparameters.close() except : # AttributeError: #NameError : cp.confpars.guiconfigparameters = guiconfigpars.GUIConfigParameters() ', string.octdigits print 'hexdigits : ', cp.confpars.guiconfigparameters.move(self.pos().__add__(QtCore.QPoint(100,330))) # window offsetstring.hexdigits print 'ascii_letters : ', string.ascii_letters print 'ascii_lowercase: ', string.ascii_lowercase print 'ascii_uppercase: ', string.ascii_uppercase print #'lowercase or use self.parentWidget().pos() for combined widgets:: ', string.lowercase print 'uppercase : #', cp.guifilebrowser.move(self.parentWidget().pos().__add__(QtCore.QPoint(240,40)))string.uppercase print 'letters : ', string.letters print 'printable : ', string.printable print 'whitespace : cp.confpars.guiconfigparameters.show() |
Note |
---|
Sometime it looks like the window does not want to move in specified position... |
Close window and delete object
Code Block |
---|
def closeEvent(self, event):
try: # try to delete self object in the cp.confpars
del cp.confpars.guiconfigparameters
except # AttributeError:
pass # silently ignore
|
Change style of buttons depending on status
For particular QPushButton it works:
Code Block |
---|
self.but_path = QtGui.QPushButton('File:')
self.but_path.setObjectName('but_path')
self.but_path.setStyleSheet('QPushButton#but_path:pressed {color: black; background-color: green;}' +
'QPushButton#but_path:disabled {color: white; background-color: pink;}' +
'QPushButton {color: blue; background-color: yellow;}')
|
For entire application it should be like:
Code Block |
---|
app = QtGui.QApplication.instance()
app.setStyleSheet('QLabel{color: #fff;} QPushButton{background-color: #000; color: #fff}')
|
but does not work for me...
Make window visible on the top
Code Block |
---|
widg.raise_()
|
Scroll down text in
Assuming
Code Block |
---|
self.box_txt = QtGui.QTextEdit()
self.box_txt.setText('some text')
self.box_txt.append('a lot of additional text, exceeding the window size')
self.box_txt.ensureCursorVisible()
|
Scroll bar can be used, but result is not seen imidiately:
Code Block |
---|
scrol_bar_v = self.box_txt.verticalScrollBar() # QScrollBar
scrol_bar_v.setValue(scrol_bar_v.maximum())
|
Moving text cursor with repaint() works immidiately:
Code Block |
---|
self.box_txt.moveCursor(QtGui.QTextCursor.End)
self.box_txt.repaint()
|
Set optimal table-widget size
Code Block |
---|
self.table = QtGui.QTableWidget(rows, cols, self)
...
self.table.setFixedWidth(self.table.horizontalHeader().length() + 4)
self.table.setFixedHeight(self.table.verticalHeader().length() + 29)
|
Show image in QLabel
Assumes:
', string.whitespace |
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
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 |
---|
setenv PYTHONPATH /reg/neh/home1/dubrovin/LCLS/git-work/pyapps:${PYTHONPATH} |
In cshell script:
Code Block |
---|
alias setpp 'setenv PYTHONPATH /reg/neh/home1/dubrovin/LCLS/git-work/pyapps:${PYTHONPATH}' |
In code:
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
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')
|
Code Block |
class GUIImage ( QtGui.QLabel ) : def __initdel__ (self, parent=None, app=None) : print 'destructor' QtGui.QLabel.__init__(self, parent) try self.setGeometry(200, 100, 100, 100) : self.setWindowTitle('Image For Grabber') self.setFrame() ... |
i.e. self
is an instance of QLabel
.
...
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() :
print _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:' % tname
t0_sec = time()
if tname == '0': test_all()
elif tname == '1': test_ricker()
elif tname == '2': test_morlet()
else : print 'Not-recognized test name: %s' % tname
msg = 'End of test %s, consumed time (sec) = %.6f' % (tname, time()-t0_sec)
sys.exit(msg) |
Virtualenv
Code Block |
---|
virtualenv dir-name
source <directoryName>/bin/activate.csh # for tcsh
# or
source <directoryName>/bin/activate # 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
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 class references
All classes
Selected:
Open/close/move other GUI window
Try to close window if its object exists, othervise - open:
Code Block |
---|
def processConfigPars(self):
print 'processConfigPars'
try :
cp.confpars.guiconfigparameters.close()
except : # AttributeError: #NameError
cp.confpars.guiconfigparameters = guiconfigpars.GUIConfigParameters()
cp.confpars.guiconfigparameters.move(self.pos().__add__(QtCore.QPoint(100,330))) # window offset
# or use self.parentWidget().pos() for combined widgets:
# cp.guifilebrowser.move(self.parentWidget().pos().__add__(QtCore.QPoint(240,40)))
cp.confpars.guiconfigparameters.show()
|
Note |
---|
Sometime it looks like the window does not want to move in specified position... |
Close window and delete object
Code Block |
---|
def closeEvent(self, event):
try: # try to delete self object in the cp.confpars
del cp.confpars.guiconfigparameters
except # AttributeError:
pass # silently ignore
|
Change style of buttons depending on status
For particular QPushButton it works:
Code Block |
---|
self.but_path = QtGui.QPushButton('File:')
self.but_path.setObjectName('but_path')
self.but_path.setStyleSheet('QPushButton#but_path:pressed {color: black; background-color: green;}' +
'QPushButton#but_path:disabled {color: white; background-color: pink;}' +
'QPushButton {color: blue; background-color: yellow;}')
|
For entire application it should be like:
Code Block |
---|
app = QtGui.QApplication.instance()
app.setStyleSheet('QLabel{color: #fff;} QPushButton{background-color: #000; color: #fff}')
|
but does not work for me...
Make window visible on the top
Code Block |
---|
widg.raise_()
|
Scroll down text in
Assuming
Code Block |
---|
self.box_txt = QtGui.QTextEdit()
self.box_txt.setText('some text')
self.box_txt.append('a lot of additional text, exceeding the window size')
self.box_txt.ensureCursorVisible()
|
Scroll bar can be used, but result is not seen imidiately:
Code Block |
---|
scrol_bar_v = self.box_txt.verticalScrollBar() # QScrollBar
scrol_bar_v.setValue(scrol_bar_v.maximum())
|
Moving text cursor with repaint() works immidiately:
Code Block |
---|
self.box_txt.moveCursor(QtGui.QTextCursor.End)
self.box_txt.repaint()
|
Set optimal table-widget size
Code Block |
---|
self.table = QtGui.QTableWidget(rows, cols, self)
...
self.table.setFixedWidth(self.table.horizontalHeader().length() + 4)
self.table.setFixedHeight(self.table.verticalHeader().length() + 29)
|
Show image in QLabel
Assumes:
Code Block |
---|
class GUIImage ( QtGui.QLabel ) :
def __init__ (self, parent=None, app=None) :
QtGui.QLabel.__init__(self, parent)
self.setGeometry(200, 100, 100, 100)
self.setWindowTitle('Image For Grabber')
self.setFrame()
...
|
i.e. self
is an instance of QLabel
.
Set pixmap for image
Code Block |
---|
def setPixmapForImage(self):
if self.r_pixmap == None :
self.s_pixmap = None
self.clear()
else :
self.s_pixmap = self.r_pixmap.scaled(self.size(), QtCore.Qt.KeepAspectRatio)
self.setPixmap(self.s_pixmap)
self.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignLeft)
self.setScailedMask()
|
Grab image from monitor
Code Block |
---|
import tempfile
def grabImage(self):
fname = tempfile.NamedTemporaryFile(mode='r+b',suffix='.ppm')
if( 0 == os.system('import -trim -frame -border %s' % (fname.name))) :
self.r_pixmap = QtGui.QPixmap(QtGui.QImage(fname.name,'.ppm'))
self.setPixmapForImage()
|
Supported in QImage formats:
Format | Description | Qt's support |
---|---|---|
BMP | Windows Bitmap | Read/write |
GIF | Graphic Interchange Format (optional) | Read |
JPG | Joint Photographic Experts Group | Read/write |
JPEG | Joint Photographic Experts Group | Read/write |
PNG | Portable Network Graphics | Read/write |
PBM | Portable Bitmap | Read |
PGM | Portable Graymap | Read |
PPM | Portable Pixmap | Read/write |
TIFF | Tagged Image File Format | Read/write |
XBM | X11 Bitmap | Read/write |
XPM | X11 Pixmap | Read/write |
Grab entire monitor window
Code Block |
---|
def setPixmapForImagegrabEntireWindow(self): if self.r_pixmap == None : self.s_pixmap = None QtGui.QPixmap.grabWindow(QtGui.QApplication.desktop().winId()) self.clearsetPixmapForImage() |
Load image from file
Code Block |
---|
else : self.s_pixmap = self.r_pixmap.scaled(self.size(), QtCore.Qt.KeepAspectRatio)def loadImageFromFile(self, fname) : #Read formats: bmp, jpg, jpeg, png, ppm, xbm, self.setPixmap(self.s_pixmap) xpm + gif, pbm, pgm, self.setAlignment(QtCore.Qt.AlignTop | QtCore.Qt.AlignLeft) r_pixmap = QtGui.QPixmap(QtGui.QImage(fname)) self.setScailedMasksetPixmapForImage() |
...
Set the mask to suppress the background layer
Code Block |
---|
def grabImagesetScailedMask(self): fname = tempfile.NamedTemporaryFile(mode='r+b',suffix='.ppm'size = self.s_pixmap.size() if(print 0'Scaled == os.system('import -trim -frame -border %spixmap size: %d x %d' % (fnamesize.name)width(), size.height()) : #================================== self.rqimage_pixmapmask = QtGui.QPixmapQImage(size, QtGui.QImage(fname.name)) .Format_Mono) self.qimage_mask.setPixmapForImagefill(0) |
Grab entire monitor window
Code Block |
---|
self.qbitmap_mask def grabEntireWindow= QtGui.QBitmap.fromImage(self.qimage_mask): self.rs_pixmap = QtGui.QPixmap.grabWindow(QtGui.QApplication.desktop().winId()).setMask(self.qbitmap_mask) self.setPixmapForImage() |
...
#==================================
|
Save image in file
Code Block |
---|
def loadImageFromFilesaveImageInFile(self, fname='test.png') : #Read#Write formats: bmp, jpg, jpeg, png, ppmpbm, xbmpgm, xpm + gifppm, pbmxbm, pgm,xpm if self.r_pixmap = QtGui.QPixmap(QtGui.QImage(fname)) self.setPixmapForImage() |
Set the mask to suppress the background layer
Code Block |
---|
def setScailedMask(self): is not None : size = self.sr_pixmap.size() save(fname, format=None) |
Set transparent frame
Code Block |
---|
def setFrame(self): print 'Scaled pixmap size: %d x %d' % (size.width(), size.height()self.frame = QtGui.QFrame(self) #================================== self.qimage_mask = QtGui.QImage(size, QtGui.QImage.Format_Mono)self.frame.setFrameStyle( QtGui.QFrame.Box | QtGui.QFrame.Sunken ) #Box, Panel | Sunken, Raised self.qimage_maskframe.fillsetLineWidth(0) self.qbitmap_mask = QtGui.QBitmap.fromImage(self.qimage_maskframe.setMidLineWidth(1) self.s_pixmapframe.setMasksetGeometry(self.qbitmap_maskrect()) #================================== |
Save image in file
Code Block |
---|
def saveImageInFile(self, fname='test.png'): #self.frame.setVisible(False) #Write formats: bmp, jpg, jpeg, png, pbm, pgm, ppm, xbm, xpm self.frame.setStyleSheet('background: transparent;') |
Resize event
Code Block |
---|
def resizeEvent(self, e): s if= self.r_pixmap is not None :size() self.r_pixmap.save(fname, format=None) |
Set transparent frame
Code Block |
---|
def setFrame(self):frame.setGeometry(QtCore.QRect(0,0,s.width(),s.height())) self.frame = QtGui.QFrame(self) self.frame.setFrameStyle( QtGui.QFrame.Box | QtGui.QFrame.Sunken ) #Box, Panel | Sunken, Raised self.frame.setLineWidth(0) self.frame.setMidLineWidth(1) self.frame.setGeometry(self.rect()) #self.frame.setVisible(False) self.frame.setStyleSheet('background: transparent;') |
Resize event
Code Block |
---|
def resizeEvent(self, e):
s = self.size()
self.frame.setGeometry(QtCore.QRect(0,0,s.width(),s.height()))
self.setPixmapForImage()
|
Get window size and position
Global (top-left) point of the window on monitor:
point = self.mapToGlobal(QtCore.QPoint(0,0))
- changing in resizeEvent(...)
and moveEvent(...)
x,y,w,h = size.size().x(), size.size().y(), size.size().width(), size.size().height()
where - w and h changing in resizeEvent(...)
,
x,y changing in moveEvent(...)
only.
Window relative dims: rect = self.rect()
- changing in resizeEvent(...)
Show image in QtGui.QGraphicsView
setPixmapForImage()
|
Get window size and position
Global (top-left) point of the window on monitor:
point = self.mapToGlobal(QtCore.QPoint(0,0))
- changing in resizeEvent(...)
and moveEvent(...)
x,y,w,h = size.size().x(), size.size().y(), size.size().width(), size.size().height()
where - w and h changing in resizeEvent(...)
,
x,y changing in moveEvent(...)
only.
Window relative dims: rect = self.rect()
- changing in resizeEvent(...)
Show image in QtGui.QGraphicsView
QGraphicsView is a class with scrolled graph window...
Repaint widget immediately when its property is changed
When QPushButton is pressed and connected method is called, all button properties stay unchanged until the method. In order to see current changes one has to repaint widget. For example:
Code Block |
---|
self.but_elog.setStyleSheet(cp.styleButton)
self.but_elog.setEnabled(False)
self.repaint() |
Dialog boxes
For password
Code Block |
---|
app = QtGui.QApplication(sys.argv)
w = QtGui.QInputDialog()
w.show()
msg = 'To use %s and submitt messages in ELog\nauthentication for user %s is required\nPassword:' % (sys.argv[0], opts.usr)
text, ok = w.getText(None, 'Authentication', msg, QtGui.QLineEdit.Password)
w.close()
... |
QGraphicsView is a class with scrolled graph window...
Graphics in PyQt4
Code Block |
---|
... self.poi1 = QtCore.QPoint(0,0) self.poi2 = QtCore.QPoint(0,0) self.rect1 = QtCore.QRect() self.rect2 = QtCore.QRect() self.pen1 = QtGui.QPen(QtCore.Qt.black) self.pen2 = QtGui.QPen(QtCore.Qt.white) self.pen1.setStyle(QtCore.Qt.DashLine) self.pen2.setStyle(QtCore.Qt.DashLine) self.pen1.setWidthF(1) self.pen2.setWidthF(1) ... def paintEvent(self, e): super(GUIImage,self).paintEvent(e) qp = QtGui.QPainter() # or QPainter can be defined earlier and use it as qp = self.qp qp.begin(self) #self.drawPixmap(qp) self.drawRect(qp) qp.end() self.update() def setPen(self, qp): self.pen.setStyle(QtCore.Qt.DashLine) self.pen.setWidthF(1) def drawRect(self, qp): if self.r_pixmap == None: return p1x, p1y = self.poi1.x(), self.poi1.y() p2x, p2y = self.poi2.x(), self.poi2.y() R=1 if abs(p2x-p1x) < R : return if abs(p2y-p1y) < R : return self.rect1.setCoords( p1x, p1y, p2x, p2y) self.rect2.setCoords( p1x+1, p1y+1, p2x-1, p2y-1) qp.setPen (self.pen1) qp.drawRect(self.rect1); qp.setPen (self.pen2) qp.drawRect(self.rect2); def drawPixmap(self, qp): if self.r_pixmap != None: qp.drawPixmap(0,0,self.s_pixmap) |
...
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
...
Code Block |
---|
V = np.array(...) Vmin, Vmax, Nbins1 <--- scalar valuer indarr = np.int32( 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, Vmax, Nbins1 <--- scalar valuer indarr nda_den, val_subst_zero=0) : pro_num = np.int32( factor * (V-Vmin) ) arrselect([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 |
...