PaIRS-UniNa 0.1.13__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.
Files changed (292) hide show
  1. PaIRS_UniNa/Calibration_Tab.py +331 -0
  2. PaIRS_UniNa/Changes.txt +134 -2
  3. PaIRS_UniNa/Custom_Top.py +299 -299
  4. PaIRS_UniNa/Explorer.py +3136 -0
  5. PaIRS_UniNa/FolderLoop.py +562 -0
  6. PaIRS_UniNa/Input_Tab.py +831 -0
  7. PaIRS_UniNa/Input_Tab_CalVi.py +786 -0
  8. PaIRS_UniNa/Input_Tab_tools.py +3025 -0
  9. PaIRS_UniNa/Log_Tab.py +57 -14
  10. PaIRS_UniNa/Output_Tab.py +922 -0
  11. PaIRS_UniNa/PaIRS_PIV.py +111 -18
  12. PaIRS_UniNa/PaIRS_pypacks.py +698 -140
  13. PaIRS_UniNa/Process_Tab.py +1221 -1402
  14. PaIRS_UniNa/Process_Tab_CalVi.py +137 -262
  15. PaIRS_UniNa/Process_Tab_Disp.py +163 -0
  16. PaIRS_UniNa/Process_Tab_Min.py +120 -0
  17. PaIRS_UniNa/Saving_tools.py +296 -0
  18. PaIRS_UniNa/TabTools.py +863 -543
  19. PaIRS_UniNa/Vis_Tab.py +1898 -1315
  20. PaIRS_UniNa/Vis_Tab_CalVi.py +484 -356
  21. PaIRS_UniNa/Whatsnew.py +59 -10
  22. PaIRS_UniNa/_PaIRS_PIV.pyd +0 -0
  23. PaIRS_UniNa/__init__.py +4 -3
  24. PaIRS_UniNa/addwidgets_ps.py +326 -56
  25. PaIRS_UniNa/calib.py +19 -12
  26. PaIRS_UniNa/calibView.py +48 -25
  27. PaIRS_UniNa/gPaIRS.py +3902 -3461
  28. PaIRS_UniNa/gPalette.py +189 -170
  29. PaIRS_UniNa/icons/align_all.png +0 -0
  30. PaIRS_UniNa/icons/announcement.png +0 -0
  31. PaIRS_UniNa/icons/automatic_levels_off.png +0 -0
  32. PaIRS_UniNa/icons/automatic_levels_on.png +0 -0
  33. PaIRS_UniNa/icons/automatic_off.png +0 -0
  34. PaIRS_UniNa/icons/automatic_on.png +0 -0
  35. PaIRS_UniNa/icons/automatic_size_off.png +0 -0
  36. PaIRS_UniNa/icons/automatic_size_on.png +0 -0
  37. PaIRS_UniNa/icons/bin_off.png +0 -0
  38. PaIRS_UniNa/icons/bin_on.png +0 -0
  39. PaIRS_UniNa/icons/brush_cursor.png +0 -0
  40. PaIRS_UniNa/icons/bugfix.png +0 -0
  41. PaIRS_UniNa/icons/cal_proc.png +0 -0
  42. PaIRS_UniNa/icons/cal_proc_off.png +0 -0
  43. PaIRS_UniNa/icons/cal_step.png +0 -0
  44. PaIRS_UniNa/icons/cal_step_off.png +0 -0
  45. PaIRS_UniNa/icons/calibration_logo.png +0 -0
  46. PaIRS_UniNa/icons/change_folder.png +0 -0
  47. PaIRS_UniNa/icons/change_folder_off.png +0 -0
  48. PaIRS_UniNa/icons/close_all.png +0 -0
  49. PaIRS_UniNa/icons/close_workspace.png +0 -0
  50. PaIRS_UniNa/icons/colormap.png +0 -0
  51. PaIRS_UniNa/icons/colormaps/Accent.png +0 -0
  52. PaIRS_UniNa/icons/colormaps/BrBG.png +0 -0
  53. PaIRS_UniNa/icons/colormaps/Dark2.png +0 -0
  54. PaIRS_UniNa/icons/colormaps/PRGn.png +0 -0
  55. PaIRS_UniNa/icons/colormaps/Paired.png +0 -0
  56. PaIRS_UniNa/icons/colormaps/Pastel1.png +0 -0
  57. PaIRS_UniNa/icons/colormaps/Pastel2.png +0 -0
  58. PaIRS_UniNa/icons/colormaps/PiYG.png +0 -0
  59. PaIRS_UniNa/icons/colormaps/PuOr.png +0 -0
  60. PaIRS_UniNa/icons/colormaps/RdBu.png +0 -0
  61. PaIRS_UniNa/icons/colormaps/RdGy.png +0 -0
  62. PaIRS_UniNa/icons/colormaps/RdYlBu.png +0 -0
  63. PaIRS_UniNa/icons/colormaps/RdYlGn.png +0 -0
  64. PaIRS_UniNa/icons/colormaps/Set1.png +0 -0
  65. PaIRS_UniNa/icons/colormaps/Set2.png +0 -0
  66. PaIRS_UniNa/icons/colormaps/Set3.png +0 -0
  67. PaIRS_UniNa/icons/colormaps/Spectral.png +0 -0
  68. PaIRS_UniNa/icons/colormaps/Wistia.png +0 -0
  69. PaIRS_UniNa/icons/colormaps/afmhot.png +0 -0
  70. PaIRS_UniNa/icons/colormaps/autumn.png +0 -0
  71. PaIRS_UniNa/icons/colormaps/binary.png +0 -0
  72. PaIRS_UniNa/icons/colormaps/blackVector.png +0 -0
  73. PaIRS_UniNa/icons/colormaps/blueVector.png +0 -0
  74. PaIRS_UniNa/icons/colormaps/bone.png +0 -0
  75. PaIRS_UniNa/icons/colormaps/brg.png +0 -0
  76. PaIRS_UniNa/icons/colormaps/bwr.png +0 -0
  77. PaIRS_UniNa/icons/colormaps/cividis.png +0 -0
  78. PaIRS_UniNa/icons/colormaps/cool.png +0 -0
  79. PaIRS_UniNa/icons/colormaps/coolwarm.png +0 -0
  80. PaIRS_UniNa/icons/colormaps/copper.png +0 -0
  81. PaIRS_UniNa/icons/colormaps/cubehelix.png +0 -0
  82. PaIRS_UniNa/icons/colormaps/cyanVector.png +0 -0
  83. PaIRS_UniNa/icons/colormaps/flag.png +0 -0
  84. PaIRS_UniNa/icons/colormaps/gist_heat.png +0 -0
  85. PaIRS_UniNa/icons/colormaps/gray.png +0 -0
  86. PaIRS_UniNa/icons/colormaps/greenVector.png +0 -0
  87. PaIRS_UniNa/icons/colormaps/hot.png +0 -0
  88. PaIRS_UniNa/icons/colormaps/hsv.png +0 -0
  89. PaIRS_UniNa/icons/colormaps/inferno.png +0 -0
  90. PaIRS_UniNa/icons/colormaps/jet.png +0 -0
  91. PaIRS_UniNa/icons/colormaps/magentaVector.png +0 -0
  92. PaIRS_UniNa/icons/colormaps/magma.png +0 -0
  93. PaIRS_UniNa/icons/colormaps/ocean.png +0 -0
  94. PaIRS_UniNa/icons/colormaps/pink.png +0 -0
  95. PaIRS_UniNa/icons/colormaps/plasma.png +0 -0
  96. PaIRS_UniNa/icons/colormaps/prism.png +0 -0
  97. PaIRS_UniNa/icons/colormaps/rainbow.png +0 -0
  98. PaIRS_UniNa/icons/colormaps/redVector.png +0 -0
  99. PaIRS_UniNa/icons/colormaps/seismic.png +0 -0
  100. PaIRS_UniNa/icons/colormaps/spring.png +0 -0
  101. PaIRS_UniNa/icons/colormaps/summer.png +0 -0
  102. PaIRS_UniNa/icons/colormaps/tab10.png +0 -0
  103. PaIRS_UniNa/icons/colormaps/tab20.png +0 -0
  104. PaIRS_UniNa/icons/colormaps/tab20b.png +0 -0
  105. PaIRS_UniNa/icons/colormaps/tab20c.png +0 -0
  106. PaIRS_UniNa/icons/colormaps/terrain.png +0 -0
  107. PaIRS_UniNa/icons/colormaps/twilight.png +0 -0
  108. PaIRS_UniNa/icons/colormaps/viridis.png +0 -0
  109. PaIRS_UniNa/icons/colormaps/whiteVector.png +0 -0
  110. PaIRS_UniNa/icons/colormaps/winter.png +0 -0
  111. PaIRS_UniNa/icons/colormaps/yellowVector.png +0 -0
  112. PaIRS_UniNa/icons/common_region.png +0 -0
  113. PaIRS_UniNa/icons/common_region_off.png +0 -0
  114. PaIRS_UniNa/icons/completed.png +0 -0
  115. PaIRS_UniNa/icons/contourf_off.png +0 -0
  116. PaIRS_UniNa/icons/contourf_on.png +0 -0
  117. PaIRS_UniNa/icons/copy.png +0 -0
  118. PaIRS_UniNa/icons/copy_process.png +0 -0
  119. PaIRS_UniNa/icons/copy_process_off.png +0 -0
  120. PaIRS_UniNa/icons/cut.png +0 -0
  121. PaIRS_UniNa/icons/cut_warnings.png +0 -0
  122. PaIRS_UniNa/icons/darkmode.png +0 -0
  123. PaIRS_UniNa/icons/disp_step.png +0 -0
  124. PaIRS_UniNa/icons/disp_step_off.png +0 -0
  125. PaIRS_UniNa/icons/edit_list.png +0 -0
  126. PaIRS_UniNa/icons/example_list.png +0 -0
  127. PaIRS_UniNa/icons/flaticon_PaIRS_beta.png +0 -0
  128. PaIRS_UniNa/icons/flaticon_PaIRS_download_warning.png +0 -0
  129. PaIRS_UniNa/icons/flip_y_off.png +0 -0
  130. PaIRS_UniNa/icons/flip_y_on.png +0 -0
  131. PaIRS_UniNa/icons/folder_loop_cleanup.png +0 -0
  132. PaIRS_UniNa/icons/folder_loop_cleanup_off.png +0 -0
  133. PaIRS_UniNa/icons/gear.gif +0 -0
  134. PaIRS_UniNa/icons/gear.png +0 -0
  135. PaIRS_UniNa/icons/import_set.png +0 -0
  136. PaIRS_UniNa/icons/information.png +0 -0
  137. PaIRS_UniNa/icons/input_logo.png +0 -0
  138. PaIRS_UniNa/icons/issue.png +0 -0
  139. PaIRS_UniNa/icons/laser_NTR.png +0 -0
  140. PaIRS_UniNa/icons/laser_TR_double.png +0 -0
  141. PaIRS_UniNa/icons/laser_TR_single.png +0 -0
  142. PaIRS_UniNa/icons/link.png +0 -0
  143. PaIRS_UniNa/icons/linked.png +0 -0
  144. PaIRS_UniNa/icons/log_logo.png +0 -0
  145. PaIRS_UniNa/icons/logo_opaco.png +0 -0
  146. PaIRS_UniNa/icons/measure.png +0 -0
  147. PaIRS_UniNa/icons/measure_off.png +0 -0
  148. PaIRS_UniNa/icons/min_proc.png +0 -0
  149. PaIRS_UniNa/icons/min_proc_off.png +0 -0
  150. PaIRS_UniNa/icons/min_step.png +0 -0
  151. PaIRS_UniNa/icons/min_step_off.png +0 -0
  152. PaIRS_UniNa/icons/new_workspace.png +0 -0
  153. PaIRS_UniNa/icons/open_image.png +0 -0
  154. PaIRS_UniNa/icons/open_new_window.png +0 -0
  155. PaIRS_UniNa/icons/open_result.png +0 -0
  156. PaIRS_UniNa/icons/open_workspace.png +0 -0
  157. PaIRS_UniNa/icons/output_logo.png +0 -0
  158. PaIRS_UniNa/icons/paste_above.png +0 -0
  159. PaIRS_UniNa/icons/paste_below.png +0 -0
  160. PaIRS_UniNa/icons/paused.png +0 -0
  161. PaIRS_UniNa/icons/piv_proc.png +0 -0
  162. PaIRS_UniNa/icons/piv_proc_off.png +0 -0
  163. PaIRS_UniNa/icons/piv_step.png +0 -0
  164. PaIRS_UniNa/icons/piv_step_off.png +0 -0
  165. PaIRS_UniNa/icons/process_logo.png +0 -0
  166. PaIRS_UniNa/icons/process_loop.png +0 -0
  167. PaIRS_UniNa/icons/project.png +0 -0
  168. PaIRS_UniNa/icons/pylog.png +0 -0
  169. PaIRS_UniNa/icons/python_warning.png +0 -0
  170. PaIRS_UniNa/icons/queue.png +0 -0
  171. PaIRS_UniNa/icons/read.png +0 -0
  172. PaIRS_UniNa/icons/read_list.png +0 -0
  173. PaIRS_UniNa/icons/reset.png +0 -0
  174. PaIRS_UniNa/icons/reset_levels.png +0 -0
  175. PaIRS_UniNa/icons/restore_undo.png +0 -0
  176. PaIRS_UniNa/icons/running.gif +0 -0
  177. PaIRS_UniNa/icons/running.png +0 -0
  178. PaIRS_UniNa/icons/running_warn.png +0 -0
  179. PaIRS_UniNa/icons/save_and_stop.png +0 -0
  180. PaIRS_UniNa/icons/save_cfg.png +0 -0
  181. PaIRS_UniNa/icons/saveas_workspace.png +0 -0
  182. PaIRS_UniNa/icons/scale_all.png +0 -0
  183. PaIRS_UniNa/icons/scale_down.png +0 -0
  184. PaIRS_UniNa/icons/scale_up.png +0 -0
  185. PaIRS_UniNa/icons/scan_list.png +0 -0
  186. PaIRS_UniNa/icons/scan_path.png +0 -0
  187. PaIRS_UniNa/icons/scan_path_loop.png +0 -0
  188. PaIRS_UniNa/icons/scan_path_loop_off.png +0 -0
  189. PaIRS_UniNa/icons/search.png +0 -0
  190. PaIRS_UniNa/icons/showIW_off.png +0 -0
  191. PaIRS_UniNa/icons/showIW_on.png +0 -0
  192. PaIRS_UniNa/icons/show_all.png +0 -0
  193. PaIRS_UniNa/icons/sort.png +0 -0
  194. PaIRS_UniNa/icons/sort_reversed.png +0 -0
  195. PaIRS_UniNa/icons/spiv_proc.png +0 -0
  196. PaIRS_UniNa/icons/spiv_proc_off.png +0 -0
  197. PaIRS_UniNa/icons/star.png +0 -0
  198. PaIRS_UniNa/icons/step_inheritance.png +0 -0
  199. PaIRS_UniNa/icons/subMIN_off.png +0 -0
  200. PaIRS_UniNa/icons/subMIN_on.png +0 -0
  201. PaIRS_UniNa/icons/unedited.png +0 -0
  202. PaIRS_UniNa/icons/uninitialized.png +0 -0
  203. PaIRS_UniNa/icons/unlink.png +0 -0
  204. PaIRS_UniNa/icons/unwrap_items.png +0 -0
  205. PaIRS_UniNa/icons/vectorColor.png +0 -0
  206. PaIRS_UniNa/icons/view.png +0 -0
  207. PaIRS_UniNa/icons/view_off.png +0 -0
  208. PaIRS_UniNa/icons/vis_logo.png +0 -0
  209. PaIRS_UniNa/icons/warning_circle.png +0 -0
  210. PaIRS_UniNa/icons/window.png +0 -0
  211. PaIRS_UniNa/icons/workspace.png +0 -0
  212. PaIRS_UniNa/icons/wrap_items.png +0 -0
  213. PaIRS_UniNa/icons/write_list.png +0 -0
  214. PaIRS_UniNa/listLib.py +303 -0
  215. PaIRS_UniNa/mtfPIV.py +8 -8
  216. PaIRS_UniNa/parForMulti.py +7 -5
  217. PaIRS_UniNa/parForWorkers.py +370 -31
  218. PaIRS_UniNa/pivParFor.py +233 -229
  219. PaIRS_UniNa/plt_util.py +141 -141
  220. PaIRS_UniNa/preProcParFor.py +153 -148
  221. PaIRS_UniNa/procTools.py +631 -178
  222. PaIRS_UniNa/readcfg.py +31 -1
  223. PaIRS_UniNa/rqrdpckgs.txt +9 -0
  224. PaIRS_UniNa/stereoPivParFor.py +227 -0
  225. PaIRS_UniNa/tAVarie.py +215 -215
  226. PaIRS_UniNa/tabSplitter.py +612 -0
  227. PaIRS_UniNa/ui_Calibration_Tab.py +545 -0
  228. PaIRS_UniNa/ui_Custom_Top.py +5 -5
  229. PaIRS_UniNa/ui_Input_Tab.py +1101 -0
  230. PaIRS_UniNa/{ui_Import_Tab_CalVi.py → ui_Input_Tab_CalVi.py} +1282 -1275
  231. PaIRS_UniNa/ui_Log_Tab.py +262 -257
  232. PaIRS_UniNa/{ui_Export_Tab.py → ui_Output_Tab.py} +2361 -1778
  233. PaIRS_UniNa/ui_Process_Tab.py +3809 -3758
  234. PaIRS_UniNa/ui_Process_Tab_CalVi.py +1547 -1546
  235. PaIRS_UniNa/ui_Process_Tab_Disp.py +1141 -0
  236. PaIRS_UniNa/ui_Process_Tab_Min.py +437 -0
  237. PaIRS_UniNa/ui_Vis_Tab.py +1626 -1208
  238. PaIRS_UniNa/ui_Vis_Tab_CalVi.py +1249 -1249
  239. PaIRS_UniNa/ui_Whatsnew.py +131 -131
  240. PaIRS_UniNa/ui_gPairs.py +876 -950
  241. PaIRS_UniNa/ui_infoPaIRS.py +550 -425
  242. PaIRS_UniNa/whatsnew.txt +6 -4
  243. {PaIRS_UniNa-0.1.13.dist-info → pairs_unina-0.2.8.dist-info}/METADATA +69 -51
  244. pairs_unina-0.2.8.dist-info/RECORD +329 -0
  245. {PaIRS_UniNa-0.1.13.dist-info → pairs_unina-0.2.8.dist-info}/WHEEL +1 -1
  246. PaIRS_UniNa/CalVi.py +0 -18
  247. PaIRS_UniNa/Export_Tab.py +0 -574
  248. PaIRS_UniNa/Import_Tab.py +0 -657
  249. PaIRS_UniNa/Import_Tab_CalVi.py +0 -861
  250. PaIRS_UniNa/Import_Tab_tools.py +0 -598
  251. PaIRS_UniNa/Tree_Tab.py +0 -543
  252. PaIRS_UniNa/gCalVi.py +0 -2024
  253. PaIRS_UniNa/icons/add.png +0 -0
  254. PaIRS_UniNa/icons/cancelled.png +0 -0
  255. PaIRS_UniNa/icons/chain.png +0 -0
  256. PaIRS_UniNa/icons/chain_broken.png +0 -0
  257. PaIRS_UniNa/icons/default_sizes.png +0 -0
  258. PaIRS_UniNa/icons/dock_tabs.png +0 -0
  259. PaIRS_UniNa/icons/done.png +0 -0
  260. PaIRS_UniNa/icons/down_arrow.png +0 -0
  261. PaIRS_UniNa/icons/export_logo.png +0 -0
  262. PaIRS_UniNa/icons/fast_delete.png +0 -0
  263. PaIRS_UniNa/icons/flip_y.png +0 -0
  264. PaIRS_UniNa/icons/ganci.png +0 -0
  265. PaIRS_UniNa/icons/import_blue.png +0 -0
  266. PaIRS_UniNa/icons/import_logo.png +0 -0
  267. PaIRS_UniNa/icons/missing.png +0 -0
  268. PaIRS_UniNa/icons/process_icon.png +0 -0
  269. PaIRS_UniNa/icons/processing.png +0 -0
  270. PaIRS_UniNa/icons/restart.png +0 -0
  271. PaIRS_UniNa/icons/right_arrow.png +0 -0
  272. PaIRS_UniNa/icons/run_piv.png +0 -0
  273. PaIRS_UniNa/icons/terminal.png +0 -0
  274. PaIRS_UniNa/icons/undock_tabs.png +0 -0
  275. PaIRS_UniNa/icons/vect_field.png +0 -0
  276. PaIRS_UniNa/icons/w0.png +0 -0
  277. PaIRS_UniNa/icons/w1.png +0 -0
  278. PaIRS_UniNa/icons/w2.png +0 -0
  279. PaIRS_UniNa/icons/w3.png +0 -0
  280. PaIRS_UniNa/icons/w4.png +0 -0
  281. PaIRS_UniNa/icons/w5.png +0 -0
  282. PaIRS_UniNa/run_CalVi.py +0 -14
  283. PaIRS_UniNa/run_gcalvi.py +0 -5
  284. PaIRS_UniNa/ui_Import_Tab.py +0 -1077
  285. PaIRS_UniNa/ui_Tree_Tab.py +0 -684
  286. PaIRS_UniNa/ui_gCalVi.py +0 -640
  287. PaIRS_UniNa/ui_infoCalVi.py +0 -428
  288. PaIRS_UniNa-0.1.13.dist-info/LICENSE +0 -19
  289. PaIRS_UniNa-0.1.13.dist-info/RECORD +0 -174
  290. /PaIRS_UniNa/icons/{clean_queue.png → clean.png} +0 -0
  291. /PaIRS_UniNa/icons/{waiting_c.png → sandglass.png} +0 -0
  292. {PaIRS_UniNa-0.1.13.dist-info → pairs_unina-0.2.8.dist-info}/top_level.txt +0 -0
PaIRS_UniNa/readcfg.py CHANGED
@@ -19,4 +19,34 @@ def readNumVecCfg(f,ind:int,convFun,separator=',',comment='%')->Tuple[int,list[U
19
19
  ind+=1
20
20
  nums=line.strip().split(separator)[0].split('[')[1].split(']')[0].strip()
21
21
 
22
- return ind+1,[convFun(num) for num in nums.split(' ')]
22
+ return ind+1,[convFun(num) for num in nums.split(' ')]
23
+ def readCalFile(buffer:str)->Tuple[int,int ,list[float]]:
24
+ ''' reads the calibration constants from a file
25
+ buffer is the name of the file
26
+ if numCostCalib is different from none it is used regardless of the value in the file
27
+ In output returns flagCal,numCostCalib,cost
28
+ '''
29
+ try:
30
+ with open(buffer,'r') as f:
31
+ tag=readCfgTag(f)
32
+
33
+ if tag != "%SP00015":
34
+ raise RuntimeError(f'Wrong tag in file: {buffer}')
35
+ ind=1
36
+ ind,flagCal=readNumCfg(f,ind,int)
37
+ ind,numCostCalib=readNumCfg(f,ind,int)
38
+
39
+ cost=[0]*numCostCalib
40
+ for i in range(numCostCalib):# dati->NumCostCalib; i++):
41
+ ind,cost[i]=readNumCfg(f,ind,float)
42
+ return flagCal,numCostCalib,cost
43
+ #if "%SP00015"
44
+ #for index, line in enumerate(f): pri.Info.white("Line {}: {}".format(index, line.strip()))
45
+ #except Exception as exc:
46
+ except IOError as exc:
47
+ raise RuntimeError(f'Error opening the calibration constants file: {buffer}') from exc
48
+ except ValueError as exc:
49
+ raise RuntimeError(f'Error reading line:{ind+1} of file: {buffer}') from exc
50
+ except IndexError as exc:
51
+ raise RuntimeError(f'Error reading array in line:{ind+1} of file: {buffer}') from exc
52
+
@@ -0,0 +1,9 @@
1
+ scipy 1.14.0 1.16.1 0
2
+ matplotlib 3.9.0 3.10.6 0
3
+ pillow 10.4.0 11.3.0 0
4
+ numpy 2.0.0 2.3.2 0
5
+ pyside6 6.7.0 6.9.2 0
6
+ unidecode 1.3.0 1.4.0 0
7
+ psutil 6.0.0 7.0.0 0
8
+ debugpy 1.6.6 1.8.16 0
9
+ certifi 2025.7.14 2025.8.3 0
@@ -0,0 +1,227 @@
1
+ from typing import Tuple#,Callable
2
+ from .PaIRS_pypacks import *
3
+ from .procTools import *
4
+ from .pivParFor import WrapperOutFromPIV
5
+ from .readcfg import readCalFile
6
+ #if Flag_DEBUG_PARPOOL: import debugpy
7
+
8
+
9
+
10
+ def initStereoPIV(eventFerma,iImg,procId,data:dataTreePar,*args,**kwargs):
11
+ ''' this function is called once per processor before the main function
12
+ eventferma is passed to the function called by PIV in order to stop the processing '''
13
+ #prTimeLock(0,f" initPIV")
14
+
15
+ StereoPIV=data2StereoPIV(data)
16
+ try:
17
+ StereoPIV.evalCommonZone() #todo maybe this should be done also before for plotting the common zone
18
+ except ValueError as exc:
19
+ pri.Error.white(f"{exc=}, {type(exc)=}")
20
+
21
+
22
+ StereoPIV.Inp.FlagLog=0
23
+ #vect=[]
24
+ #for v in data.PRO.Vect: vect.append(v.astype(np.intc))
25
+
26
+ #StereoPIV.SetVect([v.astype(np.intc) for v in data.PRO.Vect])
27
+ if data.FlagMIN:
28
+ data.compMin.Imin=[[np.zeros(1) for _ in range(data.nframe)] for _ in range(data.ncam)]
29
+ for c,Iminc in enumerate(data.Imin):
30
+ for k,filename in enumerate(Iminc):
31
+ try:
32
+ data.compMin.Imin[c][k]=np.ascontiguousarray(Image.open(filename))
33
+ except Exception as inst:
34
+ raise (inst)
35
+
36
+
37
+ #fatto in modo esplicito da vedere
38
+ #StereoPIV.Inp.FlagNumThreads=1# of threads used in the processing use 0 for the number of logical processors
39
+ StereoPIV.Media=MediaPIV(stepType=StepTypes.spiv)#data.mediaPIV
40
+ StereoPIV.WraOut =WrapperOutFromPIV(0,eventExit=eventFerma)
41
+ StereoPIV.fun=PaIRS_lib.GetPyFunction(StereoPIV.WraOut)
42
+ StereoPIV.initAlloc(StereoPIV.fun)
43
+ (flagOut,VarOut) =procStereoPIV(iImg,procId ,StereoPIV,data,*args,**kwargs)
44
+ return (flagOut,VarOut,StereoPIV)
45
+ def exitNoLog(flagOut,varOut):
46
+ ''' exit without printing the log '''
47
+ varOut[0]=-1
48
+ return (flagOut,varOut)
49
+ def procStereoPIV(i,procId ,StereoPIV,data:dataTreePar,numUsedProcs,*args,**kwargs):
50
+ ''' main proc function called for all the images one time per processor
51
+ k=0 always
52
+ In output flagOut and varOut[0] can be:
53
+ Already processed: varOut[0]=-1 flagOut=FLAG_PROC[k]|FLAG_READ[k]|FLAG_FINALIZED[k]
54
+ Error reading: varOut[0]=i flagOut=FLAG_READ_ERR[k]
55
+ Error processing: varOut[0]=i flagOut=FLAG_READ[k]
56
+ Process stoped by user: varOut[0]=-1 flagOut=FLAG_READ[k]
57
+ Error saving: varOut[0]=i flagOut=FLAG_PROC[k]|FLAG_READ[k]
58
+ Read and processed: varOut[0]=i flagOut=FLAG_PROC[k]|FLAG_READ[k]|FLAG_FINALIZED[k]|FLAG_CALLBACK_INTERNAL
59
+ Use:
60
+ numCallBackTotOk+=sum(1 if x&FLAG_CALLBACK_INTERNAL else 0 for x in flagOut)
61
+ to evaluate the number of total internal callbacks
62
+ numProcOrErrTot=sum(1 if f else 0 for f in flagOut)
63
+ to evaluate the number of total images processed (after a possible pause)
64
+ numFinalized=sum(1 if f&FLAG_FINALIZED[0] else 0 for f in flagOut)
65
+ to evaluate the number of total images correctly processed
66
+
67
+ where FLAG_FINALIZED_OR_ERR = [ p|e for (p,e) in zip(FLAG_FINALIZED,FLAG_READ_ERR)]
68
+ numProcOrErrTot=sum(1 if (f&FLAG_FINALIZED_OR_ERR[0])or(not f&FLAG_PROC[0]) else 0 for f in flagOut)
69
+ to delete images
70
+ pa='C:\\desk\\dl\\apairs\\jetcross\\'
71
+ no='zR2jet0_0004a'
72
+ I =imread([pa no '.png']);
73
+ I=I*0+1;
74
+ imwrite(I,[pa no 'black.png']);
75
+ '''
76
+
77
+ flagOut=0#data.list_pim[i] #0 to be processed, -1 error, 1 correctly processed
78
+
79
+ varOut=[i,'',[]] # The log will be written unless exitNoLog. If FLAG_CALLBACK_INTERNAL will be set then also the internal part will be called.
80
+
81
+ #if PIV.WraOut.flagFerma!=0: return (flagOut,VarOut)
82
+ j=i*2
83
+ kConst=0#useless. In preProc the flags are different for the first and second image in this case we only use the first (i.e. k=0)
84
+ try:
85
+ varOut[1]+=f'{data.list_Image_Files[j]}-{data.list_Image_Files[j+1]}'
86
+ if data.list_eim[j] and data.list_eim[j+1]:
87
+ if data.list_pim[i]&FLAG_FINALIZED[kConst]:
88
+ flagOut=FLAG_READ[kConst]|FLAG_PROC[kConst]|FLAG_FINALIZED[kConst] # It has been already processed. Exit without calling the callback core part
89
+ #☻prTimeLock(0,f"{i} --> {data.list_Image_Files[j]} {data.list_Image_Files[j+1]} {hex(flagOut)}")
90
+ return exitNoLog(flagOut,varOut)
91
+ else:
92
+ if StereoPIV.WraOut.eventExit.is_set(): return exitNoLog(flagOut,varOut)# non si può mettere prima
93
+ # reading images and transforming
94
+ #prTimeLock(0,f"{i} --> {data.list_Image_Files[j]} {data.list_Image_Files[j+1]}")
95
+ imgs = [[None] * 2 for i in range(2)]
96
+ # tbd
97
+ #if i==2:1/0
98
+ try:
99
+ for c in range(2):
100
+ for k in range(2):
101
+ if StereoPIV.WraOut.eventExit.is_set(): return exitNoLog(flagOut,varOut)
102
+ if c==0:
103
+ nameImg=data.inpPath+data.list_Image_Files[j+k]
104
+ else:
105
+ nameImg=data.inpPath+data.list_Image_Files[j+k].replace('_cam0','_cam1')
106
+ imgs[c][k]=np.ascontiguousarray(Image.open(nameImg),dtype= np.uint16)
107
+ if data.FlagMIN:
108
+ if data.FlagTR and i%2:
109
+ imgs[c][k]=imgs[c][k]-data.compMin.Imin[c][[1,0][k]]
110
+ else:
111
+ imgs[c][k]=imgs[c][k]-data.compMin.Imin[c][k]
112
+ imgs[c][k]=np.ascontiguousarray(imgs[c][k],dtype= np.uint16)
113
+ #iProc=transfIm(data.OUT,flagTransf=0,Images=I1)
114
+ except Exception as inst:
115
+ flagOut|=FLAG_READ_ERR[kConst]
116
+ if data.list_pim[i]&FLAG_READ_ERR[kConst]:varOut[0]=-1# no log already written
117
+ varOut[1]+=f"\n!!!!!!!!!! Error while reading the image {data.list_Image_Files[j+k]}:\n{inst}\n"
118
+ prLock(f'{varOut[1]}')
119
+ return (flagOut,varOut) #we can exit directly! Not calling the internal part of the callback in case of error
120
+
121
+ # no exception reading images and transforming running the process
122
+ flagOut|=FLAG_READ[kConst]
123
+ #infoPrint.white(os.getpid())
124
+ try:
125
+ if StereoPIV.WraOut.eventExit.is_set(): return (flagOut,varOut)
126
+ err=StereoPIV.run(imgs)
127
+ except Exception as inst:
128
+ #raise (inst)
129
+ if ( data.list_pim[i] &FLAG_READ[kConst]):varOut[0]=-1# no log already written
130
+ #dum=str(inst.__cause__).split('\n')[3] #solved
131
+ dum='\n'.join(str(inst.args[0]).split('\n')[3:])
132
+ #varOut[1]+=f"\n!!!!!!!!!! Error while processing the above image pair: {dum}"
133
+ varOut[1]+=f"\n!!!!!!!!!! Error while processing data:\n{dum}\n"
134
+ #prLock(f'{varOut[1]}')
135
+ return (flagOut,varOut) #we can exit directly! Not calling the internal part of the callback in case of error
136
+ try:# no exception running the process
137
+ if err==-1000: #interrotto
138
+ return exitNoLog(flagOut,varOut) #we can exit directly no log !
139
+ else:
140
+ # Finalizing the process (means transformations and saving data)
141
+ flagOut|=FLAG_PROC[kConst]# per completezza aggiungo anche processato
142
+ #x,y,u,v=transfVect(data.OUT,StereoPIV) # No transformation for Spiv #[StereoPIV.x,StereoPIV.y,StereoPIV.z,StereoPIV.u,StereoPIV.v,StereoPIV.w]
143
+ nameFields=StereoPIV.Media.namesPIV.instVelFields
144
+ #otherVars=[getattr(StereoPIV,f) for f in nameFields[4:] ]
145
+ #campoVel=[x,y,u,v] +transfIm(data.OUT,flagTransf=1,Images=otherVars,flagRot=1)
146
+ campoVel=[getattr(StereoPIV,f) for f in nameFields ]
147
+ nameVar=StereoPIV.Media.namesPIV.instVel
148
+ StereoPIV.Media.sum(campoVel)
149
+ try:
150
+ saveResults(data,i+1,campoVel,nameVar)
151
+ except Exception as inst:
152
+ varOut[1]+=f"\n!!!!!!!!!! Error while saving the results:\n{str(inst)}\n"
153
+ #prLock(f'{varOut[1]}')
154
+ varOut[0]=i# In any case the log will be written. If FLAG_CALLBACK_INTERNAL will be set then also the internal part will be called.
155
+ return (flagOut,varOut) #we can exit directly! Not calling the internal part of the callback in case of error
156
+ varOut[1]+="\n"+printPIVLog(StereoPIV.PD0)+printPIVLog(StereoPIV.PD1)
157
+ flagOut|=FLAG_FINALIZED[kConst]
158
+ varOut[0]=i# In any case the log will be written. If FLAG_CALLBACK_INTERNAL will be set then also the internal part will be called.
159
+ flagOut|=FLAG_CALLBACK_INTERNAL# Verrà chiamata la callback
160
+ except Exception as inst:
161
+ varOut[1]+=f"\n!!!!!!!!!! Error while finalizing the PIV process:\n{str(inst)}\n"
162
+ #prLock(f'{varOut[1]}')
163
+ return (flagOut,varOut)
164
+ else:#if data.list_eim[j] and data.list_eim[j+1]:
165
+ flagOut|=FLAG_READ_ERR[kConst]
166
+ if data.list_pim[i]&FLAG_READ_ERR[kConst]:varOut[0]=-1# no log already written
167
+ jj=j+1 if data.list_eim[j] else j
168
+ varOut[1]+=f"\n!!!!!!!!!! Error while reading the image {data.list_Image_Files[jj]}:\nThe image file is missing!\n"
169
+ #prLock(f'{varOut[1]}')
170
+ except :
171
+ flagOut|=FLAG_GENERIC_ERROR
172
+ varOut[0]=i# In any case the log will be written. If FLAG_CALLBACK_INTERNAL will be set then also the internal part will be called.
173
+ varOut[1]+=printException(flagMessage=True)
174
+
175
+ # to del ma il resto dove va
176
+ #varOut=[i,stampa,[]] if flagOut&FLAG_FINALIZING_PROC_OK[0] else [-1,stampa,[]]
177
+ if (not procId%numUsedProcs) and flagOut&FLAG_FINALIZED[0]: # copiare l'img nella coda è un operazione onerosa. TA ha deciso che si copia solo quando serve
178
+ #prLock(f'procMIN Main proc i={i}')
179
+ varOut[2]=campoVel#VarOut=[i,stampa,Var]
180
+
181
+
182
+
183
+ return (flagOut,varOut)
184
+
185
+ def finalStereoPIV(procId, PIV,data,*args,finalPIVPIppo=4 ,**kwargs):
186
+ #prLock(f'finalPIV procId={procId}')
187
+ return PIV.Media
188
+
189
+ def saveAndMean(procId,flagHasWorked,med,data,*args,**kwargs):
190
+ ''' saveAndMean is the wrapUp function called once per processor '''
191
+ if flagHasWorked:
192
+ data.mediaPIV.sumMedia(med)
193
+ return data.mediaPIV
194
+
195
+ def callBackStereoPIV(flag,perc,procId,flagOut,name,VarOut,signal_res):
196
+ '''
197
+ flag=true new data False just check exit
198
+ perc= precentage done
199
+ flagOutFromTasks,varOutFromTask Out varibles from task e.g.:
200
+ flagOut=1 #0 to be processed, -1 error, 1 correctly processed
201
+ varOutFromTask whatever for now a string
202
+ name current element in names
203
+ to stop the process the return value should be True otherwise sleep
204
+ '''
205
+ global FlagStopWorkers
206
+
207
+ if flag:
208
+ i=VarOut[0]
209
+ stampa=VarOut[1]
210
+ Var=VarOut[2]
211
+ #pr(f'Callback {i} getpid {os.getpid()} {len(Var)}')
212
+ #prLock(f'Callback {i} getpid {os.getpid()} ')
213
+ signal_res.emit(procId,i,flagOut,Var,stampa)
214
+ VarOut[2]=[]#altrimenti salvo le img
215
+ '''
216
+ if i==0:
217
+ callBackPIV.flagStop=True
218
+ if(callBackPIV.flagStop):
219
+ if i>=2:
220
+ callBackPIV.flagStop=False
221
+ FlagStopWorkers[0]=True
222
+ return True
223
+ #'''
224
+ if FlagStopWorkers[0]:
225
+ return True
226
+ else:
227
+ return False