stouputils 1.14.0__py3-none-any.whl → 1.14.2__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.
Files changed (108) hide show
  1. stouputils/__init__.pyi +15 -0
  2. stouputils/_deprecated.pyi +12 -0
  3. stouputils/all_doctests.pyi +46 -0
  4. stouputils/applications/__init__.pyi +2 -0
  5. stouputils/applications/automatic_docs.py +3 -0
  6. stouputils/applications/automatic_docs.pyi +106 -0
  7. stouputils/applications/upscaler/__init__.pyi +3 -0
  8. stouputils/applications/upscaler/config.pyi +18 -0
  9. stouputils/applications/upscaler/image.pyi +109 -0
  10. stouputils/applications/upscaler/video.pyi +60 -0
  11. stouputils/archive.pyi +67 -0
  12. stouputils/backup.pyi +109 -0
  13. stouputils/collections.pyi +86 -0
  14. stouputils/continuous_delivery/__init__.pyi +5 -0
  15. stouputils/continuous_delivery/cd_utils.pyi +129 -0
  16. stouputils/continuous_delivery/github.pyi +162 -0
  17. stouputils/continuous_delivery/pypi.pyi +52 -0
  18. stouputils/continuous_delivery/pyproject.pyi +67 -0
  19. stouputils/continuous_delivery/stubs.pyi +39 -0
  20. stouputils/ctx.pyi +211 -0
  21. stouputils/data_science/config/get.py +51 -51
  22. stouputils/data_science/data_processing/image/__init__.py +66 -66
  23. stouputils/data_science/data_processing/image/auto_contrast.py +79 -79
  24. stouputils/data_science/data_processing/image/axis_flip.py +58 -58
  25. stouputils/data_science/data_processing/image/bias_field_correction.py +74 -74
  26. stouputils/data_science/data_processing/image/binary_threshold.py +73 -73
  27. stouputils/data_science/data_processing/image/blur.py +59 -59
  28. stouputils/data_science/data_processing/image/brightness.py +54 -54
  29. stouputils/data_science/data_processing/image/canny.py +110 -110
  30. stouputils/data_science/data_processing/image/clahe.py +92 -92
  31. stouputils/data_science/data_processing/image/common.py +30 -30
  32. stouputils/data_science/data_processing/image/contrast.py +53 -53
  33. stouputils/data_science/data_processing/image/curvature_flow_filter.py +74 -74
  34. stouputils/data_science/data_processing/image/denoise.py +378 -378
  35. stouputils/data_science/data_processing/image/histogram_equalization.py +123 -123
  36. stouputils/data_science/data_processing/image/invert.py +64 -64
  37. stouputils/data_science/data_processing/image/laplacian.py +60 -60
  38. stouputils/data_science/data_processing/image/median_blur.py +52 -52
  39. stouputils/data_science/data_processing/image/noise.py +59 -59
  40. stouputils/data_science/data_processing/image/normalize.py +65 -65
  41. stouputils/data_science/data_processing/image/random_erase.py +66 -66
  42. stouputils/data_science/data_processing/image/resize.py +69 -69
  43. stouputils/data_science/data_processing/image/rotation.py +80 -80
  44. stouputils/data_science/data_processing/image/salt_pepper.py +68 -68
  45. stouputils/data_science/data_processing/image/sharpening.py +55 -55
  46. stouputils/data_science/data_processing/image/shearing.py +64 -64
  47. stouputils/data_science/data_processing/image/threshold.py +64 -64
  48. stouputils/data_science/data_processing/image/translation.py +71 -71
  49. stouputils/data_science/data_processing/image/zoom.py +83 -83
  50. stouputils/data_science/data_processing/image_augmentation.py +118 -118
  51. stouputils/data_science/data_processing/image_preprocess.py +183 -183
  52. stouputils/data_science/data_processing/prosthesis_detection.py +359 -359
  53. stouputils/data_science/data_processing/technique.py +481 -481
  54. stouputils/data_science/dataset/__init__.py +45 -45
  55. stouputils/data_science/dataset/dataset.py +292 -292
  56. stouputils/data_science/dataset/dataset_loader.py +135 -135
  57. stouputils/data_science/dataset/grouping_strategy.py +296 -296
  58. stouputils/data_science/dataset/image_loader.py +100 -100
  59. stouputils/data_science/dataset/xy_tuple.py +696 -696
  60. stouputils/data_science/metric_dictionnary.py +106 -106
  61. stouputils/data_science/mlflow_utils.py +206 -206
  62. stouputils/data_science/models/abstract_model.py +149 -149
  63. stouputils/data_science/models/all.py +85 -85
  64. stouputils/data_science/models/keras/all.py +38 -38
  65. stouputils/data_science/models/keras/convnext.py +62 -62
  66. stouputils/data_science/models/keras/densenet.py +50 -50
  67. stouputils/data_science/models/keras/efficientnet.py +60 -60
  68. stouputils/data_science/models/keras/mobilenet.py +56 -56
  69. stouputils/data_science/models/keras/resnet.py +52 -52
  70. stouputils/data_science/models/keras/squeezenet.py +233 -233
  71. stouputils/data_science/models/keras/vgg.py +42 -42
  72. stouputils/data_science/models/keras/xception.py +38 -38
  73. stouputils/data_science/models/keras_utils/callbacks/__init__.py +20 -20
  74. stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py +219 -219
  75. stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py +148 -148
  76. stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py +31 -31
  77. stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py +249 -249
  78. stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py +66 -66
  79. stouputils/data_science/models/keras_utils/losses/__init__.py +12 -12
  80. stouputils/data_science/models/keras_utils/losses/next_generation_loss.py +56 -56
  81. stouputils/data_science/models/keras_utils/visualizations.py +416 -416
  82. stouputils/data_science/models/sandbox.py +116 -116
  83. stouputils/data_science/range_tuple.py +234 -234
  84. stouputils/data_science/utils.py +285 -285
  85. stouputils/decorators.pyi +242 -0
  86. stouputils/image.pyi +172 -0
  87. stouputils/installer/__init__.py +18 -18
  88. stouputils/installer/__init__.pyi +5 -0
  89. stouputils/installer/common.pyi +39 -0
  90. stouputils/installer/downloader.pyi +24 -0
  91. stouputils/installer/linux.py +144 -144
  92. stouputils/installer/linux.pyi +39 -0
  93. stouputils/installer/main.py +223 -223
  94. stouputils/installer/main.pyi +57 -0
  95. stouputils/installer/windows.py +136 -136
  96. stouputils/installer/windows.pyi +31 -0
  97. stouputils/io.pyi +213 -0
  98. stouputils/parallel.py +12 -10
  99. stouputils/parallel.pyi +211 -0
  100. stouputils/print.pyi +136 -0
  101. stouputils/py.typed +1 -1
  102. stouputils/stouputils/parallel.pyi +4 -4
  103. stouputils/version_pkg.pyi +15 -0
  104. {stouputils-1.14.0.dist-info → stouputils-1.14.2.dist-info}/METADATA +1 -1
  105. stouputils-1.14.2.dist-info/RECORD +171 -0
  106. stouputils-1.14.0.dist-info/RECORD +0 -140
  107. {stouputils-1.14.0.dist-info → stouputils-1.14.2.dist-info}/WHEEL +0 -0
  108. {stouputils-1.14.0.dist-info → stouputils-1.14.2.dist-info}/entry_points.txt +0 -0
@@ -1,135 +1,135 @@
1
- """
2
- This module contains the DatasetLoader class which handles dataset loading operations.
3
-
4
- The DatasetLoader class provides the following key features:
5
-
6
- - Loading image datasets from directories using keras.image_dataset_from_directory
7
- - Handling different grouping strategies (when having multiple images per subject)
8
- - Preventing data leakage between train/test sets when using data augmentation
9
- - Ensuring test data consistency when loading an augmented dataset
10
- """
11
-
12
- # Imports
13
- from typing import Any, Literal
14
-
15
- import numpy as np
16
-
17
- from ...decorators import handle_error, LogLevels
18
- from ..config.get import DataScienceConfig
19
- from .dataset import Dataset
20
- from .grouping_strategy import GroupingStrategy
21
- from .xy_tuple import XyTuple
22
-
23
- # Constants
24
- DEFAULT_IMAGE_KWARGS: dict[str, Any] = {
25
- "image_size": (224, 224),
26
- "color_mode": "RGB",
27
- }
28
-
29
- class DatasetLoader:
30
- """ Handles dataset loading operations """
31
-
32
- @staticmethod
33
- @handle_error(error_log=LogLevels.ERROR_TRACEBACK)
34
- def from_path(
35
- path: str,
36
- loading_type: Literal["image"] = "image",
37
- seed: int = DataScienceConfig.SEED,
38
- test_size: float = 0.2,
39
- val_size: float = 0.2,
40
- grouping_strategy: GroupingStrategy = GroupingStrategy.NONE,
41
- based_of: str = "",
42
- **kwargs: Any
43
- ) -> Dataset:
44
- """ Create a balanced dataset from a path.
45
-
46
- Args:
47
- path (str): Path to the dataset
48
- loading_type (Literal["image"]): Type of the dataset
49
- seed (int): Seed for the random generator
50
- test_size (float): Size of the test dataset (0 means no test set)
51
- val_size (float): Size of the validation dataset (0 means no validation set)
52
- grouping_strategy (GroupingStrategy): Grouping strategy for the dataset (ex: GroupingStrategy.CONCATENATE)
53
- based_of (str): Assuming `path` is an augmentation of `based_of`,
54
- this parameter is used to load the original dataset and
55
- prevent having test_data that have augmented images in the training set
56
- **kwargs (Any): Keyword arguments for the loading function
57
- (ex for image: `keras.src.utils.image_dataset_from_directory(..., **kwargs)`)
58
- Returns:
59
- Dataset: Dataset object
60
-
61
- Examples:
62
- .. code-block:: python
63
-
64
- > dataset = DatasetLoader.from_path(
65
- path="data/pizza_augmented",
66
- loading_type="image",
67
- seed=42,
68
- test_size=0.2,
69
- val_size=0.2,
70
- grouping_strategy=GroupingStrategy.NONE,
71
- based_of="data/pizza",
72
-
73
- # Image loading kwargs
74
- color_mode="grayscale",
75
- image_size=(224, 224),
76
- )
77
- """
78
- # Assertions
79
- assert grouping_strategy in GroupingStrategy, f"Invalid grouping strategy: '{grouping_strategy.name}'"
80
- assert loading_type in ("image",), f"Invalid loading type: '{loading_type}'"
81
-
82
- # Set seed
83
- np.random.seed(seed)
84
-
85
- # Load the base dataset
86
- original_dataset: Dataset = Dataset.empty()
87
- if based_of:
88
- original_dataset = DatasetLoader.from_path(
89
- path=based_of,
90
- loading_type=loading_type,
91
- seed=seed,
92
- test_size=test_size,
93
- val_size=val_size,
94
- grouping_strategy=grouping_strategy,
95
- **kwargs
96
- )
97
-
98
- # Load the data
99
- all_data: XyTuple = XyTuple.empty()
100
- if loading_type == "image":
101
- for key in DEFAULT_IMAGE_KWARGS.keys():
102
- if not kwargs.get(key):
103
- kwargs[key] = DEFAULT_IMAGE_KWARGS[key]
104
-
105
- # Load the data using image_dataset_from_directory
106
- # Grouping strategy can be changed by image_dataset_from_directory so we need to save it
107
- all_data, all_labels, grouping_strategy = GroupingStrategy.image_dataset_from_directory(
108
- grouping_strategy, path, seed, **kwargs
109
- )
110
-
111
- # Split the data using stratification
112
- real_test_size: float = test_size if not based_of else 0
113
- training_data, test_data = all_data.split(real_test_size, seed=DataScienceConfig.SEED)
114
- training_data, val_data = training_data.split(val_size, seed=DataScienceConfig.SEED)
115
-
116
- # Create and return the dataset
117
- dataset = Dataset(
118
- training_data=training_data,
119
- val_data=val_data,
120
- test_data=test_data,
121
- name=path,
122
- grouping_strategy=grouping_strategy,
123
- labels=all_labels,
124
- loading_type=loading_type
125
- )
126
-
127
- # If this dataset is based on another dataset, ensure test data consistency
128
- if based_of:
129
- dataset.exclude_augmented_images_from_val_test(original_dataset)
130
-
131
- # Remember the original dataset
132
- dataset.original_dataset = original_dataset
133
-
134
- return dataset
135
-
1
+ """
2
+ This module contains the DatasetLoader class which handles dataset loading operations.
3
+
4
+ The DatasetLoader class provides the following key features:
5
+
6
+ - Loading image datasets from directories using keras.image_dataset_from_directory
7
+ - Handling different grouping strategies (when having multiple images per subject)
8
+ - Preventing data leakage between train/test sets when using data augmentation
9
+ - Ensuring test data consistency when loading an augmented dataset
10
+ """
11
+
12
+ # Imports
13
+ from typing import Any, Literal
14
+
15
+ import numpy as np
16
+
17
+ from ...decorators import handle_error, LogLevels
18
+ from ..config.get import DataScienceConfig
19
+ from .dataset import Dataset
20
+ from .grouping_strategy import GroupingStrategy
21
+ from .xy_tuple import XyTuple
22
+
23
+ # Constants
24
+ DEFAULT_IMAGE_KWARGS: dict[str, Any] = {
25
+ "image_size": (224, 224),
26
+ "color_mode": "RGB",
27
+ }
28
+
29
+ class DatasetLoader:
30
+ """ Handles dataset loading operations """
31
+
32
+ @staticmethod
33
+ @handle_error(error_log=LogLevels.ERROR_TRACEBACK)
34
+ def from_path(
35
+ path: str,
36
+ loading_type: Literal["image"] = "image",
37
+ seed: int = DataScienceConfig.SEED,
38
+ test_size: float = 0.2,
39
+ val_size: float = 0.2,
40
+ grouping_strategy: GroupingStrategy = GroupingStrategy.NONE,
41
+ based_of: str = "",
42
+ **kwargs: Any
43
+ ) -> Dataset:
44
+ """ Create a balanced dataset from a path.
45
+
46
+ Args:
47
+ path (str): Path to the dataset
48
+ loading_type (Literal["image"]): Type of the dataset
49
+ seed (int): Seed for the random generator
50
+ test_size (float): Size of the test dataset (0 means no test set)
51
+ val_size (float): Size of the validation dataset (0 means no validation set)
52
+ grouping_strategy (GroupingStrategy): Grouping strategy for the dataset (ex: GroupingStrategy.CONCATENATE)
53
+ based_of (str): Assuming `path` is an augmentation of `based_of`,
54
+ this parameter is used to load the original dataset and
55
+ prevent having test_data that have augmented images in the training set
56
+ **kwargs (Any): Keyword arguments for the loading function
57
+ (ex for image: `keras.src.utils.image_dataset_from_directory(..., **kwargs)`)
58
+ Returns:
59
+ Dataset: Dataset object
60
+
61
+ Examples:
62
+ .. code-block:: python
63
+
64
+ > dataset = DatasetLoader.from_path(
65
+ path="data/pizza_augmented",
66
+ loading_type="image",
67
+ seed=42,
68
+ test_size=0.2,
69
+ val_size=0.2,
70
+ grouping_strategy=GroupingStrategy.NONE,
71
+ based_of="data/pizza",
72
+
73
+ # Image loading kwargs
74
+ color_mode="grayscale",
75
+ image_size=(224, 224),
76
+ )
77
+ """
78
+ # Assertions
79
+ assert grouping_strategy in GroupingStrategy, f"Invalid grouping strategy: '{grouping_strategy.name}'"
80
+ assert loading_type in ("image",), f"Invalid loading type: '{loading_type}'"
81
+
82
+ # Set seed
83
+ np.random.seed(seed)
84
+
85
+ # Load the base dataset
86
+ original_dataset: Dataset = Dataset.empty()
87
+ if based_of:
88
+ original_dataset = DatasetLoader.from_path(
89
+ path=based_of,
90
+ loading_type=loading_type,
91
+ seed=seed,
92
+ test_size=test_size,
93
+ val_size=val_size,
94
+ grouping_strategy=grouping_strategy,
95
+ **kwargs
96
+ )
97
+
98
+ # Load the data
99
+ all_data: XyTuple = XyTuple.empty()
100
+ if loading_type == "image":
101
+ for key in DEFAULT_IMAGE_KWARGS.keys():
102
+ if not kwargs.get(key):
103
+ kwargs[key] = DEFAULT_IMAGE_KWARGS[key]
104
+
105
+ # Load the data using image_dataset_from_directory
106
+ # Grouping strategy can be changed by image_dataset_from_directory so we need to save it
107
+ all_data, all_labels, grouping_strategy = GroupingStrategy.image_dataset_from_directory(
108
+ grouping_strategy, path, seed, **kwargs
109
+ )
110
+
111
+ # Split the data using stratification
112
+ real_test_size: float = test_size if not based_of else 0
113
+ training_data, test_data = all_data.split(real_test_size, seed=DataScienceConfig.SEED)
114
+ training_data, val_data = training_data.split(val_size, seed=DataScienceConfig.SEED)
115
+
116
+ # Create and return the dataset
117
+ dataset = Dataset(
118
+ training_data=training_data,
119
+ val_data=val_data,
120
+ test_data=test_data,
121
+ name=path,
122
+ grouping_strategy=grouping_strategy,
123
+ labels=all_labels,
124
+ loading_type=loading_type
125
+ )
126
+
127
+ # If this dataset is based on another dataset, ensure test data consistency
128
+ if based_of:
129
+ dataset.exclude_augmented_images_from_val_test(original_dataset)
130
+
131
+ # Remember the original dataset
132
+ dataset.original_dataset = original_dataset
133
+
134
+ return dataset
135
+