britekit 0.0.7__tar.gz → 0.0.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.

Potentially problematic release.


This version of britekit might be problematic. Click here for more details.

Files changed (124) hide show
  1. {britekit-0.0.7 → britekit-0.0.8}/PKG-INFO +1 -1
  2. {britekit-0.0.7 → britekit-0.0.8}/britekit/__about__.py +1 -1
  3. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_reports.py +4 -4
  4. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/data_module.py +1 -0
  5. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/trainer.py +22 -0
  6. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/tuner.py +1 -1
  7. {britekit-0.0.7 → britekit-0.0.8}/.gitignore +0 -0
  8. {britekit-0.0.7 → britekit-0.0.8}/LICENSE.txt +0 -0
  9. {britekit-0.0.7 → britekit-0.0.8}/README.md +0 -0
  10. {britekit-0.0.7 → britekit-0.0.8}/britekit/__init__.py +0 -0
  11. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/__init__.py +0 -0
  12. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_analyze.py +0 -0
  13. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_audioset.py +0 -0
  14. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_calibrate.py +0 -0
  15. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_ckpt_ops.py +0 -0
  16. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_db_add.py +0 -0
  17. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_db_delete.py +0 -0
  18. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_embed.py +0 -0
  19. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_extract.py +0 -0
  20. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_find_dup.py +0 -0
  21. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_inat.py +0 -0
  22. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_init.py +0 -0
  23. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_pickle.py +0 -0
  24. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_plot.py +0 -0
  25. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_reextract.py +0 -0
  26. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_search.py +0 -0
  27. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_train.py +0 -0
  28. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_tune.py +0 -0
  29. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_wav2mp3.py +0 -0
  30. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_xeno.py +0 -0
  31. {britekit-0.0.7 → britekit-0.0.8}/britekit/commands/_youtube.py +0 -0
  32. {britekit-0.0.7 → britekit-0.0.8}/britekit/core/__init__.py +0 -0
  33. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/class_inclusion.csv +0 -0
  34. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/class_list.csv +0 -0
  35. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/curated/aircraft.csv +0 -0
  36. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/curated/car.csv +0 -0
  37. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/curated/chainsaw.csv +0 -0
  38. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/curated/cow.csv +0 -0
  39. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/curated/cricket.csv +0 -0
  40. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/curated/dog.csv +0 -0
  41. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/curated/rain.csv +0 -0
  42. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/curated/rooster.csv +0 -0
  43. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/curated/sheep.csv +0 -0
  44. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/curated/siren.csv +0 -0
  45. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/curated/speech.csv +0 -0
  46. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/curated/truck.csv +0 -0
  47. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/curated/wind.csv +0 -0
  48. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/audioset/unbalanced_train_segments.csv +0 -0
  49. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/classes.csv +0 -0
  50. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/data/ignore.txt +0 -0
  51. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/yaml/base_config.yaml +0 -0
  52. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/yaml/samples/cfg_infer.yaml +0 -0
  53. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/yaml/samples/train_dla.yaml +0 -0
  54. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/yaml/samples/train_effnet.yaml +0 -0
  55. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/yaml/samples/train_gernet.yaml +0 -0
  56. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/yaml/samples/train_hgnet.yaml +0 -0
  57. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/yaml/samples/train_timm.yaml +0 -0
  58. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/yaml/samples/train_vovnet.yaml +0 -0
  59. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/yaml/samples/tune_dropout.yaml +0 -0
  60. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/yaml/samples/tune_learning_rate.yaml +0 -0
  61. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/yaml/samples/tune_optimizer.yaml +0 -0
  62. {britekit-0.0.7 → britekit-0.0.8}/britekit/install/yaml/samples/tune_smooth.yaml +0 -0
  63. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/class_inclusion.csv +0 -0
  64. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/class_list.csv +0 -0
  65. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/curated/aircraft.csv +0 -0
  66. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/curated/car.csv +0 -0
  67. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/curated/chainsaw.csv +0 -0
  68. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/curated/cow.csv +0 -0
  69. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/curated/cricket.csv +0 -0
  70. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/curated/dog.csv +0 -0
  71. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/curated/rain.csv +0 -0
  72. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/curated/rooster.csv +0 -0
  73. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/curated/sheep.csv +0 -0
  74. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/curated/siren.csv +0 -0
  75. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/curated/speech.csv +0 -0
  76. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/curated/truck.csv +0 -0
  77. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/curated/wind.csv +0 -0
  78. {britekit-0.0.7 → britekit-0.0.8}/install/data/audioset/unbalanced_train_segments.csv +0 -0
  79. {britekit-0.0.7 → britekit-0.0.8}/install/data/classes.csv +0 -0
  80. {britekit-0.0.7 → britekit-0.0.8}/install/data/ignore.txt +0 -0
  81. {britekit-0.0.7 → britekit-0.0.8}/install/yaml/base_config.yaml +0 -0
  82. {britekit-0.0.7 → britekit-0.0.8}/install/yaml/samples/cfg_infer.yaml +0 -0
  83. {britekit-0.0.7 → britekit-0.0.8}/install/yaml/samples/train_dla.yaml +0 -0
  84. {britekit-0.0.7 → britekit-0.0.8}/install/yaml/samples/train_effnet.yaml +0 -0
  85. {britekit-0.0.7 → britekit-0.0.8}/install/yaml/samples/train_gernet.yaml +0 -0
  86. {britekit-0.0.7 → britekit-0.0.8}/install/yaml/samples/train_hgnet.yaml +0 -0
  87. {britekit-0.0.7 → britekit-0.0.8}/install/yaml/samples/train_timm.yaml +0 -0
  88. {britekit-0.0.7 → britekit-0.0.8}/install/yaml/samples/train_vovnet.yaml +0 -0
  89. {britekit-0.0.7 → britekit-0.0.8}/install/yaml/samples/tune_dropout.yaml +0 -0
  90. {britekit-0.0.7 → britekit-0.0.8}/install/yaml/samples/tune_learning_rate.yaml +0 -0
  91. {britekit-0.0.7 → britekit-0.0.8}/install/yaml/samples/tune_optimizer.yaml +0 -0
  92. {britekit-0.0.7 → britekit-0.0.8}/install/yaml/samples/tune_smooth.yaml +0 -0
  93. {britekit-0.0.7 → britekit-0.0.8}/pyproject.toml +0 -0
  94. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/cli.py +0 -0
  95. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/analyzer.py +0 -0
  96. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/audio.py +0 -0
  97. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/augmentation.py +0 -0
  98. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/base_config.py +0 -0
  99. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/config_loader.py +0 -0
  100. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/dataset.py +0 -0
  101. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/exceptions.py +0 -0
  102. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/pickler.py +0 -0
  103. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/plot.py +0 -0
  104. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/predictor.py +0 -0
  105. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/reextractor.py +0 -0
  106. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/core/util.py +0 -0
  107. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/models/base_model.py +0 -0
  108. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/models/dla.py +0 -0
  109. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/models/effnet.py +0 -0
  110. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/models/gernet.py +0 -0
  111. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/models/head_factory.py +0 -0
  112. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/models/hgnet.py +0 -0
  113. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/models/model_loader.py +0 -0
  114. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/models/timm_model.py +0 -0
  115. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/models/vovnet.py +0 -0
  116. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/occurrence_db/occurrence_data_provider.py +0 -0
  117. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/occurrence_db/occurrence_db.py +0 -0
  118. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/testing/base_tester.py +0 -0
  119. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/testing/per_minute_tester.py +0 -0
  120. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/testing/per_recording_tester.py +0 -0
  121. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/testing/per_segment_tester.py +0 -0
  122. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/training_db/extractor.py +0 -0
  123. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/training_db/training_data_provider.py +0 -0
  124. {britekit-0.0.7 → britekit-0.0.8}/src/britekit/training_db/training_db.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: britekit
3
- Version: 0.0.7
3
+ Version: 0.0.8
4
4
  Summary: Core functions for bioacoustic recognizers.
5
5
  Project-URL: Documentation, https://github.com/jhuus/BriteKit#readme
6
6
  Project-URL: Issues, https://github.com/jhuus/BriteKit/issues
@@ -1,4 +1,4 @@
1
1
  # SPDX-FileCopyrightText: 2025-present Jan Huus <jhuus1@gmail.com>
2
2
  #
3
3
  # SPDX-License-Identifier: MIT
4
- __version__ = "0.0.7"
4
+ __version__ = "0.0.8"
@@ -276,14 +276,14 @@ def rpt_epochs(
276
276
  tester.initialize()
277
277
 
278
278
  pr_stats = tester.get_pr_auc_stats()
279
- pr_score = pr_stats["macro_pr_auc"]
279
+ pr_score = pr_stats["micro_pr_auc"]
280
280
  pr_scores.append(pr_score)
281
281
  if pr_score > max_pr_score:
282
282
  max_pr_score = pr_score
283
283
  max_pr_epoch = epoch_num
284
284
 
285
285
  roc_stats = tester.get_roc_auc_stats()
286
- roc_score = roc_stats["macro_roc_auc"]
286
+ roc_score = roc_stats["micro_roc_auc"]
287
287
  roc_scores.append(roc_score)
288
288
  if roc_score > max_roc_score:
289
289
  max_roc_score = roc_score
@@ -323,8 +323,8 @@ def rpt_epochs(
323
323
  plot_path = str(Path(output_path) / "training_scores.jpeg")
324
324
  plt.savefig(plot_path, dpi=300, bbox_inches="tight")
325
325
 
326
- logging.info(f"Maximum PR-AUC score = {max_pr_score:.3f} at epoch {max_pr_epoch}")
327
- logging.info(f"Maximum ROC-AUC score = {max_roc_score:.3f} at epoch {max_roc_epoch}")
326
+ logging.info(f"Maximum micro-averaged PR-AUC score = {max_pr_score:.3f} at epoch {max_pr_epoch}")
327
+ logging.info(f"Maximum micro-averaged ROC-AUC score = {max_roc_score:.3f} at epoch {max_roc_epoch}")
328
328
  logging.info(f"See plot at {plot_path}")
329
329
 
330
330
 
@@ -52,6 +52,7 @@ class DataModule(LightningDataModule):
52
52
  )
53
53
  except Exception as e:
54
54
  logging.error(f"Failed to load training data: {e}")
55
+ raise
55
56
 
56
57
  if (
57
58
  self.cfg.train.noise_class_name
@@ -1,4 +1,5 @@
1
1
  # Defer some imports to improve initialization performance.
2
+ import logging
2
3
  from pathlib import Path
3
4
 
4
5
  from britekit.core.config_loader import get_config
@@ -43,6 +44,7 @@ class Trainer:
43
44
  # load all the data once for performance, then split as needed in each fold
44
45
  dm = DataModule()
45
46
 
47
+ val_rocs = []
46
48
  for k in range(self.cfg.train.num_folds):
47
49
  logger = TensorBoardLogger(
48
50
  save_dir="logs", name=f"fold-{k}", default_hp_metric=False
@@ -116,6 +118,26 @@ class Trainer:
116
118
  if self.cfg.train.test_pickle is not None:
117
119
  trainer.test(model, dm)
118
120
 
121
+ # save stats from k-fold cross-validation
122
+ if self.cfg.train.num_folds > 1 and "val_roc" in trainer.callback_metrics:
123
+ val_rocs.append(float(trainer.callback_metrics["val_roc"]))
124
+
125
+ if val_rocs:
126
+ import math
127
+ import numpy as np
128
+ mean = float(np.mean(val_rocs))
129
+ std = float(np.std(val_rocs, ddof=1)) if len(val_rocs) > 1 else 0.0
130
+ n = len(val_rocs)
131
+ se = std / math.sqrt(n) if n > 1 else 0.0
132
+ ci95 = 1.96 * se # 95% CI using normal approximation
133
+
134
+ logging.info("Using micro-averaged ROC AUC")
135
+ scores_str = ", ".join(f"{v:.4f}" for v in val_rocs)
136
+ logging.info(f"folds: {scores_str}")
137
+ logging.info(f"mean: {mean:.4f}")
138
+ logging.info(f"standard deviation: {std:.4f}")
139
+ logging.info(f"95% confidence interval: {mean-ci95:.4f} to {mean+ci95:.4f}")
140
+
119
141
  def find_lr(self, num_batches: int = 100):
120
142
  """
121
143
  Suggest a learning rate and produce a plot.
@@ -288,7 +288,7 @@ class Tuner:
288
288
  self.cfg.misc.ckpt_folder = str(
289
289
  Path(self.train_log_dir) / train_dir / "checkpoints"
290
290
  )
291
- print(f"{self.cfg.misc.ckpt_folder=}")
291
+ logging.info(f"Using checkpoints in {self.cfg.misc.ckpt_folder}")
292
292
  self.cfg.infer.min_score = 0
293
293
 
294
294
  # suppress console output during inference and test analysis
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes