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/pivParFor.py CHANGED
@@ -1,231 +1,235 @@
1
1
  from .PaIRS_pypacks import *
2
2
  from .procTools import *
3
-
4
- def image2Float(a):
5
- ''' converts image to float '''
6
- return lambda I: np.ascontiguousarray(I,dtype= a)
7
- Image2PIV_Float=image2Float( np.float64 if PaIRS_lib.SizeOfReal()==8 else np.float32)
8
-
9
- class WrapperOutFromPIV(PaIRS_lib.PyFunOutPIV):
10
- ''' Wrapper class for FunOut
11
- FunOut is called periodically from the PaIRS_lib lib and if FunOut returns a value different from
12
- zero the processing is stopped
13
- '''
14
- def __init__(self,flagFerma,eventExit) :
15
- PaIRS_lib.PyFunOutPIV.__init__(self)
16
- self.flagFerma=flagFerma
17
- self.eventExit=eventExit
18
- def FunOut(self, a, b, o) :
19
- if self.eventExit.is_set():
20
- self.flagFerma=-1
21
- return -1
22
- #print(f'flag ferma {self.flagFerma[0]} id={id(self.flagFerma)} {os.getpid()} ')
23
- return 0
24
-
25
- def initPIV(eventFerma,iImg,procId,data:dataTreePar,*args,**kwargs):
26
- ''' this function is called once per processor before the main function
27
- eventferma is passed to the function called by PIV in order to stop the processing '''
28
- #prTimeLock(0,f" initPIV")
29
- PIV=data2PIV(data)
30
- PIV.Inp.FlagLog=0
31
- #vect=[]
32
- #for v in data.PRO.Vect: vect.append(v.astype(np.intc))
33
-
34
- #PIV.SetVect([v.astype(np.intc) for v in data.PRO.Vect])
35
- data.compMin.Imin=[np.zeros(1),np.zeros(1)]
36
- if data.INP.flag_min:
37
- filename=data.filename_proc[dataTreePar.typeMIN]
38
- if filename:
39
- try:
40
- with open(filename, 'rb') as file:
41
- data_min:dataTreePar = pickle.load(file)
42
- data.copyfromdiz(data_min,['compMin'])
43
- except Exception as inst:
44
- raise (inst)
45
- #data.INP.flag_min=False
46
-
47
-
48
- #fatto in modo esplicito da vedere
49
- PIV.Inp.FlagNumThreads=1# of threads used in the processing use 0 for the number of logical processors
50
- PIV.Media=mediaPIV()#data.mediaPIV
51
- PIV.WraOut =WrapperOutFromPIV(0,eventExit=eventFerma)
52
- PIV.fun=PaIRS_lib.GetPyFunction(PIV.WraOut)
53
- (flagOut,VarOut) =procPIV(iImg,procId ,PIV,data,*args,**kwargs)
54
- return (flagOut,VarOut,PIV)
55
- def exitNoLog(flagOut,varOut):
56
- ''' exit without printing the log '''
57
- varOut[0]=-1
58
- return (flagOut,varOut)
59
- def procPIV(i,procId ,PIV,data:dataTreePar,numUsedThreadsPIV,*args,**kwargs):
60
- ''' main proc function called for all the images one time per processor
61
- k=0 always
62
- In output flagOut and varOut[0] can be:
63
- Already processed: varOut[0]=-1 flagOut=FLAG_PROC[k]|FLAG_READ[k]|FLAG_FINALIZED[k]
64
- Error reading: varOut[0]=i flagOut=FLAG_READ_ERR[k]
65
- Error processing: varOut[0]=i flagOut=FLAG_READ[k]
66
- Process stoped by user: varOut[0]=-1 flagOut=FLAG_READ[k]
67
- Error saving: varOut[0]=i flagOut=FLAG_PROC[k]|FLAG_READ[k]
68
- Read and processed: varOut[0]=i flagOut=FLAG_PROC[k]|FLAG_READ[k]|FLAG_FINALIZED[k]|FLAG_CALLBACK_INTERNAL
69
- Use:
70
- numCallBackTotOk+=sum(1 if x&FLAG_CALLBACK_INTERNAL else 0 for x in flagOut)
71
- to evaluate the number of total internal callbacks
72
- numProcOrErrTot=sum(1 if f else 0 for f in flagOut)
73
- to evaluate the number of total images processed (after a possible pause)
74
- numFinalized=sum(1 if f&FLAG_FINALIZED[0] else 0 for f in flagOut)
75
- to evaluate the number of total images correctly processed
76
-
77
- where FLAG_FINALIZED_OR_ERR = [ p|e for (p,e) in zip(FLAG_FINALIZED,FLAG_READ_ERR)]
78
- numProcOrErrTot=sum(1 if (f&FLAG_FINALIZED_OR_ERR[0])or(not f&FLAG_PROC[0]) else 0 for f in flagOut)
79
- to delete images
80
- pa='C:\desk\dl\apairs\jetcross\'
81
- no='zR2jet0_0004a'
82
- I =imread([pa no '.png']);
83
- I=I*0+1;
84
- imwrite(I,[pa no 'black.png']);
85
- '''
86
-
87
- flagOut=0#data.list_pim[i] #0 to be processed, -1 error, 1 correctly processed
88
-
89
- varOut=[i,'',[]] # The log will be written unless exitNoLog. If FLAG_CALLBACK_INTERNAL will be set then also the internal part will be called.
90
-
91
- #if PIV.WraOut.flagFerma!=0: return (flagOut,VarOut)
92
- j=i*2
93
- 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)
94
- try:
95
- varOut[1]+=f'{data.list_Image_Files[j]}-{data.list_Image_Files[j+1]}'
96
- if data.list_eim[j] and data.list_eim[j+1]:
97
- if data.list_pim[i]&FLAG_FINALIZED[kConst]:
98
- flagOut=FLAG_READ[kConst]|FLAG_PROC[kConst]|FLAG_FINALIZED[kConst] # It has been already processed. Exit without calling the callback core part
99
- #☻prTimeLock(0,f"{i} --> {data.list_Image_Files[j]} {data.list_Image_Files[j+1]} {hex(flagOut)}")
100
- return exitNoLog(flagOut,varOut)
101
- else:
102
- if PIV.WraOut.eventExit.is_set(): return exitNoLog(flagOut,varOut)# non si può mettere prima
103
- # reading images and transforming
104
- #prTimeLock(0,f"{i} --> {data.list_Image_Files[j]} {data.list_Image_Files[j+1]}")
105
- I1=[None]*2
106
- # tbd
107
- #if i==2:1/0
108
- try:
109
- for k in range(2):
110
- if PIV.WraOut.eventExit.is_set(): return exitNoLog(flagOut,varOut)
111
- nameImg=data.INP.path+data.list_Image_Files[j+k]
112
- I1[k]=np.ascontiguousarray(Image.open(nameImg))
113
- if data.INP.flag_min:
114
- I1[k]=I1[k]-data.compMin.Imin[k]
115
- iProc=transfIm(data.OUT,flagTransf=0,Images=I1)
116
- except Exception as inst:
117
- flagOut|=FLAG_READ_ERR[kConst]
118
- if data.list_pim[i]&FLAG_READ_ERR[kConst]:varOut[0]=-1# no log already written
119
- varOut[1]+=f"\n!!!!!!!!!! Error while reading the image {data.list_Image_Files[j+k]}:\n{inst}\n"
120
- prLock(f'{varOut[1]}')
121
- return (flagOut,varOut) #we can exit directly! Not calling the internal part of the callback in case of error
122
-
123
- # no exception reading images and transforming running the process
124
- flagOut|=FLAG_READ[kConst]
125
- #infoPrint.white(os.getpid())
126
- try:
127
- PIV.SetImg([Image2PIV_Float(I) for I in iProc]) #inside try but should not happen
128
- if PIV.WraOut.eventExit.is_set(): return (flagOut,varOut)
129
- err=PIV.PIV_Run(PIV.fun)
130
- except Exception as inst:
131
- #raise (inst)
132
- if ( data.list_pim[i] &FLAG_READ[kConst]):varOut[0]=-1# no log already written
133
- #dum=str(inst.__cause__).split('\n')[3] #solved
134
- dum='\n'.join(str(inst.args[0]).split('\n')[3:])
135
- #varOut[1]+=f"\n!!!!!!!!!! Error while processing the above image pair: {dum}"
136
- varOut[1]+=f"\n!!!!!!!!!! Error while processing data:\n{dum}\n"
137
- #prLock(f'{varOut[1]}')
138
- return (flagOut,varOut) #we can exit directly! Not calling the internal part of the callback in case of error
139
- try:# no exception running the process
140
- if err==-1000: #interrotto
141
- return exitNoLog(flagOut,varOut) #we can exit directly no log !
142
- else:
143
- # Finalizing the process (means transformations and saving data)
144
- flagOut|=FLAG_PROC[kConst]# per completezza aggiungo anche processato
145
- x,y,u,v=transfVect(data.OUT,PIV)
146
- nameFields=PIV.Media.namesPIV.instVelFields
147
- otherVars=[getattr(PIV,f) for f in nameFields[4:] ]
148
- campoVel=[x,y,u,v] +transfIm(data.OUT,flagTransf=1,Images=otherVars,flagRot=1)
149
- nameVar=PIV.Media.namesPIV.instVel
150
- PIV.Media.sum(campoVel)
151
- try:
152
- saveResults(data,i,campoVel,nameVar)
153
- except Exception as inst:
154
- varOut[1]+=f"\n!!!!!!!!!! Error while saving the results:\n{str(inst)}\n"
155
- #prLock(f'{varOut[1]}')
156
- 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.
157
- return (flagOut,varOut) #we can exit directly! Not calling the internal part of the callback in case of error
158
- varOut[1]+="\n"+printPIVLog(PIV)
159
- flagOut|=FLAG_FINALIZED[kConst]
160
- 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.
161
- flagOut|=FLAG_CALLBACK_INTERNAL# Verrà chiamata la callback
162
- except Exception as inst:
163
- varOut[1]+=f"\n!!!!!!!!!! Error while finalizing the PIV process:\n{str(inst)}\n"
164
- #prLock(f'{varOut[1]}')
165
- return (flagOut,varOut)
166
- else:#if data.list_eim[j] and data.list_eim[j+1]:
167
- flagOut|=FLAG_READ_ERR[kConst]
168
- if data.list_pim[i]&FLAG_READ_ERR[kConst]:varOut[0]=-1# no log already written
169
- jj=j+1 if data.list_eim[j] else j
170
- varOut[1]+=f"\n!!!!!!!!!! Error while reading the image {data.list_Image_Files[jj]}:\nThe image file is missing!\n"
171
- #prLock(f'{varOut[1]}')
172
- except :
173
- flagOut|=FLAG_GENERIC_ERROR
174
- 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.
175
- varOut[1]+=printException(flagMessage=True)
176
-
177
- # to del ma il resto dove va
178
- #varOut=[i,stampa,[]] if flagOut&FLAG_FINALIZING_PROC_OK[0] else [-1,stampa,[]]
179
- if (not procId%numUsedThreadsPIV) and flagOut&FLAG_FINALIZED[0]: # copiare l'img nella coda è un operazione onerosa. TA ha deciso che si copia solo quando serve
180
- #prLock(f'procMIN Main proc i={i}')
181
- varOut[2]=campoVel#VarOut=[i,stampa,Var]
182
-
183
-
184
-
185
- return (flagOut,varOut)
186
-
187
- def finalPIV(procId, PIV,data,*args,finalPIVPIppo=4 ,**kwargs):
188
- #prLock(f'finalPIV procId={procId}')
189
- return PIV.Media
190
-
191
- def saveAndMean(procId,flagHasWorked,med,data,*args,**kwargs):
192
- ''' saveAndMean is the wrapUp function called once per processor '''
193
- if flagHasWorked:
194
- data.mediaPIV.sumMedia(med)
195
- return data.mediaPIV
196
-
197
- def callBackPIV(flag,perc,procId,flagOut,name,VarOut,signal_res):
198
- '''
199
- flag=true new data False just check exit
200
- perc= precentage done
201
- flagOutFromTasks,varOutFromTask Out varibles from task e.g.:
202
- flagOut=1 #0 to be processed, -1 error, 1 correctly processed
203
- varOutFromTask whatever for now a string
204
- name current element in names
205
- to stop the process the return value should be True otherwise sleep
206
- '''
207
- global FlagStopWorkers
208
-
209
- if flag:
210
- i=VarOut[0]
211
- stampa=VarOut[1]
212
- Var=VarOut[2]
213
- #pr(f'Callback {i} getpid {os.getpid()} {len(Var)}')
214
- #prLock(f'Callback {i} getpid {os.getpid()} ')
215
- signal_res.emit(procId,i,flagOut,Var,stampa)
216
- VarOut[2]=[]#altrimenti salvo le img
217
- '''
218
- if i==0:
219
- callBackPIV.flagStop=True
220
- if(callBackPIV.flagStop):
221
- if i>=2:
222
- callBackPIV.flagStop=False
223
- FlagStopWorkers[0]=True
224
- return True
225
- #'''
226
- if FlagStopWorkers[0]:
227
- return True
228
- else:
229
- return False
230
- callBackPIV.flagStop=True
231
-
3
+
4
+ def image2Float(a):
5
+ ''' converts image to float '''
6
+ return lambda I: np.ascontiguousarray(I,dtype= a)
7
+ Image2PIV_Float=image2Float( np.float64 if PaIRS_lib.SizeOfReal()==8 else np.float32)
8
+
9
+ class WrapperOutFromPIV(PaIRS_lib.PyFunOutPIV):
10
+ ''' Wrapper class for FunOut
11
+ FunOut is called periodically from the PaIRS_lib lib and if FunOut returns a value different from
12
+ zero the processing is stopped
13
+ '''
14
+ def __init__(self,flagFerma,eventExit) :
15
+ PaIRS_lib.PyFunOutPIV.__init__(self)
16
+ self.flagFerma=flagFerma
17
+ self.eventExit=eventExit
18
+ def FunOut(self, a, b, o) :
19
+ if self.eventExit.is_set():
20
+ self.flagFerma=-1
21
+ return -1
22
+ #print(f'flag ferma {self.flagFerma[0]} id={id(self.flagFerma)} {os.getpid()} ')
23
+ return 0
24
+
25
+ def initPIV(eventFerma,iImg,procId,data:dataTreePar,*args,**kwargs):
26
+ ''' this function is called once per processor before the main function
27
+ eventferma is passed to the function called by PIV in order to stop the processing '''
28
+ #prTimeLock(0,f" initPIV")
29
+
30
+ PIV=data2PIV(data,flagSpiv=False)
31
+ data.OUT=OUTpar(data.Process,data.Step)
32
+ data.OUT.copyfromdiz(data.OUT_dict)
33
+
34
+ PIV.Inp.FlagLog=0
35
+ #vect=[]
36
+ #for v in data.PRO.Vect: vect.append(v.astype(np.intc))
37
+
38
+ #PIV.SetVect([v.astype(np.intc) for v in data.PRO.Vect])
39
+ if data.FlagMIN:
40
+ data.compMin.Imin=[np.zeros(1),np.zeros(1)]
41
+ for k,filename in enumerate(data.Imin[0]):
42
+ try:
43
+ data.compMin.Imin[k]=np.ascontiguousarray(Image.open(filename))
44
+ except Exception as inst:
45
+ errorMessage=f'Error while opening historical minimum background image file: {filename}. PIV process will not be executed!'
46
+ pri.Error.red(errorMessage+f"\n\nError details:\n{inst}\n")
47
+ raise (errorMessage)
48
+ #raise (inst)
49
+
50
+
51
+ PIV.Media=MediaPIV()#data.mediaPIV
52
+ PIV.WraOut =WrapperOutFromPIV(0,eventExit=eventFerma)
53
+ PIV.fun=PaIRS_lib.GetPyFunction(PIV.WraOut)
54
+ (flagOut,VarOut) =procPIV(iImg,procId ,PIV,data,*args,**kwargs)
55
+ return (flagOut,VarOut,PIV)
56
+ def exitNoLog(flagOut,varOut):
57
+ ''' exit without printing the log '''
58
+ varOut[0]=-1
59
+ return (flagOut,varOut)
60
+ def procPIV(i,procId ,PIV,data:dataTreePar,numUsedProcs,*args,**kwargs):
61
+ ''' main proc function called for all the images one time per processor
62
+ k=0 always
63
+ In output flagOut and varOut[0] can be:
64
+ Already processed: varOut[0]=-1 flagOut=FLAG_PROC[k]|FLAG_READ[k]|FLAG_FINALIZED[k]
65
+ Error reading: varOut[0]=i flagOut=FLAG_READ_ERR[k]
66
+ Error processing: varOut[0]=i flagOut=FLAG_READ[k]
67
+ Process stoped by user: varOut[0]=-1 flagOut=FLAG_READ[k]
68
+ Error saving: varOut[0]=i flagOut=FLAG_PROC[k]|FLAG_READ[k]
69
+ Read and processed: varOut[0]=i flagOut=FLAG_PROC[k]|FLAG_READ[k]|FLAG_FINALIZED[k]|FLAG_CALLBACK_INTERNAL
70
+ Use:
71
+ numCallBackTotOk+=sum(1 if x&FLAG_CALLBACK_INTERNAL else 0 for x in flagOut)
72
+ to evaluate the number of total internal callbacks
73
+ numProcOrErrTot=sum(1 if f else 0 for f in flagOut)
74
+ to evaluate the number of total images processed (after a possible pause)
75
+ numFinalized=sum(1 if f&FLAG_FINALIZED[0] else 0 for f in flagOut)
76
+ to evaluate the number of total images correctly processed
77
+
78
+ where FLAG_FINALIZED_OR_ERR = [ p|e for (p,e) in zip(FLAG_FINALIZED,FLAG_READ_ERR)]
79
+ numProcOrErrTot=sum(1 if (f&FLAG_FINALIZED_OR_ERR[0])or(not f&FLAG_PROC[0]) else 0 for f in flagOut)
80
+ to delete images
81
+ pa='C:\\desk\\dl\\apairs\\jetcross\\'
82
+ no='zR2jet0_0004a'
83
+ I =imread([pa no '.png']);
84
+ I=I*0+1;
85
+ imwrite(I,[pa no 'black.png']);
86
+ '''
87
+
88
+ flagOut=0#data.list_pim[i] #0 to be processed, -1 error, 1 correctly processed
89
+
90
+ varOut=[i,'',[]] # The log will be written unless exitNoLog. If FLAG_CALLBACK_INTERNAL will be set then also the internal part will be called.
91
+
92
+ #if PIV.WraOut.flagFerma!=0: return (flagOut,VarOut)
93
+ j=i*2
94
+ 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)
95
+ try:
96
+ varOut[1]+=f'{data.list_Image_Files[j]}-{data.list_Image_Files[j+1]}'
97
+ if data.list_eim[j] and data.list_eim[j+1]:
98
+ if data.list_pim[i]&FLAG_FINALIZED[kConst]:
99
+ flagOut=FLAG_READ[kConst]|FLAG_PROC[kConst]|FLAG_FINALIZED[kConst] # It has been already processed. Exit without calling the callback core part
100
+ #☻prTimeLock(0,f"{i} --> {data.list_Image_Files[j]} {data.list_Image_Files[j+1]} {hex(flagOut)}")
101
+ return exitNoLog(flagOut,varOut)
102
+ else:
103
+ if PIV.WraOut.eventExit.is_set(): return exitNoLog(flagOut,varOut)# non si può mettere prima
104
+ # reading images and transforming
105
+ #prTimeLock(0,f"{i} --> {data.list_Image_Files[j]} {data.list_Image_Files[j+1]}")
106
+ I1=[None]*2
107
+ # tbd
108
+ #if i==2:1/0
109
+ try:
110
+ for k in range(2):
111
+ if PIV.WraOut.eventExit.is_set(): return exitNoLog(flagOut,varOut)
112
+ nameImg=data.inpPath+data.list_Image_Files[j+k]
113
+ I1[k]=np.ascontiguousarray(Image.open(nameImg))
114
+ if data.FlagMIN:
115
+ if data.FlagTR and i%2:
116
+ I1[k]=I1[k]-data.compMin.Imin[[1,0][k]]
117
+ else:
118
+ I1[k]=I1[k]-data.compMin.Imin[k]
119
+ iProc=transfIm(data.OUT,flagTransf=0,Images=I1)
120
+ except Exception as inst:
121
+ flagOut|=FLAG_READ_ERR[kConst]
122
+ if data.list_pim[i]&FLAG_READ_ERR[kConst]:varOut[0]=-1# no log already written
123
+ varOut[1]+=f"\n!!!!!!!!!! Error while reading the image {data.list_Image_Files[j+k]}:\n{inst}\n"
124
+ prLock(f'{varOut[1]}')
125
+ return (flagOut,varOut) #we can exit directly! Not calling the internal part of the callback in case of error
126
+
127
+ # no exception reading images and transforming running the process
128
+ flagOut|=FLAG_READ[kConst]
129
+ #infoPrint.white(os.getpid())
130
+ try:
131
+ PIV.SetImg([Image2PIV_Float(I) for I in iProc]) #inside try but should not happen
132
+ if PIV.WraOut.eventExit.is_set(): return (flagOut,varOut)
133
+ err=PIV.PIV_Run(PIV.fun)
134
+ except Exception as inst:
135
+ #raise (inst)
136
+ if ( data.list_pim[i] &FLAG_READ[kConst]):varOut[0]=-1# no log already written
137
+ #dum=str(inst.__cause__).split('\n')[3] #solved
138
+ dum='\n'.join(str(inst.args[0]).split('\n')[3:])
139
+ #varOut[1]+=f"\n!!!!!!!!!! Error while processing the above image pair: {dum}"
140
+ varOut[1]+=f"\n!!!!!!!!!! Error while processing data:\n{dum}\n"
141
+ #prLock(f'{varOut[1]}')
142
+ return (flagOut,varOut) #we can exit directly! Not calling the internal part of the callback in case of error
143
+ try:# no exception running the process
144
+ if err==-1000: #interrotto
145
+ return exitNoLog(flagOut,varOut) #we can exit directly no log !
146
+ else:
147
+ # Finalizing the process (means transformations and saving data)
148
+ flagOut|=FLAG_PROC[kConst]# per completezza aggiungo anche processato
149
+ x,y,u,v=transfVect(data.OUT,PIV)
150
+ nameFields=PIV.Media.namesPIV.instVelFields
151
+ otherVars=[getattr(PIV,f) for f in nameFields[4:] ]
152
+ campoVel=[x,y,u,v] +transfIm(data.OUT,flagTransf=1,Images=otherVars,flagRot=1)
153
+ nameVar=PIV.Media.namesPIV.instVel
154
+ PIV.Media.sum(campoVel)
155
+ try:
156
+ saveResults(data,i+1,campoVel,nameVar)
157
+ except Exception as inst:
158
+ varOut[1]+=f"\n!!!!!!!!!! Error while saving the results:\n{str(inst)}\n"
159
+ #prLock(f'{varOut[1]}')
160
+ 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.
161
+ return (flagOut,varOut) #we can exit directly! Not calling the internal part of the callback in case of error
162
+ varOut[1]+="\n"+printPIVLog(PIV.PD)
163
+ flagOut|=FLAG_FINALIZED[kConst]
164
+ 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.
165
+ flagOut|=FLAG_CALLBACK_INTERNAL# Verrà chiamata la callback
166
+ except Exception as inst:
167
+ varOut[1]+=f"\n!!!!!!!!!! Error while finalizing the PIV process:\n{str(inst)}\n"
168
+ #prLock(f'{varOut[1]}')
169
+ return (flagOut,varOut)
170
+ else:#if data.list_eim[j] and data.list_eim[j+1]:
171
+ flagOut|=FLAG_READ_ERR[kConst]
172
+ if data.list_pim[i]&FLAG_READ_ERR[kConst]:varOut[0]=-1# no log already written
173
+ jj=j+1 if data.list_eim[j] else j
174
+ varOut[1]+=f"\n!!!!!!!!!! Error while reading the image {data.list_Image_Files[jj]}:\nThe image file is missing!\n"
175
+ #prLock(f'{varOut[1]}')
176
+ except :
177
+ flagOut|=FLAG_GENERIC_ERROR
178
+ 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.
179
+ varOut[1]+=printException(flagMessage=True)
180
+
181
+ # to del ma il resto dove va
182
+ #varOut=[i,stampa,[]] if flagOut&FLAG_FINALIZING_PROC_OK[0] else [-1,stampa,[]]
183
+ 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
184
+ #prLock(f'procMIN Main proc i={i}')
185
+ varOut[2]=campoVel#VarOut=[i,stampa,Var]
186
+
187
+
188
+
189
+ return (flagOut,varOut)
190
+
191
+ def finalPIV(procId, PIV,data,*args,finalPIVPIppo=4 ,**kwargs):
192
+ #prLock(f'finalPIV procId={procId}')
193
+ return PIV.Media
194
+
195
+ def saveAndMean(procId,flagHasWorked,med,data,*args,**kwargs):
196
+ ''' saveAndMean is the wrapUp function called once per processor '''
197
+ if flagHasWorked:
198
+ data.mediaPIV.sumMedia(med)
199
+ return data.mediaPIV
200
+
201
+ def callBackPIV(flag,perc,procId,flagOut,name,VarOut,signal_res):
202
+ '''
203
+ flag=true new data False just check exit
204
+ perc= precentage done
205
+ flagOutFromTasks,varOutFromTask Out varibles from task e.g.:
206
+ flagOut=1 #0 to be processed, -1 error, 1 correctly processed
207
+ varOutFromTask whatever for now a string
208
+ name current element in names
209
+ to stop the process the return value should be True otherwise sleep
210
+ '''
211
+ global FlagStopWorkers
212
+
213
+ if flag:
214
+ i=VarOut[0]
215
+ stampa=VarOut[1]
216
+ Var=VarOut[2]
217
+ #pr(f'Callback {i} getpid {os.getpid()} {len(Var)}')
218
+ #prLock(f'Callback {i} getpid {os.getpid()} ')
219
+ signal_res.emit(procId,i,flagOut,Var,stampa)
220
+ VarOut[2]=[]#altrimenti salvo le img
221
+ '''
222
+ if i==0:
223
+ callBackPIV.flagStop=True
224
+ if(callBackPIV.flagStop):
225
+ if i>=2:
226
+ callBackPIV.flagStop=False
227
+ FlagStopWorkers[0]=True
228
+ return True
229
+ #'''
230
+ if FlagStopWorkers[0]:
231
+ return True
232
+ else:
233
+ return False
234
+ callBackPIV.flagStop=True
235
+