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.
- dslighting/__init__.py +1 -1
- dslighting/core/agent.py +78 -62
- {dslighting-1.7.1.dist-info → dslighting-1.7.6.dist-info}/METADATA +1 -1
- {dslighting-1.7.1.dist-info → dslighting-1.7.6.dist-info}/RECORD +352 -7
- {dslighting-1.7.1.dist-info → dslighting-1.7.6.dist-info}/top_level.txt +1 -0
- mlebench/README.md +39 -0
- mlebench/__init__.py +0 -0
- mlebench/cli.py +221 -0
- mlebench/competitions/3d-object-detection-for-autonomous-vehicles/grade.py +161 -0
- mlebench/competitions/3d-object-detection-for-autonomous-vehicles/mAP_evaluation.py +425 -0
- mlebench/competitions/3d-object-detection-for-autonomous-vehicles/prepare.py +483 -0
- mlebench/competitions/3d-object-detection-for-autonomous-vehicles/prepare_val.py +719 -0
- mlebench/competitions/AI4Code/grade.py +70 -0
- mlebench/competitions/AI4Code/prepare.py +84 -0
- mlebench/competitions/AI4Code/prepare_val.py +159 -0
- mlebench/competitions/__init__.py +0 -0
- mlebench/competitions/aerial-cactus-identification/grade.py +11 -0
- mlebench/competitions/aerial-cactus-identification/prepare.py +71 -0
- mlebench/competitions/aerial-cactus-identification/prepare_val.py +133 -0
- mlebench/competitions/alaska2-image-steganalysis/grade.py +136 -0
- mlebench/competitions/alaska2-image-steganalysis/prepare.py +88 -0
- mlebench/competitions/alaska2-image-steganalysis/prepare_val.py +148 -0
- mlebench/competitions/aptos2019-blindness-detection/grade.py +35 -0
- mlebench/competitions/aptos2019-blindness-detection/prepare.py +75 -0
- mlebench/competitions/aptos2019-blindness-detection/prepare_val.py +123 -0
- mlebench/competitions/bike-sharing-demand/__init__.py +0 -0
- mlebench/competitions/bike-sharing-demand/grade.py +55 -0
- mlebench/competitions/bike-sharing-demand/prepare.py +37 -0
- mlebench/competitions/billion-word-imputation/grade.py +37 -0
- mlebench/competitions/billion-word-imputation/prepare.py +107 -0
- mlebench/competitions/billion-word-imputation/prepare_val.py +179 -0
- mlebench/competitions/bms-molecular-translation/grade.py +40 -0
- mlebench/competitions/bms-molecular-translation/prepare.py +68 -0
- mlebench/competitions/bms-molecular-translation/prepare_val.py +131 -0
- mlebench/competitions/cassava-leaf-disease-classification/grade.py +12 -0
- mlebench/competitions/cassava-leaf-disease-classification/prepare.py +113 -0
- mlebench/competitions/cassava-leaf-disease-classification/prepare_val.py +186 -0
- mlebench/competitions/cdiscount-image-classification-challenge/grade.py +11 -0
- mlebench/competitions/cdiscount-image-classification-challenge/prepare.py +144 -0
- mlebench/competitions/cdiscount-image-classification-challenge/prepare_val.py +205 -0
- mlebench/competitions/chaii-hindi-and-tamil-question-answering/grade.py +67 -0
- mlebench/competitions/chaii-hindi-and-tamil-question-answering/prepare.py +31 -0
- mlebench/competitions/chaii-hindi-and-tamil-question-answering/prepare_val.py +94 -0
- mlebench/competitions/champs-scalar-coupling/grade.py +60 -0
- mlebench/competitions/champs-scalar-coupling/prepare.py +116 -0
- mlebench/competitions/champs-scalar-coupling/prepare_val.py +155 -0
- mlebench/competitions/conways-reverse-game-of-life-2020/__init__.py +0 -0
- mlebench/competitions/conways-reverse-game-of-life-2020/grade.py +40 -0
- mlebench/competitions/conways-reverse-game-of-life-2020/prepare.py +41 -0
- mlebench/competitions/demand-forecasting-kernels-only/__init__.py +0 -0
- mlebench/competitions/demand-forecasting-kernels-only/grade.py +66 -0
- mlebench/competitions/demand-forecasting-kernels-only/prepare.py +27 -0
- mlebench/competitions/demand_forecasting_kernels_only/__init__.py +0 -0
- mlebench/competitions/demand_forecasting_kernels_only/grade.py +66 -0
- mlebench/competitions/demand_forecasting_kernels_only/prepare.py +27 -0
- mlebench/competitions/denoising-dirty-documents/grade.py +44 -0
- mlebench/competitions/denoising-dirty-documents/prepare.py +134 -0
- mlebench/competitions/denoising-dirty-documents/prepare_val.py +178 -0
- mlebench/competitions/detecting-insults-in-social-commentary/grade.py +11 -0
- mlebench/competitions/detecting-insults-in-social-commentary/prepare.py +72 -0
- mlebench/competitions/detecting-insults-in-social-commentary/prepare_val.py +128 -0
- mlebench/competitions/dog-breed-identification/dogs.py +124 -0
- mlebench/competitions/dog-breed-identification/grade.py +42 -0
- mlebench/competitions/dog-breed-identification/prepare.py +55 -0
- mlebench/competitions/dog-breed-identification/prepare_val.py +104 -0
- mlebench/competitions/dogs-vs-cats-redux-kernels-edition/grade.py +43 -0
- mlebench/competitions/dogs-vs-cats-redux-kernels-edition/prepare.py +70 -0
- mlebench/competitions/dogs-vs-cats-redux-kernels-edition/prepare_val.py +143 -0
- mlebench/competitions/ethanol-concentration/grade.py +23 -0
- mlebench/competitions/ethanol-concentration/prepare.py +90 -0
- mlebench/competitions/facebook-recruiting-iii-keyword-extraction/grade.py +60 -0
- mlebench/competitions/facebook-recruiting-iii-keyword-extraction/prepare.py +41 -0
- mlebench/competitions/facebook-recruiting-iii-keyword-extraction/prepare_val.py +92 -0
- mlebench/competitions/feedback-prize-english-language-learning/__init__.py +0 -0
- mlebench/competitions/feedback-prize-english-language-learning/grade.py +60 -0
- mlebench/competitions/feedback-prize-english-language-learning/prepare.py +39 -0
- mlebench/competitions/freesound-audio-tagging-2019/grade.py +64 -0
- mlebench/competitions/freesound-audio-tagging-2019/prepare.py +94 -0
- mlebench/competitions/freesound-audio-tagging-2019/prepare_val.py +175 -0
- mlebench/competitions/freesound-audio-tagging-2019/vocabulary.py +83 -0
- mlebench/competitions/google-quest-challenge/classes.py +32 -0
- mlebench/competitions/google-quest-challenge/grade.py +45 -0
- mlebench/competitions/google-quest-challenge/prepare.py +58 -0
- mlebench/competitions/google-quest-challenge/prepare_val.py +120 -0
- mlebench/competitions/google-research-identify-contrails-reduce-global-warming/grade.py +77 -0
- mlebench/competitions/google-research-identify-contrails-reduce-global-warming/prepare.py +155 -0
- mlebench/competitions/google-research-identify-contrails-reduce-global-warming/prepare_val.py +211 -0
- mlebench/competitions/h-and-m-personalized-fashion-recommendations/grade.py +42 -0
- mlebench/competitions/h-and-m-personalized-fashion-recommendations/prepare.py +102 -0
- mlebench/competitions/h-and-m-personalized-fashion-recommendations/prepare_val.py +132 -0
- mlebench/competitions/handwriting/grade.py +23 -0
- mlebench/competitions/handwriting/prepare.py +179 -0
- mlebench/competitions/herbarium-2020-fgvc7/grade.py +34 -0
- mlebench/competitions/herbarium-2020-fgvc7/prepare.py +251 -0
- mlebench/competitions/herbarium-2020-fgvc7/prepare_val.py +242 -0
- mlebench/competitions/herbarium-2021-fgvc8/grade.py +34 -0
- mlebench/competitions/herbarium-2021-fgvc8/prepare.py +251 -0
- mlebench/competitions/herbarium-2021-fgvc8/prepare_val.py +222 -0
- mlebench/competitions/herbarium-2022-fgvc9/grade.py +31 -0
- mlebench/competitions/herbarium-2022-fgvc9/prepare.py +233 -0
- mlebench/competitions/herbarium-2022-fgvc9/prepare_val.py +213 -0
- mlebench/competitions/histopathologic-cancer-detection/grade.py +12 -0
- mlebench/competitions/histopathologic-cancer-detection/prepare.py +59 -0
- mlebench/competitions/histopathologic-cancer-detection/prepare_val.py +131 -0
- mlebench/competitions/hms-harmful-brain-activity-classification/constants.py +9 -0
- mlebench/competitions/hms-harmful-brain-activity-classification/grade.py +43 -0
- mlebench/competitions/hms-harmful-brain-activity-classification/kaggle_metric_utilities.py +96 -0
- mlebench/competitions/hms-harmful-brain-activity-classification/kullback_leibler_divergence.py +118 -0
- mlebench/competitions/hms-harmful-brain-activity-classification/prepare.py +121 -0
- mlebench/competitions/hms-harmful-brain-activity-classification/prepare_val.py +190 -0
- mlebench/competitions/hotel-id-2021-fgvc8/grade.py +41 -0
- mlebench/competitions/hotel-id-2021-fgvc8/prepare.py +63 -0
- mlebench/competitions/hotel-id-2021-fgvc8/prepare_val.py +132 -0
- mlebench/competitions/hubmap-kidney-segmentation/grade.py +62 -0
- mlebench/competitions/hubmap-kidney-segmentation/prepare.py +108 -0
- mlebench/competitions/hubmap-kidney-segmentation/prepare_val.py +153 -0
- mlebench/competitions/icecube-neutrinos-in-deep-ice/grade.py +111 -0
- mlebench/competitions/icecube-neutrinos-in-deep-ice/prepare.py +127 -0
- mlebench/competitions/icecube-neutrinos-in-deep-ice/prepare_val.py +183 -0
- mlebench/competitions/ili/grade.py +60 -0
- mlebench/competitions/ili/prepare.py +99 -0
- mlebench/competitions/imet-2020-fgvc7/grade.py +54 -0
- mlebench/competitions/imet-2020-fgvc7/prepare.py +77 -0
- mlebench/competitions/imet-2020-fgvc7/prepare_val.py +157 -0
- mlebench/competitions/inaturalist-2019-fgvc6/grade.py +35 -0
- mlebench/competitions/inaturalist-2019-fgvc6/prepare.py +259 -0
- mlebench/competitions/inaturalist-2019-fgvc6/prepare_val.py +304 -0
- mlebench/competitions/instant-gratification/__init__.py +0 -0
- mlebench/competitions/instant-gratification/grade.py +55 -0
- mlebench/competitions/instant-gratification/prepare.py +25 -0
- mlebench/competitions/instant_gratification/__init__.py +0 -0
- mlebench/competitions/instant_gratification/grade.py +55 -0
- mlebench/competitions/instant_gratification/prepare.py +25 -0
- mlebench/competitions/invasive-species-monitoring/grade.py +11 -0
- mlebench/competitions/invasive-species-monitoring/prepare.py +97 -0
- mlebench/competitions/invasive-species-monitoring/prepare_val.py +164 -0
- mlebench/competitions/iwildcam-2019-fgvc6/grade.py +44 -0
- mlebench/competitions/iwildcam-2019-fgvc6/prepare.py +118 -0
- mlebench/competitions/iwildcam-2019-fgvc6/prepare_val.py +194 -0
- mlebench/competitions/iwildcam-2020-fgvc7/grade.py +11 -0
- mlebench/competitions/iwildcam-2020-fgvc7/prepare.py +164 -0
- mlebench/competitions/iwildcam-2020-fgvc7/prepare_val.py +245 -0
- mlebench/competitions/jigsaw-toxic-comment-classification-challenge/classes.py +1 -0
- mlebench/competitions/jigsaw-toxic-comment-classification-challenge/grade.py +54 -0
- mlebench/competitions/jigsaw-toxic-comment-classification-challenge/prepare.py +42 -0
- mlebench/competitions/jigsaw-toxic-comment-classification-challenge/prepare_val.py +88 -0
- mlebench/competitions/jigsaw-unintended-bias-in-toxicity-classification/grade.py +153 -0
- mlebench/competitions/jigsaw-unintended-bias-in-toxicity-classification/prepare.py +36 -0
- mlebench/competitions/jigsaw-unintended-bias-in-toxicity-classification/prepare_val.py +117 -0
- mlebench/competitions/kuzushiji-recognition/grade.py +58 -0
- mlebench/competitions/kuzushiji-recognition/kuzushiji_metric.py +118 -0
- mlebench/competitions/kuzushiji-recognition/prepare.py +92 -0
- mlebench/competitions/kuzushiji-recognition/prepare_val.py +149 -0
- mlebench/competitions/leaf-classification/classes.py +101 -0
- mlebench/competitions/leaf-classification/grade.py +44 -0
- mlebench/competitions/leaf-classification/prepare.py +60 -0
- mlebench/competitions/leaf-classification/prepare_val.py +116 -0
- mlebench/competitions/learning-agency-lab-automated-essay-scoring-2/grade.py +44 -0
- mlebench/competitions/learning-agency-lab-automated-essay-scoring-2/prepare.py +51 -0
- mlebench/competitions/learning-agency-lab-automated-essay-scoring-2/prepare_val.py +96 -0
- mlebench/competitions/liverpool-ion-switching/__init__.py +0 -0
- mlebench/competitions/liverpool-ion-switching/grade.py +52 -0
- mlebench/competitions/liverpool-ion-switching/prepare.py +27 -0
- mlebench/competitions/liverpool_ion_switching/__init__.py +0 -0
- mlebench/competitions/liverpool_ion_switching/grade.py +52 -0
- mlebench/competitions/liverpool_ion_switching/prepare.py +27 -0
- mlebench/competitions/lmsys-chatbot-arena/grade.py +63 -0
- mlebench/competitions/lmsys-chatbot-arena/prepare.py +52 -0
- mlebench/competitions/lmsys-chatbot-arena/prepare_val.py +115 -0
- mlebench/competitions/mcm_2024_c_test/grade.py +107 -0
- mlebench/competitions/mcm_2024_c_test/prepare.py +2 -0
- mlebench/competitions/ml2021spring-hw2/grade.py +11 -0
- mlebench/competitions/ml2021spring-hw2/prepare.py +58 -0
- mlebench/competitions/ml2021spring-hw2/prepare_val.py +135 -0
- mlebench/competitions/mlsp-2013-birds/grade.py +11 -0
- mlebench/competitions/mlsp-2013-birds/prepare.py +182 -0
- mlebench/competitions/mlsp-2013-birds/prepare_val.py +241 -0
- mlebench/competitions/movie-review-sentiment-analysis-kernels-only/grade.py +11 -0
- mlebench/competitions/movie-review-sentiment-analysis-kernels-only/prepare.py +58 -0
- mlebench/competitions/movie-review-sentiment-analysis-kernels-only/prepare_val.py +120 -0
- mlebench/competitions/multi-modal-gesture-recognition/grade.py +58 -0
- mlebench/competitions/multi-modal-gesture-recognition/prepare.py +85 -0
- mlebench/competitions/multi-modal-gesture-recognition/prepare_val.py +139 -0
- mlebench/competitions/my-custom-task-01/prepare.py +2 -0
- mlebench/competitions/new-my-task-01/prepare.py +2 -0
- mlebench/competitions/new-my-task-03/grade.py +107 -0
- mlebench/competitions/new-my-task-03/prepare.py +2 -0
- mlebench/competitions/new-york-city-taxi-fare-prediction/grade.py +28 -0
- mlebench/competitions/new-york-city-taxi-fare-prediction/prepare.py +44 -0
- mlebench/competitions/new-york-city-taxi-fare-prediction/prepare_val.py +89 -0
- mlebench/competitions/nfl-player-contact-detection/grade.py +36 -0
- mlebench/competitions/nfl-player-contact-detection/prepare.py +101 -0
- mlebench/competitions/nfl-player-contact-detection/prepare_val.py +186 -0
- mlebench/competitions/nomad2018-predict-transparent-conductors/grade.py +47 -0
- mlebench/competitions/nomad2018-predict-transparent-conductors/prepare.py +77 -0
- mlebench/competitions/nomad2018-predict-transparent-conductors/prepare_val.py +144 -0
- mlebench/competitions/osic-pulmonary-fibrosis-progression/grade.py +74 -0
- mlebench/competitions/osic-pulmonary-fibrosis-progression/prepare.py +95 -0
- mlebench/competitions/osic-pulmonary-fibrosis-progression/prepare_val.py +167 -0
- mlebench/competitions/paddy-disease-classification/grade.py +35 -0
- mlebench/competitions/paddy-disease-classification/prepare.py +69 -0
- mlebench/competitions/paddy-disease-classification/prepare_val.py +122 -0
- mlebench/competitions/petfinder-pawpularity-score/grade.py +41 -0
- mlebench/competitions/petfinder-pawpularity-score/prepare.py +76 -0
- mlebench/competitions/petfinder-pawpularity-score/prepare_val.py +154 -0
- mlebench/competitions/plant-pathology-2020-fgvc7/grade.py +41 -0
- mlebench/competitions/plant-pathology-2020-fgvc7/prepare.py +74 -0
- mlebench/competitions/plant-pathology-2020-fgvc7/prepare_val.py +160 -0
- mlebench/competitions/plant-pathology-2021-fgvc8/grade.py +54 -0
- mlebench/competitions/plant-pathology-2021-fgvc8/prepare.py +65 -0
- mlebench/competitions/plant-pathology-2021-fgvc8/prepare_val.py +130 -0
- mlebench/competitions/plant-seedlings-classification/grade.py +39 -0
- mlebench/competitions/plant-seedlings-classification/prepare.py +91 -0
- mlebench/competitions/plant-seedlings-classification/prepare_val.py +158 -0
- mlebench/competitions/playground-series-s3e1/__init__.py +0 -0
- mlebench/competitions/playground-series-s3e1/grade.py +52 -0
- mlebench/competitions/playground-series-s3e1/prepare.py +25 -0
- mlebench/competitions/playground-series-s3e11/__init__.py +0 -0
- mlebench/competitions/playground-series-s3e11/grade.py +55 -0
- mlebench/competitions/playground-series-s3e11/prepare.py +25 -0
- mlebench/competitions/playground-series-s3e18/grade.py +39 -0
- mlebench/competitions/playground-series-s3e18/prepare.py +36 -0
- mlebench/competitions/playground-series-s3e18/prepare_val.py +89 -0
- mlebench/competitions/playground_series_s3e1/__init__.py +0 -0
- mlebench/competitions/playground_series_s3e1/grade.py +52 -0
- mlebench/competitions/playground_series_s3e1/prepare.py +25 -0
- mlebench/competitions/playground_series_s3e11/__init__.py +0 -0
- mlebench/competitions/playground_series_s3e11/grade.py +55 -0
- mlebench/competitions/playground_series_s3e11/prepare.py +25 -0
- mlebench/competitions/predict-volcanic-eruptions-ingv-oe/grade.py +44 -0
- mlebench/competitions/predict-volcanic-eruptions-ingv-oe/prepare.py +68 -0
- mlebench/competitions/predict-volcanic-eruptions-ingv-oe/prepare_val.py +146 -0
- mlebench/competitions/random-acts-of-pizza/grade.py +14 -0
- mlebench/competitions/random-acts-of-pizza/prepare.py +80 -0
- mlebench/competitions/random-acts-of-pizza/prepare_val.py +144 -0
- mlebench/competitions/ranzcr-clip-catheter-line-classification/classes.py +11 -0
- mlebench/competitions/ranzcr-clip-catheter-line-classification/grade.py +31 -0
- mlebench/competitions/ranzcr-clip-catheter-line-classification/prepare.py +53 -0
- mlebench/competitions/ranzcr-clip-catheter-line-classification/prepare_val.py +113 -0
- mlebench/competitions/rsna-2022-cervical-spine-fracture-detection/grade.py +124 -0
- mlebench/competitions/rsna-2022-cervical-spine-fracture-detection/prepare.py +219 -0
- mlebench/competitions/rsna-2022-cervical-spine-fracture-detection/prepare_val.py +257 -0
- mlebench/competitions/rsna-breast-cancer-detection/grade.py +65 -0
- mlebench/competitions/rsna-breast-cancer-detection/prepare.py +141 -0
- mlebench/competitions/rsna-breast-cancer-detection/prepare_val.py +201 -0
- mlebench/competitions/rsna-miccai-brain-tumor-radiogenomic-classification/grade.py +13 -0
- mlebench/competitions/rsna-miccai-brain-tumor-radiogenomic-classification/prepare.py +47 -0
- mlebench/competitions/rsna-miccai-brain-tumor-radiogenomic-classification/prepare_val.py +97 -0
- mlebench/competitions/santander-customer-satisfaction/grade.py +10 -0
- mlebench/competitions/santander-customer-satisfaction/prepare.py +41 -0
- mlebench/competitions/sciencebench-001-clintox-nn/__init__.py +0 -0
- mlebench/competitions/sciencebench-001-clintox-nn/grade.py +56 -0
- mlebench/competitions/sciencebench-001-clintox-nn/prepare.py +75 -0
- mlebench/competitions/sciencebench-015-aai/grade.py +37 -0
- mlebench/competitions/sciencebench-015-aai/prepare.py +102 -0
- mlebench/competitions/sciencebench-051-brain-blood-qsar/grade.py +58 -0
- mlebench/competitions/sciencebench-051-brain-blood-qsar/prepare.py +69 -0
- mlebench/competitions/sciencebench-101-experimental-band-gap-prediction/grade.py +55 -0
- mlebench/competitions/sciencebench-101-experimental-band-gap-prediction/prepare.py +88 -0
- mlebench/competitions/see-click-predict-fix/__init__.py +0 -0
- mlebench/competitions/see-click-predict-fix/grade.py +66 -0
- mlebench/competitions/see-click-predict-fix/prepare.py +25 -0
- mlebench/competitions/see_click_predict_fix/__init__.py +0 -0
- mlebench/competitions/see_click_predict_fix/grade.py +66 -0
- mlebench/competitions/see_click_predict_fix/prepare.py +25 -0
- mlebench/competitions/seti-breakthrough-listen/grade.py +11 -0
- mlebench/competitions/seti-breakthrough-listen/prepare.py +71 -0
- mlebench/competitions/seti-breakthrough-listen/prepare_val.py +159 -0
- mlebench/competitions/siim-covid19-detection/grade.py +194 -0
- mlebench/competitions/siim-covid19-detection/prepare.py +123 -0
- mlebench/competitions/siim-covid19-detection/prepare_val.py +164 -0
- mlebench/competitions/siim-isic-melanoma-classification/grade.py +11 -0
- mlebench/competitions/siim-isic-melanoma-classification/prepare.py +127 -0
- mlebench/competitions/siim-isic-melanoma-classification/prepare_val.py +158 -0
- mlebench/competitions/smartphone-decimeter-2022/grade.py +55 -0
- mlebench/competitions/smartphone-decimeter-2022/notebook.py +86 -0
- mlebench/competitions/smartphone-decimeter-2022/prepare.py +143 -0
- mlebench/competitions/smartphone-decimeter-2022/prepare_val.py +199 -0
- mlebench/competitions/spaceship-titanic/grade.py +11 -0
- mlebench/competitions/spaceship-titanic/prepare.py +23 -0
- mlebench/competitions/spaceship-titanic/prepare_val.py +61 -0
- mlebench/competitions/spooky-author-identification/classes.py +1 -0
- mlebench/competitions/spooky-author-identification/grade.py +38 -0
- mlebench/competitions/spooky-author-identification/prepare.py +40 -0
- mlebench/competitions/spooky-author-identification/prepare_val.py +78 -0
- mlebench/competitions/stanford-covid-vaccine/grade.py +65 -0
- mlebench/competitions/stanford-covid-vaccine/prepare.py +129 -0
- mlebench/competitions/stanford-covid-vaccine/prepare_val.py +199 -0
- mlebench/competitions/statoil-iceberg-classifier-challenge/grade.py +41 -0
- mlebench/competitions/statoil-iceberg-classifier-challenge/prepare.py +105 -0
- mlebench/competitions/statoil-iceberg-classifier-challenge/prepare_val.py +157 -0
- mlebench/competitions/tabular-playground-series-dec-2021/grade.py +11 -0
- mlebench/competitions/tabular-playground-series-dec-2021/prepare.py +39 -0
- mlebench/competitions/tabular-playground-series-dec-2021/prepare_val.py +99 -0
- mlebench/competitions/tabular-playground-series-may-2022/grade.py +9 -0
- mlebench/competitions/tabular-playground-series-may-2022/prepare.py +56 -0
- mlebench/competitions/tabular-playground-series-may-2022/prepare_val.py +116 -0
- mlebench/competitions/tensorflow-speech-recognition-challenge/grade.py +11 -0
- mlebench/competitions/tensorflow-speech-recognition-challenge/prepare.py +90 -0
- mlebench/competitions/tensorflow-speech-recognition-challenge/prepare_val.py +148 -0
- mlebench/competitions/tensorflow2-question-answering/grade.py +122 -0
- mlebench/competitions/tensorflow2-question-answering/prepare.py +122 -0
- mlebench/competitions/tensorflow2-question-answering/prepare_val.py +187 -0
- mlebench/competitions/text-normalization-challenge-english-language/grade.py +49 -0
- mlebench/competitions/text-normalization-challenge-english-language/prepare.py +115 -0
- mlebench/competitions/text-normalization-challenge-english-language/prepare_val.py +213 -0
- mlebench/competitions/text-normalization-challenge-russian-language/grade.py +49 -0
- mlebench/competitions/text-normalization-challenge-russian-language/prepare.py +113 -0
- mlebench/competitions/text-normalization-challenge-russian-language/prepare_val.py +165 -0
- mlebench/competitions/tgs-salt-identification-challenge/grade.py +144 -0
- mlebench/competitions/tgs-salt-identification-challenge/prepare.py +158 -0
- mlebench/competitions/tgs-salt-identification-challenge/prepare_val.py +166 -0
- mlebench/competitions/the-icml-2013-whale-challenge-right-whale-redux/grade.py +11 -0
- mlebench/competitions/the-icml-2013-whale-challenge-right-whale-redux/prepare.py +95 -0
- mlebench/competitions/the-icml-2013-whale-challenge-right-whale-redux/prepare_val.py +141 -0
- mlebench/competitions/tmdb-box-office-prediction/__init__.py +0 -0
- mlebench/competitions/tmdb-box-office-prediction/grade.py +55 -0
- mlebench/competitions/tmdb-box-office-prediction/prepare.py +35 -0
- mlebench/competitions/tweet-sentiment-extraction/grade.py +67 -0
- mlebench/competitions/tweet-sentiment-extraction/prepare.py +36 -0
- mlebench/competitions/tweet-sentiment-extraction/prepare_val.py +106 -0
- mlebench/competitions/us-patent-phrase-to-phrase-matching/grade.py +31 -0
- mlebench/competitions/us-patent-phrase-to-phrase-matching/prepare.py +33 -0
- mlebench/competitions/us-patent-phrase-to-phrase-matching/prepare_val.py +71 -0
- mlebench/competitions/utils.py +266 -0
- mlebench/competitions/uw-madison-gi-tract-image-segmentation/grade.py +158 -0
- mlebench/competitions/uw-madison-gi-tract-image-segmentation/prepare.py +139 -0
- mlebench/competitions/uw-madison-gi-tract-image-segmentation/prepare_val.py +193 -0
- mlebench/competitions/ventilator-pressure-prediction/__init__.py +0 -0
- mlebench/competitions/ventilator-pressure-prediction/grade.py +52 -0
- mlebench/competitions/ventilator-pressure-prediction/prepare.py +27 -0
- mlebench/competitions/ventilator-pressure-prediction/prepare_val.py +142 -0
- mlebench/competitions/ventilator_pressure_prediction/__init__.py +0 -0
- mlebench/competitions/ventilator_pressure_prediction/grade.py +52 -0
- mlebench/competitions/ventilator_pressure_prediction/prepare.py +27 -0
- mlebench/competitions/vesuvius-challenge-ink-detection/grade.py +97 -0
- mlebench/competitions/vesuvius-challenge-ink-detection/prepare.py +122 -0
- mlebench/competitions/vesuvius-challenge-ink-detection/prepare_val.py +170 -0
- mlebench/competitions/vinbigdata-chest-xray-abnormalities-detection/grade.py +220 -0
- mlebench/competitions/vinbigdata-chest-xray-abnormalities-detection/prepare.py +129 -0
- mlebench/competitions/vinbigdata-chest-xray-abnormalities-detection/prepare_val.py +204 -0
- mlebench/competitions/whale-categorization-playground/grade.py +41 -0
- mlebench/competitions/whale-categorization-playground/prepare.py +103 -0
- mlebench/competitions/whale-categorization-playground/prepare_val.py +196 -0
- mlebench/data.py +420 -0
- mlebench/grade.py +209 -0
- mlebench/grade_helpers.py +235 -0
- mlebench/metrics.py +75 -0
- mlebench/registry.py +332 -0
- mlebench/utils.py +346 -0
- {dslighting-1.7.1.dist-info → dslighting-1.7.6.dist-info}/WHEEL +0 -0
- {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__)
|
|
File without changes
|
|
File without changes
|