Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Benjamin Jakimow
EO Time Series Viewer
Commits
39cf791f
Commit
39cf791f
authored
Jul 25, 2010
by
Luke Campagnola
Browse files
minor updates / fixes
parent
2ca08c69
Changes
4
Hide whitespace changes
Inline
Side-by-side
examples/test_ROItypes.py
View file @
39cf791f
...
...
@@ -9,12 +9,11 @@ from pyqtgraph.graphicsWindows import *
from
pyqtgraph.graphicsItems
import
*
from
pyqtgraph.widgets
import
*
from
pyqtgraph.PlotWidget
import
*
from
pyqtgraph.functions
import
mkPen
from
PyQt4
import
QtCore
,
QtGui
app
=
QtGui
.
QApplication
([])
#i = PlotWindow(array([0,1,2,1,2]), parent=None, title='')
class
Win
(
QtGui
.
QMainWindow
):
pass
...
...
@@ -26,12 +25,8 @@ v.enableMouse(True)
v
.
autoPixelScale
=
False
w
.
setCentralWidget
(
v
)
#s = QtGui.QGraphicsScene()
#v.setScene(s)
s
=
v
.
scene
()
#p = Plot(array([0,2,1,3,4]), copy=False)
#s.addItem(p)
v
.
setRange
(
QtCore
.
QRect
(
-
2
,
-
2
,
220
,
220
))
arr
=
ones
((
100
,
100
),
dtype
=
float
)
arr
[
45
:
55
,
45
:
55
]
=
0
...
...
@@ -56,41 +51,57 @@ s.addItem(im4)
im4
.
moveBy
(
110
,
130
)
im4
.
setZValue
(
10
)
#g = Grid(view=v, bounds=QtCore.QRectF(0.1, 0.1, 0.8, 0.8))
#g = Grid(view=v)
#s.addItem(g)
#wid = RectROI([0, 0], [2, 2], maxBounds=QtCore.QRectF(-1, -1, 5, 5))
roi
=
TestROI
([
0
,
0
],
[
20
,
20
],
maxBounds
=
QtCore
.
QRectF
(
-
10
,
-
10
,
230
,
140
))
s
.
addItem
(
roi
)
roi2
=
LineROI
([
0
,
0
],
[
20
,
20
],
width
=
5
)
s
.
addItem
(
roi2
)
mlroi
=
MultiLineROI
([[
0
,
50
],
[
50
,
60
],
[
60
,
30
]],
width
=
5
)
s
.
addItem
(
mlroi
)
elroi
=
EllipseROI
([
110
,
10
],
[
30
,
20
])
s
.
addItem
(
elroi
)
croi
=
CircleROI
([
110
,
50
],
[
20
,
20
])
s
.
addItem
(
croi
)
troi
=
PolygonROI
([[
0
,
0
],
[
1
,
0
],
[
0
,
1
]])
s
.
addItem
(
troi
)
def
updateImg
(
roi
):
global
im1
,
im2
,
im3
,
im4
,
arr
arr1
=
roi
.
getArrayRegion
(
arr
,
img
=
im1
)
im3
.
updateImage
(
arr1
,
autoRange
=
True
)
arr2
=
roi
.
getArrayRegion
(
arr
,
img
=
im2
)
im4
.
updateImage
(
arr2
,
autoRange
=
True
)
roi
.
connect
(
roi
,
QtCore
.
SIGNAL
(
'regionChanged'
),
lambda
:
updateImg
(
roi
))
roi2
.
connect
(
roi2
,
QtCore
.
SIGNAL
(
'regionChanged'
),
lambda
:
updateImg
(
roi2
))
croi
.
connect
(
croi
,
QtCore
.
SIGNAL
(
'regionChanged'
),
lambda
:
updateImg
(
croi
))
elroi
.
connect
(
elroi
,
QtCore
.
SIGNAL
(
'regionChanged'
),
lambda
:
updateImg
(
elroi
))
mlroi
.
connect
(
mlroi
,
QtCore
.
SIGNAL
(
'regionChanged'
),
lambda
:
updateImg
(
mlroi
))
v
.
setRange
(
QtCore
.
QRect
(
-
2
,
-
2
,
220
,
220
))
pi1
=
PlotItem
()
s
.
addItem
(
pi1
)
pi1
.
scale
(
0.5
,
0.5
)
pi1
.
setGeometry
(
0
,
170
,
300
,
100
)
lastRoi
=
None
def
updateRoi
(
roi
):
global
im1
,
im2
,
im3
,
im4
,
arr
,
lastRoi
if
roi
is
None
:
return
lastRoi
=
roi
arr1
=
roi
.
getArrayRegion
(
im1
.
image
,
img
=
im1
)
im3
.
updateImage
(
arr1
,
autoRange
=
True
)
arr2
=
roi
.
getArrayRegion
(
im2
.
image
,
img
=
im2
)
im4
.
updateImage
(
arr2
,
autoRange
=
True
)
updateRoiPlot
(
roi
,
arr1
)
def
updateRoiPlot
(
roi
,
data
=
None
):
if
data
is
None
:
data
=
roi
.
getArrayRegion
(
im1
.
image
,
img
=
im1
)
if
data
is
not
None
:
roi
.
curve
.
updateData
(
data
.
mean
(
axis
=
1
))
#def updatePlot(roi)
rois
=
[]
rois
.
append
(
TestROI
([
0
,
0
],
[
20
,
20
],
maxBounds
=
QtCore
.
QRectF
(
-
10
,
-
10
,
230
,
140
),
pen
=
mkPen
(
0
)))
rois
.
append
(
LineROI
([
0
,
0
],
[
20
,
20
],
width
=
5
,
pen
=
mkPen
(
1
)))
rois
.
append
(
MultiLineROI
([[
0
,
50
],
[
50
,
60
],
[
60
,
30
]],
width
=
5
,
pen
=
mkPen
(
2
)))
rois
.
append
(
EllipseROI
([
110
,
10
],
[
30
,
20
],
pen
=
mkPen
(
3
)))
rois
.
append
(
CircleROI
([
110
,
50
],
[
20
,
20
],
pen
=
mkPen
(
4
)))
rois
.
append
(
PolygonROI
([[
2
,
0
],
[
2.1
,
0
],
[
2
,.
1
]],
pen
=
mkPen
(
5
)))
for
r
in
rois
:
s
.
addItem
(
r
)
c
=
pi1
.
plot
(
pen
=
r
.
pen
)
r
.
curve
=
c
r
.
connect
(
r
,
QtCore
.
SIGNAL
(
'regionChanged'
),
updateRoi
)
def
updateImage
():
global
im1
,
arr
,
lastRoi
r
=
abs
(
random
.
normal
(
loc
=
0
,
scale
=
(
arr
.
max
()
-
arr
.
min
())
*
0.1
,
size
=
arr
.
shape
))
im1
.
updateImage
(
arr
+
r
)
updateRoi
(
lastRoi
)
for
r
in
rois
:
updateRoiPlot
(
r
)
t
=
QtCore
.
QTimer
()
t
.
connect
(
t
,
QtCore
.
SIGNAL
(
'timeout()'
),
updateImage
)
t
.
start
(
50
)
w
.
show
()
app
.
exec_
()
functions.py
View file @
39cf791f
...
...
@@ -61,6 +61,8 @@ def mkColor(*args):
(
r
,
g
,
b
,
a
)
=
args
[
0
]
else
:
raise
Exception
(
err
)
if
type
(
args
[
0
])
==
int
:
return
intColor
(
args
[
0
])
else
:
raise
Exception
(
err
)
elif
len
(
args
)
==
3
:
...
...
graphicsItems.py
View file @
39cf791f
...
...
@@ -12,8 +12,11 @@ from PyQt4 import QtGui, QtCore
from
ObjectWorkaround
import
*
#tryWorkaround(QtCore, QtGui)
from
numpy
import
*
import
scipy.weave
as
weave
from
scipy.weave
import
converters
try
:
import
scipy.weave
as
weave
from
scipy.weave
import
converters
except
:
pass
from
scipy.fftpack
import
fft
from
scipy.signal
import
resample
import
scipy.stats
...
...
@@ -509,8 +512,6 @@ class PlotCurveItem(GraphicsObject):
elif
data
.
ndim
==
1
:
y
=
data
if
x
.
shape
!=
y
.
shape
:
raise
Exception
(
"X and Y arrays must be the same shape--got %s and %s."
%
(
str
(
x
.
shape
),
str
(
y
.
shape
)))
self
.
prepareGeometryChange
()
if
copy
:
self
.
yData
=
y
.
copy
()
...
...
@@ -523,8 +524,11 @@ class PlotCurveItem(GraphicsObject):
self
.
xData
=
x
if
x
is
None
:
self
.
xData
=
arange
(
0
,
self
.
y
.
shape
[
0
])
self
.
xData
=
arange
(
0
,
self
.
y
Data
.
shape
[
0
])
if
self
.
xData
.
shape
!=
self
.
yData
.
shape
:
raise
Exception
(
"X and Y arrays must be the same shape--got %s and %s."
%
(
str
(
x
.
shape
),
str
(
y
.
shape
)))
self
.
path
=
None
#self.specPath = None
self
.
xDisp
=
self
.
yDisp
=
None
...
...
widgets.py
View file @
39cf791f
...
...
@@ -33,7 +33,7 @@ def rectStr(r):
class
ROI
(
QtGui
.
QGraphicsItem
,
QObjectWorkaround
):
def
__init__
(
self
,
pos
,
size
=
Point
(
1
,
1
),
angle
=
0.0
,
invertible
=
False
,
maxBounds
=
None
,
snapSize
=
1.0
,
scaleSnap
=
False
,
translateSnap
=
False
,
rotateSnap
=
False
,
parent
=
None
):
def
__init__
(
self
,
pos
,
size
=
Point
(
1
,
1
),
angle
=
0.0
,
invertible
=
False
,
maxBounds
=
None
,
snapSize
=
1.0
,
scaleSnap
=
False
,
translateSnap
=
False
,
rotateSnap
=
False
,
parent
=
None
,
pen
=
None
):
QObjectWorkaround
.
__init__
(
self
)
QtGui
.
QGraphicsItem
.
__init__
(
self
,
parent
)
pos
=
Point
(
pos
)
...
...
@@ -41,7 +41,10 @@ class ROI(QtGui.QGraphicsItem, QObjectWorkaround):
self
.
aspectLocked
=
False
self
.
translatable
=
True
self
.
pen
=
QtGui
.
QPen
(
QtGui
.
QColor
(
255
,
255
,
255
))
if
pen
is
None
:
self
.
pen
=
QtGui
.
QPen
(
QtGui
.
QColor
(
255
,
255
,
255
))
else
:
self
.
pen
=
pen
self
.
handlePen
=
QtGui
.
QPen
(
QtGui
.
QColor
(
150
,
255
,
255
))
self
.
handles
=
[]
self
.
state
=
{
'pos'
:
pos
,
'size'
:
size
,
'angle'
:
angle
}
...
...
@@ -755,14 +758,15 @@ class LineROI(ROI):
class
MultiLineROI
(
QtGui
.
QGraphicsItem
,
QObjectWorkaround
):
def
__init__
(
self
,
points
,
width
,
**
args
):
def
__init__
(
self
,
points
,
width
,
pen
=
None
,
**
args
):
QObjectWorkaround
.
__init__
(
self
)
QtGui
.
QGraphicsItem
.
__init__
(
self
)
self
.
pen
=
pen
self
.
roiArgs
=
args
if
len
(
points
)
<
2
:
raise
Exception
(
"Must start with at least 2 points"
)
self
.
lines
=
[]
self
.
lines
.
append
(
ROI
([
0
,
0
],
[
1
,
5
],
parent
=
self
))
self
.
lines
.
append
(
ROI
([
0
,
0
],
[
1
,
5
],
parent
=
self
,
pen
=
pen
,
**
args
))
self
.
lines
[
-
1
].
addScaleHandle
([
0.5
,
1
],
[
0.5
,
0.5
])
h
=
self
.
lines
[
-
1
].
addScaleRotateHandle
([
0
,
0.5
],
[
1
,
0.5
])
h
.
movePoint
(
points
[
0
])
...
...
@@ -770,7 +774,7 @@ class MultiLineROI(QtGui.QGraphicsItem, QObjectWorkaround):
for
i
in
range
(
1
,
len
(
points
)):
h
=
self
.
lines
[
-
1
].
addScaleRotateHandle
([
1
,
0.5
],
[
0
,
0.5
])
if
i
<
len
(
points
)
-
1
:
self
.
lines
.
append
(
ROI
([
0
,
0
],
[
1
,
5
],
parent
=
self
))
self
.
lines
.
append
(
ROI
([
0
,
0
],
[
1
,
5
],
parent
=
self
,
pen
=
pen
,
**
args
))
self
.
lines
[
-
1
].
addScaleRotateHandle
([
0
,
0.5
],
[
1
,
0.5
],
item
=
h
)
h
.
movePoint
(
points
[
i
])
h
.
movePoint
(
points
[
i
])
...
...
@@ -857,8 +861,8 @@ class CircleROI(EllipseROI):
self
.
addScaleHandle
([
0.5
*
2.
**-
0.5
+
0.5
,
0.5
*
2.
**-
0.5
+
0.5
],
[
0.5
,
0.5
])
class
PolygonROI
(
ROI
):
def
__init__
(
self
,
positions
):
ROI
.
__init__
(
self
,
[
0
,
0
],
[
100
,
100
])
def
__init__
(
self
,
positions
,
**
args
):
ROI
.
__init__
(
self
,
[
0
,
0
],
[
100
,
100
]
,
**
args
)
for
p
in
positions
:
self
.
addFreeHandle
(
p
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment