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
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
PaIRS_UniNa/listLib.py ADDED
@@ -0,0 +1,303 @@
1
+ from .PaIRS_pypacks import pri
2
+ import copy
3
+
4
+ def list_item_at(lst,ind):
5
+ if ind[0]<len(lst):
6
+ p=lst[ind[0]]
7
+ else:
8
+ p=None
9
+ if p:
10
+ for i in range(1,len(ind)):
11
+ if ind[i]<len(p):
12
+ p=p[ind[i]]
13
+ else:
14
+ p=None
15
+ break
16
+ return p
17
+
18
+ def deep_duplicate(lst):
19
+
20
+ # Recursive function to copy the list
21
+ def recursive_duplicate(sub_lst):
22
+ if isinstance(sub_lst, list):
23
+ copied_sub_lst = []
24
+ for item in sub_lst:
25
+ if isinstance(item, list):
26
+ # If the item is a list, call recursively on it
27
+ copied_sub_lst.append(recursive_duplicate(item))
28
+ else:
29
+ # Check if the item has a 'duplicate' attribute and if it is callable
30
+ if hasattr(item, 'duplicate') and callable(item.duplicate):
31
+ copied_sub_lst.append(item.duplicate())
32
+ else:
33
+ copied_sub_lst.append(item)
34
+ return copied_sub_lst
35
+ else:
36
+ item=sub_lst
37
+ if hasattr(item, 'duplicate') and callable(item.duplicate):
38
+ return item.duplicate()
39
+ else: return item
40
+
41
+ # Call the recursive function on the original input
42
+ return recursive_duplicate(lst)
43
+
44
+ def copy_at_depth(lst, depth, indexes):
45
+ """Recursively copy elements at the specified depth using given indexes."""
46
+ global error_printed
47
+ error_printed = False
48
+ if not isinstance(indexes,list): indexes=list([indexes])
49
+
50
+ def recursive_copy(lst, depth, indexes, current_depth=0):
51
+ global error_printed
52
+ if depth < 0:
53
+ if not error_printed:
54
+ pri.Coding.red(f"Error [copy_at_depth]: Depth cannot be negative.")
55
+ error_printed = True
56
+ return None
57
+ elif depth == current_depth:
58
+ copied_elements = []
59
+ error_printed_for=False
60
+ for index in indexes:
61
+ if index < len(lst):
62
+ copied_elements.append(deep_duplicate(lst[index]))
63
+ else:
64
+ if not error_printed: pri.Coding.yellow(f"Warning [copy_at_depth]: Index {index} out of range for list at depth {current_depth}.")
65
+ error_printed_for=True
66
+ error_printed=error_printed_for
67
+ return copied_elements
68
+ elif not any(isinstance(sublist, list) for sublist in lst):
69
+ if not error_printed:
70
+ pri.Coding.red(f"Error [copy_at_depth]: Cannot go deeper into list structure at depth {current_depth}.")
71
+ error_printed = True
72
+ return None
73
+ return [recursive_copy(sublist, depth, indexes, current_depth + 1) for sublist in lst]
74
+
75
+ return recursive_copy(lst, depth, indexes)
76
+
77
+ def pop_at_depth(lst, depth, indexes):
78
+ """Recursively pop elements at the specified depth using given indexes."""
79
+ global error_printed
80
+ error_printed = False
81
+
82
+ def recursive_pop(lst, depth, indexes, current_depth=0):
83
+ global error_printed
84
+ if depth < 0:
85
+ if not error_printed:
86
+ pri.Coding.red(f"Error [pop_at_depth]: Depth cannot be negative.")
87
+ error_printed = True
88
+ return None
89
+ elif depth == current_depth:
90
+ popped_elements = []
91
+ error_printed_for=False
92
+ for index in sorted(indexes, reverse=True):
93
+ if index < len(lst):
94
+ popped_elements.append(lst.pop(index))
95
+ else:
96
+ if not error_printed:
97
+ pri.Coding.yellow(f"Warning [pop_at_depth]: Index {index} out of range for list at depth {current_depth}.")
98
+ error_printed_for = True
99
+ error_printed=error_printed_for
100
+ return popped_elements[::-1] # Reverse to restore original order
101
+ elif not any(isinstance(sublist, list) for sublist in lst):
102
+ if not error_printed:
103
+ pri.Coding.red(f"Error [pop_at_depth]: Cannot go deeper into list structure at depth {current_depth}.")
104
+ error_printed = True
105
+ return None
106
+ return [recursive_pop(sublist, depth, indexes, current_depth + 1) for sublist in lst]
107
+
108
+ return recursive_pop(lst, depth, indexes)
109
+
110
+ def insert_at_depth(lst, depth, indexes, values):
111
+ """Recursively insert a value at the specified depth using given indexes."""
112
+ global error_printed, gllst
113
+ error_printed = False
114
+ gllst=lst
115
+
116
+ def recursive_insert(lst, depth, indexes, values, current_depth=0):
117
+ global error_printed, gllst
118
+ if depth < 0:
119
+ if not error_printed:
120
+ pri.Coding.red(f"Error [insert_at_depth]: Depth cannot be negative.")
121
+ error_printed = True
122
+ return None
123
+ elif depth == current_depth:
124
+ if isinstance(indexes, list):
125
+ error_printed_for=False
126
+ sorted_data = sorted(zip(indexes, values), key=lambda x: x[0], reverse=True)
127
+ for idx, val in sorted_data:
128
+ if idx <= len(lst):
129
+ lst.insert(idx, val)
130
+ else:
131
+ lst.append(val)
132
+ if not error_printed: pri.Coding.yellow(f"Warning [insert_at_depth]: Index {idx} out of range for list at depth {current_depth}.")
133
+ error_printed_for = True
134
+ error_printed=error_printed_for
135
+ elif isinstance(indexes, int):
136
+ error_printed_for=False
137
+ for val in values:
138
+ if indexes <= len(lst):
139
+ lst.insert(indexes, val)
140
+ indexes += 1
141
+ else:
142
+ lst.append(val)
143
+ if not error_printed: pri.Coding.yellow(f"Warning [insert_at_depth]: Index {indexes} out of range for list at depth {current_depth}.")
144
+ error_printed_for = True
145
+ error_printed=error_printed_for
146
+ elif not any(isinstance(sublist, list) for sublist in lst):
147
+ if not error_printed:
148
+ pri.Coding.red(f"Error [insert_at_depth]: Cannot go deeper into list structure at depth {current_depth}.")
149
+ error_printed = True
150
+ return None
151
+ else:
152
+ for sublist, val in zip(lst, values):
153
+ recursive_insert(sublist, depth, indexes, val, current_depth + 1)
154
+
155
+ recursive_insert(lst, depth, indexes, values)
156
+
157
+ def delete_at_depth(lst, depth, indexes):
158
+ """Recursively delete elements at the specified depth using given indexes."""
159
+ global error_printed
160
+ error_printed = False
161
+
162
+ def recursive_delete(lst, depth, indexes, current_depth=0):
163
+ global error_printed
164
+ if depth < 0:
165
+ if not error_printed:
166
+ pri.Coding.red(f"Error [delete_at_depth]: Depth cannot be negative.")
167
+ error_printed = True
168
+ return None
169
+ elif depth == current_depth:
170
+ error_printed_for=False
171
+ for index in sorted(indexes, reverse=True):
172
+ if index < len(lst):
173
+ del lst[index]
174
+ else:
175
+ if not error_printed: pri.Coding.yellow(f"Warning [delete_at_depth]: Index {index} out of range for list at depth {current_depth}.")
176
+ error_printed_for = True
177
+ error_printed=error_printed_for
178
+ elif not any(isinstance(sublist, list) for sublist in lst):
179
+ if not error_printed:
180
+ pri.Coding.red(f"Error [delete_at_depth]: Cannot go deeper into list structure at depth {current_depth}.")
181
+ error_printed = True
182
+ return None
183
+ else:
184
+ for sublist in lst:
185
+ recursive_delete(sublist, depth, indexes, current_depth + 1)
186
+
187
+ recursive_delete(lst, depth, indexes)
188
+
189
+ def expand_level(lst, level=0, target_length=0):
190
+ """Recursively expand the specified level of depth to the target length."""
191
+ current_depth = get_list_dimension(lst)
192
+ if level >= current_depth:
193
+ pri.Coding.yellow("Warning [expand_level]: Target level exceeds current depth of the list.")
194
+ return
195
+
196
+ global error_printed
197
+ error_printed = False
198
+
199
+ def recursive_expand(lst, level, target_length):
200
+ global error_printed
201
+ if level == 0:
202
+ error_printed=expand_to_length(lst, level, target_length, error_printed)
203
+ else:
204
+ for sublist in lst:
205
+ if isinstance(sublist, list):
206
+ recursive_expand(sublist, level - 1, target_length)
207
+ return
208
+ recursive_expand(lst, level, target_length)
209
+ return
210
+
211
+ def expand_to_length(lst:list, level, target_length, error_printed):
212
+ """Expand the length of a list to the target length."""
213
+
214
+ current_length = len(lst)
215
+ if current_length >= target_length:
216
+ if not error_printed:
217
+ pri.Coding.yellow(f"Warning [expand_to_length]: Target length ({target_length}) is lower than or equal to current length ({current_length}) of the list at the target level ({level}).")
218
+ error_printed=True
219
+ else:
220
+ last_element = lst[-1]
221
+ for _ in range(target_length-current_length):
222
+ lst.append(copy.deepcopy(last_element))
223
+ return error_printed
224
+
225
+ def create_empty_list_of_dimension(dimension):
226
+ """Create an empty list with the specified depth."""
227
+ if dimension < 1:
228
+ pri.Coding.red("Error [create_empty_list]: Dimension cannot be zero or negative.")
229
+ return None
230
+
231
+ if dimension == 1:
232
+ return []
233
+
234
+ return [create_empty_list_of_dimension(dimension - 1)]
235
+
236
+ def get_list_dimension(lst):
237
+ """Recursively determine the depth of a list."""
238
+ if not isinstance(lst, list):
239
+ return 0
240
+
241
+ if not lst:
242
+ return 1
243
+
244
+ return 1+max(get_list_dimension(sublist) for sublist in lst)
245
+
246
+ def measure_depth_length(lst, depth):
247
+ """Measure the length of a list at a certain depth."""
248
+ if depth == 0:
249
+ return len(lst)
250
+
251
+ length = 0
252
+ for sublist in lst:
253
+ if isinstance(sublist, list):
254
+ length = max(length,measure_depth_length(sublist, depth - 1))
255
+ return length
256
+
257
+
258
+ if __name__ == "__main__":
259
+ pri.Time.blue('Start')
260
+ # Esempio di utilizzo
261
+ lst = [
262
+ [['a', 'b', 'c'], ['d', 'e', 'f'], ['1','2','3']],
263
+ [['g', 'h', 'i'], ['j', 'k', 'l'], ['4','5','6']]
264
+ ]
265
+ depth = 2
266
+
267
+ dimension = get_list_dimension(lst)
268
+ print("Dimension of the list:", dimension)
269
+
270
+ # Copia
271
+ indexes = [0, 2, 10]
272
+ copied_sublist = copy_at_depth(lst, depth, indexes)
273
+ print("Copied Sublist:", copied_sublist)
274
+
275
+ # Pop
276
+ indexes = [1, 2, 11]
277
+ popped_elements = pop_at_depth(lst, depth, indexes)
278
+ print("Popped Elements:", popped_elements)
279
+ print("List after Pop:", lst)
280
+
281
+ # Insert
282
+ indexes = [0, 12]
283
+ insert_at_depth(lst, depth, indexes, ['x','y'])
284
+ print("List after Insert:", lst)
285
+
286
+ empty_list = create_empty_list_of_dimension(dimension)
287
+ print("Empty List:", empty_list)
288
+ print("Dimension of the list:", get_list_dimension(empty_list))
289
+ insert_at_depth(empty_list, depth, indexes, copied_sublist)
290
+ print("List after Insert:", empty_list)
291
+
292
+ # Delete
293
+ indexes = [1, 2, 20]
294
+ delete_at_depth(lst, depth, indexes)
295
+ print("List after Delete:", lst)
296
+
297
+ #Expand
298
+ expand_level(lst,level=2,target_length=5)
299
+ print("List after Expand:", lst)
300
+
301
+ print("List after Expand: lenght of level 1:", measure_depth_length(lst,1))
302
+ print("List after Expand: lenght of level 2:", measure_depth_length(lst,2))
303
+ pri.Time.blue('End')
PaIRS_UniNa/mtfPIV.py CHANGED
@@ -12,7 +12,7 @@ def winLoc(H, winType ):
12
12
  [0.44959, 0.49364 , 0.05677 , 0.0],
13
13
  [0.35875 , 0.48829 , 0.14128 , 0.01168],
14
14
  [0.40217 , 0.49703 , 0.09392 , 0.00183]]
15
- nameBlack = ('Edged Blackmann', 'Exact Blackmann', 'Harris 3 term -67', 'Harris 3 term -61', 'Harris 4 term -92', 'Harris 4 term -74')
15
+ nameBlack = ('Edged Blackman', 'Exact Blackman', 'Harris 3 term -67', 'Harris 3 term -61', 'Harris 4 term -92', 'Harris 4 term -74')
16
16
  sCutBlack = ('EBL', 'ExBL', 'HA67', 'HA61', 'HA92', 'HA74' )
17
17
  # if needed insert the type *************************
18
18
  i=np.arange(0,H)
@@ -26,10 +26,10 @@ def winLoc(H, winType ):
26
26
  win= (4*WH*WH - 4*WH+1)
27
27
  name='Nogueira 1999'
28
28
  sCut='NOG'
29
- elif winType==2: # Blackmann ridotta
29
+ elif winType==2: # Blackman ridotta
30
30
  WH = (i+1) / (H+1)
31
31
  win = (0.42 - 0.5*np.cos(2*np.pi*WH)+0.08*np.cos(4*np.pi*WH))
32
- name='Blackmann'
32
+ name='Blackman'
33
33
  sCut='BL'
34
34
  elif winType==3: # doppia finestra quadrata
35
35
  lar = 0.25
@@ -86,7 +86,7 @@ def mtfSpline(o,n):
86
86
  and of course Unser 1993 a and b
87
87
  '''
88
88
  k=np.arange(0,n+1)
89
- fa=lambda k:np.array([np.math.factorial(v) for v in k ])
89
+ fa=lambda k:np.array([factorial(v) for v in k ])
90
90
 
91
91
  bSpline =lambda x: np.sum(( ((-1)**k)*(n+1)*((x+(n+1)/2-k)**n)*np.heaviside(x+(n+1)/2-k,1) )/(fa(k)*fa(n+1-k)))
92
92
  aa=bSpline(0)
@@ -103,9 +103,9 @@ def mtfPIV1(Wa,FlagWindowing,hWb, FlagCalcVel,Wc, IntVel, oMaxC, WBase,nPointPl
103
103
  #WBase=16# scaltura plot
104
104
  # A correlation window
105
105
  #Wa=32
106
- #FlagWindowing=0 # Weighting window for the correlation map (0=TopHat 1= Nogueira 2=Blackmann 3=top hat at 50#).
106
+ #FlagWindowing=0 # Weighting window for the correlation map (0=TopHat 1= Nogueira 2=Blackman 3=top hat at 50#).
107
107
  # B weighted average
108
- #FlagCalcVel=0 # Weighting window for absolute velocity (0=TopHat, 1=Nogueira, 2=Blackmann,...)
108
+ #FlagCalcVel=0 # Weighting window for absolute velocity (0=TopHat, 1=Nogueira, 2=Blackman,...)
109
109
  #hWb=4# Half-width of the filtering window (0=window dimension).
110
110
  # C dense predictor
111
111
  #IntVel=1 # Type of interpolation of the velocity (1=bilinear, 52-70 Bspline)
@@ -206,9 +206,9 @@ def main():
206
206
 
207
207
  # A correlation window
208
208
  Wa=32
209
- FlagWindowing=0 # Weighting window for the correlation map (0=TopHat 1= Nogueira 2=Blackmann 3=top hat at 50#).
209
+ FlagWindowing=0 # Weighting window for the correlation map (0=TopHat 1= Nogueira 2=Blackman 3=top hat at 50#).
210
210
  # B weighted average
211
- FlagCalcVel=0 # Weighting window for absolute velocity (0=TopHat, 1=Nogueira, 2=Blackmann,...)
211
+ FlagCalcVel=0 # Weighting window for absolute velocity (0=TopHat, 1=Nogueira, 2=Blackman,...)
212
212
  hWb=8# Half-width of the filtering window (0=window dimension).
213
213
  # C dense predictor
214
214
  IntVel=52 # Type of interpolation of the velocity (1=bilinear, 52-70 Bspline)