dslighting 1.7.1__py3-none-any.whl → 1.7.6__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 (352) hide show
  1. dslighting/__init__.py +1 -1
  2. dslighting/core/agent.py +78 -62
  3. {dslighting-1.7.1.dist-info → dslighting-1.7.6.dist-info}/METADATA +1 -1
  4. {dslighting-1.7.1.dist-info → dslighting-1.7.6.dist-info}/RECORD +352 -7
  5. {dslighting-1.7.1.dist-info → dslighting-1.7.6.dist-info}/top_level.txt +1 -0
  6. mlebench/README.md +39 -0
  7. mlebench/__init__.py +0 -0
  8. mlebench/cli.py +221 -0
  9. mlebench/competitions/3d-object-detection-for-autonomous-vehicles/grade.py +161 -0
  10. mlebench/competitions/3d-object-detection-for-autonomous-vehicles/mAP_evaluation.py +425 -0
  11. mlebench/competitions/3d-object-detection-for-autonomous-vehicles/prepare.py +483 -0
  12. mlebench/competitions/3d-object-detection-for-autonomous-vehicles/prepare_val.py +719 -0
  13. mlebench/competitions/AI4Code/grade.py +70 -0
  14. mlebench/competitions/AI4Code/prepare.py +84 -0
  15. mlebench/competitions/AI4Code/prepare_val.py +159 -0
  16. mlebench/competitions/__init__.py +0 -0
  17. mlebench/competitions/aerial-cactus-identification/grade.py +11 -0
  18. mlebench/competitions/aerial-cactus-identification/prepare.py +71 -0
  19. mlebench/competitions/aerial-cactus-identification/prepare_val.py +133 -0
  20. mlebench/competitions/alaska2-image-steganalysis/grade.py +136 -0
  21. mlebench/competitions/alaska2-image-steganalysis/prepare.py +88 -0
  22. mlebench/competitions/alaska2-image-steganalysis/prepare_val.py +148 -0
  23. mlebench/competitions/aptos2019-blindness-detection/grade.py +35 -0
  24. mlebench/competitions/aptos2019-blindness-detection/prepare.py +75 -0
  25. mlebench/competitions/aptos2019-blindness-detection/prepare_val.py +123 -0
  26. mlebench/competitions/bike-sharing-demand/__init__.py +0 -0
  27. mlebench/competitions/bike-sharing-demand/grade.py +55 -0
  28. mlebench/competitions/bike-sharing-demand/prepare.py +37 -0
  29. mlebench/competitions/billion-word-imputation/grade.py +37 -0
  30. mlebench/competitions/billion-word-imputation/prepare.py +107 -0
  31. mlebench/competitions/billion-word-imputation/prepare_val.py +179 -0
  32. mlebench/competitions/bms-molecular-translation/grade.py +40 -0
  33. mlebench/competitions/bms-molecular-translation/prepare.py +68 -0
  34. mlebench/competitions/bms-molecular-translation/prepare_val.py +131 -0
  35. mlebench/competitions/cassava-leaf-disease-classification/grade.py +12 -0
  36. mlebench/competitions/cassava-leaf-disease-classification/prepare.py +113 -0
  37. mlebench/competitions/cassava-leaf-disease-classification/prepare_val.py +186 -0
  38. mlebench/competitions/cdiscount-image-classification-challenge/grade.py +11 -0
  39. mlebench/competitions/cdiscount-image-classification-challenge/prepare.py +144 -0
  40. mlebench/competitions/cdiscount-image-classification-challenge/prepare_val.py +205 -0
  41. mlebench/competitions/chaii-hindi-and-tamil-question-answering/grade.py +67 -0
  42. mlebench/competitions/chaii-hindi-and-tamil-question-answering/prepare.py +31 -0
  43. mlebench/competitions/chaii-hindi-and-tamil-question-answering/prepare_val.py +94 -0
  44. mlebench/competitions/champs-scalar-coupling/grade.py +60 -0
  45. mlebench/competitions/champs-scalar-coupling/prepare.py +116 -0
  46. mlebench/competitions/champs-scalar-coupling/prepare_val.py +155 -0
  47. mlebench/competitions/conways-reverse-game-of-life-2020/__init__.py +0 -0
  48. mlebench/competitions/conways-reverse-game-of-life-2020/grade.py +40 -0
  49. mlebench/competitions/conways-reverse-game-of-life-2020/prepare.py +41 -0
  50. mlebench/competitions/demand-forecasting-kernels-only/__init__.py +0 -0
  51. mlebench/competitions/demand-forecasting-kernels-only/grade.py +66 -0
  52. mlebench/competitions/demand-forecasting-kernels-only/prepare.py +27 -0
  53. mlebench/competitions/demand_forecasting_kernels_only/__init__.py +0 -0
  54. mlebench/competitions/demand_forecasting_kernels_only/grade.py +66 -0
  55. mlebench/competitions/demand_forecasting_kernels_only/prepare.py +27 -0
  56. mlebench/competitions/denoising-dirty-documents/grade.py +44 -0
  57. mlebench/competitions/denoising-dirty-documents/prepare.py +134 -0
  58. mlebench/competitions/denoising-dirty-documents/prepare_val.py +178 -0
  59. mlebench/competitions/detecting-insults-in-social-commentary/grade.py +11 -0
  60. mlebench/competitions/detecting-insults-in-social-commentary/prepare.py +72 -0
  61. mlebench/competitions/detecting-insults-in-social-commentary/prepare_val.py +128 -0
  62. mlebench/competitions/dog-breed-identification/dogs.py +124 -0
  63. mlebench/competitions/dog-breed-identification/grade.py +42 -0
  64. mlebench/competitions/dog-breed-identification/prepare.py +55 -0
  65. mlebench/competitions/dog-breed-identification/prepare_val.py +104 -0
  66. mlebench/competitions/dogs-vs-cats-redux-kernels-edition/grade.py +43 -0
  67. mlebench/competitions/dogs-vs-cats-redux-kernels-edition/prepare.py +70 -0
  68. mlebench/competitions/dogs-vs-cats-redux-kernels-edition/prepare_val.py +143 -0
  69. mlebench/competitions/ethanol-concentration/grade.py +23 -0
  70. mlebench/competitions/ethanol-concentration/prepare.py +90 -0
  71. mlebench/competitions/facebook-recruiting-iii-keyword-extraction/grade.py +60 -0
  72. mlebench/competitions/facebook-recruiting-iii-keyword-extraction/prepare.py +41 -0
  73. mlebench/competitions/facebook-recruiting-iii-keyword-extraction/prepare_val.py +92 -0
  74. mlebench/competitions/feedback-prize-english-language-learning/__init__.py +0 -0
  75. mlebench/competitions/feedback-prize-english-language-learning/grade.py +60 -0
  76. mlebench/competitions/feedback-prize-english-language-learning/prepare.py +39 -0
  77. mlebench/competitions/freesound-audio-tagging-2019/grade.py +64 -0
  78. mlebench/competitions/freesound-audio-tagging-2019/prepare.py +94 -0
  79. mlebench/competitions/freesound-audio-tagging-2019/prepare_val.py +175 -0
  80. mlebench/competitions/freesound-audio-tagging-2019/vocabulary.py +83 -0
  81. mlebench/competitions/google-quest-challenge/classes.py +32 -0
  82. mlebench/competitions/google-quest-challenge/grade.py +45 -0
  83. mlebench/competitions/google-quest-challenge/prepare.py +58 -0
  84. mlebench/competitions/google-quest-challenge/prepare_val.py +120 -0
  85. mlebench/competitions/google-research-identify-contrails-reduce-global-warming/grade.py +77 -0
  86. mlebench/competitions/google-research-identify-contrails-reduce-global-warming/prepare.py +155 -0
  87. mlebench/competitions/google-research-identify-contrails-reduce-global-warming/prepare_val.py +211 -0
  88. mlebench/competitions/h-and-m-personalized-fashion-recommendations/grade.py +42 -0
  89. mlebench/competitions/h-and-m-personalized-fashion-recommendations/prepare.py +102 -0
  90. mlebench/competitions/h-and-m-personalized-fashion-recommendations/prepare_val.py +132 -0
  91. mlebench/competitions/handwriting/grade.py +23 -0
  92. mlebench/competitions/handwriting/prepare.py +179 -0
  93. mlebench/competitions/herbarium-2020-fgvc7/grade.py +34 -0
  94. mlebench/competitions/herbarium-2020-fgvc7/prepare.py +251 -0
  95. mlebench/competitions/herbarium-2020-fgvc7/prepare_val.py +242 -0
  96. mlebench/competitions/herbarium-2021-fgvc8/grade.py +34 -0
  97. mlebench/competitions/herbarium-2021-fgvc8/prepare.py +251 -0
  98. mlebench/competitions/herbarium-2021-fgvc8/prepare_val.py +222 -0
  99. mlebench/competitions/herbarium-2022-fgvc9/grade.py +31 -0
  100. mlebench/competitions/herbarium-2022-fgvc9/prepare.py +233 -0
  101. mlebench/competitions/herbarium-2022-fgvc9/prepare_val.py +213 -0
  102. mlebench/competitions/histopathologic-cancer-detection/grade.py +12 -0
  103. mlebench/competitions/histopathologic-cancer-detection/prepare.py +59 -0
  104. mlebench/competitions/histopathologic-cancer-detection/prepare_val.py +131 -0
  105. mlebench/competitions/hms-harmful-brain-activity-classification/constants.py +9 -0
  106. mlebench/competitions/hms-harmful-brain-activity-classification/grade.py +43 -0
  107. mlebench/competitions/hms-harmful-brain-activity-classification/kaggle_metric_utilities.py +96 -0
  108. mlebench/competitions/hms-harmful-brain-activity-classification/kullback_leibler_divergence.py +118 -0
  109. mlebench/competitions/hms-harmful-brain-activity-classification/prepare.py +121 -0
  110. mlebench/competitions/hms-harmful-brain-activity-classification/prepare_val.py +190 -0
  111. mlebench/competitions/hotel-id-2021-fgvc8/grade.py +41 -0
  112. mlebench/competitions/hotel-id-2021-fgvc8/prepare.py +63 -0
  113. mlebench/competitions/hotel-id-2021-fgvc8/prepare_val.py +132 -0
  114. mlebench/competitions/hubmap-kidney-segmentation/grade.py +62 -0
  115. mlebench/competitions/hubmap-kidney-segmentation/prepare.py +108 -0
  116. mlebench/competitions/hubmap-kidney-segmentation/prepare_val.py +153 -0
  117. mlebench/competitions/icecube-neutrinos-in-deep-ice/grade.py +111 -0
  118. mlebench/competitions/icecube-neutrinos-in-deep-ice/prepare.py +127 -0
  119. mlebench/competitions/icecube-neutrinos-in-deep-ice/prepare_val.py +183 -0
  120. mlebench/competitions/ili/grade.py +60 -0
  121. mlebench/competitions/ili/prepare.py +99 -0
  122. mlebench/competitions/imet-2020-fgvc7/grade.py +54 -0
  123. mlebench/competitions/imet-2020-fgvc7/prepare.py +77 -0
  124. mlebench/competitions/imet-2020-fgvc7/prepare_val.py +157 -0
  125. mlebench/competitions/inaturalist-2019-fgvc6/grade.py +35 -0
  126. mlebench/competitions/inaturalist-2019-fgvc6/prepare.py +259 -0
  127. mlebench/competitions/inaturalist-2019-fgvc6/prepare_val.py +304 -0
  128. mlebench/competitions/instant-gratification/__init__.py +0 -0
  129. mlebench/competitions/instant-gratification/grade.py +55 -0
  130. mlebench/competitions/instant-gratification/prepare.py +25 -0
  131. mlebench/competitions/instant_gratification/__init__.py +0 -0
  132. mlebench/competitions/instant_gratification/grade.py +55 -0
  133. mlebench/competitions/instant_gratification/prepare.py +25 -0
  134. mlebench/competitions/invasive-species-monitoring/grade.py +11 -0
  135. mlebench/competitions/invasive-species-monitoring/prepare.py +97 -0
  136. mlebench/competitions/invasive-species-monitoring/prepare_val.py +164 -0
  137. mlebench/competitions/iwildcam-2019-fgvc6/grade.py +44 -0
  138. mlebench/competitions/iwildcam-2019-fgvc6/prepare.py +118 -0
  139. mlebench/competitions/iwildcam-2019-fgvc6/prepare_val.py +194 -0
  140. mlebench/competitions/iwildcam-2020-fgvc7/grade.py +11 -0
  141. mlebench/competitions/iwildcam-2020-fgvc7/prepare.py +164 -0
  142. mlebench/competitions/iwildcam-2020-fgvc7/prepare_val.py +245 -0
  143. mlebench/competitions/jigsaw-toxic-comment-classification-challenge/classes.py +1 -0
  144. mlebench/competitions/jigsaw-toxic-comment-classification-challenge/grade.py +54 -0
  145. mlebench/competitions/jigsaw-toxic-comment-classification-challenge/prepare.py +42 -0
  146. mlebench/competitions/jigsaw-toxic-comment-classification-challenge/prepare_val.py +88 -0
  147. mlebench/competitions/jigsaw-unintended-bias-in-toxicity-classification/grade.py +153 -0
  148. mlebench/competitions/jigsaw-unintended-bias-in-toxicity-classification/prepare.py +36 -0
  149. mlebench/competitions/jigsaw-unintended-bias-in-toxicity-classification/prepare_val.py +117 -0
  150. mlebench/competitions/kuzushiji-recognition/grade.py +58 -0
  151. mlebench/competitions/kuzushiji-recognition/kuzushiji_metric.py +118 -0
  152. mlebench/competitions/kuzushiji-recognition/prepare.py +92 -0
  153. mlebench/competitions/kuzushiji-recognition/prepare_val.py +149 -0
  154. mlebench/competitions/leaf-classification/classes.py +101 -0
  155. mlebench/competitions/leaf-classification/grade.py +44 -0
  156. mlebench/competitions/leaf-classification/prepare.py +60 -0
  157. mlebench/competitions/leaf-classification/prepare_val.py +116 -0
  158. mlebench/competitions/learning-agency-lab-automated-essay-scoring-2/grade.py +44 -0
  159. mlebench/competitions/learning-agency-lab-automated-essay-scoring-2/prepare.py +51 -0
  160. mlebench/competitions/learning-agency-lab-automated-essay-scoring-2/prepare_val.py +96 -0
  161. mlebench/competitions/liverpool-ion-switching/__init__.py +0 -0
  162. mlebench/competitions/liverpool-ion-switching/grade.py +52 -0
  163. mlebench/competitions/liverpool-ion-switching/prepare.py +27 -0
  164. mlebench/competitions/liverpool_ion_switching/__init__.py +0 -0
  165. mlebench/competitions/liverpool_ion_switching/grade.py +52 -0
  166. mlebench/competitions/liverpool_ion_switching/prepare.py +27 -0
  167. mlebench/competitions/lmsys-chatbot-arena/grade.py +63 -0
  168. mlebench/competitions/lmsys-chatbot-arena/prepare.py +52 -0
  169. mlebench/competitions/lmsys-chatbot-arena/prepare_val.py +115 -0
  170. mlebench/competitions/mcm_2024_c_test/grade.py +107 -0
  171. mlebench/competitions/mcm_2024_c_test/prepare.py +2 -0
  172. mlebench/competitions/ml2021spring-hw2/grade.py +11 -0
  173. mlebench/competitions/ml2021spring-hw2/prepare.py +58 -0
  174. mlebench/competitions/ml2021spring-hw2/prepare_val.py +135 -0
  175. mlebench/competitions/mlsp-2013-birds/grade.py +11 -0
  176. mlebench/competitions/mlsp-2013-birds/prepare.py +182 -0
  177. mlebench/competitions/mlsp-2013-birds/prepare_val.py +241 -0
  178. mlebench/competitions/movie-review-sentiment-analysis-kernels-only/grade.py +11 -0
  179. mlebench/competitions/movie-review-sentiment-analysis-kernels-only/prepare.py +58 -0
  180. mlebench/competitions/movie-review-sentiment-analysis-kernels-only/prepare_val.py +120 -0
  181. mlebench/competitions/multi-modal-gesture-recognition/grade.py +58 -0
  182. mlebench/competitions/multi-modal-gesture-recognition/prepare.py +85 -0
  183. mlebench/competitions/multi-modal-gesture-recognition/prepare_val.py +139 -0
  184. mlebench/competitions/my-custom-task-01/prepare.py +2 -0
  185. mlebench/competitions/new-my-task-01/prepare.py +2 -0
  186. mlebench/competitions/new-my-task-03/grade.py +107 -0
  187. mlebench/competitions/new-my-task-03/prepare.py +2 -0
  188. mlebench/competitions/new-york-city-taxi-fare-prediction/grade.py +28 -0
  189. mlebench/competitions/new-york-city-taxi-fare-prediction/prepare.py +44 -0
  190. mlebench/competitions/new-york-city-taxi-fare-prediction/prepare_val.py +89 -0
  191. mlebench/competitions/nfl-player-contact-detection/grade.py +36 -0
  192. mlebench/competitions/nfl-player-contact-detection/prepare.py +101 -0
  193. mlebench/competitions/nfl-player-contact-detection/prepare_val.py +186 -0
  194. mlebench/competitions/nomad2018-predict-transparent-conductors/grade.py +47 -0
  195. mlebench/competitions/nomad2018-predict-transparent-conductors/prepare.py +77 -0
  196. mlebench/competitions/nomad2018-predict-transparent-conductors/prepare_val.py +144 -0
  197. mlebench/competitions/osic-pulmonary-fibrosis-progression/grade.py +74 -0
  198. mlebench/competitions/osic-pulmonary-fibrosis-progression/prepare.py +95 -0
  199. mlebench/competitions/osic-pulmonary-fibrosis-progression/prepare_val.py +167 -0
  200. mlebench/competitions/paddy-disease-classification/grade.py +35 -0
  201. mlebench/competitions/paddy-disease-classification/prepare.py +69 -0
  202. mlebench/competitions/paddy-disease-classification/prepare_val.py +122 -0
  203. mlebench/competitions/petfinder-pawpularity-score/grade.py +41 -0
  204. mlebench/competitions/petfinder-pawpularity-score/prepare.py +76 -0
  205. mlebench/competitions/petfinder-pawpularity-score/prepare_val.py +154 -0
  206. mlebench/competitions/plant-pathology-2020-fgvc7/grade.py +41 -0
  207. mlebench/competitions/plant-pathology-2020-fgvc7/prepare.py +74 -0
  208. mlebench/competitions/plant-pathology-2020-fgvc7/prepare_val.py +160 -0
  209. mlebench/competitions/plant-pathology-2021-fgvc8/grade.py +54 -0
  210. mlebench/competitions/plant-pathology-2021-fgvc8/prepare.py +65 -0
  211. mlebench/competitions/plant-pathology-2021-fgvc8/prepare_val.py +130 -0
  212. mlebench/competitions/plant-seedlings-classification/grade.py +39 -0
  213. mlebench/competitions/plant-seedlings-classification/prepare.py +91 -0
  214. mlebench/competitions/plant-seedlings-classification/prepare_val.py +158 -0
  215. mlebench/competitions/playground-series-s3e1/__init__.py +0 -0
  216. mlebench/competitions/playground-series-s3e1/grade.py +52 -0
  217. mlebench/competitions/playground-series-s3e1/prepare.py +25 -0
  218. mlebench/competitions/playground-series-s3e11/__init__.py +0 -0
  219. mlebench/competitions/playground-series-s3e11/grade.py +55 -0
  220. mlebench/competitions/playground-series-s3e11/prepare.py +25 -0
  221. mlebench/competitions/playground-series-s3e18/grade.py +39 -0
  222. mlebench/competitions/playground-series-s3e18/prepare.py +36 -0
  223. mlebench/competitions/playground-series-s3e18/prepare_val.py +89 -0
  224. mlebench/competitions/playground_series_s3e1/__init__.py +0 -0
  225. mlebench/competitions/playground_series_s3e1/grade.py +52 -0
  226. mlebench/competitions/playground_series_s3e1/prepare.py +25 -0
  227. mlebench/competitions/playground_series_s3e11/__init__.py +0 -0
  228. mlebench/competitions/playground_series_s3e11/grade.py +55 -0
  229. mlebench/competitions/playground_series_s3e11/prepare.py +25 -0
  230. mlebench/competitions/predict-volcanic-eruptions-ingv-oe/grade.py +44 -0
  231. mlebench/competitions/predict-volcanic-eruptions-ingv-oe/prepare.py +68 -0
  232. mlebench/competitions/predict-volcanic-eruptions-ingv-oe/prepare_val.py +146 -0
  233. mlebench/competitions/random-acts-of-pizza/grade.py +14 -0
  234. mlebench/competitions/random-acts-of-pizza/prepare.py +80 -0
  235. mlebench/competitions/random-acts-of-pizza/prepare_val.py +144 -0
  236. mlebench/competitions/ranzcr-clip-catheter-line-classification/classes.py +11 -0
  237. mlebench/competitions/ranzcr-clip-catheter-line-classification/grade.py +31 -0
  238. mlebench/competitions/ranzcr-clip-catheter-line-classification/prepare.py +53 -0
  239. mlebench/competitions/ranzcr-clip-catheter-line-classification/prepare_val.py +113 -0
  240. mlebench/competitions/rsna-2022-cervical-spine-fracture-detection/grade.py +124 -0
  241. mlebench/competitions/rsna-2022-cervical-spine-fracture-detection/prepare.py +219 -0
  242. mlebench/competitions/rsna-2022-cervical-spine-fracture-detection/prepare_val.py +257 -0
  243. mlebench/competitions/rsna-breast-cancer-detection/grade.py +65 -0
  244. mlebench/competitions/rsna-breast-cancer-detection/prepare.py +141 -0
  245. mlebench/competitions/rsna-breast-cancer-detection/prepare_val.py +201 -0
  246. mlebench/competitions/rsna-miccai-brain-tumor-radiogenomic-classification/grade.py +13 -0
  247. mlebench/competitions/rsna-miccai-brain-tumor-radiogenomic-classification/prepare.py +47 -0
  248. mlebench/competitions/rsna-miccai-brain-tumor-radiogenomic-classification/prepare_val.py +97 -0
  249. mlebench/competitions/santander-customer-satisfaction/grade.py +10 -0
  250. mlebench/competitions/santander-customer-satisfaction/prepare.py +41 -0
  251. mlebench/competitions/sciencebench-001-clintox-nn/__init__.py +0 -0
  252. mlebench/competitions/sciencebench-001-clintox-nn/grade.py +56 -0
  253. mlebench/competitions/sciencebench-001-clintox-nn/prepare.py +75 -0
  254. mlebench/competitions/sciencebench-015-aai/grade.py +37 -0
  255. mlebench/competitions/sciencebench-015-aai/prepare.py +102 -0
  256. mlebench/competitions/sciencebench-051-brain-blood-qsar/grade.py +58 -0
  257. mlebench/competitions/sciencebench-051-brain-blood-qsar/prepare.py +69 -0
  258. mlebench/competitions/sciencebench-101-experimental-band-gap-prediction/grade.py +55 -0
  259. mlebench/competitions/sciencebench-101-experimental-band-gap-prediction/prepare.py +88 -0
  260. mlebench/competitions/see-click-predict-fix/__init__.py +0 -0
  261. mlebench/competitions/see-click-predict-fix/grade.py +66 -0
  262. mlebench/competitions/see-click-predict-fix/prepare.py +25 -0
  263. mlebench/competitions/see_click_predict_fix/__init__.py +0 -0
  264. mlebench/competitions/see_click_predict_fix/grade.py +66 -0
  265. mlebench/competitions/see_click_predict_fix/prepare.py +25 -0
  266. mlebench/competitions/seti-breakthrough-listen/grade.py +11 -0
  267. mlebench/competitions/seti-breakthrough-listen/prepare.py +71 -0
  268. mlebench/competitions/seti-breakthrough-listen/prepare_val.py +159 -0
  269. mlebench/competitions/siim-covid19-detection/grade.py +194 -0
  270. mlebench/competitions/siim-covid19-detection/prepare.py +123 -0
  271. mlebench/competitions/siim-covid19-detection/prepare_val.py +164 -0
  272. mlebench/competitions/siim-isic-melanoma-classification/grade.py +11 -0
  273. mlebench/competitions/siim-isic-melanoma-classification/prepare.py +127 -0
  274. mlebench/competitions/siim-isic-melanoma-classification/prepare_val.py +158 -0
  275. mlebench/competitions/smartphone-decimeter-2022/grade.py +55 -0
  276. mlebench/competitions/smartphone-decimeter-2022/notebook.py +86 -0
  277. mlebench/competitions/smartphone-decimeter-2022/prepare.py +143 -0
  278. mlebench/competitions/smartphone-decimeter-2022/prepare_val.py +199 -0
  279. mlebench/competitions/spaceship-titanic/grade.py +11 -0
  280. mlebench/competitions/spaceship-titanic/prepare.py +23 -0
  281. mlebench/competitions/spaceship-titanic/prepare_val.py +61 -0
  282. mlebench/competitions/spooky-author-identification/classes.py +1 -0
  283. mlebench/competitions/spooky-author-identification/grade.py +38 -0
  284. mlebench/competitions/spooky-author-identification/prepare.py +40 -0
  285. mlebench/competitions/spooky-author-identification/prepare_val.py +78 -0
  286. mlebench/competitions/stanford-covid-vaccine/grade.py +65 -0
  287. mlebench/competitions/stanford-covid-vaccine/prepare.py +129 -0
  288. mlebench/competitions/stanford-covid-vaccine/prepare_val.py +199 -0
  289. mlebench/competitions/statoil-iceberg-classifier-challenge/grade.py +41 -0
  290. mlebench/competitions/statoil-iceberg-classifier-challenge/prepare.py +105 -0
  291. mlebench/competitions/statoil-iceberg-classifier-challenge/prepare_val.py +157 -0
  292. mlebench/competitions/tabular-playground-series-dec-2021/grade.py +11 -0
  293. mlebench/competitions/tabular-playground-series-dec-2021/prepare.py +39 -0
  294. mlebench/competitions/tabular-playground-series-dec-2021/prepare_val.py +99 -0
  295. mlebench/competitions/tabular-playground-series-may-2022/grade.py +9 -0
  296. mlebench/competitions/tabular-playground-series-may-2022/prepare.py +56 -0
  297. mlebench/competitions/tabular-playground-series-may-2022/prepare_val.py +116 -0
  298. mlebench/competitions/tensorflow-speech-recognition-challenge/grade.py +11 -0
  299. mlebench/competitions/tensorflow-speech-recognition-challenge/prepare.py +90 -0
  300. mlebench/competitions/tensorflow-speech-recognition-challenge/prepare_val.py +148 -0
  301. mlebench/competitions/tensorflow2-question-answering/grade.py +122 -0
  302. mlebench/competitions/tensorflow2-question-answering/prepare.py +122 -0
  303. mlebench/competitions/tensorflow2-question-answering/prepare_val.py +187 -0
  304. mlebench/competitions/text-normalization-challenge-english-language/grade.py +49 -0
  305. mlebench/competitions/text-normalization-challenge-english-language/prepare.py +115 -0
  306. mlebench/competitions/text-normalization-challenge-english-language/prepare_val.py +213 -0
  307. mlebench/competitions/text-normalization-challenge-russian-language/grade.py +49 -0
  308. mlebench/competitions/text-normalization-challenge-russian-language/prepare.py +113 -0
  309. mlebench/competitions/text-normalization-challenge-russian-language/prepare_val.py +165 -0
  310. mlebench/competitions/tgs-salt-identification-challenge/grade.py +144 -0
  311. mlebench/competitions/tgs-salt-identification-challenge/prepare.py +158 -0
  312. mlebench/competitions/tgs-salt-identification-challenge/prepare_val.py +166 -0
  313. mlebench/competitions/the-icml-2013-whale-challenge-right-whale-redux/grade.py +11 -0
  314. mlebench/competitions/the-icml-2013-whale-challenge-right-whale-redux/prepare.py +95 -0
  315. mlebench/competitions/the-icml-2013-whale-challenge-right-whale-redux/prepare_val.py +141 -0
  316. mlebench/competitions/tmdb-box-office-prediction/__init__.py +0 -0
  317. mlebench/competitions/tmdb-box-office-prediction/grade.py +55 -0
  318. mlebench/competitions/tmdb-box-office-prediction/prepare.py +35 -0
  319. mlebench/competitions/tweet-sentiment-extraction/grade.py +67 -0
  320. mlebench/competitions/tweet-sentiment-extraction/prepare.py +36 -0
  321. mlebench/competitions/tweet-sentiment-extraction/prepare_val.py +106 -0
  322. mlebench/competitions/us-patent-phrase-to-phrase-matching/grade.py +31 -0
  323. mlebench/competitions/us-patent-phrase-to-phrase-matching/prepare.py +33 -0
  324. mlebench/competitions/us-patent-phrase-to-phrase-matching/prepare_val.py +71 -0
  325. mlebench/competitions/utils.py +266 -0
  326. mlebench/competitions/uw-madison-gi-tract-image-segmentation/grade.py +158 -0
  327. mlebench/competitions/uw-madison-gi-tract-image-segmentation/prepare.py +139 -0
  328. mlebench/competitions/uw-madison-gi-tract-image-segmentation/prepare_val.py +193 -0
  329. mlebench/competitions/ventilator-pressure-prediction/__init__.py +0 -0
  330. mlebench/competitions/ventilator-pressure-prediction/grade.py +52 -0
  331. mlebench/competitions/ventilator-pressure-prediction/prepare.py +27 -0
  332. mlebench/competitions/ventilator-pressure-prediction/prepare_val.py +142 -0
  333. mlebench/competitions/ventilator_pressure_prediction/__init__.py +0 -0
  334. mlebench/competitions/ventilator_pressure_prediction/grade.py +52 -0
  335. mlebench/competitions/ventilator_pressure_prediction/prepare.py +27 -0
  336. mlebench/competitions/vesuvius-challenge-ink-detection/grade.py +97 -0
  337. mlebench/competitions/vesuvius-challenge-ink-detection/prepare.py +122 -0
  338. mlebench/competitions/vesuvius-challenge-ink-detection/prepare_val.py +170 -0
  339. mlebench/competitions/vinbigdata-chest-xray-abnormalities-detection/grade.py +220 -0
  340. mlebench/competitions/vinbigdata-chest-xray-abnormalities-detection/prepare.py +129 -0
  341. mlebench/competitions/vinbigdata-chest-xray-abnormalities-detection/prepare_val.py +204 -0
  342. mlebench/competitions/whale-categorization-playground/grade.py +41 -0
  343. mlebench/competitions/whale-categorization-playground/prepare.py +103 -0
  344. mlebench/competitions/whale-categorization-playground/prepare_val.py +196 -0
  345. mlebench/data.py +420 -0
  346. mlebench/grade.py +209 -0
  347. mlebench/grade_helpers.py +235 -0
  348. mlebench/metrics.py +75 -0
  349. mlebench/registry.py +332 -0
  350. mlebench/utils.py +346 -0
  351. {dslighting-1.7.1.dist-info → dslighting-1.7.6.dist-info}/WHEEL +0 -0
  352. {dslighting-1.7.1.dist-info → dslighting-1.7.6.dist-info}/entry_points.txt +0 -0
mlebench/utils.py ADDED
@@ -0,0 +1,346 @@
1
+ import difflib
2
+ import importlib
3
+ import json
4
+ import logging
5
+ import os
6
+ import sys
7
+ import time
8
+ import uuid
9
+ import zipfile
10
+ from logging import Logger
11
+ from pathlib import Path
12
+ from typing import Any, Callable, Optional
13
+
14
+ import pandas as pd
15
+ import py7zr
16
+ import yaml
17
+ from pandas import DataFrame
18
+ from tqdm.auto import tqdm
19
+
20
+
21
+ def purple(str: str) -> str:
22
+ return f"\033[1;35m{str}\033[0m"
23
+
24
+
25
+ def authenticate_kaggle_api() -> "KaggleApi":
26
+ """Authenticates the Kaggle API and returns an authenticated API object, or raises an error if authentication fails."""
27
+ try:
28
+ # only import when necessary; otherwise kaggle asks for API key on import
29
+ from kaggle.api.kaggle_api_extended import KaggleApi
30
+
31
+ api = KaggleApi()
32
+ api.authenticate()
33
+ api.competitions_list() # a cheap op that requires authentication
34
+ return api
35
+ except Exception as e:
36
+ logger.error(f"Authentication failed: {str(e)}")
37
+ raise PermissionError(
38
+ "Kaggle authentication failed! Please ensure you have valid Kaggle API credentials "
39
+ "configured. Refer to the Kaggle API documentation for guidance on setting up "
40
+ "your API token."
41
+ ) from e
42
+
43
+
44
+ def read_jsonl(file_path: str, skip_commented_out_lines: bool = False) -> list[dict]:
45
+ """
46
+ Read a JSONL file and return a list of dictionaries of its content.
47
+
48
+ Args:
49
+ file_path (str): Path to the JSONL file.
50
+ skip_commented_out_lines (bool): If True, skip commented out lines.
51
+
52
+ Returns:
53
+ list[dict]: List of dictionaries parsed from the JSONL file.
54
+ """
55
+ result = []
56
+ with open(file_path, "r") as f:
57
+ if skip_commented_out_lines:
58
+ for line in f:
59
+ line = line.strip()
60
+ if not line or line.startswith("#") or line.startswith("//"):
61
+ continue
62
+ result.append(json.loads(line))
63
+ else:
64
+ return [json.loads(line) for line in f]
65
+ return result
66
+
67
+
68
+ def load_answers(path_to_answers: Path) -> Any:
69
+ if path_to_answers.suffix == ".csv":
70
+ return read_csv(path_to_answers)
71
+
72
+ if path_to_answers.suffix == ".jsonl":
73
+ return read_jsonl(str(path_to_answers))
74
+
75
+ raise ValueError(f"Unsupported file format for answers: {path_to_answers}")
76
+
77
+
78
+ def get_runs_dir() -> Path:
79
+ """Returns an absolute path to the directory storing runs."""
80
+
81
+ return get_module_dir().parent / "runs"
82
+
83
+
84
+ def get_module_dir() -> Path:
85
+ """Returns an absolute path to the MLE-bench module."""
86
+
87
+ path = Path(__file__).parent.resolve()
88
+
89
+ return path
90
+
91
+
92
+ def get_repo_dir() -> Path:
93
+ """Returns an absolute path to the repository directory."""
94
+
95
+ # Module lives at benchmarks/mlebench; repo root is two levels up.
96
+ return get_module_dir().parent.parent
97
+
98
+
99
+ def generate_run_id(competition_id: str, agent_id: str, run_group: Optional[str] = None) -> str:
100
+ """Creates a unique run ID for a specific competition and agent combo"""
101
+
102
+ timestamp = get_timestamp()
103
+ long_id = str(uuid.uuid4())
104
+ short_id = long_id[:8]
105
+
106
+ if run_group: # the timestamp and agent are already included in the run group name
107
+ return f"{competition_id}_{long_id}"
108
+
109
+ return f"{timestamp}_{competition_id}_{agent_id}_{short_id}"
110
+
111
+
112
+ def create_run_dir(
113
+ competition_id: Optional[str] = None,
114
+ agent_id: Optional[str] = None,
115
+ run_group: Optional[str] = None,
116
+ ) -> Path:
117
+ """Creates a directory for the run."""
118
+
119
+ assert competition_id is None or isinstance(
120
+ competition_id, str
121
+ ), f"Expected a string or None, but got `{type(competition_id).__name__}`."
122
+
123
+ assert agent_id is None or isinstance(
124
+ agent_id, str
125
+ ), f"Expected a string or None, but got `{type(agent_id).__name__}`."
126
+
127
+ assert run_group is None or isinstance(
128
+ run_group, str
129
+ ), f"Expected a string or None, but got `{type(run_group).__name__}`."
130
+
131
+ run_id = str(uuid.uuid4())
132
+
133
+ if competition_id and agent_id:
134
+ run_id = generate_run_id(competition_id, agent_id, run_group)
135
+
136
+ run_dir = get_runs_dir() / run_id
137
+
138
+ if run_group:
139
+ run_dir = get_runs_dir() / run_group / run_id
140
+
141
+ run_dir.mkdir(parents=True, exist_ok=False)
142
+
143
+ assert isinstance(run_dir, Path), f"Expected a `Path`, but got `{type(run_dir)}`."
144
+ assert run_dir.is_dir(), f"Expected a directory, but got `{run_dir}`."
145
+
146
+ return run_dir
147
+
148
+
149
+ def is_compressed(fpath: Path) -> bool:
150
+ """Checks if the file is compressed."""
151
+
152
+ return fpath.suffix in [".zip", ".tar", ".gz", ".tgz", ".tar.gz", ".rar", ".7z"]
153
+
154
+
155
+ def compress(src: Path, compressed: Path, exist_ok: bool = False) -> None:
156
+ """Compresses the contents of a source directory to a compressed file."""
157
+ assert src.exists(), f"Source directory `{src}` does not exist."
158
+ assert src.is_dir(), f"Expected a directory, but got `{src}`."
159
+ if not exist_ok:
160
+ assert not compressed.exists(), f"Compressed file `{compressed}` already exists."
161
+
162
+ tqdm_desc = f"Compressing {src.name} to {compressed.name}"
163
+ file_paths = [path for path in src.rglob("*") if path.is_file()]
164
+ total_files = len(file_paths)
165
+
166
+ def zip_compress(src: Path, compressed: Path):
167
+ with zipfile.ZipFile(compressed, "w", zipfile.ZIP_DEFLATED) as zipf:
168
+ for file_path in tqdm(file_paths, desc=tqdm_desc, unit="file", total=total_files):
169
+ zipf.write(file_path, arcname=file_path.relative_to(src))
170
+
171
+ def sevenz_compress(src: Path, compressed: Path):
172
+ with py7zr.SevenZipFile(compressed, "w") as archive:
173
+ for file_path in tqdm(file_paths, desc=tqdm_desc, unit="file", total=total_files):
174
+ archive.write(file_path, arcname=file_path.relative_to(src))
175
+
176
+ # Determine the compression format from the destination file suffix
177
+ if compressed.suffix == ".zip":
178
+ zip_compress(src, compressed)
179
+ elif compressed.suffix == ".7z":
180
+ sevenz_compress(src, compressed)
181
+ else:
182
+ raise NotImplementedError(f"Unsupported compression format: `{compressed.suffix}`.")
183
+
184
+
185
+ def extract(
186
+ compressed: Path, dst: Path, recursive: bool = False, already_extracted: set = set()
187
+ ) -> None:
188
+ """Extracts the contents of a compressed file to a destination directory."""
189
+
190
+ # pre-conditions
191
+ assert compressed.exists(), f"File `{compressed}` does not exist."
192
+ assert compressed.is_file(), f"Path `{compressed}` is not a file."
193
+ assert is_compressed(compressed), f"File `{compressed}` is not compressed."
194
+
195
+ if compressed.suffix == ".7z":
196
+ with py7zr.SevenZipFile(compressed, mode="r") as ref:
197
+ ref.extractall(dst)
198
+ elif compressed.suffix == ".zip":
199
+ with zipfile.ZipFile(compressed, "r") as ref:
200
+ ref.extractall(dst)
201
+ else:
202
+ raise NotImplementedError(f"Unsupported compression format: `{compressed.suffix}`.")
203
+
204
+ already_extracted.add(compressed)
205
+ if recursive:
206
+ to_extract = {
207
+ fpath for fpath in set(dst.iterdir()) - already_extracted if is_compressed(fpath)
208
+ }
209
+ already_extracted.update(to_extract)
210
+
211
+ for fpath in to_extract:
212
+ extract(fpath, fpath.parent, recursive=True, already_extracted=already_extracted)
213
+
214
+
215
+ def is_empty(dir: Path) -> bool:
216
+ """Checks if the directory is empty."""
217
+
218
+ # pre-conditions
219
+ assert isinstance(dir, Path), f"Expected a `Path`, but got `{type(dir)}`."
220
+ assert dir.is_dir(), f"Expected a directory, but got `{dir}`."
221
+
222
+ # body
223
+ return not any(dir.iterdir())
224
+
225
+
226
+ def get_logger(name: str, level: int = logging.INFO, filename: Optional[Path] = None) -> Logger:
227
+ logging.basicConfig(
228
+ level=level,
229
+ format="[%(asctime)s] [%(filename)s:%(lineno)d] %(message)s",
230
+ filename=filename,
231
+ )
232
+ return logging.getLogger(name)
233
+
234
+
235
+ def load_yaml(fpath: Path) -> dict:
236
+ """Loads a YAML file and returns its contents as a dictionary."""
237
+
238
+ assert isinstance(fpath, Path), f"Expected a `Path`, but got `{type(fpath)}`."
239
+ assert fpath.exists(), f"File `{fpath}` does not exist."
240
+ assert fpath.is_file(), f"Expected a file, but got `{fpath}`."
241
+ assert fpath.suffix == ".yaml", f"Expected a YAML file, but got `{fpath}`."
242
+
243
+ with open(fpath, "r") as file:
244
+ contents = yaml.safe_load(file)
245
+
246
+ return contents
247
+
248
+
249
+ def in_ci() -> bool:
250
+ """Checks if the code is running in GitHub CI."""
251
+
252
+ return os.environ.get("GITHUB_ACTIONS") == "true"
253
+
254
+
255
+ def import_fn(fn_import_string: str) -> Callable:
256
+ """
257
+ Imports a function from a module given a string in the format
258
+ `potentially.nested.module_name:fn_name`.
259
+
260
+ Basically equivalent to `from potentially.nested.module_name import fn_name`.
261
+ """
262
+ # Support importing from a file path to handle non-package competition layouts.
263
+ # Format: file:/absolute/or/relative/path/to/module.py:fn_name
264
+ if fn_import_string.startswith("file:"):
265
+ from importlib import util as importlib_util
266
+
267
+ rest = fn_import_string[len("file:") :]
268
+ module_path_str, fn_name = rest.rsplit(":", 1)
269
+ module_path = Path(module_path_str)
270
+ if not module_path.is_absolute():
271
+ module_path = get_repo_dir() / module_path
272
+ module_path = module_path.resolve()
273
+
274
+ if not module_path.exists():
275
+ raise ModuleNotFoundError(f"File module not found: {module_path}")
276
+
277
+ unique_name = f"_dsat_filemod_{abs(hash(str(module_path)))}"
278
+ spec = importlib_util.spec_from_file_location(unique_name, str(module_path))
279
+ if spec is None or spec.loader is None:
280
+ raise ImportError(f"Could not load spec for {module_path}")
281
+ module = importlib_util.module_from_spec(spec)
282
+ spec.loader.exec_module(module) # type: ignore[union-attr]
283
+ fn = getattr(module, fn_name)
284
+ return fn
285
+
286
+ module_name, fn_name = fn_import_string.split(":")
287
+ module = importlib.import_module(module_name)
288
+ fn = getattr(module, fn_name)
289
+ return fn
290
+
291
+
292
+ def get_path_to_callable(callable: Callable) -> Path:
293
+ """
294
+ Retrieves the file path of the module where the given callable is defined.
295
+
296
+ Args:
297
+ callable (Callable): The callable for which the module path is required.
298
+
299
+ Returns:
300
+ Path: The relative path to the module file from the current working directory.
301
+
302
+ Raises:
303
+ AssertionError: If the module does not have a file path.
304
+ """
305
+
306
+ file_path = getattr(sys.modules[callable.__module__], "__file__", None)
307
+ assert file_path is not None, f"Module `{callable.__module__}` does not have a file path."
308
+ return Path(os.path.relpath(file_path, start=os.getcwd()))
309
+
310
+
311
+ def get_diff(d: dict, other_d: dict, fromfile: str = "d", tofile: str = "other_d") -> str:
312
+ """Finds the differences between two nested dictionaries and returns a diff string."""
313
+
314
+ d_str = yaml.dump(d, sort_keys=True)
315
+ other_d_str = yaml.dump(other_d, sort_keys=True)
316
+
317
+ diff = difflib.unified_diff(
318
+ d_str.splitlines(),
319
+ other_d_str.splitlines(),
320
+ fromfile=fromfile,
321
+ tofile=tofile,
322
+ lineterm="",
323
+ )
324
+
325
+ return "\n".join(diff)
326
+
327
+
328
+ def read_csv(*args, **kwargs) -> DataFrame:
329
+ """Reads a CSV file and returns a DataFrame with custom default kwargs."""
330
+
331
+ try:
332
+ new_default_kwargs = {"float_precision": "round_trip"}
333
+ new_kwargs = {**new_default_kwargs, **kwargs}
334
+ return pd.read_csv(*args, **new_kwargs)
335
+ except pd.errors.EmptyDataError:
336
+ logger.warning(f"CSV file empty! {args[0]}")
337
+ return pd.DataFrame()
338
+
339
+
340
+ def get_timestamp() -> str:
341
+ """Returns the current timestamp in the format `YYYY-MM-DDTHH-MM-SS-Z`."""
342
+
343
+ return time.strftime("%Y-%m-%dT%H-%M-%S-%Z", time.gmtime())
344
+
345
+
346
+ logger = get_logger(__name__)