iam-git / WellMet (public) (License: MIT) (since 2021-08-31) (hash sha1)
WellMet is pure Python framework for spatial structural reliability analysis. Or, more specifically, for "failure probability estimation and detection of failure surfaces by adaptive sequential decomposition of the design domain".
List of commits:
Subject Hash Author Date (UTC)
qt_gui: add radia in Gaussian space (GRaph) widget e3f5be57dcdc6bdd06cda0594ffd795ef5bc8ccc I am 2022-10-07 01:15:38
testcases.testcases_2d: fix natafm_plane pf 75006ccd448c9717c13659e8ceb68800fbda39a7 I am 2022-06-26 12:03:39
misc: add entropy formula 72736d485b4f0fa912a47a49f72954e1ec06c03f I am 2022-06-26 12:02:52
testcases.gaussian_2D: one more product... e835ab15321169c2da085a6bb74e1ed749e67f14 I am 2022-05-11 15:38:24
whitebox: add explicitly solved Gaussian 2D product distribution 23d243baed0b7b71ba887444665420d673dc3fe9 I am 2022-05-11 15:37:19
whitebox: simplify Bessel solutions d097f681f9c96d7f8c6e0c044479681bae110e98 I am 2022-05-08 03:33:44
reorganize the repo 5226fda5d5cba79b6d3471540a4a5f47109d0061 I am 2022-04-30 17:11:21
remore user stuff from the repo ffd15c3d866496bccc5358797d71f2783118235c I am 2022-04-30 16:49:03
dicebox.Goal.get_pf_estimation: fix global stats 423b68cea2d15fce8cf4a157de0160bf26987088 I am 2022-04-21 12:38:48
ghull.Shell_1DS: use geomspace placing if r is large enough. Asi funguje ac4735a382524b05a76e258d774b0e5c0bfd0ec4 I am 2022-04-21 12:37:04
testcases.testcases_2D: add beta_circle_2D case f59387e9981217fde69ba4d87a05ca4017fb5159 I am 2022-04-21 11:40:17
mplot.mart: make isodensities more reliable e18d78f623ef5893a9ecf9cb7e6309de7df7352c I am 2022-04-13 06:18:50
misc: add get_isodistances() function ee82e4a69e51c6fa6a19e1715f71173907f9c4af I am 2022-04-13 06:16:05
testcases.testcases_2D: add natafm_plane_2D case 65f6f76b97f340123083369a9f705673e9e6eb30 I am 2022-04-12 21:38:36
qt_gui.qt_dicebox: add Razitko box tab, simplify setup widget e502adfa6458c63f18b81410c0a923aeee610641 I am 2022-04-11 05:41:07
dicebox: backport assess_candidates() to Chrt 62628b5b5f0f2da1f37c504175e4b7678ff94e8e I am 2022-04-11 05:39:40
dicebox.Goal: add chee and chee2 potentials 1b7e1af9932a9761652b57f2445daa7612f8f09e I am 2022-04-11 00:34:30
ghull.Ghull: fix NaN in get_r() method 654d4d32ebf8d14f88bc78dbee27567e9aa9564e I am 2022-04-10 16:06:24
estimation: nahradit zastaralou hlavičku 00b7aa07abc3072261da2cc7ba775d5228eefdf7 I am 2022-04-04 03:34:36
testcases.testcases_2D: add more nataf ceses ff4873afb1722500e3faed3c7a7f2552496b6e08 I am 2022-04-02 18:48:42
Commit e3f5be57dcdc6bdd06cda0594ffd795ef5bc8ccc - qt_gui: add radia in Gaussian space (GRaph) widget
Author: I am
Author date (UTC): 2022-10-07 01:15
Committer name: I am
Committer date (UTC): 2022-10-07 01:15
Parent(s): 75006ccd448c9717c13659e8ceb68800fbda39a7
Signer:
Signing key:
Signing status: N
Tree: dd9cc84e547e8e5f35b4ec86fd83f5e2bff12bff
File Lines added Lines deleted
wellmet/qt_gui/qt_graph_widgets.py 97 0
wellmet/qt_gui/qt_gui.py 8 5
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()
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/iam-git/WellMet

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/iam-git/WellMet

Clone this repository using git:
git clone git://git.rocketgit.com/user/iam-git/WellMet

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main