PaIRS-UniNa 0.2.3__cp312-cp312-macosx_10_9_universal2.whl → 0.2.5__cp312-cp312-macosx_10_9_universal2.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.

Potentially problematic release.


This version of PaIRS-UniNa might be problematic. Click here for more details.

Files changed (53) hide show
  1. PaIRS_UniNa/Changes.txt +50 -6
  2. PaIRS_UniNa/Custom_Top.py +1 -1
  3. PaIRS_UniNa/Explorer.py +70 -42
  4. PaIRS_UniNa/Input_Tab.py +17 -5
  5. PaIRS_UniNa/Input_Tab_CalVi.py +1 -0
  6. PaIRS_UniNa/Input_Tab_tools.py +85 -40
  7. PaIRS_UniNa/Output_Tab.py +110 -17
  8. PaIRS_UniNa/PaIRS_PIV.py +56 -1
  9. PaIRS_UniNa/PaIRS_pypacks.py +148 -9
  10. PaIRS_UniNa/Process_Tab.py +6 -11
  11. PaIRS_UniNa/Process_Tab_Disp.py +11 -4
  12. PaIRS_UniNa/TabTools.py +121 -42
  13. PaIRS_UniNa/Vis_Tab.py +423 -126
  14. PaIRS_UniNa/Vis_Tab_CalVi.py +23 -5
  15. PaIRS_UniNa/Whatsnew.py +15 -6
  16. PaIRS_UniNa/_PaIRS_PIV.so +0 -0
  17. PaIRS_UniNa/__init__.py +2 -2
  18. PaIRS_UniNa/addwidgets_ps.py +50 -39
  19. PaIRS_UniNa/gPaIRS.py +500 -148
  20. PaIRS_UniNa/icons/bugfix.png +0 -0
  21. PaIRS_UniNa/icons/pylog.png +0 -0
  22. PaIRS_UniNa/icons/python_warning.png +0 -0
  23. PaIRS_UniNa/icons/queue.png +0 -0
  24. PaIRS_UniNa/icons/save_and_stop.png +0 -0
  25. PaIRS_UniNa/icons/star.png +0 -0
  26. PaIRS_UniNa/icons/step_inheritance.png +0 -0
  27. PaIRS_UniNa/icons/uninitialized.png +0 -0
  28. PaIRS_UniNa/icons/window.png +0 -0
  29. PaIRS_UniNa/parForMulti.py +7 -5
  30. PaIRS_UniNa/parForWorkers.py +101 -124
  31. PaIRS_UniNa/pivParFor.py +2 -2
  32. PaIRS_UniNa/preProcParFor.py +4 -4
  33. PaIRS_UniNa/procTools.py +25 -13
  34. PaIRS_UniNa/rqrdpckgs.txt +8 -0
  35. PaIRS_UniNa/stereoPivParFor.py +2 -2
  36. PaIRS_UniNa/tabSplitter.py +4 -2
  37. PaIRS_UniNa/ui_Log_Tab.py +8 -6
  38. PaIRS_UniNa/ui_Output_Tab.py +6 -3
  39. PaIRS_UniNa/ui_Process_Tab.py +19 -19
  40. PaIRS_UniNa/ui_Process_Tab_Disp.py +173 -2
  41. PaIRS_UniNa/ui_Vis_Tab.py +331 -195
  42. PaIRS_UniNa/ui_gPairs.py +81 -39
  43. PaIRS_UniNa/ui_infoPaIRS.py +128 -6
  44. PaIRS_UniNa/whatsnew.txt +6 -7
  45. {PaIRS_UniNa-0.2.3.dist-info → pairs_unina-0.2.5.dist-info}/METADATA +39 -23
  46. {PaIRS_UniNa-0.2.3.dist-info → pairs_unina-0.2.5.dist-info}/RECORD +48 -44
  47. {PaIRS_UniNa-0.2.3.dist-info → pairs_unina-0.2.5.dist-info}/WHEEL +1 -1
  48. PaIRS_UniNa/icons/order.png +0 -0
  49. PaIRS_UniNa/icons/order_reverse.png +0 -0
  50. PaIRS_UniNa/icons/pencil_bw.png +0 -0
  51. PaIRS_UniNa/icons/run_piv.png +0 -0
  52. PaIRS_UniNa-0.2.3.dist-info/LICENSE +0 -19
  53. {PaIRS_UniNa-0.2.3.dist-info → pairs_unina-0.2.5.dist-info}/top_level.txt +0 -0
PaIRS_UniNa/ui_gPairs.py CHANGED
@@ -2,7 +2,7 @@ from .addwidgets_ps import icons_path
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
4
  ################################################################################
5
- ## Form generated from reading UI file 'gPairsAiMsRP.ui'
5
+ ## Form generated from reading UI file 'gPairsgdPnui.ui'
6
6
  ##
7
7
  ## Created by: Qt User Interface Compiler version 6.7.2
8
8
  ##
@@ -203,6 +203,20 @@ class Ui_gPairs(object):
203
203
 
204
204
  self.horizontalLayout_10.addWidget(self.button_colormode)
205
205
 
206
+ self.button_packissue = QToolButton(self.w_Buttons_Run)
207
+ self.button_packissue.setObjectName(u"button_packissue")
208
+ self.button_packissue.setMinimumSize(QSize(30, 30))
209
+ self.button_packissue.setMaximumSize(QSize(30, 30))
210
+ self.button_packissue.setFont(font1)
211
+ self.button_packissue.setStyleSheet(u"QToolButton{border: none}")
212
+ icon15 = QIcon()
213
+ icon15.addFile(u""+ icons_path +"python_warning.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
214
+ self.button_packissue.setIcon(icon15)
215
+ self.button_packissue.setIconSize(QSize(24, 24))
216
+ self.button_packissue.setCheckable(False)
217
+
218
+ self.horizontalLayout_10.addWidget(self.button_packissue)
219
+
206
220
  self.hs_logo = QSpacerItem(200, 20, QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Minimum)
207
221
 
208
222
  self.horizontalLayout_10.addItem(self.hs_logo)
@@ -267,9 +281,9 @@ class Ui_gPairs(object):
267
281
  self.button_pause.setFont(font1)
268
282
  self.button_pause.setToolTipDuration(-1)
269
283
  self.button_pause.setLayoutDirection(Qt.LayoutDirection.LeftToRight)
270
- icon15 = QIcon()
271
- icon15.addFile(u""+ icons_path +"pause.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
272
- self.button_pause.setIcon(icon15)
284
+ icon16 = QIcon()
285
+ icon16.addFile(u""+ icons_path +"pause.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
286
+ self.button_pause.setIcon(icon16)
273
287
  self.button_pause.setIconSize(QSize(28, 28))
274
288
  self.button_pause.setPopupMode(QToolButton.ToolButtonPopupMode.DelayedPopup)
275
289
  self.button_pause.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly)
@@ -303,7 +317,7 @@ class Ui_gPairs(object):
303
317
 
304
318
  self.horizontalLayout_10.addWidget(self.button_Run)
305
319
 
306
- self.horizontalLayout_10.setStretch(3, 1)
320
+ self.horizontalLayout_10.setStretch(4, 1)
307
321
 
308
322
  self.verticalLayout.addWidget(self.w_Buttons_Run)
309
323
 
@@ -427,9 +441,9 @@ class Ui_gPairs(object):
427
441
  self.button_Run_CalVi.setMinimumSize(QSize(80, 40))
428
442
  self.button_Run_CalVi.setMaximumSize(QSize(80, 40))
429
443
  self.button_Run_CalVi.setFont(font4)
430
- icon16 = QIcon()
431
- icon16.addFile(u""+ icons_path +"play.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
432
- self.button_Run_CalVi.setIcon(icon16)
444
+ icon17 = QIcon()
445
+ icon17.addFile(u""+ icons_path +"play.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
446
+ self.button_Run_CalVi.setIcon(icon17)
433
447
 
434
448
  self.horizontalLayout_2.addWidget(self.button_Run_CalVi)
435
449
 
@@ -440,9 +454,9 @@ class Ui_gPairs(object):
440
454
  self.button_Abort_CalVi.setMinimumSize(QSize(80, 40))
441
455
  self.button_Abort_CalVi.setMaximumSize(QSize(80, 40))
442
456
  self.button_Abort_CalVi.setFont(font4)
443
- icon17 = QIcon()
444
- icon17.addFile(u""+ icons_path +"abort.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
445
- self.button_Abort_CalVi.setIcon(icon17)
457
+ icon18 = QIcon()
458
+ icon18.addFile(u""+ icons_path +"abort.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
459
+ self.button_Abort_CalVi.setIcon(icon18)
446
460
 
447
461
  self.horizontalLayout_2.addWidget(self.button_Abort_CalVi)
448
462
 
@@ -455,9 +469,9 @@ class Ui_gPairs(object):
455
469
  self.button_restore_undo.setFont(font1)
456
470
  self.button_restore_undo.setToolTipDuration(-1)
457
471
  self.button_restore_undo.setLayoutDirection(Qt.LayoutDirection.LeftToRight)
458
- icon18 = QIcon()
459
- icon18.addFile(u""+ icons_path +"restore_undo.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
460
- self.button_restore_undo.setIcon(icon18)
472
+ icon19 = QIcon()
473
+ icon19.addFile(u""+ icons_path +"restore_undo.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
474
+ self.button_restore_undo.setIcon(icon19)
461
475
  self.button_restore_undo.setIconSize(QSize(28, 28))
462
476
  self.button_restore_undo.setPopupMode(QToolButton.ToolButtonPopupMode.DelayedPopup)
463
477
  self.button_restore_undo.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly)
@@ -473,15 +487,33 @@ class Ui_gPairs(object):
473
487
  self.button_reset_step.setFont(font1)
474
488
  self.button_reset_step.setToolTipDuration(-1)
475
489
  self.button_reset_step.setLayoutDirection(Qt.LayoutDirection.LeftToRight)
476
- icon19 = QIcon()
477
- icon19.addFile(u""+ icons_path +"reset.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
478
- self.button_reset_step.setIcon(icon19)
490
+ icon20 = QIcon()
491
+ icon20.addFile(u""+ icons_path +"reset.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
492
+ self.button_reset_step.setIcon(icon20)
479
493
  self.button_reset_step.setIconSize(QSize(28, 28))
480
494
  self.button_reset_step.setPopupMode(QToolButton.ToolButtonPopupMode.DelayedPopup)
481
495
  self.button_reset_step.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly)
482
496
 
483
497
  self.horizontalLayout_2.addWidget(self.button_reset_step)
484
498
 
499
+ self.button_step_inherit = QToolButton(self.w_header)
500
+ self.button_step_inherit.setObjectName(u"button_step_inherit")
501
+ sizePolicy.setHeightForWidth(self.button_step_inherit.sizePolicy().hasHeightForWidth())
502
+ self.button_step_inherit.setSizePolicy(sizePolicy)
503
+ self.button_step_inherit.setMinimumSize(QSize(36, 36))
504
+ self.button_step_inherit.setMaximumSize(QSize(36, 36))
505
+ self.button_step_inherit.setFont(font1)
506
+ self.button_step_inherit.setToolTipDuration(-1)
507
+ self.button_step_inherit.setLayoutDirection(Qt.LayoutDirection.LeftToRight)
508
+ icon21 = QIcon()
509
+ icon21.addFile(u""+ icons_path +"step_inheritance.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
510
+ self.button_step_inherit.setIcon(icon21)
511
+ self.button_step_inherit.setIconSize(QSize(28, 28))
512
+ self.button_step_inherit.setPopupMode(QToolButton.ToolButtonPopupMode.DelayedPopup)
513
+ self.button_step_inherit.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly)
514
+
515
+ self.horizontalLayout_2.addWidget(self.button_step_inherit)
516
+
485
517
  self.button_copy_step = QToolButton(self.w_header)
486
518
  self.button_copy_step.setObjectName(u"button_copy_step")
487
519
  sizePolicy.setHeightForWidth(self.button_copy_step.sizePolicy().hasHeightForWidth())
@@ -491,9 +523,9 @@ class Ui_gPairs(object):
491
523
  self.button_copy_step.setFont(font1)
492
524
  self.button_copy_step.setToolTipDuration(-1)
493
525
  self.button_copy_step.setLayoutDirection(Qt.LayoutDirection.LeftToRight)
494
- icon20 = QIcon()
495
- icon20.addFile(u""+ icons_path +"copy_process.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
496
- self.button_copy_step.setIcon(icon20)
526
+ icon22 = QIcon()
527
+ icon22.addFile(u""+ icons_path +"copy_process.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
528
+ self.button_copy_step.setIcon(icon22)
497
529
  self.button_copy_step.setIconSize(QSize(28, 28))
498
530
  self.button_copy_step.setPopupMode(QToolButton.ToolButtonPopupMode.DelayedPopup)
499
531
  self.button_copy_step.setToolButtonStyle(Qt.ToolButtonStyle.ToolButtonIconOnly)
@@ -509,9 +541,9 @@ class Ui_gPairs(object):
509
541
  self.button_link_step.setFont(font1)
510
542
  self.button_link_step.setToolTipDuration(-1)
511
543
  self.button_link_step.setLayoutDirection(Qt.LayoutDirection.LeftToRight)
512
- icon21 = QIcon()
513
- icon21.addFile(u""+ icons_path +"unlink.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
514
- self.button_link_step.setIcon(icon21)
544
+ icon23 = QIcon()
545
+ icon23.addFile(u""+ icons_path +"unlink.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
546
+ self.button_link_step.setIcon(icon23)
515
547
  self.button_link_step.setIconSize(QSize(28, 28))
516
548
  self.button_link_step.setCheckable(True)
517
549
  self.button_link_step.setChecked(False)
@@ -525,9 +557,9 @@ class Ui_gPairs(object):
525
557
  self.workspace_icon.setMinimumSize(QSize(60, 60))
526
558
  self.workspace_icon.setMaximumSize(QSize(60, 60))
527
559
  self.workspace_icon.setStyleSheet(u"QPushButton{border: none,;background: none}")
528
- icon22 = QIcon()
529
- icon22.addFile(u""+ icons_path +"workspace.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
530
- self.workspace_icon.setIcon(icon22)
560
+ icon24 = QIcon()
561
+ icon24.addFile(u""+ icons_path +"workspace.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
562
+ self.workspace_icon.setIcon(icon24)
531
563
  self.workspace_icon.setIconSize(QSize(60, 60))
532
564
 
533
565
  self.horizontalLayout_2.addWidget(self.workspace_icon)
@@ -596,9 +628,9 @@ class Ui_gPairs(object):
596
628
  self.title_icon.setMinimumSize(QSize(60, 60))
597
629
  self.title_icon.setMaximumSize(QSize(60, 60))
598
630
  self.title_icon.setStyleSheet(u"QPushButton{border: none,;background: none}")
599
- icon23 = QIcon()
600
- icon23.addFile(u""+ icons_path +"project.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
601
- self.title_icon.setIcon(icon23)
631
+ icon25 = QIcon()
632
+ icon25.addFile(u""+ icons_path +"project.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
633
+ self.title_icon.setIcon(icon25)
602
634
  self.title_icon.setIconSize(QSize(60, 60))
603
635
 
604
636
  self.horizontalLayout_2.addWidget(self.title_icon)
@@ -657,7 +689,7 @@ class Ui_gPairs(object):
657
689
  gPairs.setStatusBar(self.statusbar)
658
690
  self.menubar = QMenuBar(gPairs)
659
691
  self.menubar.setObjectName(u"menubar")
660
- self.menubar.setGeometry(QRect(0, 0, 1800, 33))
692
+ self.menubar.setGeometry(QRect(0, 0, 1800, 43))
661
693
  self.menubar.setFont(font)
662
694
  self.menubar.setNativeMenuBar(False)
663
695
  self.menuFile = QMenu(self.menubar)
@@ -666,14 +698,14 @@ class Ui_gPairs(object):
666
698
  self.menuHelp.setObjectName(u"menuHelp")
667
699
  self.menu = QMenu(self.menubar)
668
700
  self.menu.setObjectName(u"menu")
669
- icon24 = QIcon()
670
- icon24.addFile(u""+ icons_path +"flaticon_PaIRS.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
671
- self.menu.setIcon(icon24)
701
+ icon26 = QIcon()
702
+ icon26.addFile(u""+ icons_path +"flaticon_PaIRS.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
703
+ self.menu.setIcon(icon26)
672
704
  self.menuPaIRS = QMenu(self.menu)
673
705
  self.menuPaIRS.setObjectName(u"menuPaIRS")
674
- icon25 = QIcon()
675
- icon25.addFile(u""+ icons_path +"logo_PaIRS.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
676
- self.menuPaIRS.setIcon(icon25)
706
+ icon27 = QIcon()
707
+ icon27.addFile(u""+ icons_path +"logo_PaIRS.png", QSize(), QIcon.Mode.Normal, QIcon.State.Off)
708
+ self.menuPaIRS.setIcon(icon27)
677
709
  gPairs.setMenuBar(self.menubar)
678
710
  QWidget.setTabOrder(self.button_PaIRS_download, self.button_colormode)
679
711
  QWidget.setTabOrder(self.button_colormode, self.spin_nworkers)
@@ -681,8 +713,10 @@ class Ui_gPairs(object):
681
713
  QWidget.setTabOrder(self.button_pause, self.button_Run)
682
714
  QWidget.setTabOrder(self.button_Run, self.button_Run_CalVi)
683
715
  QWidget.setTabOrder(self.button_Run_CalVi, self.button_Abort_CalVi)
684
- QWidget.setTabOrder(self.button_Abort_CalVi, self.button_reset_step)
685
- QWidget.setTabOrder(self.button_reset_step, self.button_copy_step)
716
+ QWidget.setTabOrder(self.button_Abort_CalVi, self.button_restore_undo)
717
+ QWidget.setTabOrder(self.button_restore_undo, self.button_reset_step)
718
+ QWidget.setTabOrder(self.button_reset_step, self.button_step_inherit)
719
+ QWidget.setTabOrder(self.button_step_inherit, self.button_copy_step)
686
720
  QWidget.setTabOrder(self.button_copy_step, self.button_link_step)
687
721
  QWidget.setTabOrder(self.button_link_step, self.workspace_icon)
688
722
  QWidget.setTabOrder(self.workspace_icon, self.title_icon)
@@ -755,6 +789,10 @@ class Ui_gPairs(object):
755
789
  self.button_colormode.setToolTip(QCoreApplication.translate("gPairs", u"Change color mode", None))
756
790
  #endif // QT_CONFIG(tooltip)
757
791
  self.button_colormode.setText("")
792
+ #if QT_CONFIG(tooltip)
793
+ self.button_packissue.setToolTip(QCoreApplication.translate("gPairs", u"Package requirements not satisfied", None))
794
+ #endif // QT_CONFIG(tooltip)
795
+ self.button_packissue.setText("")
758
796
  self.label_updating_import.setText("")
759
797
  self.label_updating_pairs.setText("")
760
798
  #if QT_CONFIG(tooltip)
@@ -791,7 +829,7 @@ class Ui_gPairs(object):
791
829
  #endif // QT_CONFIG(tooltip)
792
830
  self.button_Run_CalVi.setText(QCoreApplication.translate("gPairs", u"Run", None))
793
831
  #if QT_CONFIG(shortcut)
794
- self.button_Run_CalVi.setShortcut(QCoreApplication.translate("gPairs", u"Ctrl+Return", None))
832
+ self.button_Run_CalVi.setShortcut(QCoreApplication.translate("gPairs", u"Ctrl+Shift+Return", None))
795
833
  #endif // QT_CONFIG(shortcut)
796
834
  #if QT_CONFIG(tooltip)
797
835
  self.button_Abort_CalVi.setToolTip(QCoreApplication.translate("gPairs", u"Stop the process without saving results", None))
@@ -808,6 +846,10 @@ class Ui_gPairs(object):
808
846
  self.button_reset_step.setToolTip(QCoreApplication.translate("gPairs", u"Reset the current process step", None))
809
847
  #endif // QT_CONFIG(tooltip)
810
848
  self.button_reset_step.setText("")
849
+ #if QT_CONFIG(tooltip)
850
+ self.button_step_inherit.setToolTip(QCoreApplication.translate("gPairs", u"Copy input/output data from another step", None))
851
+ #endif // QT_CONFIG(tooltip)
852
+ self.button_step_inherit.setText("")
811
853
  #if QT_CONFIG(tooltip)
812
854
  self.button_copy_step.setToolTip(QCoreApplication.translate("gPairs", u"Copy settings from another process step", None))
813
855
  #endif // QT_CONFIG(tooltip)
@@ -2,9 +2,9 @@ from .addwidgets_ps import icons_path
2
2
  # -*- coding: utf-8 -*-
3
3
 
4
4
  ################################################################################
5
- ## Form generated from reading UI file 'infoPaIRSinWFRJ.ui'
5
+ ## Form generated from reading UI file 'infoPaIRSWjIuhO.ui'
6
6
  ##
7
- ## Created by: Qt User Interface Compiler version 6.7.2
7
+ ## Created by: Qt User Interface Compiler version 6.9.1
8
8
  ##
9
9
  ## WARNING! All changes made in this file will be lost when recompiling UI file!
10
10
  ################################################################################
@@ -172,7 +172,7 @@ class Ui_InfoPaiRS(object):
172
172
  self.scrollArea_ger_cv.setWidgetResizable(True)
173
173
  self.scrollAreaWidgetContents_ger_cv = QWidget()
174
174
  self.scrollAreaWidgetContents_ger_cv.setObjectName(u"scrollAreaWidgetContents_ger_cv")
175
- self.scrollAreaWidgetContents_ger_cv.setGeometry(QRect(0, 0, 466, 255))
175
+ self.scrollAreaWidgetContents_ger_cv.setGeometry(QRect(0, 0, 494, 266))
176
176
  self.verticalLayout = QVBoxLayout(self.scrollAreaWidgetContents_ger_cv)
177
177
  self.verticalLayout.setSpacing(0)
178
178
  self.verticalLayout.setObjectName(u"verticalLayout")
@@ -247,7 +247,7 @@ class Ui_InfoPaiRS(object):
247
247
  self.scrollArea_tom_cv.setWidgetResizable(True)
248
248
  self.scrollAreaWidgetContents_tom_cv = QWidget()
249
249
  self.scrollAreaWidgetContents_tom_cv.setObjectName(u"scrollAreaWidgetContents_tom_cv")
250
- self.scrollAreaWidgetContents_tom_cv.setGeometry(QRect(0, 0, 466, 255))
250
+ self.scrollAreaWidgetContents_tom_cv.setGeometry(QRect(0, 0, 494, 266))
251
251
  self.verticalLayout_2 = QVBoxLayout(self.scrollAreaWidgetContents_tom_cv)
252
252
  self.verticalLayout_2.setSpacing(0)
253
253
  self.verticalLayout_2.setObjectName(u"verticalLayout_2")
@@ -325,7 +325,7 @@ class Ui_InfoPaiRS(object):
325
325
  self.scrollArea_list_ref.setWidgetResizable(True)
326
326
  self.scrollAreaWidgetContents = QWidget()
327
327
  self.scrollAreaWidgetContents.setObjectName(u"scrollAreaWidgetContents")
328
- self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 636, 530))
328
+ self.scrollAreaWidgetContents.setGeometry(QRect(0, 0, 649, 582))
329
329
  self.scrollAreaWidgetContents.setStyleSheet(u"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
330
330
  "<ui version=\"4.0\">\n"
331
331
  " <widget name=\"__qt_fake_top_level\">\n"
@@ -389,13 +389,133 @@ class Ui_InfoPaiRS(object):
389
389
  self.horizontalLayout_2.addWidget(self.scrollArea_list_ref)
390
390
 
391
391
  self.tabWidget.addTab(self.references, "")
392
+ self.requirements = QWidget()
393
+ self.requirements.setObjectName(u"requirements")
394
+ self.horizontalLayout_3 = QHBoxLayout(self.requirements)
395
+ self.horizontalLayout_3.setObjectName(u"horizontalLayout_3")
396
+ self.scrollArea_req = QScrollArea(self.requirements)
397
+ self.scrollArea_req.setObjectName(u"scrollArea_req")
398
+ self.scrollArea_req.setStyleSheet(u" QScrollArea {\n"
399
+ " border: 1pix solid gray;\n"
400
+ " }\n"
401
+ "\n"
402
+ "QScrollBar:horizontal\n"
403
+ " {\n"
404
+ " height: 15px;\n"
405
+ " margin: 3px 0px 3px 0px;\n"
406
+ " border: 1px transparent #2A2929;\n"
407
+ " border-radius: 4px;\n"
408
+ " background-color: rgba(200,200,200,50); /* #2A2929; */\n"
409
+ " }\n"
410
+ "\n"
411
+ "QScrollBar::handle:horizontal\n"
412
+ " {\n"
413
+ " background-color: rgba(180,180,180,180); /* #605F5F; */\n"
414
+ " min-width: 30px;\n"
415
+ " border-radius: 4px;\n"
416
+ " }\n"
417
+ "\n"
418
+ "QScrollBar:vertical\n"
419
+ " {\n"
420
+ " background-color: rgba(200,200,200,50); ;\n"
421
+ " width: 15px;\n"
422
+ " margin: 10px 3px 10px 3px;\n"
423
+ " border: 1px transparent #2A2929;\n"
424
+ " border-radius: 4px;\n"
425
+ " }\n"
426
+ "\n"
427
+ "QScrollBar::handle:vertical\n"
428
+ " {\n"
429
+ " background-color: rgba(180,180,180,180); /* #605F5F; */\n"
430
+ " min-height: 30px;\n"
431
+ " border-radius: 4px;\n"
432
+ " }\n"
433
+ "\n"
434
+ "QScrollBar::add-line {\n"
435
+ " border: none;\n"
436
+ " "
437
+ " background: none;\n"
438
+ " }\n"
439
+ "\n"
440
+ "QScrollBar::sub-line {\n"
441
+ " border: none;\n"
442
+ " background: none;\n"
443
+ " }\n"
444
+ "")
445
+ self.scrollArea_req.setWidgetResizable(True)
446
+ self.scrollAreaWidgetContents_2 = QWidget()
447
+ self.scrollAreaWidgetContents_2.setObjectName(u"scrollAreaWidgetContents_2")
448
+ self.scrollAreaWidgetContents_2.setGeometry(QRect(0, 0, 664, 558))
449
+ self.scrollAreaWidgetContents_2.setStyleSheet(u"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
450
+ "<ui version=\"4.0\">\n"
451
+ " <widget name=\"__qt_fake_top_level\">\n"
452
+ " <widget class=\"QLabel\" name=\"list_ref\">\n"
453
+ " <property name=\"geometry\">\n"
454
+ " <rect>\n"
455
+ " <x>20</x>\n"
456
+ " <y>12</y>\n"
457
+ " <width>636</width>\n"
458
+ " <height>433</height>\n"
459
+ " </rect>\n"
460
+ " </property>\n"
461
+ " <property name=\"text\">\n"
462
+ " <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p align=&quot;justify&quot;&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Please cite the following works if you intend to use PaIRS-UniNa for your purposes: &lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:700;&quot;&gt;[1] &lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Astarita, T., &amp;amp; Cardone, G. (2005). &amp;quot;Analysis of interpolation schemes for image deformation methods in PIV&amp;quot;. &lt;/span&gt;&lt;span style=&quot; font-size:11pt; font-style:italic;&quot;&gt;Experiments in Fluids&lt;/span"
463
+ "&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;, 38(2), 233-243.doi: &lt;/span&gt;&lt;a href=&quot;https://doi.org/10.1007/s00348-004-0902-3&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;10.1007/s00348-004-0902-3&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:700;&quot;&gt;[2] &lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Astarita, T. (2006). &amp;quot;Analysis of interpolation schemes for image deformation methods in PIV: effect of noise on the accuracy and spatial resolution&amp;quot;. &lt;/span&gt;&lt;span style=&quot; font-size:11pt; font-style:italic;&quot;&gt;Experiments in Fluids&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;, vol. 40 (6): 977-987. doi: &lt;/span&gt;&lt;a href=&quot;https://doi.org/10.1007/s00348-006-0139-4&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;1"
464
+ "0.1007/s00348-006-0139-4&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:700;&quot;&gt;[3] &lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Astarita, T. (2007). &amp;quot;Analysis of weighting windows for image deformation methods in PIV.&amp;quot; &lt;/span&gt;&lt;span style=&quot; font-size:11pt; font-style:italic;&quot;&gt;Experiments in Fluids&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;, 43(6), 859-872. doi: &lt;/span&gt;&lt;a href=&quot;https://doi.org/10.1007/s00348-007-0314-2&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;10.1007/s00348-007-0314-2&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:700;&quot;&gt;[4]&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt; Astarita, T. "
465
+ "(2008). &amp;quot;Analysis of velocity interpolation schemes for image deformation methods in PIV&amp;quot;. &lt;/span&gt;&lt;span style=&quot; font-size:11pt; font-style:italic;&quot;&gt;Experiments in Fluids&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;, 45(2), 257-266. doi: &lt;/span&gt;&lt;a href=&quot;https://doi.org/10.1007/s00348-008-0475-7&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;10.1007/s00348-008-0475-7&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;&lt;p align=&quot;justify&quot;&gt;&lt;span style=&quot; font-size:11pt; font-weight:700;&quot;&gt;[5] &lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;Astarita, T. (2009). &amp;quot;Adaptive space resolution for PIV&amp;quot;. &lt;/span&gt;&lt;span style=&quot; font-size:11pt; font-style:italic;&quot;&gt;Experiments in Fluids&lt;/span&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;, 46(6), 1115-1123. doi: &lt;/span&gt;&lt;a href=&quot;http"
466
+ "s://doi.org/10.1007/s00348-009-0618-5&quot;&gt;&lt;span style=&quot; text-decoration: underline; color:#0000ff;&quot;&gt;10.1007/s00348-009-0618-5&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot; font-size:11pt;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>\n"
467
+ " </property>\n"
468
+ " <property name=\"textFormat\">\n"
469
+ " <enum>Qt::RichText</enum>\n"
470
+ " </property>\n"
471
+ " <property name=\"alignment\">\n"
472
+ " <set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>\n"
473
+ " </property>\n"
474
+ " <property name=\"wordWrap\">\n"
475
+ " <bool>true</bool>\n"
476
+ " </property>\n"
477
+ " <property name=\"margin\">\n"
478
+ " <number>5</number>\n"
479
+ " </property>\n"
480
+ " <property name=\"openExternalLinks\">\n"
481
+ " <bool>true</bool>\n"
482
+ " </property>\n"
483
+ " <property name=\"textInteractionFlags\">\n"
484
+ " <set>Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set>\n"
485
+ " </property>\n"
486
+ " </widget>\n"
487
+ " </widget>\n"
488
+ " <resour"
489
+ "ces/>\n"
490
+ "</ui>\n"
491
+ "")
492
+ self.horizontalLayout_4 = QHBoxLayout(self.scrollAreaWidgetContents_2)
493
+ self.horizontalLayout_4.setSpacing(0)
494
+ self.horizontalLayout_4.setObjectName(u"horizontalLayout_4")
495
+ self.horizontalLayout_4.setContentsMargins(0, 0, 0, 0)
496
+ self.req = QLabel(self.scrollAreaWidgetContents_2)
497
+ self.req.setObjectName(u"req")
498
+ self.req.setTextFormat(Qt.TextFormat.RichText)
499
+ self.req.setAlignment(Qt.AlignmentFlag.AlignLeading|Qt.AlignmentFlag.AlignLeft|Qt.AlignmentFlag.AlignTop)
500
+ self.req.setWordWrap(True)
501
+ self.req.setMargin(5)
502
+ self.req.setOpenExternalLinks(True)
503
+ self.req.setTextInteractionFlags(Qt.TextInteractionFlag.LinksAccessibleByKeyboard|Qt.TextInteractionFlag.LinksAccessibleByMouse|Qt.TextInteractionFlag.TextBrowserInteraction|Qt.TextInteractionFlag.TextSelectableByKeyboard|Qt.TextInteractionFlag.TextSelectableByMouse)
504
+
505
+ self.horizontalLayout_4.addWidget(self.req)
506
+
507
+ self.scrollArea_req.setWidget(self.scrollAreaWidgetContents_2)
508
+
509
+ self.horizontalLayout_3.addWidget(self.scrollArea_req)
510
+
511
+ self.tabWidget.addTab(self.requirements, "")
392
512
 
393
513
  self.horizontalLayout.addWidget(self.tabWidget)
394
514
 
395
515
  InfoPaiRS.setCentralWidget(self.centralwidget)
396
516
  self.menubar = QMenuBar(InfoPaiRS)
397
517
  self.menubar.setObjectName(u"menubar")
398
- self.menubar.setGeometry(QRect(0, 0, 700, 43))
518
+ self.menubar.setGeometry(QRect(0, 0, 700, 33))
399
519
  InfoPaiRS.setMenuBar(self.menubar)
400
520
 
401
521
  self.retranslateUi(InfoPaiRS)
@@ -425,5 +545,7 @@ class Ui_InfoPaiRS(object):
425
545
  ">IEEE Transactions on Pattern Analysis and Machine Intelligence, </span><span style=\" font-size:11pt;\">44(6), 3185-3196</span><span style=\" font-size:11pt; font-weight:700;\">.</span><span style=\" font-size:11pt;\"> doi: </span><a href=\"https://doi.org/10.1109/TPAMI.2020.3046467\"><span style=\" text-decoration: underline; color:#0000ff;\">10.1109/TPAMI.2020.3046467</span></a><span style=\" font-size:11pt;\">. <br/><br/></span><span style=\" font-size:11pt; font-weight:700;\">[2] </span><span style=\" font-size:11pt;\">Paolillo, G., &amp; Astarita, T. (2021). &quot;On the PIV/PTV uncertainty related to calibration of camera systems with refractive surfaces&quot;. </span><span style=\" font-size:11pt; font-style:italic;\">Measurement Science and Technology</span><span style=\" font-size:11pt;\">, 32(9), 094006. doi: </span><a href=\"https://doi.org/10.1088/1361-6501/abf3fc\"><span style=\" text-decoration: underline; color:#0000ff;\">10.1088/1361-6501/abf3fc</span></a><span style=\" font-size:11pt;\">. </s"
426
546
  "pan></p></body></html>", None))
427
547
  self.tabWidget.setTabText(self.tabWidget.indexOf(self.references), QCoreApplication.translate("InfoPaiRS", u"References", None))
548
+ self.req.setText(QCoreApplication.translate("InfoPaiRS", u"<html><head/><body><p align=\"justify\"><br/></p></body></html>", None))
549
+ self.tabWidget.setTabText(self.tabWidget.indexOf(self.requirements), QCoreApplication.translate("InfoPaiRS", u"Requirements", None))
428
550
  # retranslateUi
429
551
 
PaIRS_UniNa/whatsnew.txt CHANGED
@@ -1,7 +1,6 @@
1
- * Fixed bug in the functionality for replicating processes with changed input folders introduced in version v0.2.2.
2
- * Fixed bug in the compatibility check for the common region in disparity and stereoscopic PIV analysis steps.
3
- £ New features in the previous version 0.2.2:
4
- $ Resolved critical errors in the calculation of Reynolds stresses for stereoscopic PIV processes: review your past results with caution, as previous versions may have delivered incorrect w'w', u'w', and v'w' stress values!
5
- * Define the initial guess in the disparity step or the desidered final values in the stereoscopic PIV one for the laser plane constants using the new "Laser equation plane" box in the Output tab.
6
- * Enhanced interface performance with increased stability and speed. Enjoy a smoother and more reliable PaIRS experience!
7
- * The guide of PaIRS-UniNa v0.2 is finally available! Read it at <a href="https://www.pairs.unina.it/web/PaIRS-UniNa-v020-Guide.pdf"><span style=" text-decoration: underline; color:#0000ff; font-size:11pt">www.pairs.unina.it</a> and unleash the full potential and tricks of this amazing interface for yourself!
1
+ % Fixed critical bugs in launching PIV and stereoscopic PIV processes in special cases.<br><br>Fixed tooltip crash introduced by PySide 6.9.<br><br>Fixed minor bugs in process context menu and copy/link functionality.<br><br>Resolved display bugs in image selection tree and map visualization.<br>
2
+ & PaIRS now checks the compatibility of installed Python packages — if mismatches are detected, the user is warned.<br><br>Disparity maps are now saved in the output folder, along with the constants of the laser sheet plane equation, and can also be visualized in Vis.<br><br>Vis now includes a view restriction tool, allowing the field of view to be limited to the size of the interrogation window.<br>
3
+ * New worker execution logic improves control and robustness during processing.<br><br>Improved GUI responsiveness when defining steps and navigating the process tree.<br><br>Enhanced plotting: coordinate/value display under the cursor is now cleaner and more readable.<br>
4
+ § Releases for Python 3.9 are no longer provided!<br><br>New Python 3.13 builds are now available!<br>
5
+
6
+ # !=critical issue, %=bugfix, &=announcement, *=improvement, £=bold font without icon, §=python distribution
@@ -1,27 +1,36 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: PaIRS_UniNa
3
- Version: 0.2.3
3
+ Version: 0.2.5
4
4
  Summary: PaIRS - Particle Image Reconstruction Software
5
5
  Home-page: https://pairs.unina.it/
6
6
  Author: Gerardo Paolillo and Tommaso Astarita
7
7
  Author-email: etfd@unina.it
8
- License: GNU Lesser General Public License v3 or later (LGPLv3+)
8
+ License: LGPL-3.0-or-later
9
9
  Keywords: PIV,PaIRS
10
10
  Classifier: Programming Language :: Python :: 3
11
- Classifier: License :: OSI Approved :: GNU Lesser General Public License v3 or later (LGPLv3+)
12
11
  Classifier: Operating System :: MacOS
13
12
  Classifier: Operating System :: Microsoft :: Windows
14
13
  Classifier: Operating System :: POSIX :: Linux
15
- Requires-Python: >=3.8
14
+ Requires-Python: >=3.10
16
15
  Description-Content-Type: text/markdown
17
- License-File: LICENSE
18
- Requires-Dist: scipy
19
- Requires-Dist: matplotlib>=3.9
20
- Requires-Dist: pillow
16
+ Requires-Dist: scipy>=1.14.0
17
+ Requires-Dist: matplotlib>=3.9.0
18
+ Requires-Dist: pillow>=10.4.0
21
19
  Requires-Dist: numpy>=2.0.0
22
- Requires-Dist: pyside6>=6.7
23
- Requires-Dist: unidecode
24
- Requires-Dist: psutil
20
+ Requires-Dist: pyside6>=6.7.0
21
+ Requires-Dist: unidecode>=1.3.0
22
+ Requires-Dist: psutil>=6.0.0
23
+ Dynamic: author
24
+ Dynamic: author-email
25
+ Dynamic: classifier
26
+ Dynamic: description
27
+ Dynamic: description-content-type
28
+ Dynamic: home-page
29
+ Dynamic: keywords
30
+ Dynamic: license
31
+ Dynamic: requires-dist
32
+ Dynamic: requires-python
33
+ Dynamic: summary
25
34
 
26
35
  # PaIRS-UniNa: **Pa**rticle **I**mage **R**econstruction **S**oftware - **Uni**versity of **Na**ples "Federico II"
27
36
  **PaIRS-UniNa** is a project developed by the Experimental Thermo Fluid-Dynamics (ETFD) group of University of Naples "Federico II" since 2000.
@@ -34,25 +43,32 @@ The current release of PaIRS-UniNa features the module for the 2D planar PIV ana
34
43
 
35
44
  CalVi is the calibration module of PaIRS-UniNa and allows accurate optical calibration of single and multiple camera bundles with the camera models mostly used in the PIV community: polynomials, rational functions and the pinhole camera model. Among the other features, it supports camera calibration procedures working with unknown positions and orientations of the calibration target and the integration of the pinhole camera model with a refractive correction model for cylindrical geometries (based on ray-tracing and Snell's law).
36
45
 
37
- PaIRS-UniNa is supported by Python 3.9+ and is compatible with all the operating systems, however, the PaIRS-PIV library relies on OpemMP library, which must be installed on the macOS platform. On the other side, PaIRS requires, among other packages, `SciPy` and `matplotlib`.
46
+ PaIRS-UniNa is supported by Python 3.10+ and is compatible with all the operating systems, however, the PaIRS-PIV library relies on OpemMP library, which must be installed on the macOS platform. On the other side, PaIRS requires, among other packages, `SciPy` and `matplotlib`.
38
47
 
39
48
  For further information, please visit [PaIRS website](https://www.pairs.unina.it/).
40
49
 
41
- ## What's new in PaIRS-UniNa 0.2.3
50
+ ## What's new in PaIRS-UniNa 0.2.5
42
51
 
43
- Fixed bug in the functionality for replicating processes with changed input folders introduced in version v0.2.2.
52
+ ### Bug fixes:
53
+ - fixed bugs in launching PIV and stereoscopic PIV processes in special cases;
54
+ - fixed tooltip crash introduced by PySide 6.9;
55
+ - corrected package import errors and context menu bugs;
56
+ - resolved multiple visual glitches in image tree selection and map visualization.
44
57
 
45
- Fixed bug in the compatibility check for the common region in disparity and stereoscopic PIV analysis steps.
58
+ ### New features:
59
+ - implemented version control of required Python packages with automatic compatibility check and warning;
60
+ - disparity maps are now automatically saved in the output folder and can be visualized in Vis;
61
+ - added tools for restricting view in Vis based on interrogation window size and shifting the view window interactively.
46
62
 
47
- ### New features in the previous version 0.2.2:
63
+ ### User-interface enhancements:
64
+ - redesigned the execution logic of internal workers for improved control and robustness;
65
+ - improved formatting and display of coordinates and variable values when moving the cursor during map visualization;
66
+ - updated button labels and layout for clarity and consistency.
48
67
 
49
- **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.
68
+ ### Distribution:
69
+ - Support for Python 3.9 has been discontinued;
70
+ - Python 3.13 builds have been successfully created and tested.
50
71
 
51
- 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.
52
-
53
- Improved stability and interface performance.
54
-
55
- The guide of PaIRS-UniNa v0.2 is now available. Discover all the information you need for advanced software usage at [www.pairs.unina.it](https://www.pairs.unina.it/web/PaIRS-UniNa-v020-Guide.pdf).
56
72
 
57
73
  ## Installation
58
74
  All PaIRS-UniNa wheels are distributed under LGPLv3+ licences. The installation can be performed with: