stouputils 1.3.7__tar.gz → 1.3.8__tar.gz

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 (107) hide show
  1. {stouputils-1.3.7 → stouputils-1.3.8}/PKG-INFO +1 -1
  2. {stouputils-1.3.7 → stouputils-1.3.8}/pyproject.toml +1 -1
  3. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/metric_utils.py +18 -15
  4. {stouputils-1.3.7 → stouputils-1.3.8}/.gitignore +0 -0
  5. {stouputils-1.3.7 → stouputils-1.3.8}/LICENSE +0 -0
  6. {stouputils-1.3.7 → stouputils-1.3.8}/README.md +0 -0
  7. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/__init__.py +0 -0
  8. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/all_doctests.py +0 -0
  9. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/applications/__init__.py +0 -0
  10. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/applications/automatic_docs.py +0 -0
  11. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/applications/upscaler/__init__.py +0 -0
  12. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/applications/upscaler/config.py +0 -0
  13. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/applications/upscaler/image.py +0 -0
  14. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/applications/upscaler/video.py +0 -0
  15. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/archive.py +0 -0
  16. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/backup.py +0 -0
  17. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/collections.py +0 -0
  18. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/continuous_delivery/__init__.py +0 -0
  19. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/continuous_delivery/cd_utils.py +0 -0
  20. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/continuous_delivery/github.py +0 -0
  21. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/continuous_delivery/pypi.py +0 -0
  22. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/continuous_delivery/pyproject.py +0 -0
  23. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/ctx.py +0 -0
  24. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/config/get.py +0 -0
  25. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/config/set.py +0 -0
  26. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/__init__.py +0 -0
  27. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/auto_contrast.py +0 -0
  28. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/axis_flip.py +0 -0
  29. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/bias_field_correction.py +0 -0
  30. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/binary_threshold.py +0 -0
  31. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/blur.py +0 -0
  32. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/brightness.py +0 -0
  33. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/canny.py +0 -0
  34. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/clahe.py +0 -0
  35. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/common.py +0 -0
  36. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/contrast.py +0 -0
  37. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/curvature_flow_filter.py +0 -0
  38. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/denoise.py +0 -0
  39. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/histogram_equalization.py +0 -0
  40. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/invert.py +0 -0
  41. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/laplacian.py +0 -0
  42. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/median_blur.py +0 -0
  43. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/noise.py +0 -0
  44. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/normalize.py +0 -0
  45. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/random_erase.py +0 -0
  46. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/resize.py +0 -0
  47. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/rotation.py +0 -0
  48. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/salt_pepper.py +0 -0
  49. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/sharpening.py +0 -0
  50. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/shearing.py +0 -0
  51. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/threshold.py +0 -0
  52. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/translation.py +0 -0
  53. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image/zoom.py +0 -0
  54. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image_augmentation.py +0 -0
  55. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/image_preprocess.py +0 -0
  56. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/prosthesis_detection.py +0 -0
  57. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/data_processing/technique.py +0 -0
  58. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/dataset/__init__.py +0 -0
  59. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/dataset/dataset.py +0 -0
  60. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/dataset/dataset_loader.py +0 -0
  61. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/dataset/grouping_strategy.py +0 -0
  62. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/dataset/image_loader.py +0 -0
  63. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/dataset/xy_tuple.py +0 -0
  64. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/metric_dictionnary.py +0 -0
  65. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/mlflow_utils.py +0 -0
  66. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/abstract_model.py +0 -0
  67. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/all.py +0 -0
  68. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/base_keras.py +0 -0
  69. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras/all.py +0 -0
  70. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras/convnext.py +0 -0
  71. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras/densenet.py +0 -0
  72. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras/efficientnet.py +0 -0
  73. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras/mobilenet.py +0 -0
  74. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras/resnet.py +0 -0
  75. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras/squeezenet.py +0 -0
  76. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras/vgg.py +0 -0
  77. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras/xception.py +0 -0
  78. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras_utils/callbacks/__init__.py +0 -0
  79. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras_utils/callbacks/colored_progress_bar.py +0 -0
  80. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras_utils/callbacks/learning_rate_finder.py +0 -0
  81. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras_utils/callbacks/model_checkpoint_v2.py +0 -0
  82. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras_utils/callbacks/progressive_unfreezing.py +0 -0
  83. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras_utils/callbacks/warmup_scheduler.py +0 -0
  84. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras_utils/losses/__init__.py +0 -0
  85. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras_utils/losses/next_generation_loss.py +0 -0
  86. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/keras_utils/visualizations.py +0 -0
  87. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/model_interface.py +0 -0
  88. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/models/sandbox.py +0 -0
  89. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/range_tuple.py +0 -0
  90. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/scripts/augment_dataset.py +0 -0
  91. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/scripts/exhaustive_process.py +0 -0
  92. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/scripts/preprocess_dataset.py +0 -0
  93. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/scripts/routine.py +0 -0
  94. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/data_science/utils.py +0 -0
  95. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/decorators.py +0 -0
  96. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/dont_look/zip_file_override.py +0 -0
  97. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/image.py +0 -0
  98. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/installer/__init__.py +0 -0
  99. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/installer/common.py +0 -0
  100. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/installer/downloader.py +0 -0
  101. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/installer/linux.py +0 -0
  102. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/installer/main.py +0 -0
  103. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/installer/windows.py +0 -0
  104. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/io.py +0 -0
  105. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/parallel.py +0 -0
  106. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/print.py +0 -0
  107. {stouputils-1.3.7 → stouputils-1.3.8}/stouputils/py.typed +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: stouputils
3
- Version: 1.3.7
3
+ Version: 1.3.8
4
4
  Summary: Stouputils is a collection of utility modules designed to simplify and enhance the development process. It includes a range of tools for tasks such as execution of doctests, display utilities, decorators, as well as context managers, and many more.
5
5
  Project-URL: Homepage, https://github.com/Stoupy51/stouputils
6
6
  Project-URL: Issues, https://github.com/Stoupy51/stouputils/issues
@@ -5,7 +5,7 @@ build-backend = "hatchling.build"
5
5
 
6
6
  [project]
7
7
  name = "stouputils"
8
- version = "1.3.7"
8
+ version = "1.3.8"
9
9
  description = "Stouputils is a collection of utility modules designed to simplify and enhance the development process. It includes a range of tools for tasks such as execution of doctests, display utilities, decorators, as well as context managers, and many more."
10
10
  readme = "README.md"
11
11
  requires-python = ">=3.10"
@@ -291,18 +291,20 @@ class MetricUtils:
291
291
  true_classes: NDArray[np.intc] | NDArray[np.single],
292
292
  pred_probs: NDArray[np.single],
293
293
  fold_number: int = -1,
294
- run_name: str = ""
294
+ run_name: str = "",
295
+ plot_if_minimum: int = 5
295
296
  ) -> dict[str, float]:
296
297
  """ Calculate ROC curve and AUC score.
297
298
 
298
299
  Args:
299
- true_classes (NDArray[np.intc | np.single]): True class labels (one-hot encoded or class indices)
300
- pred_probs (NDArray[np.single]): Predicted probabilities (must be probability scores, not class indices)
301
- fold_number (int): Fold number, used for naming the plot file, usually
300
+ true_classes (NDArray[np.intc | np.single]): True class labels (one-hot encoded or class indices)
301
+ pred_probs (NDArray[np.single]): Predicted probabilities (must be probability scores, not class indices)
302
+ fold_number (int): Fold number, used for naming the plot file, usually
302
303
  -1 for final model with test set,
303
304
  0 for final model with validation set,
304
305
  >0 for other folds with their validation set
305
- run_name (str): Name for saving the plot
306
+ run_name (str): Name for saving the plot
307
+ plot_if_minimum (int): Minimum number of samples required in true_classes to plot the ROC curve
306
308
  Returns:
307
309
  dict[str, float]: Dictionary containing AUC score and optimal thresholds
308
310
 
@@ -321,7 +323,6 @@ class MetricUtils:
321
323
  >>> float(metrics[MetricDictionnary.OPTIMAL_THRESHOLD_COST])
322
324
  inf
323
325
  """
324
- true_classes = Utils.convert_to_class_indices(true_classes)
325
326
  auc_value, fpr, tpr, thresholds = Utils.get_roc_curve_and_auc(true_classes, pred_probs)
326
327
  metrics: dict[str, float] = {MetricDictionnary.AUC: auc_value}
327
328
 
@@ -339,8 +340,8 @@ class MetricUtils:
339
340
  optimal_threshold_cost: float = thresholds[np.argmin(total_cost)]
340
341
  metrics[MetricDictionnary.OPTIMAL_THRESHOLD_COST] = optimal_threshold_cost
341
342
 
342
- # Plot ROC curve if not nan
343
- if run_name and not np.isnan(auc_value):
343
+ # Plot ROC curve if run_name and minimum number of samples is reached
344
+ if run_name and len(true_classes) >= plot_if_minimum:
344
345
  plt.figure(figsize=(12, 6))
345
346
  plt.plot(fpr, tpr, "b", label=f"ROC curve (AUC = {auc_value:.2f})")
346
347
  plt.plot([0, 1], [0, 1], "r--")
@@ -383,18 +384,20 @@ class MetricUtils:
383
384
  true_classes: NDArray[np.intc] | NDArray[np.single],
384
385
  pred_probs: NDArray[np.single],
385
386
  fold_number: int = -1,
386
- run_name: str = ""
387
+ run_name: str = "",
388
+ plot_if_minimum: int = 5
387
389
  ) -> dict[str, float]:
388
390
  """ Calculate Precision-Recall curve and AUC score. (and NPV-Specificity curve and AUC)
389
391
 
390
392
  Args:
391
- true_classes (NDArray[np.intc | np.single]): True class labels (one-hot encoded or class indices)
392
- pred_probs (NDArray[np.single]): Predicted probabilities (must be probability scores, not class indices)
393
- fold_number (int): Fold number, used for naming the plot file, usually
393
+ true_classes (NDArray[np.intc | np.single]): True class labels (one-hot encoded or class indices)
394
+ pred_probs (NDArray[np.single]): Predicted probabilities (must be probability scores, not class indices)
395
+ fold_number (int): Fold number, used for naming the plot file, usually
394
396
  -1 for final model with test set,
395
397
  0 for final model with validation set,
396
398
  >0 for other folds with their validation set
397
- run_name (str): Name for saving the plot
399
+ run_name (str): Name for saving the plot
400
+ plot_if_minimum (int): Minimum number of samples required in true_classes to plot the PR curves
398
401
  Returns:
399
402
  dict[str, float]: Dictionary containing AUC score and optimal thresholds
400
403
 
@@ -467,8 +470,8 @@ class MetricUtils:
467
470
  else:
468
471
  metrics[MetricDictionnary.OPTIMAL_THRESHOLD_F1_NEGATIVE] = optimal_threshold
469
472
 
470
- # Plot ROC curve if not nan
471
- if run_name:
473
+ # Plot PR curve if run_name and minimum number of samples is reached
474
+ if run_name and len(true_classes) >= plot_if_minimum:
472
475
  label: str = "Precision - Recall" if not is_negative else "Negative Predictive Value - Specificity"
473
476
  plt.figure(figsize=(12, 6))
474
477
  plt.plot(curr_recall, curr_precision, "b", label=f"{label} curve (AUC = {curr_auc:.2f}, AP = {curr_ap:.2f})")
File without changes
File without changes
File without changes
File without changes
File without changes