pivtools 0.1.3__cp311-cp311-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.
- pivtools-0.1.3.dist-info/METADATA +222 -0
- pivtools-0.1.3.dist-info/RECORD +127 -0
- pivtools-0.1.3.dist-info/WHEEL +5 -0
- pivtools-0.1.3.dist-info/entry_points.txt +3 -0
- pivtools-0.1.3.dist-info/top_level.txt +3 -0
- pivtools_cli/__init__.py +5 -0
- pivtools_cli/_build_marker.c +25 -0
- pivtools_cli/_build_marker.cp311-win_amd64.pyd +0 -0
- pivtools_cli/cli.py +225 -0
- pivtools_cli/example.py +139 -0
- pivtools_cli/lib/PIV_2d_cross_correlate.c +334 -0
- pivtools_cli/lib/PIV_2d_cross_correlate.h +22 -0
- pivtools_cli/lib/common.h +36 -0
- pivtools_cli/lib/interp2custom.c +146 -0
- pivtools_cli/lib/interp2custom.h +48 -0
- pivtools_cli/lib/peak_locate_gsl.c +711 -0
- pivtools_cli/lib/peak_locate_gsl.h +40 -0
- pivtools_cli/lib/peak_locate_gsl_print.c +736 -0
- pivtools_cli/lib/peak_locate_lm.c +751 -0
- pivtools_cli/lib/peak_locate_lm.h +27 -0
- pivtools_cli/lib/xcorr.c +342 -0
- pivtools_cli/lib/xcorr.h +31 -0
- pivtools_cli/lib/xcorr_cache.c +78 -0
- pivtools_cli/lib/xcorr_cache.h +26 -0
- pivtools_cli/piv/interp2custom/interp2custom.py +69 -0
- pivtools_cli/piv/piv.py +240 -0
- pivtools_cli/piv/piv_backend/base.py +825 -0
- pivtools_cli/piv/piv_backend/cpu_instantaneous.py +1005 -0
- pivtools_cli/piv/piv_backend/factory.py +28 -0
- pivtools_cli/piv/piv_backend/gpu_instantaneous.py +15 -0
- pivtools_cli/piv/piv_backend/infilling.py +445 -0
- pivtools_cli/piv/piv_backend/outlier_detection.py +306 -0
- pivtools_cli/piv/piv_backend/profile_cpu_instantaneous.py +230 -0
- pivtools_cli/piv/piv_result.py +40 -0
- pivtools_cli/piv/save_results.py +342 -0
- pivtools_cli/piv_cluster/cluster.py +108 -0
- pivtools_cli/preprocessing/filters.py +399 -0
- pivtools_cli/preprocessing/preprocess.py +79 -0
- pivtools_cli/tests/helpers.py +107 -0
- pivtools_cli/tests/instantaneous_piv/test_piv_integration.py +167 -0
- pivtools_cli/tests/instantaneous_piv/test_piv_integration_multi.py +553 -0
- pivtools_cli/tests/preprocessing/test_filters.py +41 -0
- pivtools_core/__init__.py +5 -0
- pivtools_core/config.py +703 -0
- pivtools_core/config.yaml +135 -0
- pivtools_core/image_handling/__init__.py +0 -0
- pivtools_core/image_handling/load_images.py +464 -0
- pivtools_core/image_handling/readers/__init__.py +53 -0
- pivtools_core/image_handling/readers/generic_readers.py +50 -0
- pivtools_core/image_handling/readers/lavision_reader.py +190 -0
- pivtools_core/image_handling/readers/registry.py +24 -0
- pivtools_core/paths.py +49 -0
- pivtools_core/vector_loading.py +248 -0
- pivtools_gui/__init__.py +3 -0
- pivtools_gui/app.py +687 -0
- pivtools_gui/calibration/__init__.py +0 -0
- pivtools_gui/calibration/app/__init__.py +0 -0
- pivtools_gui/calibration/app/views.py +1186 -0
- pivtools_gui/calibration/calibration_planar/planar_calibration_production.py +570 -0
- pivtools_gui/calibration/vector_calibration_production.py +544 -0
- pivtools_gui/config.py +703 -0
- pivtools_gui/image_handling/__init__.py +0 -0
- pivtools_gui/image_handling/load_images.py +464 -0
- pivtools_gui/image_handling/readers/__init__.py +53 -0
- pivtools_gui/image_handling/readers/generic_readers.py +50 -0
- pivtools_gui/image_handling/readers/lavision_reader.py +190 -0
- pivtools_gui/image_handling/readers/registry.py +24 -0
- pivtools_gui/masking/__init__.py +0 -0
- pivtools_gui/masking/app/__init__.py +0 -0
- pivtools_gui/masking/app/views.py +123 -0
- pivtools_gui/paths.py +49 -0
- pivtools_gui/piv_runner.py +261 -0
- pivtools_gui/pivtools.py +58 -0
- pivtools_gui/plotting/__init__.py +0 -0
- pivtools_gui/plotting/app/__init__.py +0 -0
- pivtools_gui/plotting/app/views.py +1671 -0
- pivtools_gui/plotting/plot_maker.py +220 -0
- pivtools_gui/post_processing/POD/__init__.py +0 -0
- pivtools_gui/post_processing/POD/app/__init__.py +0 -0
- pivtools_gui/post_processing/POD/app/views.py +647 -0
- pivtools_gui/post_processing/POD/pod_decompose.py +979 -0
- pivtools_gui/post_processing/POD/views.py +1096 -0
- pivtools_gui/post_processing/__init__.py +0 -0
- pivtools_gui/static/404.html +1 -0
- pivtools_gui/static/_next/static/chunks/117-d5793c8e79de5511.js +2 -0
- pivtools_gui/static/_next/static/chunks/484-cfa8b9348ce4f00e.js +1 -0
- pivtools_gui/static/_next/static/chunks/869-320a6b9bdafbb6d3.js +1 -0
- pivtools_gui/static/_next/static/chunks/app/_not-found/page-12f067ceb7415e55.js +1 -0
- pivtools_gui/static/_next/static/chunks/app/layout-b907d5f31ac82e9d.js +1 -0
- pivtools_gui/static/_next/static/chunks/app/page-334cc4e8444cde2f.js +1 -0
- pivtools_gui/static/_next/static/chunks/fd9d1056-ad15f396ddf9b7e5.js +1 -0
- pivtools_gui/static/_next/static/chunks/framework-f66176bb897dc684.js +1 -0
- pivtools_gui/static/_next/static/chunks/main-a1b3ced4d5f6d998.js +1 -0
- pivtools_gui/static/_next/static/chunks/main-app-8a63c6f5e7baee11.js +1 -0
- pivtools_gui/static/_next/static/chunks/pages/_app-72b849fbd24ac258.js +1 -0
- pivtools_gui/static/_next/static/chunks/pages/_error-7ba65e1336b92748.js +1 -0
- pivtools_gui/static/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- pivtools_gui/static/_next/static/chunks/webpack-4a8ca7c99e9bb3d8.js +1 -0
- pivtools_gui/static/_next/static/css/7d3f2337d7ea12a5.css +3 -0
- pivtools_gui/static/_next/static/vQeR20OUdSSKlK4vukC4q/_buildManifest.js +1 -0
- pivtools_gui/static/_next/static/vQeR20OUdSSKlK4vukC4q/_ssgManifest.js +1 -0
- pivtools_gui/static/file.svg +1 -0
- pivtools_gui/static/globe.svg +1 -0
- pivtools_gui/static/grid.svg +8 -0
- pivtools_gui/static/index.html +1 -0
- pivtools_gui/static/index.txt +8 -0
- pivtools_gui/static/next.svg +1 -0
- pivtools_gui/static/vercel.svg +1 -0
- pivtools_gui/static/window.svg +1 -0
- pivtools_gui/stereo_reconstruction/__init__.py +0 -0
- pivtools_gui/stereo_reconstruction/app/__init__.py +0 -0
- pivtools_gui/stereo_reconstruction/app/views.py +1985 -0
- pivtools_gui/stereo_reconstruction/stereo_calibration_production.py +606 -0
- pivtools_gui/stereo_reconstruction/stereo_reconstruction_production.py +544 -0
- pivtools_gui/utils.py +63 -0
- pivtools_gui/vector_loading.py +248 -0
- pivtools_gui/vector_merging/__init__.py +1 -0
- pivtools_gui/vector_merging/app/__init__.py +1 -0
- pivtools_gui/vector_merging/app/views.py +759 -0
- pivtools_gui/vector_statistics/app/__init__.py +1 -0
- pivtools_gui/vector_statistics/app/views.py +710 -0
- pivtools_gui/vector_statistics/ensemble_statistics.py +49 -0
- pivtools_gui/vector_statistics/instantaneous_statistics.py +311 -0
- pivtools_gui/video_maker/__init__.py +0 -0
- pivtools_gui/video_maker/app/__init__.py +0 -0
- pivtools_gui/video_maker/app/views.py +436 -0
- pivtools_gui/video_maker/video_maker.py +662 -0
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: pivtools
|
|
3
|
+
Version: 0.1.3
|
|
4
|
+
Summary: PIVTOOLs - Particle Image Velocimetry Tools with CLI and GUI
|
|
5
|
+
Author-email: Your Name <your.email@example.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/MTT69/python-PIVTOOLs
|
|
8
|
+
Project-URL: Repository, https://github.com/MTT69/python-PIVTOOLs
|
|
9
|
+
Project-URL: Issues, https://github.com/MTT69/python-PIVTOOLs/issues
|
|
10
|
+
Classifier: Development Status :: 4 - Beta
|
|
11
|
+
Classifier: Intended Audience :: Science/Research
|
|
12
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
13
|
+
Classifier: Operating System :: OS Independent
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Topic :: Scientific/Engineering :: Image Processing
|
|
18
|
+
Classifier: Framework :: Flask
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
Requires-Dist: dask[distributed]==2025.7.0
|
|
22
|
+
Requires-Dist: loguru==0.7.3
|
|
23
|
+
Requires-Dist: numpy==2.2.6
|
|
24
|
+
Requires-Dist: opencv-python==4.12.0.88
|
|
25
|
+
Requires-Dist: pandas==2.3.1
|
|
26
|
+
Requires-Dist: pillow==11.3.0
|
|
27
|
+
Requires-Dist: PyYAML==6.0.2
|
|
28
|
+
Requires-Dist: scipy==1.16.1
|
|
29
|
+
Requires-Dist: tifffile==2025.6.11
|
|
30
|
+
Requires-Dist: tqdm==4.67.1
|
|
31
|
+
Requires-Dist: numba==0.61.2
|
|
32
|
+
Requires-Dist: psutil==6.1.1
|
|
33
|
+
Requires-Dist: pytest==8.4.2
|
|
34
|
+
Requires-Dist: rawpy==0.25.1
|
|
35
|
+
Requires-Dist: scikit-image==0.25.2
|
|
36
|
+
Requires-Dist: lvpyio==1.3.1; sys_platform != "darwin"
|
|
37
|
+
Requires-Dist: bottleneck==1.6.0
|
|
38
|
+
Requires-Dist: scikit-learn==1.7.2
|
|
39
|
+
Requires-Dist: threadpoolctl==3.6.0
|
|
40
|
+
Requires-Dist: Flask==3.1.1
|
|
41
|
+
Requires-Dist: flask-cors==6.0.1
|
|
42
|
+
Requires-Dist: matplotlib==3.10.5
|
|
43
|
+
|
|
44
|
+
# PIVTOOLs
|
|
45
|
+
|
|
46
|
+
Particle Image Velocimetry Tools - A comprehensive toolkit for PIV analysis with both command-line and GUI interfaces.
|
|
47
|
+
|
|
48
|
+
## Installation
|
|
49
|
+
|
|
50
|
+
Install PIVTOOLs with a single command:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
pip install pivtools
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
This installs the complete toolkit including:
|
|
57
|
+
- **Core utilities** for image handling and vector processing
|
|
58
|
+
- **Command-line interface** (`pivtools-cli`) for automated workflows
|
|
59
|
+
- **Web-based GUI** (`pivtools-gui`) for interactive analysis
|
|
60
|
+
|
|
61
|
+
The package includes pre-compiled C extensions for optimal performance on Windows, macOS, and Linux.
|
|
62
|
+
|
|
63
|
+
## Quick Start
|
|
64
|
+
|
|
65
|
+
### Initialize a new PIVTOOLs workspace
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
pivtools-cli init
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
This creates a default `config.yaml` file in your current directory that you can edit to configure your PIV analysis.
|
|
72
|
+
|
|
73
|
+
### Run PIV analysis (command-line)
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
pivtools-cli run
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
This runs the PIV analysis using the `config.yaml` in your current directory.
|
|
80
|
+
|
|
81
|
+
### Launch the GUI
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
pivtools-gui
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
This starts the web-based GUI at http://localhost:5000 where you can interactively configure and run PIV analysis.
|
|
88
|
+
|
|
89
|
+
## Configuration
|
|
90
|
+
|
|
91
|
+
Edit the `config.yaml` file to configure:
|
|
92
|
+
|
|
93
|
+
- Input/output paths
|
|
94
|
+
- Image formats and processing parameters
|
|
95
|
+
- PIV algorithm settings
|
|
96
|
+
- Filtering and post-processing options
|
|
97
|
+
- Calibration parameters
|
|
98
|
+
|
|
99
|
+
See the example `config.yaml` for all available options.
|
|
100
|
+
|
|
101
|
+
## Requirements
|
|
102
|
+
|
|
103
|
+
- Python 3.8+
|
|
104
|
+
- FFTW library (automatically handled during installation)
|
|
105
|
+
- Camera calibration images (for accurate scaling)
|
|
106
|
+
|
|
107
|
+
## Development
|
|
108
|
+
|
|
109
|
+
For development installation with local C compilation:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
# Install FFTW first (platform-specific)
|
|
113
|
+
# Windows: vcpkg install fftw3[threads]:x64-windows-static
|
|
114
|
+
# macOS: brew install fftw gcc
|
|
115
|
+
# Linux: apt-get install libfftw3-dev
|
|
116
|
+
|
|
117
|
+
# Set environment variables
|
|
118
|
+
export FFTW_INC_PATH=/path/to/fftw/include
|
|
119
|
+
export FFTW_LIB_PATH=/path/to/fftw/lib
|
|
120
|
+
|
|
121
|
+
# Install in development mode
|
|
122
|
+
pip install -e .
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## License
|
|
126
|
+
|
|
127
|
+
MIT License
|
|
128
|
+
|
|
129
|
+
Particle Image Velocimetry Tools - A comprehensive toolkit for PIV analysis with both command-line and GUI interfaces.
|
|
130
|
+
|
|
131
|
+
## Installation
|
|
132
|
+
|
|
133
|
+
Install PIVTOOLs from PyPI:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
pip install PIVTOOLs
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
This will install the package with pre-compiled C extensions for your platform.
|
|
140
|
+
|
|
141
|
+
## Quick Start
|
|
142
|
+
|
|
143
|
+
### Initialize a new PIV workspace
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
pivtools-cli init
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
This creates a `config.yaml` file in your current directory with default settings.
|
|
150
|
+
|
|
151
|
+
### Run PIV analysis (command line)
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
pivtools-cli run
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Launch the GUI
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
pivtools-gui
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
Then open http://localhost:5000 in your browser.
|
|
164
|
+
|
|
165
|
+
## Configuration
|
|
166
|
+
|
|
167
|
+
Edit the `config.yaml` file to configure:
|
|
168
|
+
|
|
169
|
+
- Input/output paths
|
|
170
|
+
- Image formats and processing parameters
|
|
171
|
+
- PIV algorithm settings
|
|
172
|
+
- Filtering and post-processing options
|
|
173
|
+
|
|
174
|
+
## Requirements
|
|
175
|
+
|
|
176
|
+
- Python 3.8+
|
|
177
|
+
- FFTW library (automatically handled during installation)
|
|
178
|
+
- See `requirements.txt` for full dependencies
|
|
179
|
+
|
|
180
|
+
## Development
|
|
181
|
+
|
|
182
|
+
For development installation:
|
|
183
|
+
|
|
184
|
+
```bash
|
|
185
|
+
git clone https://github.com/MTT69/python-PIVTOOLs.git
|
|
186
|
+
cd python-PIVTOOLs
|
|
187
|
+
pip install -e .
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## Building from Source
|
|
191
|
+
|
|
192
|
+
If building from source, ensure FFTW is installed:
|
|
193
|
+
|
|
194
|
+
### Linux (Ubuntu/Debian)
|
|
195
|
+
```bash
|
|
196
|
+
sudo apt-get install libfftw3-dev
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### macOS
|
|
200
|
+
```bash
|
|
201
|
+
brew install fftw
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
### Windows
|
|
205
|
+
Install FFTW via vcpkg:
|
|
206
|
+
```bash
|
|
207
|
+
vcpkg install fftw3[threads]:x64-windows-static
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Set environment variables:
|
|
211
|
+
```bash
|
|
212
|
+
set FFTW_INC_PATH=C:\path\to\fftw\include
|
|
213
|
+
set FFTW_LIB_PATH=C:\path\to\fftw\lib
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## License
|
|
217
|
+
|
|
218
|
+
MIT License
|
|
219
|
+
|
|
220
|
+
## Contributing
|
|
221
|
+
|
|
222
|
+
Contributions welcome! Please see the GitHub repository for issues and pull requests.
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
pivtools_cli/__init__.py,sha256=TCN6JDj60_2T52cRzg5cKLnnJD-Q7x6I6PQoWyGtA28,78
|
|
2
|
+
pivtools_cli/_build_marker.c,sha256=HgT14FR7feRflvhJ_NFTWtMSee0pJ4SutY7aES9yw0M,904
|
|
3
|
+
pivtools_cli/_build_marker.cp311-win_amd64.pyd,sha256=gcsYt-yIiJNuLqxZ6wOyX7zyypWqXG5r99yEoCO7xf0,10752
|
|
4
|
+
pivtools_cli/cli.py,sha256=rpG7ESR3gGfad3dgKrKno0OtlM62eSmjWpNJ1F5ztoQ,5065
|
|
5
|
+
pivtools_cli/example.py,sha256=jCvw6g4nW0D39nUj1fprazjdXxcyMULFIrma5QHUOnM,5714
|
|
6
|
+
pivtools_cli/lib/PIV_2d_cross_correlate.c,sha256=s5chtbXoGBsGHJ0pHirhzbQ5KAgod4ShqG9huKaekWY,12003
|
|
7
|
+
pivtools_cli/lib/PIV_2d_cross_correlate.h,sha256=IIssyq15xFdkemynGCK0LyDmn7poSVlGcYiKZVDCtcY,815
|
|
8
|
+
pivtools_cli/lib/common.h,sha256=xKgbwTgtcgn1_GuoJfgDu_iQYEiQi2BFZJgQsr68joo,988
|
|
9
|
+
pivtools_cli/lib/interp2custom.c,sha256=8Cbmxsf9UsvUcqQl-EvJQpVybnQQ7mV5UyedhiqjRMs,5116
|
|
10
|
+
pivtools_cli/lib/interp2custom.h,sha256=E7kqOBCx9psU0vKt8TUccAWyGvGDZT1vyp4Ec6AxWds,1374
|
|
11
|
+
pivtools_cli/lib/peak_locate_gsl.c,sha256=HSC-gi1pEL6YCYiOLmJ_xCTQmM9ca7iYVjlzREVKk0M,23283
|
|
12
|
+
pivtools_cli/lib/peak_locate_gsl.h,sha256=OBLsaRCVbV9wtcO7X64OEs1JWpirbcd_5Beo6cTpSgM,1266
|
|
13
|
+
pivtools_cli/lib/peak_locate_gsl_print.c,sha256=mROzmBewR23J8JOsMObepv9pY4rLqom3_BnA9JXawY4,23693
|
|
14
|
+
pivtools_cli/lib/peak_locate_lm.c,sha256=1xCxclk10GWFL2JysQGdvyD-7-37KF7VGykvDfvUGGU,24831
|
|
15
|
+
pivtools_cli/lib/peak_locate_lm.h,sha256=FmzujmV3tKIafcOSlCmUrCXO0SaSPdw_d2OuB_yz6oc,1015
|
|
16
|
+
pivtools_cli/lib/xcorr.c,sha256=NL9yfGoWc2c6nEwh4wHs5zkt-VdIfs_eQATsUwQuo3w,9389
|
|
17
|
+
pivtools_cli/lib/xcorr.h,sha256=iwDX03pxMTANtt98mybVfnnuCNlznAjDaSZud01Ohqs,865
|
|
18
|
+
pivtools_cli/lib/xcorr_cache.c,sha256=OHjQmeXD0FuQTEfmWBCIEIixOx5l8x02Rlpecfbabjo,2068
|
|
19
|
+
pivtools_cli/lib/xcorr_cache.h,sha256=fySLUPYud3wjPok0jzXzTBFxe9xF8oy7s9fFZcb6Dh0,770
|
|
20
|
+
pivtools_cli/piv/piv.py,sha256=-89b8fXnkaQsz2es4an_1LKtP6eljQl9q4zB_oFqfbY,8574
|
|
21
|
+
pivtools_cli/piv/piv_result.py,sha256=IZt99qEakPbfhMoF9fwDS_aiivYFDVTfZ0jzLPo-NDs,1290
|
|
22
|
+
pivtools_cli/piv/save_results.py,sha256=znnI0uIz4dOQkNGb2yLMuJ8lf7Ai3-vxLbC3UGEcMn4,12484
|
|
23
|
+
pivtools_cli/piv/interp2custom/interp2custom.py,sha256=QebcIbU9tJG3J8Stz3ieFfelXCmFMITKzO4eXNsHXm8,2498
|
|
24
|
+
pivtools_cli/piv/piv_backend/base.py,sha256=vCw2i-_SNY-e5vSlxAlVwtTtV5U1pzlip5Sl7TP8peU,32695
|
|
25
|
+
pivtools_cli/piv/piv_backend/cpu_instantaneous.py,sha256=JGCVd5ak-V98t9aoGLTfBi_Nq83jGR96wUWLqvR440M,46176
|
|
26
|
+
pivtools_cli/piv/piv_backend/factory.py,sha256=CSbh46PwJ9bLsRDWay9VdazCG5pN4uFOolBSXe_VqMs,1082
|
|
27
|
+
pivtools_cli/piv/piv_backend/gpu_instantaneous.py,sha256=Kv5IXZzLOFm684QmufbcKisApUto_qnn2D5NXcgCfbE,345
|
|
28
|
+
pivtools_cli/piv/piv_backend/infilling.py,sha256=fCZI1Zckq6pXxS98ncFefkdb-9ZMiJ7QCSE2GSmkzmg,13934
|
|
29
|
+
pivtools_cli/piv/piv_backend/outlier_detection.py,sha256=ODMG5FyzJlOwbNeraQIh-UJGNN5afOEIbrgCbzJKsDc,10112
|
|
30
|
+
pivtools_cli/piv/piv_backend/profile_cpu_instantaneous.py,sha256=rlmmVn_SYAxeMWIHJjfQqyc7V0eMuASKm8WsPS03k9E,9215
|
|
31
|
+
pivtools_cli/piv_cluster/cluster.py,sha256=RvGz_zQVq5WWSxBT1AOf92UN3rsP5cLn54RQx9Pn9-0,3248
|
|
32
|
+
pivtools_cli/preprocessing/filters.py,sha256=xmWn-CP2UY0b3BHmPY9h8JasagQy8eQwevLMmR8_254,12384
|
|
33
|
+
pivtools_cli/preprocessing/preprocess.py,sha256=2Z5oaV4Xw-jNx5lxNQ_OvIv-xHjnV-JujWLI6YS8vKk,2636
|
|
34
|
+
pivtools_cli/tests/helpers.py,sha256=RS7fn9uYTueYN2qsmAga-tmJngjjoXHhlGH7U7YgQos,3408
|
|
35
|
+
pivtools_cli/tests/instantaneous_piv/test_piv_integration.py,sha256=xmNC1OzNhc6S_u0tIkieDTTAiHWgFSXh1TQofICX4no,7594
|
|
36
|
+
pivtools_cli/tests/instantaneous_piv/test_piv_integration_multi.py,sha256=UrDAe-8nUhj6S9U81SJxuryJNMesWqzr3ngvOvJ3hs8,24992
|
|
37
|
+
pivtools_cli/tests/preprocessing/test_filters.py,sha256=7T99Eh3XZnOk9iwzCGhxRrjNpiZl1bgB4ovhfY0eqt4,1706
|
|
38
|
+
pivtools_core/__init__.py,sha256=gdkQ-__c9lUKr5kuIEidyKbXb0FqFvFmHpt9IpQLI-I,89
|
|
39
|
+
pivtools_core/config.py,sha256=-DyOptJFdSrSDugukIK58H76AJVqyAChRTNDVi93Caw,25498
|
|
40
|
+
pivtools_core/config.yaml,sha256=_p5Rq-cFR7okGgYFjeMi-H18p7LQKwpeDJFNU099PuU,2507
|
|
41
|
+
pivtools_core/paths.py,sha256=hCVs2CZWWqMzmRY4jmNJ-9zWPsHh4ol41nFGxR0kBG4,1830
|
|
42
|
+
pivtools_core/vector_loading.py,sha256=G_5vMaxK_puTfmlOvkNJai3TWUvyDXErtpxy95cyRXU,9883
|
|
43
|
+
pivtools_core/image_handling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
44
|
+
pivtools_core/image_handling/load_images.py,sha256=SueCu2Jk30XSgopIMycjQmyw3CcjGikhhsWA8hSj-vI,17133
|
|
45
|
+
pivtools_core/image_handling/readers/__init__.py,sha256=ceQb08ZH0L_0YoP6aZt8Izo6u6RziDKQJTQ4fYOG7wE,1701
|
|
46
|
+
pivtools_core/image_handling/readers/generic_readers.py,sha256=9bB7cxjp3ynmr4FNJRlzDfwyS1qVT27rIF93r7QuoYs,1466
|
|
47
|
+
pivtools_core/image_handling/readers/lavision_reader.py,sha256=uX10HMheQSBY3Q3a44vkwuJt_O8PAH1tp57l7a7DP9c,6895
|
|
48
|
+
pivtools_core/image_handling/readers/registry.py,sha256=WghMnGSZwn9v0K7F6gjsQqTN6Rdwr-KX0M2s9p_b1HE,799
|
|
49
|
+
pivtools_gui/__init__.py,sha256=1t4eNKRFGrnQAV8Xhb2PCy7TTOPmFWswEdNN5F2zx48,96
|
|
50
|
+
pivtools_gui/app.py,sha256=90FkcQF2jS9NYGzeI_043PhMlvUZ2K4P54aPEBg_rX0,24310
|
|
51
|
+
pivtools_gui/config.py,sha256=ZLH39DeNFDiOT1xgv7mYpeZ00hA3_L4vgRGKlU4HnMg,25536
|
|
52
|
+
pivtools_gui/paths.py,sha256=hCVs2CZWWqMzmRY4jmNJ-9zWPsHh4ol41nFGxR0kBG4,1830
|
|
53
|
+
pivtools_gui/piv_runner.py,sha256=HIOF1agVty6SoYe6UYfZdkFWJK20xgCZeSGFuaCbbTY,9336
|
|
54
|
+
pivtools_gui/pivtools.py,sha256=tJHGSwtoZTw04jGOJQn_nyiFXv-H5Ukr7oRnm3LSBIU,2324
|
|
55
|
+
pivtools_gui/utils.py,sha256=puxR65XqGobX3NM1kBzCC74X8bNTFE1oXgxutvGx6CQ,2062
|
|
56
|
+
pivtools_gui/vector_loading.py,sha256=AV-3DWtqzX7kfaszuCifwNzoUq__BLc1w8s5pC0Nc4Y,9896
|
|
57
|
+
pivtools_gui/calibration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
58
|
+
pivtools_gui/calibration/vector_calibration_production.py,sha256=r5VFSvMIi6Q_2xAMucDZeoVczT11uqgw8grFpARfgvo,20878
|
|
59
|
+
pivtools_gui/calibration/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
60
|
+
pivtools_gui/calibration/app/views.py,sha256=jH2Xhg9z8JpTnROdPMykM1dAkT11-xW9cWmZVgpplGw,49567
|
|
61
|
+
pivtools_gui/calibration/calibration_planar/planar_calibration_production.py,sha256=7iQ_bboj9GvOE7gK5WEfPNIXWuCpGeOO2YONMmoOgy0,20992
|
|
62
|
+
pivtools_gui/image_handling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
63
|
+
pivtools_gui/image_handling/load_images.py,sha256=ft19PKoF1nQqSqQR234Ka_qvn7RbqC9Ej1t_8pOcvO4,17185
|
|
64
|
+
pivtools_gui/image_handling/readers/__init__.py,sha256=ceQb08ZH0L_0YoP6aZt8Izo6u6RziDKQJTQ4fYOG7wE,1701
|
|
65
|
+
pivtools_gui/image_handling/readers/generic_readers.py,sha256=9bB7cxjp3ynmr4FNJRlzDfwyS1qVT27rIF93r7QuoYs,1466
|
|
66
|
+
pivtools_gui/image_handling/readers/lavision_reader.py,sha256=uX10HMheQSBY3Q3a44vkwuJt_O8PAH1tp57l7a7DP9c,6895
|
|
67
|
+
pivtools_gui/image_handling/readers/registry.py,sha256=WghMnGSZwn9v0K7F6gjsQqTN6Rdwr-KX0M2s9p_b1HE,799
|
|
68
|
+
pivtools_gui/masking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
69
|
+
pivtools_gui/masking/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
70
|
+
pivtools_gui/masking/app/views.py,sha256=HxKFbtO2DKF1zo-ocXsx0lJ3dtVjfOOQT-akXQjSakw,4356
|
|
71
|
+
pivtools_gui/plotting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
72
|
+
pivtools_gui/plotting/plot_maker.py,sha256=vkBb6R-EqdOkfmNfdFKtmmsG2RtiRwiQHBBN1sv2x-w,7912
|
|
73
|
+
pivtools_gui/plotting/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
74
|
+
pivtools_gui/plotting/app/views.py,sha256=B-9MbXuc3AM5oxdqo7phgP-ZIoAQbM8x7GsOdXinZeo,70580
|
|
75
|
+
pivtools_gui/post_processing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
|
+
pivtools_gui/post_processing/POD/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
|
+
pivtools_gui/post_processing/POD/pod_decompose.py,sha256=wKt7aSPSY9bReWlFWsIVjr7O2ZX76hDnaPe687BsToA,40853
|
|
78
|
+
pivtools_gui/post_processing/POD/views.py,sha256=mrmFfBvLxQnEhjRinw-9EYxRSVoJVyfah1-Z2ztK6tk,39587
|
|
79
|
+
pivtools_gui/post_processing/POD/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
80
|
+
pivtools_gui/post_processing/POD/app/views.py,sha256=O0kj6VSgAhEXwqoOs_pVgkYcL718vgghX8zyey_wfOY,23095
|
|
81
|
+
pivtools_gui/static/404.html,sha256=6hSLqEVmzt_q0agpRcOrsZMO_uQ3NK__rdoTcBGZsAM,7169
|
|
82
|
+
pivtools_gui/static/file.svg,sha256=K2eBLDJcGZoCU2zb7qDFk6cvcH0yO3LuPgjbqwZ1O9Q,391
|
|
83
|
+
pivtools_gui/static/globe.svg,sha256=thS5vxg5JZV2YayFFJj-HYAp_UOmL7_thvniYkpX588,1035
|
|
84
|
+
pivtools_gui/static/grid.svg,sha256=PatfsKDW1NHlgVIoNOFQroApsnlFJw_AaBK5wUhG3Ck,322
|
|
85
|
+
pivtools_gui/static/index.html,sha256=19M49qYhKTjjWsL05LSUQbFVnZcr0nRN4zg5f8pF9js,5038
|
|
86
|
+
pivtools_gui/static/index.txt,sha256=5V4ug1kzjvhPG77Q5EBWHJbp87pbJrnG2kiN5MnWR48,2523
|
|
87
|
+
pivtools_gui/static/next.svg,sha256=VZld-tbstJRaHoVt3KA8XhaqW_E_0htN9qdK55NXvPw,1375
|
|
88
|
+
pivtools_gui/static/vercel.svg,sha256=8IEzey_uY1tFW2MnVAaj5_OdagFOJa2Q2rWmfmKhKsQ,128
|
|
89
|
+
pivtools_gui/static/window.svg,sha256=ZEdoxKrrR2e84pM0TusMEl-4BKlNgBRAQkByIC2F46E,385
|
|
90
|
+
pivtools_gui/static/_next/static/chunks/117-d5793c8e79de5511.js,sha256=fAKiBGIPUmb5lrgCc5dRKQOPD49Js-XTLRQNdRszRsM,123743
|
|
91
|
+
pivtools_gui/static/_next/static/chunks/484-cfa8b9348ce4f00e.js,sha256=wIRwajMwtHpN-RF4hSGbeZb7LTWhOYMzE2-Ce9ArGBw,199401
|
|
92
|
+
pivtools_gui/static/_next/static/chunks/869-320a6b9bdafbb6d3.js,sha256=qweqobJ2PY3SiqzRGcBj6SSyG0Eg9XdFDEHYjOOMu9U,31760
|
|
93
|
+
pivtools_gui/static/_next/static/chunks/fd9d1056-ad15f396ddf9b7e5.js,sha256=uL3flIHYWdZI4eBQ-DIus97-PdP5vRP0xE3W8uz1q4A,172834
|
|
94
|
+
pivtools_gui/static/_next/static/chunks/framework-f66176bb897dc684.js,sha256=QlDVPwvHVuzi3daQoAit0df9yIdSjGcfTf6NkW13h7c,139978
|
|
95
|
+
pivtools_gui/static/_next/static/chunks/main-a1b3ced4d5f6d998.js,sha256=WoWBqCHelNFC3c2uyuLDSv4VGoxie0pq05SA_DSrGRk,116355
|
|
96
|
+
pivtools_gui/static/_next/static/chunks/main-app-8a63c6f5e7baee11.js,sha256=6EjJ5B9_cAr2jN2A60YIzmhJUk-bQ65agJjrna3QDZ0,461
|
|
97
|
+
pivtools_gui/static/_next/static/chunks/polyfills-42372ed130431b0a.js,sha256=vQV7eVcqRIt23KzbfymK5NFP6FW0KoJqj9nGhDwMjtw,112595
|
|
98
|
+
pivtools_gui/static/_next/static/chunks/webpack-4a8ca7c99e9bb3d8.js,sha256=VberB4_1FrtedbRamgVORPp2Le8nhXODovsE6y4TBg8,3458
|
|
99
|
+
pivtools_gui/static/_next/static/chunks/app/layout-b907d5f31ac82e9d.js,sha256=nwPQ9CGeAN6NtMqPnpaIBoc_ypZRP9AveA4EmDZvAUU,19630
|
|
100
|
+
pivtools_gui/static/_next/static/chunks/app/page-334cc4e8444cde2f.js,sha256=o1daY-Chej11CJmzK8QAnYw9LrIulXf4DTpYidEJKUo,247784
|
|
101
|
+
pivtools_gui/static/_next/static/chunks/app/_not-found/page-12f067ceb7415e55.js,sha256=u5LYOU4LZ2HFeEcz6xZqSflSnU4WDt-TnQNu3CdcEWk,1745
|
|
102
|
+
pivtools_gui/static/_next/static/chunks/pages/_app-72b849fbd24ac258.js,sha256=QN-PY1h1HDIO4K4ZYwFl6rtEeaxWCynYauVLK_oWmzE,280
|
|
103
|
+
pivtools_gui/static/_next/static/chunks/pages/_error-7ba65e1336b92748.js,sha256=oxr2dz6MkKWnm3jN3fWb2RPhCHB4-JgrzVMS_wTNr_E,247
|
|
104
|
+
pivtools_gui/static/_next/static/css/7d3f2337d7ea12a5.css,sha256=ph5yXSZjyA-7VuSLMeeEc5SJ8QkSQMGHUbih022qkOg,50905
|
|
105
|
+
pivtools_gui/static/_next/static/vQeR20OUdSSKlK4vukC4q/_buildManifest.js,sha256=UGi5XJhF4u-NRxMqU360JM2afxCS1essSVUEqY6sl5c,224
|
|
106
|
+
pivtools_gui/static/_next/static/vQeR20OUdSSKlK4vukC4q/_ssgManifest.js,sha256=Z49s4suAsf5y_GfnQSvm4qtq2ggxEbZPfEDTXjy6XgA,80
|
|
107
|
+
pivtools_gui/stereo_reconstruction/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
108
|
+
pivtools_gui/stereo_reconstruction/stereo_calibration_production.py,sha256=NrGaveQwJ85hoYHUSmSQFcpLOT314bTL52yh0w_jnfA,22690
|
|
109
|
+
pivtools_gui/stereo_reconstruction/stereo_reconstruction_production.py,sha256=8YiAv1XcNEnxETrSe6ak2f1fV3b3u0fTzenAg3xLxcs,23370
|
|
110
|
+
pivtools_gui/stereo_reconstruction/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
111
|
+
pivtools_gui/stereo_reconstruction/app/views.py,sha256=1kwUYpD7AHRuVKBYJHKJ0nytJvx1bevEGMewjcGLLyM,86611
|
|
112
|
+
pivtools_gui/vector_merging/__init__.py,sha256=9p2z6kQmk5MQIlZo9GO9onjm0XiNvx7n5LMexZx7MMU,25
|
|
113
|
+
pivtools_gui/vector_merging/app/__init__.py,sha256=fsk-7hvu3U81cSI3bzlEhkxBn5wKiJwx3Pp2_YihVY4,33
|
|
114
|
+
pivtools_gui/vector_merging/app/views.py,sha256=JTmn5E6iXALpFJIIVvZjuHI1wna7MK7FhxkNCCNpbzA,29579
|
|
115
|
+
pivtools_gui/vector_statistics/ensemble_statistics.py,sha256=aWEJJE8ezY1QqR4xZxnrKAXIDViUioVgz4YQUWYINaM,1903
|
|
116
|
+
pivtools_gui/vector_statistics/instantaneous_statistics.py,sha256=N562N-yXC6jqe4Tl7r7cnpgOsNHIQn6G9x-zDzyANpY,13621
|
|
117
|
+
pivtools_gui/vector_statistics/app/__init__.py,sha256=049Cnkf4Xp6d2svaU5vuqhKSBYFCcfkz0NqS_8xqsOo,32
|
|
118
|
+
pivtools_gui/vector_statistics/app/views.py,sha256=0briGw8W8sXqa7SvZk2Dg1__jM6W8KFWafdPcvIAFcA,28371
|
|
119
|
+
pivtools_gui/video_maker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
120
|
+
pivtools_gui/video_maker/video_maker.py,sha256=v36BNk1hngp1ShA4vkIdKkgNBOy5TTfzQ9tSmXbJB_0,25894
|
|
121
|
+
pivtools_gui/video_maker/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
122
|
+
pivtools_gui/video_maker/app/views.py,sha256=WbB1s5t2wezyq_8oRoQhz6kEjmU-WMfc8PcCTL8OGBQ,15461
|
|
123
|
+
pivtools-0.1.3.dist-info/METADATA,sha256=pp8RyBq75A7mp4XKM20xBH-oymgRzZDnyIuogAU6SnM,5393
|
|
124
|
+
pivtools-0.1.3.dist-info/WHEEL,sha256=JLOMsP7F5qtkAkINx5UnzbFguf8CqZeraV8o04b0I8I,101
|
|
125
|
+
pivtools-0.1.3.dist-info/entry_points.txt,sha256=JgwFyXuMhE_2VrI47Ttfa9orRAlN-BqTciCEsP-Of38,92
|
|
126
|
+
pivtools-0.1.3.dist-info/top_level.txt,sha256=e4Rz-x7jNhaWrUXqk498a0zS9__XfDSrSPHlPiuobu0,40
|
|
127
|
+
pivtools-0.1.3.dist-info/RECORD,,
|
pivtools_cli/__init__.py
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#include <Python.h>
|
|
2
|
+
|
|
3
|
+
// This file creates a minimal, valid Python C-extension.
|
|
4
|
+
// Its only purpose is to define the `PyInit__build_marker` function
|
|
5
|
+
// to satisfy the linker and force setuptools to build a platform-specific wheel.
|
|
6
|
+
|
|
7
|
+
// 1. Define an empty method table
|
|
8
|
+
static PyMethodDef BuildMarkerMethods[] = {
|
|
9
|
+
{NULL, NULL, 0, NULL} /* Sentinel */
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
// 2. Define the module structure
|
|
13
|
+
static struct PyModuleDef buildmarkermodule = {
|
|
14
|
+
PyModuleDef_HEAD_INIT,
|
|
15
|
+
"pivtools_cli._build_marker", // Module name
|
|
16
|
+
NULL, // Module docstring
|
|
17
|
+
-1, // Module state size (no state)
|
|
18
|
+
BuildMarkerMethods // Method table
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
// 3. Define the module initialization function
|
|
22
|
+
// This is the function the linker was looking for.
|
|
23
|
+
PyMODINIT_FUNC PyInit__build_marker(void) {
|
|
24
|
+
return PyModule_Create(&buildmarkermodule);
|
|
25
|
+
}
|
|
Binary file
|
pivtools_cli/cli.py
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
PIVTOOLs CLI - Command line interface for PIVTOOLs
|
|
4
|
+
"""
|
|
5
|
+
|
|
6
|
+
import argparse
|
|
7
|
+
import os
|
|
8
|
+
import shutil
|
|
9
|
+
import sys
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
def init_command(args):
|
|
13
|
+
"""Initialize a new PIVTOOLs workspace with default config.yaml"""
|
|
14
|
+
cwd = Path.cwd()
|
|
15
|
+
|
|
16
|
+
# Check if config.yaml already exists
|
|
17
|
+
config_path = cwd / "config.yaml"
|
|
18
|
+
if config_path.exists():
|
|
19
|
+
if not args.force:
|
|
20
|
+
print(f"config.yaml already exists at {config_path}")
|
|
21
|
+
print("Use --force to overwrite")
|
|
22
|
+
return
|
|
23
|
+
else:
|
|
24
|
+
print(f"Overwriting existing config.yaml")
|
|
25
|
+
|
|
26
|
+
# Get the default config from package
|
|
27
|
+
try:
|
|
28
|
+
default_config = "config.yaml"
|
|
29
|
+
|
|
30
|
+
if not default_config.exists():
|
|
31
|
+
# Fallback: create a basic config
|
|
32
|
+
create_default_config(config_path)
|
|
33
|
+
else:
|
|
34
|
+
shutil.copy2(default_config, config_path)
|
|
35
|
+
print(f"Created config.yaml at {config_path}")
|
|
36
|
+
|
|
37
|
+
except ImportError:
|
|
38
|
+
# Fallback if package not properly installed
|
|
39
|
+
create_default_config(config_path)
|
|
40
|
+
|
|
41
|
+
print("PIVTOOLs workspace initialized!")
|
|
42
|
+
print(f"Edit {config_path} to configure your PIV analysis")
|
|
43
|
+
|
|
44
|
+
def create_default_config(config_path):
|
|
45
|
+
"""Create a default config.yaml file"""
|
|
46
|
+
default_config = """
|
|
47
|
+
paths:
|
|
48
|
+
base_paths:
|
|
49
|
+
- ./data
|
|
50
|
+
source_paths:
|
|
51
|
+
- ./images
|
|
52
|
+
camera_numbers:
|
|
53
|
+
- 1
|
|
54
|
+
camera_count: 1
|
|
55
|
+
images:
|
|
56
|
+
num_images: 100
|
|
57
|
+
image_format: B%05d.tif
|
|
58
|
+
vector_format: '%05d.mat'
|
|
59
|
+
time_resolved: false
|
|
60
|
+
dtype: float32
|
|
61
|
+
batches:
|
|
62
|
+
size: 25
|
|
63
|
+
logging:
|
|
64
|
+
file: pypiv.log
|
|
65
|
+
level: INFO
|
|
66
|
+
console: true
|
|
67
|
+
processing:
|
|
68
|
+
instantaneous: true
|
|
69
|
+
ensemble: false
|
|
70
|
+
stereo: false
|
|
71
|
+
backend: cpu
|
|
72
|
+
debug: false
|
|
73
|
+
auto_compute_params: false
|
|
74
|
+
omp_threads: 4
|
|
75
|
+
dask_workers_per_node: 5
|
|
76
|
+
dask_threads_per_worker: 1
|
|
77
|
+
dask_memory_limit: 12GB
|
|
78
|
+
outlier_detection:
|
|
79
|
+
enabled: true
|
|
80
|
+
methods:
|
|
81
|
+
- threshold: 0.25
|
|
82
|
+
type: peak_mag
|
|
83
|
+
- epsilon: 0.2
|
|
84
|
+
threshold: 2
|
|
85
|
+
type: median_2d
|
|
86
|
+
infilling:
|
|
87
|
+
mid_pass:
|
|
88
|
+
method: biharmonic
|
|
89
|
+
parameters:
|
|
90
|
+
ksize: 3
|
|
91
|
+
final_pass:
|
|
92
|
+
enabled: true
|
|
93
|
+
method: biharmonic
|
|
94
|
+
parameters:
|
|
95
|
+
ksize: 3
|
|
96
|
+
plots:
|
|
97
|
+
save_extension: .png
|
|
98
|
+
save_pickle: true
|
|
99
|
+
fontsize: 14
|
|
100
|
+
title_fontsize: 16
|
|
101
|
+
videos:
|
|
102
|
+
- endpoint: ''
|
|
103
|
+
type: instantaneous
|
|
104
|
+
use_merged: false
|
|
105
|
+
variable: ux
|
|
106
|
+
video_length: 100
|
|
107
|
+
statistics_extraction: null
|
|
108
|
+
instantaneous_piv:
|
|
109
|
+
window_size:
|
|
110
|
+
- - 128
|
|
111
|
+
- 128
|
|
112
|
+
- - 64
|
|
113
|
+
- 64
|
|
114
|
+
- - 32
|
|
115
|
+
- 32
|
|
116
|
+
overlap:
|
|
117
|
+
- 50
|
|
118
|
+
- 50
|
|
119
|
+
- 50
|
|
120
|
+
runs:
|
|
121
|
+
- 3
|
|
122
|
+
time_resolved: false
|
|
123
|
+
window_type: gaussian
|
|
124
|
+
num_peaks: 1
|
|
125
|
+
peak_finder: gauss3
|
|
126
|
+
secondary_peak: false
|
|
127
|
+
calibration_format:
|
|
128
|
+
image_format: calib%05d.tif
|
|
129
|
+
calibration:
|
|
130
|
+
active: pinhole
|
|
131
|
+
scale_factor:
|
|
132
|
+
dt: 0.56
|
|
133
|
+
px_per_mm: 3.41
|
|
134
|
+
source_path_idx: 0
|
|
135
|
+
pinhole:
|
|
136
|
+
source_path_idx: 0
|
|
137
|
+
camera: 1
|
|
138
|
+
image_index: 0
|
|
139
|
+
file_pattern: calib%05d.tif
|
|
140
|
+
pattern_cols: 10
|
|
141
|
+
pattern_rows: 10
|
|
142
|
+
dot_spacing_mm: 28.89
|
|
143
|
+
enhance_dots: true
|
|
144
|
+
asymmetric: false
|
|
145
|
+
dot_distance_mm: 28.9
|
|
146
|
+
grid_tolerance: 0.5
|
|
147
|
+
ransac_threshold: 3
|
|
148
|
+
dt: 0.0275
|
|
149
|
+
stereo:
|
|
150
|
+
source_path_idx: 0
|
|
151
|
+
camera_pair:
|
|
152
|
+
- 1
|
|
153
|
+
- 2
|
|
154
|
+
file_pattern: planar_calibration_plate_*.tif
|
|
155
|
+
pattern_cols: 10
|
|
156
|
+
pattern_rows: 10
|
|
157
|
+
dot_spacing_mm: 28.89
|
|
158
|
+
enhance_dots: true
|
|
159
|
+
asymmetric: false
|
|
160
|
+
dt: 2
|
|
161
|
+
filters:
|
|
162
|
+
- type: pod
|
|
163
|
+
masking:
|
|
164
|
+
enabled: true
|
|
165
|
+
mask_file_pattern: mask_Cam%d.mat
|
|
166
|
+
mask_threshold: 0.01
|
|
167
|
+
mode: file
|
|
168
|
+
rectangular:
|
|
169
|
+
top: 64
|
|
170
|
+
bottom: 64
|
|
171
|
+
left: 0
|
|
172
|
+
right: 0
|
|
173
|
+
"""
|
|
174
|
+
|
|
175
|
+
with open(config_path, 'w') as f:
|
|
176
|
+
f.write(default_config.strip())
|
|
177
|
+
print(f"Created default config.yaml at {config_path}")
|
|
178
|
+
|
|
179
|
+
def run_command(args):
|
|
180
|
+
"""Run PIV analysis using the current config"""
|
|
181
|
+
try:
|
|
182
|
+
from pivtools_cli.example import main as run_piv
|
|
183
|
+
run_piv()
|
|
184
|
+
except ImportError as e:
|
|
185
|
+
print(f"Error importing PIVTOOLs: {e}")
|
|
186
|
+
print("Make sure PIVTOOLs is properly installed")
|
|
187
|
+
sys.exit(1)
|
|
188
|
+
|
|
189
|
+
def main():
|
|
190
|
+
parser = argparse.ArgumentParser(
|
|
191
|
+
description="PIVTOOLs - Particle Image Velocimetry Tools",
|
|
192
|
+
prog="pivtools-cli"
|
|
193
|
+
)
|
|
194
|
+
|
|
195
|
+
subparsers = parser.add_subparsers(dest="command", help="Available commands")
|
|
196
|
+
|
|
197
|
+
# init command
|
|
198
|
+
init_parser = subparsers.add_parser(
|
|
199
|
+
"init",
|
|
200
|
+
help="Initialize a new PIVTOOLs workspace with default config.yaml"
|
|
201
|
+
)
|
|
202
|
+
init_parser.add_argument(
|
|
203
|
+
"--force", "-f",
|
|
204
|
+
action="store_true",
|
|
205
|
+
help="Overwrite existing config.yaml"
|
|
206
|
+
)
|
|
207
|
+
init_parser.set_defaults(func=init_command)
|
|
208
|
+
|
|
209
|
+
# run command
|
|
210
|
+
run_parser = subparsers.add_parser(
|
|
211
|
+
"run",
|
|
212
|
+
help="Run PIV analysis using config.yaml"
|
|
213
|
+
)
|
|
214
|
+
run_parser.set_defaults(func=run_command)
|
|
215
|
+
|
|
216
|
+
args = parser.parse_args()
|
|
217
|
+
|
|
218
|
+
if not args.command:
|
|
219
|
+
parser.print_help()
|
|
220
|
+
return
|
|
221
|
+
|
|
222
|
+
args.func(args)
|
|
223
|
+
|
|
224
|
+
if __name__ == "__main__":
|
|
225
|
+
main()
|