File wellmet/qt_gui/qt_graph_widgets.py changed (mode: 100644) (index 669c87a..0d4253e) |
... |
... |
class VoronoiEstimationGraph(pg.PlotWidget): |
909 |
909 |
|
|
910 |
910 |
|
|
911 |
911 |
|
|
|
912 |
|
|
|
913 |
|
|
|
914 |
|
|
|
915 |
|
|
|
916 |
|
class GRaph(pg.PlotWidget): |
|
917 |
|
def __init__(self, stream, parent=None, *args, **kwargs): |
|
918 |
|
super().__init__(parent, *args, **kwargs) |
|
919 |
|
#č tím potokem je myšleno hlavní okínko |
|
920 |
|
self.stream = stream |
|
921 |
|
self.stream.box_runned.connect(self.replot) |
|
922 |
|
self.stream.slice_changed.connect(self.replot) |
|
923 |
|
|
|
924 |
|
self.stream.redraw_called.connect(self.redraw) |
|
925 |
|
|
|
926 |
|
|
|
927 |
|
self.redraw() |
|
928 |
|
|
|
929 |
|
|
|
930 |
|
|
|
931 |
|
def redraw(self): |
|
932 |
|
self.clear() |
|
933 |
|
self.setBackground('w') |
|
934 |
|
#size=self.w.px_size*1.5 |
|
935 |
|
pos = () #np.empty((nsim, 4)) |
|
936 |
|
size = self.stream.px_size * 2 |
|
937 |
|
self.failures = self.plot(pos, pen=None, symbol='x', symbolPen='r',\ |
|
938 |
|
symbolSize=size*1.5, name='Failures') # symbolBrush=0.2, |
|
939 |
|
self.failures.setZValue(100) |
|
940 |
|
|
|
941 |
|
self.proxy_failures = self.plot(pos, pen=None, symbol='p', symbolPen=0.5,\ |
|
942 |
|
symbolSize=size, symbolBrush=(217,83,25), name='Proxy failures') |
|
943 |
|
self.proxy_failures.setZValue(95) |
|
944 |
|
|
|
945 |
|
self.successes = self.plot(pos, pen=None, symbol='+', \ |
|
946 |
|
symbolSize=size*1.5, symbolPen='g', name='Successes') |
|
947 |
|
self.successes.setZValue(90) |
|
948 |
|
|
|
949 |
|
self.proxy_successes = self.plot(pos, pen=None, symbol='p', symbolPen=0.5, \ |
|
950 |
|
symbolSize=size, symbolBrush=(119,172,48), name='Proxy successes') |
|
951 |
|
self.proxy_successes.setZValue(85) |
|
952 |
|
|
|
953 |
|
|
|
954 |
|
self.nodes = self.plot(pos, pen=None, symbol='o', symbolPen=0.5, \ |
|
955 |
|
symbolSize=size, name='Nodes') |
|
956 |
|
self.nodes.setZValue(80) |
|
957 |
|
|
|
958 |
|
self.replot() |
|
959 |
|
|
|
960 |
|
|
|
961 |
|
def replot(self): |
|
962 |
|
nsim = self.stream.slider.value() |
|
963 |
|
|
|
964 |
|
sample_box = self.stream.sample_box[:nsim] |
|
965 |
|
|
|
966 |
|
lengths = np.sum(np.square(sample_box.G), axis=1) |
|
967 |
|
lengths = np.sqrt(lengths, out=lengths) #lengths of each radius-vector |
|
968 |
|
|
|
969 |
|
|
|
970 |
|
pos = np.empty((nsim, 2)) |
|
971 |
|
pos[:,0] = np.arange(nsim) |
|
972 |
|
pos[:,1] = lengths |
|
973 |
|
|
|
974 |
|
if hasattr(sample_box, 'failsi'): #č to je normálně sample_box |
|
975 |
|
failsi = sample_box.failsi |
|
976 |
|
|
|
977 |
|
try: # proxy denotes implicitly-known values |
|
978 |
|
proxy = sample_box.proxy.astype(bool) |
|
979 |
|
except AttributeError: |
|
980 |
|
proxy = np.full(nsim, False, dtype=np.bool) |
|
981 |
|
|
|
982 |
|
mask = np.all((failsi, ~proxy), axis=0) |
|
983 |
|
self.draw(self.failures, pos[mask]) |
|
984 |
|
|
|
985 |
|
mask = np.all((~failsi, ~proxy), axis=0) |
|
986 |
|
self.draw(self.successes, pos[mask]) |
|
987 |
|
|
|
988 |
|
mask = np.all((failsi, proxy), axis=0) |
|
989 |
|
self.draw(self.proxy_failures, pos[mask]) |
|
990 |
|
|
|
991 |
|
mask = np.all((~failsi, proxy), axis=0) |
|
992 |
|
self.draw(self.proxy_successes, pos[mask]) |
|
993 |
|
|
|
994 |
|
else: #č není to teda sample_box... |
|
995 |
|
#č snad se nám povede nakreslit aspoň tečky? |
|
996 |
|
self.draw(self.nodes, pos) |
|
997 |
|
|
|
998 |
|
|
|
999 |
|
@staticmethod |
|
1000 |
|
def draw(plot_item, data): |
|
1001 |
|
#č musím to udělat takhle |
|
1002 |
|
#č jinač to zlobí při posunutích slajderu |
|
1003 |
|
if len(data): |
|
1004 |
|
plot_item.setData(data) |
|
1005 |
|
plot_item.show() |
|
1006 |
|
else: |
|
1007 |
|
plot_item.hide() |
|
1008 |
|
|
File wellmet/qt_gui/qt_gui.py changed (mode: 100644) (index 833fe65..a1c82db) |
... |
... |
class QtGuiWindow(QtGui.QMainWindow): |
271 |
271 |
self.dockables.append(dock) |
self.dockables.append(dock) |
272 |
272 |
self.tabifyDockWidget(self.dockables[0], dock) |
self.tabifyDockWidget(self.dockables[0], dock) |
273 |
273 |
|
|
274 |
|
|
|
275 |
274 |
dock = QtGui.QDockWidget("Voronoi estimation graph", self) |
dock = QtGui.QDockWidget("Voronoi estimation graph", self) |
276 |
275 |
dock.setWidget(qt_graph_widgets.VoronoiEstimationGraph(self.sample_box, self, dock)) |
dock.setWidget(qt_graph_widgets.VoronoiEstimationGraph(self.sample_box, self, dock)) |
277 |
276 |
self.dockables.append(dock) |
self.dockables.append(dock) |
278 |
277 |
self.tabifyDockWidget(self.dockables[0], dock) |
self.tabifyDockWidget(self.dockables[0], dock) |
279 |
|
|
|
|
278 |
|
|
|
279 |
|
dock = QtGui.QDockWidget("GRaph", self) |
|
280 |
|
dock.setWidget(qt_graph_widgets.GRaph(self, dock)) |
|
281 |
|
self.dockables.append(dock) |
|
282 |
|
self.tabifyDockWidget(self.dockables[0], dock) |
280 |
283 |
|
|
281 |
284 |
|
|
282 |
285 |
|
|
|
... |
... |
class QtGuiWindow(QtGui.QMainWindow): |
486 |
489 |
|
|
487 |
490 |
def add_random_points(self): |
def add_random_points(self): |
488 |
491 |
ns, ok = QtGui.QInputDialog.getInt( |
ns, ok = QtGui.QInputDialog.getInt( |
489 |
|
self,"Add random points","number", value=1, min=1) |
|
|
492 |
|
self,"Add random points","number", value=1, min=1) |
490 |
493 |
if ok: |
if ok: |
491 |
494 |
wt = self.sample_box |
wt = self.sample_box |
492 |
495 |
nodes = wt.f_model(ns) |
nodes = wt.f_model(ns) |
|
... |
... |
class QtGuiWindow(QtGui.QMainWindow): |
496 |
499 |
def batch_run(self): |
def batch_run(self): |
497 |
500 |
#pg.QtGui.QInputDialog.getInt( |
#pg.QtGui.QInputDialog.getInt( |
498 |
501 |
runs, ok = QtGui.QInputDialog.getInt( |
runs, ok = QtGui.QInputDialog.getInt( |
499 |
|
self,"Batch run","runs", value=100, min=1) |
|
|
502 |
|
self,"Batch run","runs", value=100, min=1) |
500 |
503 |
|
|
501 |
504 |
if ok: |
if ok: |
502 |
505 |
with pg.ProgressDialog("Running..", 0, runs,\ |
with pg.ProgressDialog("Running..", 0, runs,\ |
503 |
|
cancelText='Stop', busyCursor=True) as dlg: |
|
|
506 |
|
cancelText='Stop', busyCursor=True) as dlg: |
504 |
507 |
for i in range(runs): |
for i in range(runs): |
505 |
508 |
# keep the GUI responsive :) |
# keep the GUI responsive :) |
506 |
509 |
self.app.processEvents() |
self.app.processEvents() |