wavedl 1.6.2__py3-none-any.whl → 1.7.0__py3-none-any.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: wavedl
3
- Version: 1.6.2
3
+ Version: 1.7.0
4
4
  Summary: A Scalable Deep Learning Framework for Wave-Based Inverse Problems
5
5
  Author: Ductho Le
6
6
  License: MIT
@@ -214,11 +214,11 @@ This installs everything you need: training, inference, HPO, ONNX export.
214
214
  ```bash
215
215
  git clone https://github.com/ductho-le/WaveDL.git
216
216
  cd WaveDL
217
- pip install -e .
217
+ pip install -e ".[dev]"
218
218
  ```
219
219
 
220
220
  > [!NOTE]
221
- > Python 3.11+ required. For development setup, see [CONTRIBUTING.md](.github/CONTRIBUTING.md).
221
+ > Python 3.11+ required. For contributor setup (pre-commit hooks), see [CONTRIBUTING.md](.github/CONTRIBUTING.md).
222
222
 
223
223
  ### Quick Start
224
224
 
@@ -273,8 +273,6 @@ accelerate launch --num_machines 2 --main_process_ip <ip> -m wavedl.train --mode
273
273
 
274
274
  ### Testing & Inference
275
275
 
276
- After training, use `wavedl-test` to evaluate your model on test data:
277
-
278
276
  ```bash
279
277
  # Basic inference
280
278
  wavedl-test --checkpoint <checkpoint_folder> --data_path <test_data>
@@ -909,18 +907,24 @@ Automatically find the best training configuration using [Optuna](https://optuna
909
907
  **Run HPO:**
910
908
 
911
909
  ```bash
912
- # Basic HPO (auto-detects GPUs for parallel trials)
913
- wavedl-hpo --data_path train.npz --models cnn --n_trials 100
910
+ # Basic HPO (50 trials, auto-detects GPUs)
911
+ wavedl-hpo --data_path train.npz --n_trials 50
912
+
913
+ # Quick search (minimal search space, fastest)
914
+ wavedl-hpo --data_path train.npz --n_trials 30 --quick
914
915
 
915
- # Search multiple models
916
- wavedl-hpo --data_path train.npz --models cnn resnet18 efficientnet_b0 --n_trials 200
916
+ # Medium search (balanced between quick and full)
917
+ wavedl-hpo --data_path train.npz --n_trials 50 --medium
917
918
 
918
- # Quick mode (fewer parameters, faster)
919
- wavedl-hpo --data_path train.npz --models cnn --n_trials 50 --quick
919
+ # Full search with specific models
920
+ wavedl-hpo --data_path train.npz --n_trials 100 --models cnn resnet18 efficientnet_b0
921
+
922
+ # In-process mode (enables pruning, faster, single-GPU)
923
+ wavedl-hpo --data_path train.npz --n_trials 50 --inprocess
920
924
  ```
921
925
 
922
926
  > [!TIP]
923
- > **Auto GPU Detection**: HPO automatically detects available GPUs and runs one trial per GPU in parallel. On a 4-GPU system, 4 trials run simultaneously. Use `--n_jobs 1` to force serial execution.
927
+ > **GPU Detection**: HPO auto-detects GPUs and runs one trial per GPU in parallel. Use `--inprocess` for single-GPU with pruning support (early stopping of bad trials).
924
928
 
925
929
  **Train with best parameters**
926
930
 
@@ -942,10 +946,23 @@ wavedl-train --data_path train.npz --model cnn --lr 3.2e-4 --batch_size 128 ...
942
946
  | Learning rate | 1e-5 → 1e-2 | (always searched) |
943
947
  | Batch size | 16, 32, 64, 128 | (always searched) |
944
948
 
945
- **Quick Mode** (`--quick`):
946
- - Uses minimal defaults: cnn + adamw + plateau + mse
947
- - Faster for testing your setup before running full search
948
- - You can still override any option with the flags above
949
+ **Search Presets:**
950
+
951
+ | Mode | Models | Optimizers | Schedulers | Use Case |
952
+ |------|--------|------------|------------|----------|
953
+ | Full (default) | cnn, resnet18, resnet34 | all 6 | all 8 | Production search |
954
+ | `--medium` | cnn, resnet18 | adamw, adam, sgd | plateau, cosine, onecycle | Balanced exploration |
955
+ | `--quick` | cnn | adamw | plateau | Fast validation |
956
+
957
+ **Execution Modes:**
958
+
959
+ | Mode | Flag | Pruning | GPU Memory | Best For |
960
+ |------|------|---------|------------|----------|
961
+ | Subprocess (default) | — | ❌ No | Isolated | Multi-GPU parallel trials |
962
+ | In-process | `--inprocess` | ✅ Yes | Shared | Single-GPU with early stopping |
963
+
964
+ > [!TIP]
965
+ > Use `--inprocess` when running single-GPU trials. It enables MedianPruner to stop unpromising trials early, reducing total search time.
949
966
 
950
967
  ---
951
968
 
@@ -956,7 +973,9 @@ wavedl-train --data_path train.npz --model cnn --lr 3.2e-4 --batch_size 128 ...
956
973
  | `--data_path` | (required) | Training data file |
957
974
  | `--models` | 3 defaults | Models to search (specify any number) |
958
975
  | `--n_trials` | `50` | Number of trials to run |
959
- | `--quick` | `False` | Use minimal defaults (faster) |
976
+ | `--quick` | `False` | Quick mode: minimal search space |
977
+ | `--medium` | `False` | Medium mode: balanced search space |
978
+ | `--inprocess` | `False` | Run trials in-process (enables pruning) |
960
979
  | `--optimizers` | all 6 | Optimizers to search |
961
980
  | `--schedulers` | all 8 | Schedulers to search |
962
981
  | `--losses` | all 6 | Losses to search |
@@ -965,7 +984,7 @@ wavedl-train --data_path train.npz --model cnn --lr 3.2e-4 --batch_size 128 ...
965
984
  | `--output` | `hpo_results.json` | Output file |
966
985
 
967
986
 
968
- > See [Available Models](#available-models) for all 38 architectures you can search.
987
+ > See [Available Models](#available-models) for all 69 architectures you can search.
969
988
 
970
989
  </details>
971
990
 
@@ -0,0 +1,46 @@
1
+ wavedl/__init__.py,sha256=Ol1M5mok2rnnUKDPBZLQDBDwKn7_LV9iTxds5obDeJk,1177
2
+ wavedl/hpo.py,sha256=TyEWubL-adQJyRmSv1M1SnJvH7_vTlXJATI1ElxXVUU,18991
3
+ wavedl/launcher.py,sha256=_CFlgpKgHrtZebl1yQbJZJEcob06Y9-fqnRYzwW7UJQ,11776
4
+ wavedl/test.py,sha256=_6i6F1KkO24cC0RtvxcwAGxDUbU6VV12efDWFGojkeE,38466
5
+ wavedl/train.py,sha256=U0-hHo4wba1dhZ2jjaCFURiS6aGHuPDGz0zPwPm2Kc0,72722
6
+ wavedl/models/__init__.py,sha256=hyR__h_D8PsUQCBSM5tj94yYK00uG8ABjEmj_RR8SGE,5719
7
+ wavedl/models/_pretrained_utils.py,sha256=br--ZrgqndYCO_iAeQOvUDg6ZxzGDyLZFeWu1Qj_DrI,14756
8
+ wavedl/models/_template.py,sha256=nEixVS8e82Tud08Uk8jkXtriGhk_WFbqSaGDq_Mj4ak,4684
9
+ wavedl/models/base.py,sha256=bDoHYFli-aR8amcFYXbF98QYaKSCEwZWpvOhN21ODro,9075
10
+ wavedl/models/caformer.py,sha256=ufPM-HzQ-qUZcXgnOulurY6jBUlMUzokC01whtPeVMg,7922
11
+ wavedl/models/cnn.py,sha256=dOmCrHGXd8Md8ixbJ_-An9t80tm36sVY84je2EDmnZA,8256
12
+ wavedl/models/convnext.py,sha256=GoLId2HClsOksuL3XLscEIytrmOBPGhO6UhGn04yDp4,13354
13
+ wavedl/models/convnext_v2.py,sha256=jPPXTZbQQ8zE9yGVWTNUaI5g1d0xIxBjrLuUHUKc5mM,14349
14
+ wavedl/models/densenet.py,sha256=V_caGd0wsG_Q3Q38I4MEgYmU0v4j8mDyvv7Rn3Bk7Ac,12667
15
+ wavedl/models/efficientnet.py,sha256=HWfhqSX57lC5Xug5TrQ3r-uFqkksoIKjmQ5Zr5njkEA,8264
16
+ wavedl/models/efficientnetv2.py,sha256=hVSnVId8T1rjqaKlckLqWFwvo2J-qASX7o9lMbXbP-s,10947
17
+ wavedl/models/efficientvit.py,sha256=KqFoZq9YHBMnTue6aMdPKgBOMczeBPryY_F6ip0hoEI,11630
18
+ wavedl/models/fastvit.py,sha256=S0SF0iC-9ZJrP-9YUTLPhMJMV-W9r2--V3hVAmSSVKI,7083
19
+ wavedl/models/mamba.py,sha256=2mqBxUKCLJNkRc87QzpsOj6hKzrEh5tchGSyYZCSUcQ,20031
20
+ wavedl/models/maxvit.py,sha256=I6TFGrLRcyMU-nU7u5VhOaXZWWdwmNJwHsMqbJh_g_o,7548
21
+ wavedl/models/mobilenetv3.py,sha256=LZxCg599kGP6-XI_l3PpT8jzh4oTAdWH3Y7GH097o28,10242
22
+ wavedl/models/registry.py,sha256=InYAXX2xbRvsFDFnYUPCptJh0F9lHlFPN77A9kqHRT0,2980
23
+ wavedl/models/regnet.py,sha256=6Yjo2wZzdjK8VpOMagbCrHqmsfRmGkuiURmc-MesYvA,13777
24
+ wavedl/models/resnet.py,sha256=3i4zfE15qF4cd0qbTKX-Wdy2Kd0f4mLcdd316FAcVCo,16720
25
+ wavedl/models/resnet3d.py,sha256=NS6UBmvITO3NbdBNfe39bxViFqrIgeSXBnDgYi8QsC8,9247
26
+ wavedl/models/swin.py,sha256=39Gwn5hNEw3-tndc8qFFzV-VZ7pJMMKey2oZONAZ8MU,14980
27
+ wavedl/models/tcn.py,sha256=XzojpuMFG4lu_0oQHbQnkLAb7AnW-D7_6KoBlQDPLnQ,12367
28
+ wavedl/models/unet.py,sha256=oi7eBONSe0ALpJKsYda3jRGwu-LuSiFgNdURebnGGt0,7712
29
+ wavedl/models/unireplknet.py,sha256=sbiYcc2NeB0-_VAmeoe9Vi5hQzhYz03knG7o2Qk0WYE,14634
30
+ wavedl/models/vit.py,sha256=o-zWT2GBCTs9vD3jUFwlcwxK53XqEn_x4iPaRuEQe10,15219
31
+ wavedl/utils/__init__.py,sha256=CYqD3Bcwcub2mSrW05x8wvd2n1Co_3N9ajyKPyBswjo,4887
32
+ wavedl/utils/config.py,sha256=yAKuuhM-oxvHFXomkkek4IGihsVO5yZxc4b2noQ1amE,10523
33
+ wavedl/utils/constraints.py,sha256=V9Gyi8-uIMbLUWb2cOaHZD0SliWLxVrHZHFyo4HWK7g,18031
34
+ wavedl/utils/cross_validation.py,sha256=evp8EsHGJcxMHpfRdFSParDltUTyMhKQxUkcn5-osI4,18556
35
+ wavedl/utils/data.py,sha256=f-LLIiiv74iiKrR8TQ9oeKODF29_jzeUUp4iMBuj_H4,60875
36
+ wavedl/utils/distributed.py,sha256=7wQ3mRjkp_xjPSxDWMnBf5dSkAGUaTzntxbz0BhC5v0,4145
37
+ wavedl/utils/losses.py,sha256=KWpU5S5noFzp3bLbcH9RNpkFPajy6fyTIh5cNjI-BYA,7038
38
+ wavedl/utils/metrics.py,sha256=tLzKG2zINyXit-KvYZSJg-1nG6rST54GH6k4ALonToU,40935
39
+ wavedl/utils/optimizers.py,sha256=ZoETDSOK1fWUT2dx69PyYebeM8Vcqf9zOIKUERWk5HY,6107
40
+ wavedl/utils/schedulers.py,sha256=_aFTQ8kuvdZIxOoXPHQRu_N9XBuTVSjU6dmBbzH430o,7425
41
+ wavedl-1.7.0.dist-info/LICENSE,sha256=cEUCvcvH-9BT9Y-CNGY__PwWONCKu9zsoIqWA-NeHJ4,1066
42
+ wavedl-1.7.0.dist-info/METADATA,sha256=f5UMARudJtBdt5Pu3E18Rfk2sD4h77A2mt8Mh8_cJk4,48527
43
+ wavedl-1.7.0.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
44
+ wavedl-1.7.0.dist-info/entry_points.txt,sha256=NuAvdiG93EYYpqv-_1wf6PN0WqBfABanDKalNKe2GOs,148
45
+ wavedl-1.7.0.dist-info/top_level.txt,sha256=ccneUt3D5Qzbh3bsBSSrq9bqrhGiogcWKY24ZC4Q6Xw,7
46
+ wavedl-1.7.0.dist-info/RECORD,,
@@ -1,46 +0,0 @@
1
- wavedl/__init__.py,sha256=hFGU_j86Beexkcrn_V3fotGQ4ncwLGvz2lCOejEJ-f0,1177
2
- wavedl/hpo.py,sha256=nEiy-2O_5EhxF5hU8X5TviSAiXfVrTQx0-VE6baW7JQ,14633
3
- wavedl/launcher.py,sha256=_CFlgpKgHrtZebl1yQbJZJEcob06Y9-fqnRYzwW7UJQ,11776
4
- wavedl/test.py,sha256=1UUy9phCqrr3h_lN6mGJ7Sj73skDg4KyLk2Yuq9DiKU,38797
5
- wavedl/train.py,sha256=vBufy6gHShawgj8O6dvVER9TPhORa1s7L6pQtTe-N5M,57824
6
- wavedl/models/__init__.py,sha256=8OiT2seq1qBiUzKaSkmh_VOLJlLTT9Cn-mjhMHKGFpI,5203
7
- wavedl/models/_pretrained_utils.py,sha256=VPdU1DwJB93ZBf_GFIgb8-6BbAt18Phs4yorwlhLw70,12404
8
- wavedl/models/_template.py,sha256=J_D8taSPmV8lBaucN_vU-WiG98iFr7CJrZVNNX_Tdts,4600
9
- wavedl/models/base.py,sha256=bDoHYFli-aR8amcFYXbF98QYaKSCEwZWpvOhN21ODro,9075
10
- wavedl/models/caformer.py,sha256=ufPM-HzQ-qUZcXgnOulurY6jBUlMUzokC01whtPeVMg,7922
11
- wavedl/models/cnn.py,sha256=1-sNBDZHc5DySbduf5tkV1Ha25R6irksjVqfOiFbI3M,7465
12
- wavedl/models/convnext.py,sha256=fdXieXUuHyULjicw9Nno2SK2Tm5bDabUtdiGuEpuAF4,15711
13
- wavedl/models/convnext_v2.py,sha256=1ELKBPWIlUm3uybLX1KN5cgwjBPEUzZDoXL8qUzF9YY,14920
14
- wavedl/models/densenet.py,sha256=V_caGd0wsG_Q3Q38I4MEgYmU0v4j8mDyvv7Rn3Bk7Ac,12667
15
- wavedl/models/efficientnet.py,sha256=HWfhqSX57lC5Xug5TrQ3r-uFqkksoIKjmQ5Zr5njkEA,8264
16
- wavedl/models/efficientnetv2.py,sha256=hVSnVId8T1rjqaKlckLqWFwvo2J-qASX7o9lMbXbP-s,10947
17
- wavedl/models/efficientvit.py,sha256=KqFoZq9YHBMnTue6aMdPKgBOMczeBPryY_F6ip0hoEI,11630
18
- wavedl/models/fastvit.py,sha256=S0SF0iC-9ZJrP-9YUTLPhMJMV-W9r2--V3hVAmSSVKI,7083
19
- wavedl/models/mamba.py,sha256=ENmOQjtoX8btS1tDvOYEG_M3GFn1P2vWsDWcsQPSPJ0,17189
20
- wavedl/models/maxvit.py,sha256=I6TFGrLRcyMU-nU7u5VhOaXZWWdwmNJwHsMqbJh_g_o,7548
21
- wavedl/models/mobilenetv3.py,sha256=LZxCg599kGP6-XI_l3PpT8jzh4oTAdWH3Y7GH097o28,10242
22
- wavedl/models/registry.py,sha256=InYAXX2xbRvsFDFnYUPCptJh0F9lHlFPN77A9kqHRT0,2980
23
- wavedl/models/regnet.py,sha256=6Yjo2wZzdjK8VpOMagbCrHqmsfRmGkuiURmc-MesYvA,13777
24
- wavedl/models/resnet.py,sha256=3i4zfE15qF4cd0qbTKX-Wdy2Kd0f4mLcdd316FAcVCo,16720
25
- wavedl/models/resnet3d.py,sha256=edxLW4P4OBpZ5z9kMnWYV6qJ1GTkiqpwnW3-IqrPyqE,8510
26
- wavedl/models/swin.py,sha256=39Gwn5hNEw3-tndc8qFFzV-VZ7pJMMKey2oZONAZ8MU,14980
27
- wavedl/models/tcn.py,sha256=XzojpuMFG4lu_0oQHbQnkLAb7AnW-D7_6KoBlQDPLnQ,12367
28
- wavedl/models/unet.py,sha256=oi7eBONSe0ALpJKsYda3jRGwu-LuSiFgNdURebnGGt0,7712
29
- wavedl/models/unireplknet.py,sha256=jCy22m6mkApkLf3EzimMIqXy4xFs5WPUkaoz_KVWpqc,15205
30
- wavedl/models/vit.py,sha256=5DXshtBdN2jYlH8MxWGTlIxP5lgbmfsdLSNchOvTaYk,14911
31
- wavedl/utils/__init__.py,sha256=s5R9bRmJ8GNcJrD3OSAOXzwZJIXZbdYrAkZnus11sVQ,3300
32
- wavedl/utils/config.py,sha256=MXkaVc1_zo8sDro8mjtK1MV65t2z8b1Z6fviwSorNiY,10534
33
- wavedl/utils/constraints.py,sha256=V9Gyi8-uIMbLUWb2cOaHZD0SliWLxVrHZHFyo4HWK7g,18031
34
- wavedl/utils/cross_validation.py,sha256=HfInyZ8gUROc_AyihYKzzUE0vnoPt_mFvAI2OPK4P54,17945
35
- wavedl/utils/data.py,sha256=5ph2Pi8PKvuaSoJaXbFIL9WsX8pTN0A6P8FdmxvXdv4,63469
36
- wavedl/utils/distributed.py,sha256=7wQ3mRjkp_xjPSxDWMnBf5dSkAGUaTzntxbz0BhC5v0,4145
37
- wavedl/utils/losses.py,sha256=KWpU5S5noFzp3bLbcH9RNpkFPajy6fyTIh5cNjI-BYA,7038
38
- wavedl/utils/metrics.py,sha256=YoqiXWOsUB9Y4_alj8CmHcTgnV4MFcH5PH4XlIC13HY,40304
39
- wavedl/utils/optimizers.py,sha256=ZoETDSOK1fWUT2dx69PyYebeM8Vcqf9zOIKUERWk5HY,6107
40
- wavedl/utils/schedulers.py,sha256=K6YCiyiMM9rb0cCRXTp89noXeXcAyUEiePr27O5Cozs,7408
41
- wavedl-1.6.2.dist-info/LICENSE,sha256=cEUCvcvH-9BT9Y-CNGY__PwWONCKu9zsoIqWA-NeHJ4,1066
42
- wavedl-1.6.2.dist-info/METADATA,sha256=2mTyuip32AneUURV3K8oAjZQ2rA_13AB16R-VyRN5s8,47659
43
- wavedl-1.6.2.dist-info/WHEEL,sha256=beeZ86-EfXScwlR_HKu4SllMC9wUEj_8Z_4FJ3egI2w,91
44
- wavedl-1.6.2.dist-info/entry_points.txt,sha256=NuAvdiG93EYYpqv-_1wf6PN0WqBfABanDKalNKe2GOs,148
45
- wavedl-1.6.2.dist-info/top_level.txt,sha256=ccneUt3D5Qzbh3bsBSSrq9bqrhGiogcWKY24ZC4Q6Xw,7
46
- wavedl-1.6.2.dist-info/RECORD,,
File without changes