PaIRS-UniNa 0.2.0__cp310-cp310-win_amd64.whl → 0.2.8__cp310-cp310-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- PaIRS_UniNa/Calibration_Tab.py +39 -23
- PaIRS_UniNa/Changes.txt +127 -8
- PaIRS_UniNa/Custom_Top.py +12 -9
- PaIRS_UniNa/Explorer.py +534 -165
- PaIRS_UniNa/FolderLoop.py +562 -0
- PaIRS_UniNa/Input_Tab.py +261 -100
- PaIRS_UniNa/Input_Tab_CalVi.py +24 -25
- PaIRS_UniNa/Input_Tab_tools.py +967 -405
- PaIRS_UniNa/Output_Tab.py +324 -130
- PaIRS_UniNa/PaIRS_PIV.py +58 -1
- PaIRS_UniNa/PaIRS_pypacks.py +1415 -1039
- PaIRS_UniNa/Process_Tab.py +15 -19
- PaIRS_UniNa/Process_Tab_Disp.py +12 -5
- PaIRS_UniNa/Saving_tools.py +27 -13
- PaIRS_UniNa/TabTools.py +176 -59
- PaIRS_UniNa/Vis_Tab.py +664 -256
- PaIRS_UniNa/Vis_Tab_CalVi.py +114 -45
- PaIRS_UniNa/Whatsnew.py +58 -9
- PaIRS_UniNa/_PaIRS_PIV.pyd +0 -0
- PaIRS_UniNa/__init__.py +4 -3
- PaIRS_UniNa/addwidgets_ps.py +150 -63
- PaIRS_UniNa/calib.py +6 -3
- PaIRS_UniNa/calibView.py +19 -6
- PaIRS_UniNa/gPaIRS.py +1397 -543
- PaIRS_UniNa/icons/align_all.png +0 -0
- PaIRS_UniNa/icons/announcement.png +0 -0
- PaIRS_UniNa/icons/bugfix.png +0 -0
- PaIRS_UniNa/icons/change_folder.png +0 -0
- PaIRS_UniNa/icons/change_folder_off.png +0 -0
- PaIRS_UniNa/icons/close_all.png +0 -0
- PaIRS_UniNa/icons/copy_process_off.png +0 -0
- PaIRS_UniNa/icons/flaticon_PaIRS_beta.png +0 -0
- PaIRS_UniNa/icons/flaticon_PaIRS_download_warning.png +0 -0
- PaIRS_UniNa/icons/folder_loop_cleanup.png +0 -0
- PaIRS_UniNa/icons/folder_loop_cleanup_off.png +0 -0
- PaIRS_UniNa/icons/linked.png +0 -0
- PaIRS_UniNa/icons/logo_opaco.png +0 -0
- PaIRS_UniNa/icons/open_image.png +0 -0
- PaIRS_UniNa/icons/open_new_window.png +0 -0
- PaIRS_UniNa/icons/open_result.png +0 -0
- PaIRS_UniNa/icons/process_loop.png +0 -0
- PaIRS_UniNa/icons/pylog.png +0 -0
- PaIRS_UniNa/icons/python_warning.png +0 -0
- PaIRS_UniNa/icons/queue.png +0 -0
- PaIRS_UniNa/icons/restore_undo.png +0 -0
- PaIRS_UniNa/icons/save_and_stop.png +0 -0
- PaIRS_UniNa/icons/scale_all.png +0 -0
- PaIRS_UniNa/icons/scale_down.png +0 -0
- PaIRS_UniNa/icons/scale_up.png +0 -0
- PaIRS_UniNa/icons/scan_path_loop.png +0 -0
- PaIRS_UniNa/icons/scan_path_loop_off.png +0 -0
- PaIRS_UniNa/icons/show_all.png +0 -0
- PaIRS_UniNa/icons/star.png +0 -0
- PaIRS_UniNa/icons/step_inheritance.png +0 -0
- PaIRS_UniNa/icons/subMIN_on.png +0 -0
- PaIRS_UniNa/icons/unedited.png +0 -0
- PaIRS_UniNa/icons/uninitialized.png +0 -0
- PaIRS_UniNa/icons/window.png +0 -0
- PaIRS_UniNa/listLib.py +3 -2
- PaIRS_UniNa/parForMulti.py +7 -5
- PaIRS_UniNa/parForWorkers.py +174 -140
- PaIRS_UniNa/pivParFor.py +9 -11
- PaIRS_UniNa/preProcParFor.py +4 -4
- PaIRS_UniNa/procTools.py +120 -44
- PaIRS_UniNa/rqrdpckgs.txt +9 -0
- PaIRS_UniNa/stereoPivParFor.py +16 -22
- PaIRS_UniNa/tabSplitter.py +17 -7
- PaIRS_UniNa/ui_Input_Tab.py +56 -57
- PaIRS_UniNa/ui_Input_Tab_CalVi.py +71 -64
- PaIRS_UniNa/ui_Log_Tab.py +8 -6
- PaIRS_UniNa/ui_Output_Tab.py +180 -4
- PaIRS_UniNa/ui_Process_Tab.py +19 -19
- PaIRS_UniNa/ui_Process_Tab_Disp.py +181 -10
- PaIRS_UniNa/ui_Vis_Tab.py +332 -196
- PaIRS_UniNa/ui_Whatsnew.py +13 -13
- PaIRS_UniNa/ui_gPairs.py +140 -71
- PaIRS_UniNa/ui_infoPaIRS.py +156 -31
- PaIRS_UniNa/whatsnew.txt +6 -4
- {PaIRS_UniNa-0.2.0.dist-info → pairs_unina-0.2.8.dist-info}/METADATA +62 -26
- {PaIRS_UniNa-0.2.0.dist-info → pairs_unina-0.2.8.dist-info}/RECORD +82 -54
- {PaIRS_UniNa-0.2.0.dist-info → pairs_unina-0.2.8.dist-info}/WHEEL +1 -1
- PaIRS_UniNa/icons/order.png +0 -0
- PaIRS_UniNa/icons/order_reverse.png +0 -0
- PaIRS_UniNa/icons/run_piv.png +0 -0
- PaIRS_UniNa/stereo.py +0 -685
- PaIRS_UniNa/ui_infoCalVi.py +0 -428
- PaIRS_UniNa-0.2.0.dist-info/LICENSE +0 -19
- {PaIRS_UniNa-0.2.0.dist-info → pairs_unina-0.2.8.dist-info}/top_level.txt +0 -0
PaIRS_UniNa/Calibration_Tab.py
CHANGED
|
@@ -32,7 +32,8 @@ class CALpar(TABpar):
|
|
|
32
32
|
self.Step = Step
|
|
33
33
|
|
|
34
34
|
self.FlagCalVi = False
|
|
35
|
-
self.ncam = 1
|
|
35
|
+
self.ncam = 2 if Process==ProcessTypes.spiv else 1
|
|
36
|
+
self.FlagCam = False if Process==ProcessTypes.spiv else True
|
|
36
37
|
self.calList = []
|
|
37
38
|
self.calEx = []
|
|
38
39
|
self.row = -1
|
|
@@ -60,10 +61,6 @@ class Calibration_Tab(gPaIRS_Tab):
|
|
|
60
61
|
self.app=app
|
|
61
62
|
setAppGuiPalette(self)
|
|
62
63
|
|
|
63
|
-
#------------------------------------- Graphical interface: miscellanea
|
|
64
|
-
self.pixmap_warnc = QPixmap(u""+ icons_path +"warning_circle.png")
|
|
65
|
-
self.pixmap_done = QPixmap(u""+ icons_path +"completed.png")
|
|
66
|
-
|
|
67
64
|
#------------------------------------- Declaration of parameters
|
|
68
65
|
self.CALpar_base=CALpar()
|
|
69
66
|
self.CALpar:CALpar=self.TABpar
|
|
@@ -82,7 +79,8 @@ class Calibration_Tab(gPaIRS_Tab):
|
|
|
82
79
|
|
|
83
80
|
self.adjustTABpar=self.adjustCALpar
|
|
84
81
|
self.setTABlayout=self.setCALlayout
|
|
85
|
-
|
|
82
|
+
self.checkTABpar=self.checkCALpar
|
|
83
|
+
self.setTABwarn=self.setCALwarn
|
|
86
84
|
|
|
87
85
|
#------------------------------------- Initializing
|
|
88
86
|
if flagInit:
|
|
@@ -99,15 +97,28 @@ class Calibration_Tab(gPaIRS_Tab):
|
|
|
99
97
|
def adjustCALpar(self):
|
|
100
98
|
if self.CALpar.Process==ProcessTypes.spiv:
|
|
101
99
|
self.CALpar.ncam=2
|
|
100
|
+
self.CALpar.FlagCam=False
|
|
102
101
|
self.ui.calTree.ncam=self.CALpar.ncam
|
|
103
102
|
|
|
104
|
-
self.
|
|
103
|
+
self.checkCALpar()
|
|
105
104
|
return
|
|
105
|
+
|
|
106
|
+
def checkCALpar(self,ind=None,FlagRescan=False):
|
|
107
|
+
if ind is None: CAL:CALpar=self.CALpar
|
|
108
|
+
else: CAL:CALpar=self.TABpar_at(ind)
|
|
109
|
+
if FlagRescan: self.scanCalList(ind)
|
|
110
|
+
CAL.OptionDone = 1 if all(CAL.calEx) and len(CAL.calList)==CAL.ncam else 0
|
|
111
|
+
|
|
112
|
+
def scanCalList(self,ind=None):
|
|
113
|
+
if ind is None: CAL:CALpar=self.CALpar
|
|
114
|
+
else: CAL:CALpar=self.TABpar_at(ind)
|
|
115
|
+
for c in range(len(CAL.calList)): #CAL.ncam
|
|
116
|
+
CAL.calEx[c]=os.path.exists(CAL.calList[c])
|
|
106
117
|
|
|
107
118
|
#*************************************************** Layout
|
|
108
119
|
def setCALlayout(self):
|
|
109
120
|
self.ui.label_ncam.adjustSize()
|
|
110
|
-
self.ui.spin_ncam.setEnabled(self.CALpar.
|
|
121
|
+
self.ui.spin_ncam.setEnabled(self.CALpar.FlagCam)
|
|
111
122
|
|
|
112
123
|
self.calibration_list_set()
|
|
113
124
|
|
|
@@ -125,22 +136,27 @@ class Calibration_Tab(gPaIRS_Tab):
|
|
|
125
136
|
|
|
126
137
|
self.ui.button_CalVi.setVisible(self.CALpar.flagRun==0)
|
|
127
138
|
|
|
128
|
-
|
|
129
|
-
|
|
139
|
+
self.checkCALpar()
|
|
140
|
+
self.setCALwarn()
|
|
141
|
+
self.setTABWarnLabel()
|
|
142
|
+
return
|
|
143
|
+
|
|
144
|
+
def setCALwarn(self,ind=None):
|
|
145
|
+
if ind is None: CAL:CALpar=self.CALpar
|
|
146
|
+
else: CAL:CALpar=self.TABpar_at(ind)
|
|
147
|
+
if CAL.OptionDone==1:
|
|
148
|
+
CAL.warningMessage='Calibration files correctly identified!'
|
|
130
149
|
else:
|
|
131
150
|
warningMessage=''
|
|
132
|
-
nFiles=len(
|
|
133
|
-
if nFiles<
|
|
134
|
-
warningMessage+=f'Number of calibration files ({nFiles}) lower than number of cameras specified ({
|
|
135
|
-
if not all(
|
|
136
|
-
n=sum([1 if not ex else 0 for ex in
|
|
137
|
-
if warningMessage: warningMessage
|
|
138
|
-
warningMessage+=f'{n} out of {
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
self.ui.label_done.setPixmap(self.pixmap_done if self.CALpar.OptionDone==1 else self.pixmap_warnc)
|
|
142
|
-
self.ui.label_done.setToolTip(self.CALpar.warningMessage)
|
|
143
|
-
return
|
|
151
|
+
nFiles=len(CAL.calList)
|
|
152
|
+
if nFiles<CAL.ncam:
|
|
153
|
+
warningMessage+=f'Number of calibration files ({nFiles}) lower than number of cameras specified ({CAL.ncam})!'
|
|
154
|
+
if not all(CAL.calEx):
|
|
155
|
+
n=sum([1 if not ex else 0 for ex in CAL.calEx])
|
|
156
|
+
if warningMessage: warningMessage='\n* '
|
|
157
|
+
warningMessage+=f'{n} out of {CAL.ncam} calibration files missing!'
|
|
158
|
+
if '\n* ' in warningMessage: warningMessage='* '+warningMessage
|
|
159
|
+
CAL.warningMessage=warningMessage
|
|
144
160
|
|
|
145
161
|
#*************************************************** Spin ncam
|
|
146
162
|
#******************** Actions
|
|
@@ -158,7 +174,7 @@ class Calibration_Tab(gPaIRS_Tab):
|
|
|
158
174
|
|
|
159
175
|
def button_import_action(self):
|
|
160
176
|
filenames, _ = QFileDialog.getOpenFileNames(self,\
|
|
161
|
-
"Select
|
|
177
|
+
"Select calibration files from the current directory", filter='*.cal',\
|
|
162
178
|
options=optionNativeDialog)
|
|
163
179
|
if filenames:
|
|
164
180
|
self.ui.calTree.hide()
|
PaIRS_UniNa/Changes.txt
CHANGED
|
@@ -1,23 +1,142 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
********* Changes in version 0.2.8 (2025.11.14) **********
|
|
2
|
+
Bug fixes:
|
|
3
|
+
- corrected a bug in the z-vorticity computation: velocity gradients were not properly converted to physical units, causing an error in the magnitude scales though not in the qualitative distributions;
|
|
4
|
+
- corrected the display of maps of output variables and vector fields in Vis to ensure proper alignment across option changes;
|
|
5
|
+
- fixed issues related to path handling in the batch-folder copy and other modules: paths are no longer relativized, avoiding inconsistent behavior across different operating systems or different.
|
|
3
6
|
|
|
4
|
-
|
|
7
|
+
New features:
|
|
8
|
+
- added new options in the batch folder-copy tool to automatically remove image pairs where one or more files are missing in the destination folders and to fully re-scan the destination folders for cases in which mismatches in the image sets may occur;
|
|
9
|
+
- extended the existing functionality in Vis for loading and visualizing past results located under the specified output path and name root: when available, the corresponding saved log file is now automatically loaded and displayed in the Log tab.
|
|
5
10
|
|
|
6
|
-
|
|
11
|
+
User-interface enhancements:
|
|
12
|
+
- improved the naming logic for duplicated processes: copied processes are now assigned consistent incremental suffixes;
|
|
13
|
+
- improved the example-image tree and the behavior of the step spin box in the Image Import Tool (minimum step is now 1);
|
|
14
|
+
- refined the behavior of the import button: it is now always enabled, and when no changes in the image list are detected upon importing, the user simply receives a warning message;
|
|
15
|
+
- improved the behaviour of the list of path completers in the Input tabs;
|
|
16
|
+
- in Vis, resizing settings and automatic level-reset options are no longer global but apply individually per each step.
|
|
7
17
|
|
|
8
|
-
The Input tab introduces a completely renewed image import list, offering users total freedom without the constraints of the past.
|
|
9
18
|
|
|
10
|
-
|
|
19
|
+
********* Changes in version 0.2.7 (2025.10.13) **********
|
|
20
|
+
Bug fixes:
|
|
21
|
+
- resolved an issue related to visulazion of streamlines when the image is shown in pixel units and a custom resolution is specified (in previous versions, streamlines were always represented in physical units);
|
|
22
|
+
- corrected the update of reprojection errors in CalVi when the control point grid is expanded after a calibration. Each new control point now has its error recalculated and plotted, providing a correct view of the extrapolation error;
|
|
23
|
+
- fixed the automatic resize/reshape behavior specified in the Output tab: when an image transformation is assigned, it is now preserved even if the automatic reshape button is active.
|
|
11
24
|
|
|
25
|
+
User-interface enhancements:
|
|
26
|
+
- changed the behavior of the Vis button for restricting view on the interrogation window area: clicking it now opens a popup menu that allows users to select the desired interrogation-window size to focus on among all iterations of the process;
|
|
27
|
+
- names of processes duplicated in the process tree are now automatically updated to avoid conflicts: if a name already exists, the new one is appended with an incremental suffix;
|
|
28
|
+
- improved interaction with editable input fields: when hovering the highlighted style is displayed correctly, the text cursor now appears exactly where clicked and the background color is properly restored when leaving the field.
|
|
12
29
|
|
|
13
30
|
|
|
14
|
-
|
|
31
|
+
|
|
32
|
+
********* Changes in version 0.2.6 (2025.09.06) **********
|
|
33
|
+
Bug fixes:
|
|
34
|
+
- fixed bugs related to process tree management.
|
|
35
|
+
|
|
36
|
+
User-interface enhancements:
|
|
37
|
+
- enhanced release check using SSL for reliable retrieval of the latest version.
|
|
38
|
+
|
|
39
|
+
Distribution:
|
|
40
|
+
- ready-to-use executables of PaIRS are now available!
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
********* Changes in version 0.2.5 (2025.07.28) **********
|
|
45
|
+
Bug fixes:
|
|
46
|
+
- fixed bugs in launching PIV and stereoscopic PIV processes in special cases;
|
|
47
|
+
- fixed tooltip crash introduced by PySide 6.9;
|
|
48
|
+
- corrected package import errors and context menu bugs;
|
|
49
|
+
- resolved multiple visual glitches in image tree selection and map visualization.
|
|
50
|
+
|
|
51
|
+
New features:
|
|
52
|
+
- implemented version control of required Python packages with automatic compatibility check and warning;
|
|
53
|
+
- disparity maps are now automatically saved in the output folder and can be visualized in Vis;
|
|
54
|
+
- added support for restricting view in Vis based on interrogation window size and shifting the view window interactively.
|
|
55
|
+
|
|
56
|
+
User-interface enhancements:
|
|
57
|
+
- redesigned the execution logic of internal workers for improved control and robustness;
|
|
58
|
+
- improved formatting and display of coordinates and variable values when moving the cursor during map visualization;
|
|
59
|
+
- updated button labels and layout for clarity and consistency.
|
|
60
|
+
|
|
61
|
+
Distribution:
|
|
62
|
+
- Support for Python 3.9 has been discontinued;
|
|
63
|
+
- Python 3.13 builds have been successfully created and tested in Windows.
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
********* Changes in version 0.2.4 (2024.12.01) **********
|
|
68
|
+
Bug fixes:
|
|
69
|
+
- fixed critical bugs in process handling and calibration step (CalVi usage, closing PaIRS during CalVi operation, resetting steps while running);
|
|
70
|
+
- resolved issues with velocity field visualization and stereo-PIV streamline representation;
|
|
71
|
+
- fixed undo/redo functionality, image tree selection issues, logging errors and focus-out signal handling.
|
|
72
|
+
|
|
73
|
+
New features:
|
|
74
|
+
- extended Vis features, including reference frame system plotting and vorticity field visualization;
|
|
75
|
+
- introduced the ability to copy input and output information from other steps within the same process;
|
|
76
|
+
- introduced functionality to interrupt processing before it starts if issues are detected.
|
|
77
|
+
|
|
78
|
+
Performance improvements:
|
|
79
|
+
- optimized thread usage and resource management for PIV and stereo-PIV;
|
|
80
|
+
- streamlined process workflows, including faster and more reliable parameter updates.
|
|
81
|
+
|
|
82
|
+
User-interface enhancements:
|
|
83
|
+
- updated the CalVi Stop button to function as Save and improved its conditional display;
|
|
84
|
+
- improved handling of project/process information and added better feedback for user actions.
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
********* Changes in version 0.2.3 (2024.11.06) **********
|
|
89
|
+
- Fixed bug in the functionality for replicating processes with changed input folders introduced in version v0.2.2.
|
|
90
|
+
|
|
91
|
+
- Fixed bug in the compatibility check for the common region in disparity and stereoscopic PIV analysis steps.
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
********* Changes in version 0.2.2 (2024.10.15) **********
|
|
96
|
+
- [!!! Critical !!!] Fixed critical errors in the calculation of Reynolds stresses for stereoscopic PIV processes. Please consider reviewing the results from processes executed with version 0.2.1, as the w'w', u'w', and v'w' stresses were incorrectly calculated.
|
|
97
|
+
|
|
98
|
+
- Introduced the "Laser Equation Plane" box in the Output tab to specify the initial attempt in the disparity step or to independently assign the constant values of the laser plane during the stereoscopic PIV step.
|
|
99
|
+
|
|
100
|
+
- Introduced the "Copy process to loop over folders" button in the process tree. The latter allows the user to select multiple folders from the disk and replicate the process in the tree for each folder, automatically updating the input image path (specified in the Input tab) to match the path of each selected folder. This makes it extremely easy and fast to create a queue of processes for folders containing similar image sets.
|
|
101
|
+
|
|
102
|
+
- Resolved various bugs related to the copy and link functions of steps within the process tree. Buttons have been relocated to the Explorer, and additional functionality has been added to the context menu of the process tree items.
|
|
103
|
+
|
|
104
|
+
- Improved stability and interface performance.
|
|
105
|
+
|
|
106
|
+
- The guide of PaIRS-UniNa v0.2 is now available. Discover all the information you need for advanced software usage at https://www.pairs.unina.it/web/PaIRS-UniNa-v020-Guide.pdf.
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
********* Changes in version 0.2.1 (2024.07.08) **********
|
|
111
|
+
- Fixed bugs for Python 3.11 and 3.12.
|
|
112
|
+
|
|
113
|
+
- Fixed bugs related to use of historical minimum background image in disparity and image analysis steps.
|
|
114
|
+
|
|
115
|
+
- Fixed minor bugs.
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
********** Changes in 0.2.0 (2024.07.03) **********
|
|
120
|
+
- The latest version of PaIRS marks a departure from its predecessors. PaIRS now boasts a completely redesigned interface aimed at quick, simple, and efficient usability. Users bid farewell to Past, Present, and Future trees in favor of a new, more intuitive process management system (the Explorer): processes are organized into groups called projects and each project or process can be queued for later execution. Processes within each project can be modified until they are launched, and if necessary, reset and restarted from scratch. Each project also features a tree of deleted processes, allowing retrieval of outdated or abandoned processes.
|
|
121
|
+
|
|
122
|
+
- Currently, PaIRS includes four types of processes: preprocessing, PIV (Particle Image Velocimetry), calibration, and stereoscopic PIV. Each of these processes consists of one or more steps, which can be optional or mandatory. Similar to the first version of PaIRS, these steps are editable via PaIRS iconic tabs (Input, Output, Process, etc.). The process tree provides immediate visibility into the status of each step, further streamlining management.
|
|
123
|
+
|
|
124
|
+
- The calibration process grants access to CalVi (Calibration Visualizer). It is no longer necessary to launch the PaIRS calibration tool separately; everything is conveniently available within a single interface.
|
|
125
|
+
|
|
126
|
+
- The Input tab introduces a completely renewed image import list, offering users total freedom without the constraints of the past.
|
|
127
|
+
|
|
128
|
+
- Additionally, the Vis tab introduces some exciting new features, such as the ability to modify colormaps and vector/streamline colors, along with improved handling of image/result loading.
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
********** Changes in version 0.1.13 (2024.02.07) **********
|
|
15
133
|
- Fixed bugs related to navigation across the Past, Present and Future trees in the Queue tab.
|
|
134
|
+
|
|
16
135
|
- Minor changes in Vis.
|
|
17
136
|
|
|
18
137
|
|
|
19
138
|
|
|
20
|
-
********** Changes
|
|
139
|
+
********** Changes in version 0.1.12 (2024.02.02) **********
|
|
21
140
|
- PaIRS now includes the possibility to customize the windowing parameters for each iteration of a PIV process. The user can choose the windowing parameters for each iteration in the initial phase of the PIV process. This is possible by operating in the Windowing box at the bottom of the Process tab (visible only in the expert mode). A table widget has been added to this section, where the user can find all relevant information the windowing scheme for the PIV process and modify it iteration by iteration. By selecting the corresponding row of the table, the user can choose for the current iteration the type of weighting window to be used in the calculation of the absolute velocity and in the determination of the correlation map, if using the direct correlations or not and the maximum displacement allowed in the interrogation window. The latter parameter is an innovation of the present version itself and adds to the custom settings selectable by the user to build affordable validation strategies. In addition, in the table an indication about the stability of the windowing scheme for each iteration is reported. In conclusion, a larger degree of customization of the PIV process comes with the present modification of PaIRS.
|
|
22
141
|
|
|
23
142
|
- CalVi now fully supports optical camera calibration for transparent cylindrical geometries. In the version 0.1.10 this camera model was available only in debug mode for beta testers and developers, now it is fully working. The calibration of this camera model is however a delicate task and the user is referred to the CalVi guide for reliable experimental procedures that could be used in this direction.
|
PaIRS_UniNa/Custom_Top.py
CHANGED
|
@@ -212,16 +212,19 @@ class Custom_Top(QDialog):
|
|
|
212
212
|
item.setData(0,Qt.UserRole,item.text(0))
|
|
213
213
|
|
|
214
214
|
def saveCustomList(self):
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
215
|
+
try:
|
|
216
|
+
with open(self.custom_list_file,'w') as file:
|
|
217
|
+
for c in self.custom_list:
|
|
218
|
+
file.write(c+'\n')
|
|
219
|
+
file.close()
|
|
220
|
+
except:
|
|
221
|
+
pri.Error.red(f'Error while trying to save the custom process list: {self.custom_list_file}.\n{traceback.format_exc()}\n')
|
|
219
222
|
|
|
220
223
|
|
|
221
224
|
def loadPastProc(self,*args):
|
|
222
225
|
if len(args): inpath=args[0]
|
|
223
226
|
else: inpath='./'
|
|
224
|
-
ext_pro=f'*{outExt.min}
|
|
227
|
+
ext_pro=f'*{outExt.min} *{outExt.piv} *.cfg'
|
|
225
228
|
filename, _ = QFileDialog.getOpenFileName(self,\
|
|
226
229
|
"Select an image file of the sequence", filter=ext_pro,\
|
|
227
230
|
dir=inpath,\
|
|
@@ -235,7 +238,7 @@ class Custom_Top(QDialog):
|
|
|
235
238
|
data=pickle.load(file)
|
|
236
239
|
PROpar=data.PRO
|
|
237
240
|
except Exception as inst:
|
|
238
|
-
pri.Error.red(f'Error while loading past process:\n{traceback.
|
|
241
|
+
pri.Error.red(f'Error while loading past process:\n{traceback.format_exc()}\n\n{inst}\n')
|
|
239
242
|
WarningMessage=f'Error while importing {filename}. Perhaps, the file is corrupted.'
|
|
240
243
|
warningDialog(self,WarningMessage)
|
|
241
244
|
return
|
|
@@ -244,7 +247,7 @@ class Custom_Top(QDialog):
|
|
|
244
247
|
p=PaIRS_lib.PIV()
|
|
245
248
|
p.readCfgProc(filename)
|
|
246
249
|
except Exception as inst:
|
|
247
|
-
pri.Error.red(f'Error while loading the cfg file {filename}:\n{traceback.
|
|
250
|
+
pri.Error.red(f'Error while loading the cfg file {filename}:\n{traceback.format_exc()}\n\n{inst}\n')
|
|
248
251
|
errPIVlib='\n'.join(str(inst.args[0]).split('\n')[3:]) #str(inst.__cause__).split('\n')[3] #solved
|
|
249
252
|
WarningMessage=f'Error while importing {filename}:\n{errPIVlib}'
|
|
250
253
|
warningDialog(self,WarningMessage)
|
|
@@ -257,7 +260,7 @@ class Custom_Top(QDialog):
|
|
|
257
260
|
if type(a)==float:
|
|
258
261
|
setattr(PROpar,f,round(a,4))
|
|
259
262
|
except Exception as inst:
|
|
260
|
-
pri.Error.red(f'Error while loading the cfg file {filename}:\n{traceback.
|
|
263
|
+
pri.Error.red(f'Error while loading the cfg file {filename}:\n{traceback.format_exc()}\n\n{inst}\n')
|
|
261
264
|
WarningMessage=f'Error while importing {filename}. Perhaps, the .cfg file does not correspond to a valid PIV process or the file is corrupted.'
|
|
262
265
|
warningDialog(self,WarningMessage)
|
|
263
266
|
return
|
|
@@ -285,7 +288,7 @@ class Custom_Top(QDialog):
|
|
|
285
288
|
self.createItemInTree(self.ui.tree,self.queue,name,name,QIcon())
|
|
286
289
|
self.custom_list.append(name)
|
|
287
290
|
except Exception as inst:
|
|
288
|
-
pri.Error.red(f'Error while saving custom process file {filename}:\n{traceback.
|
|
291
|
+
pri.Error.red(f'Error while saving custom process file {filename}:\n{traceback.format_exc()}\n\n{inst}')
|
|
289
292
|
|
|
290
293
|
|
|
291
294
|
|