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.qt_pairwise.ContactWidget: implement Qhull check e362df1f8b87ab7c6a27643cd6f4091b9caec9a3 I am 2022-11-09 21:35:10
wireframe: add Qframe class cf52d85dd1663537cd8c52a98514c7d041913979 I am 2022-11-09 21:34:12
qt_gui.qt_pairwise: add auto arnge and auto levels controls 9bc2cf10a9a1695c2c1a5f6a9959f375d3808a71 I am 2022-11-09 18:16:47
qt_gui.qt_pairwise: set blue -1 by default. Add force_update option in Contact widget 7371575784df7fd41bd76ad29caf38f474a06a26 I am 2022-11-09 15:39:03
qt_gui.qt_pairwise: prepare Contact widget bfa78d7493f5eb04b6bd3a4ad26dd1a92d17a895 I am 2022-11-09 03:36:05
qt_gui.qt_pairwise: prepare more mouse event signals c60e613508480c68483b3d0d6ad6c876b27f539c I am 2022-11-08 01:55:14
qt_gui: introduce reworked matrix view window e28b95c5f418a7a3cea0cb84ca82b40275a71061 I am 2022-11-07 02:20:45
introduce wireframe module for the contacts finding functionality b6068dd92663699859ea7cbf3aac00178d120e0f I am 2022-10-25 14:24:37
voronoi.TwoPoints: atleast_2d() one line fix 9f8bd9e5370ccf30887b6218331ee664788a3b91 I am 2022-10-25 07:09:57
voronoi: implement faster TwoPoints class. c0af78f64bc78a6b8cf06e3ea244339549318b66 I am 2022-10-24 13:03:26
voronoi: implement TwoHorses class. Třída je, bohužel, bezcenná :( 4f6fe186f3f344fa7ee9e518798499099615b466 I am 2022-10-23 10:00:43
voronoi: WIP 23c63ede5bc2ec51d25aed850dc59299db438e34 I am 2022-10-21 12:27:01
IS_stat.sample_alike: use any possible fallback options to sample 80fb6d086e9f17350a1725a319e40bf29591869e I am 2022-10-20 08:56:42
voronoi: WIP ba912d406de12142f2e15a73090118184a0166a4 I am 2022-10-20 02:43:12
IS_stat: add sample_alike() function 2e5394d264b7aaaf5f2486c736ed8cc37afbd030 I am 2022-10-19 13:00:17
voronoi: WIP c3bfa60b6db2042df11528fe95a51d7cc88d3c6b I am 2022-10-19 11:18:13
voronoi: WIP baff3c5ccaf857f60194917fe5d6e33c40b01265 I am 2022-10-19 09:28:33
voronoi.ConvexSpline: little fix of np.sign() for better sleep 968f649e54d97abd596cd60749872fa3ef788c06 I am 2022-10-19 06:28:46
implement even more optimized Convex.. now ConvexSpline class c08511aecb32b880e73c9f10d07feff4dc588e8b I am 2022-10-19 04:11:13
voronoi: WIP cbb61d4544367a67c9a5c3fe6d64a9dc284eb364 I am 2022-10-18 05:05:44
Commit e362df1f8b87ab7c6a27643cd6f4091b9caec9a3 - qt_gui.qt_pairwise.ContactWidget: implement Qhull check
Author: I am
Author date (UTC): 2022-11-09 21:35
Committer name: I am
Committer date (UTC): 2022-11-09 21:35
Parent(s): cf52d85dd1663537cd8c52a98514c7d041913979
Signer:
Signing key:
Signing status: N
Tree: 52b145c85af4553c8c81fc5692f23330014b610a
File Lines added Lines deleted
wellmet/qt_gui/qt_pairwise.py 44 14
File wellmet/qt_gui/qt_pairwise.py changed (mode: 100644) (index 924117b..46b7402)
... ... from pyqtgraph.Qt import QtCore
8 8
9 9 import numpy as np import numpy as np
10 10 from scipy import spatial # for distance matrix from scipy import spatial # for distance matrix
11 from ..wireframe import ConvexSpline
11 from .. import wireframe
12 12 from .. import reader from .. import reader
13 13
14 14
 
... ... class ContactWidget(pg.LayoutWidget):
635 635 def on_nsim_changed(self, n): def on_nsim_changed(self, n):
636 636 try: try:
637 637 del self.condensed_qontacts del self.condensed_qontacts
638 del self.qframe
638 639 except AttributeError: except AttributeError:
639 640 pass pass
640 641 size = n * (n - 1) // 2 size = n * (n - 1) // 2
 
... ... class ContactWidget(pg.LayoutWidget):
659 660 i, j = min(x, y), max(x, y) i, j = min(x, y), max(x, y)
660 661 entry = m * i + j - ((i + 2) * (i + 1)) // 2 entry = m * i + j - ((i + 2) * (i + 1)) // 2
661 662 try: try:
662 val = self.condensed_qontacts[entry]
663 if self.condensed_qontacts[entry]:
664 self.status_label.setText("There is DEFINITELY contact between %d and %d" % (x, y))
665 else:
666 self.status_label.setText("There is definitely NO contact between %d and %d" % (x, y))
663 667 except AttributeError: except AttributeError:
664 668 val = self.condensed_contacts[entry] val = self.condensed_contacts[entry]
665
666 if val > 0:
667 self.status_label.setText("There IS contact between %d and %d" % (x, y))
668 elif val < 0:
669 self.status_label.setText("There is NO contact between %d and %d" % (x, y))
670 else:
671 self.status_label.setText("")
669 if val > 0:
670 self.status_label.setText("There IS contact between %d and %d" % (x, y))
671 elif val < 0:
672 self.status_label.setText("There is NO contact between %d and %d" % (x, y))
673 else:
674 self.status_label.setText("")
672 675
673 676
674 677 def on_mouse_dragged(self, x, y): def on_mouse_dragged(self, x, y):
 
... ... class ContactWidget(pg.LayoutWidget):
807 810 def stop(self): def stop(self):
808 811 self.stopbtn.setChecked(True) self.stopbtn.setChecked(True)
809 812
813 def qframe_callback(self):
814 # keep the GUI responsive :)
815 self.w.app.processEvents()
816
817 self.dlg += 1
818 return self.dlg.wasCanceled()
819
820
821 @staticmethod
822 def get_user_consent():
823 return QtWidgets.QMessageBox.question(None,
824 "Performing triangulation in high dimensions may take a while...",
825 "Would you like to start Qhull anyway?"
826 ) == QtWidgets.QMessageBox.Yes
827
810 828 def check(self): def check(self):
811 pass
829 sample_box = self.w.get_sample_box()
830 if (sample_box.nvar < 10) or self.get_user_consent():
831 sample_space = getattr(sample_box, self.w.space)
832 self.qframe = wireframe.Qframe(sample_space)
833 with pg.ProgressDialog("Going over all the simplices..", 0,
834 self.qframe.nsimplex, cancelText='Stop',
835 busyCursor=True) as dlg:
836 self.dlg = dlg
837 self.qframe.generate_wireframe(self.qframe_callback)
838 self.condensed_qontacts = self.qframe.condensed_contacts
839 self.show()
840
841
812 842
813 843 def clear(self): def clear(self):
814 844 self.condensed_contacts[:] = 0 self.condensed_contacts[:] = 0
 
... ... class ContactWidget(pg.LayoutWidget):
822 852 self.w.image_view.update() self.w.image_view.update()
823 853
824 854 def show(self): def show(self):
825 self.w.image_view.blue[self.mask] = self.condensed_contacts
826 855 try: try:
827 self.w.image_view.blue[self.mask] -= self.condensed_qontacts
856 self.w.image_view.blue[self.mask] = self.condensed_qontacts * 2 - 1
857 self.w.image_view.blue[self.mask] -= self.condensed_contacts
828 858 self.w.image_view.blue[self.mask] /= 2 self.w.image_view.blue[self.mask] /= 2
829 859 except AttributeError: except AttributeError:
830 pass
860 self.w.image_view.blue[self.mask] = self.condensed_contacts
831 861 self.w.image_view.update(autoRange=False) self.w.image_view.update(autoRange=False)
832 862
833 863 def hide(self): def hide(self):
 
... ... class ContactWidget(pg.LayoutWidget):
874 904 def setup_CS(self): def setup_CS(self):
875 905 sample_box = self.w.get_sample_box() sample_box = self.w.get_sample_box()
876 906 sample_space = getattr(sample_box, self.w.space) sample_space = getattr(sample_box, self.w.space)
877 self.CS = ConvexSpline(sample_space)
907 self.CS = wireframe.ConvexSpline(sample_space)
878 908
879 909 if self.param.getValues()['force_update'][0]: if self.param.getValues()['force_update'][0]:
880 910 self.check_contact = self.force_check_contact self.check_contact = self.force_check_contact
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