julearn 0.3.5.dev80__tar.gz → 0.3.5.dev92__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/PKG-INFO +1 -1
  2. julearn-0.3.5.dev92/docs/changes/newsfragments/226.bugfix +1 -0
  3. julearn-0.3.5.dev92/docs/changes/newsfragments/226.feature +1 -0
  4. julearn-0.3.5.dev92/docs/changes/newsfragments/288.bugfix +1 -0
  5. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/configuration.rst +4 -0
  6. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/_version.py +3 -3
  7. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/config.py +1 -0
  8. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/inspect/_cv.py +1 -0
  9. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/inspect/tests/test_cv.py +20 -4
  10. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/prepare.py +53 -5
  11. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/tests/test_prepare.py +49 -0
  12. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn.egg-info/PKG-INFO +1 -1
  13. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn.egg-info/SOURCES.txt +3 -0
  14. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/.github/ISSUE_TEMPLATE/bug_report.yaml +0 -0
  15. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  16. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/.github/ISSUE_TEMPLATE/documentation_request.yaml +0 -0
  17. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/.github/ISSUE_TEMPLATE/feature_request.yaml +0 -0
  18. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/.github/dependabot.yml +0 -0
  19. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/.github/workflows/check-stale.yml +0 -0
  20. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/.github/workflows/ci-docs.yml +0 -0
  21. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/.github/workflows/ci.yml +0 -0
  22. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/.github/workflows/docs-preview.yml +0 -0
  23. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/.github/workflows/docs.yml +0 -0
  24. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/.github/workflows/lint.yml +0 -0
  25. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/.github/workflows/publish.yml +0 -0
  26. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/.gitignore +0 -0
  27. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/.pre-commit-config.yaml +0 -0
  28. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/AUTHORS.rst +0 -0
  29. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/LICENSE.md +0 -0
  30. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/README.md +0 -0
  31. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/codecov.yml +0 -0
  32. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/Makefile +0 -0
  33. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/_static/css/custom.css +0 -0
  34. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/_static/js/custom.js +0 -0
  35. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/_templates/class.rst +0 -0
  36. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/_templates/function.rst +0 -0
  37. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/_templates/function_warning.rst +0 -0
  38. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/_templates/versions.html +0 -0
  39. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/api/base.rst +0 -0
  40. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/api/config.rst +0 -0
  41. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/api/index.rst +0 -0
  42. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/api/inspect.rst +0 -0
  43. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/api/main.rst +0 -0
  44. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/api/model_selection.rst +0 -0
  45. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/api/models.rst +0 -0
  46. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/api/pipeline.rst +0 -0
  47. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/api/prepare.rst +0 -0
  48. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/api/scoring.rst +0 -0
  49. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/api/stats.rst +0 -0
  50. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/api/transformers.rst +0 -0
  51. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/api/utils.rst +0 -0
  52. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/api/viz.rst +0 -0
  53. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/available_pipeline_steps.rst +0 -0
  54. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/changes/contributors.inc +0 -0
  55. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/changes/newsfragments/.gitignore +0 -0
  56. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/changes/newsfragments/254.bugfix +0 -0
  57. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/changes/newsfragments/254.change +0 -0
  58. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/changes/newsfragments/277.enh +0 -0
  59. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/changes/newsfragments/278.doc +0 -0
  60. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/changes/newsfragments/279.doc +0 -0
  61. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/changes/newsfragments/282.doc +0 -0
  62. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/changes/newsfragments/283.doc +0 -0
  63. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/changes/newsfragments/284.misc +0 -0
  64. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/changes/newsfragments/285.bugfix +0 -0
  65. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/changes/newsfragments/286.bugfix +0 -0
  66. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/conf.py +0 -0
  67. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/contributing.rst +0 -0
  68. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/examples.rst +0 -0
  69. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/faq.rst +0 -0
  70. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/getting_started.rst +0 -0
  71. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/corrected_ttest.png +0 -0
  72. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/final_estimator.png +0 -0
  73. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/iris_X.png +0 -0
  74. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/iris_df.png +0 -0
  75. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/iris_y.png +0 -0
  76. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/joblib_htcondor/condor_q.png +0 -0
  77. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/joblib_htcondor/ui_main.png +0 -0
  78. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/joblib_htcondor/ui_open.png +0 -0
  79. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/joblib_htcondor/ui_stacked.png +0 -0
  80. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/julearn_logo.png +0 -0
  81. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/julearn_logo_calm.png +0 -0
  82. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/julearn_logo_confbias.png +0 -0
  83. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/julearn_logo_cv.png +0 -0
  84. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/julearn_logo_generalization.png +0 -0
  85. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/julearn_logo_it.png +0 -0
  86. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/julearn_logo_ml.png +0 -0
  87. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/julearn_logo_mlit.png +0 -0
  88. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/multiple_scorers_run_cv.png +0 -0
  89. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/plot_scores.png +0 -0
  90. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/scores_run_cv.png +0 -0
  91. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/scores_run_cv_splitter.png +0 -0
  92. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/images/scores_run_cv_train.png +0 -0
  93. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/index.rst +0 -0
  94. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/links.inc +0 -0
  95. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/maintaining.rst +0 -0
  96. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/redirect.html +0 -0
  97. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/selected_deeper_topics/CBPM.rst +0 -0
  98. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/selected_deeper_topics/confound_removal.rst +0 -0
  99. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/selected_deeper_topics/cross_validation_splitter.rst +0 -0
  100. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/selected_deeper_topics/hyperparameter_tuning.rst +0 -0
  101. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/selected_deeper_topics/index.rst +0 -0
  102. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/selected_deeper_topics/joblib.rst +0 -0
  103. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/selected_deeper_topics/model_inspect.rst +0 -0
  104. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/selected_deeper_topics/stacked_models.rst +0 -0
  105. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/selected_deeper_topics/target_transformers.rst +0 -0
  106. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/what_really_need_know/cross_validation.rst +0 -0
  107. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/what_really_need_know/data.rst +0 -0
  108. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/what_really_need_know/index.rst +0 -0
  109. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/what_really_need_know/model_comparison.rst +0 -0
  110. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/what_really_need_know/model_evaluation.rst +0 -0
  111. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/what_really_need_know/pipeline.rst +0 -0
  112. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/docs/whats_new.rst +0 -0
  113. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/00_starting/README.rst +0 -0
  114. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/00_starting/plot_cm_acc_multiclass.py +0 -0
  115. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/00_starting/plot_example_regression.py +0 -0
  116. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/00_starting/plot_stratified_kfold_reg.py +0 -0
  117. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/00_starting/run_combine_pandas.py +0 -0
  118. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/00_starting/run_grouped_cv.py +0 -0
  119. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/00_starting/run_simple_binary_classification.py +0 -0
  120. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/01_model_comparison/README.rst +0 -0
  121. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/01_model_comparison/plot_simple_model_comparison.py +0 -0
  122. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/02_inspection/README.rst +0 -0
  123. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/02_inspection/plot_groupcv_inspect_svm.py +0 -0
  124. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/02_inspection/plot_inspect_random_forest.py +0 -0
  125. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/02_inspection/plot_preprocess.py +0 -0
  126. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/02_inspection/run_binary_inspect_folds.py +0 -0
  127. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/03_complex_models/README.rst +0 -0
  128. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/03_complex_models/run_apply_to_target.py +0 -0
  129. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/03_complex_models/run_example_pca_featsets.py +0 -0
  130. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/03_complex_models/run_hyperparameter_multiple_grids.py +0 -0
  131. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/03_complex_models/run_hyperparameter_tuning.py +0 -0
  132. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/03_complex_models/run_hyperparameter_tuning_bayessearch.py +0 -0
  133. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/03_complex_models/run_stacked_models.py +0 -0
  134. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/04_confounds/README.rst +0 -0
  135. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/04_confounds/plot_confound_removal_classification.py +0 -0
  136. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/04_confounds/run_return_confounds.py +0 -0
  137. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/05_customization/README.rst +0 -0
  138. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/05_customization/run_custom_scorers_regression.py +0 -0
  139. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/99_docs/README.rst +0 -0
  140. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/99_docs/run_cbpm_docs.py +0 -0
  141. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/99_docs/run_confound_removal_docs.py +0 -0
  142. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/99_docs/run_cv_splitters_docs.py +0 -0
  143. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/99_docs/run_data_docs.py +0 -0
  144. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/99_docs/run_hyperparameters_docs.py +0 -0
  145. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/99_docs/run_model_comparison_docs.py +0 -0
  146. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/99_docs/run_model_evaluation_docs.py +0 -0
  147. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/99_docs/run_model_inspection_docs.py +0 -0
  148. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/99_docs/run_pipeline_docs.py +0 -0
  149. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/99_docs/run_stacked_models_docs.py +0 -0
  150. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/99_docs/run_target_transformer_docs.py +0 -0
  151. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/README.rst +0 -0
  152. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/XX_disabled/dis_run_n_jobs.py +0 -0
  153. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/examples/XX_disabled/dis_run_target_confound_removal.py +0 -0
  154. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/ignore_words.txt +0 -0
  155. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/__init__.py +0 -0
  156. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/api.py +0 -0
  157. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/base/__init__.py +0 -0
  158. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/base/column_types.py +0 -0
  159. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/base/estimators.py +0 -0
  160. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/base/tests/test_base_estimators.py +0 -0
  161. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/base/tests/test_column_types.py +0 -0
  162. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/conftest.py +0 -0
  163. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/external/optuna_searchcv.py +0 -0
  164. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/inspect/__init__.py +0 -0
  165. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/inspect/_pipeline.py +0 -0
  166. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/inspect/_preprocess.py +0 -0
  167. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/inspect/inspector.py +0 -0
  168. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/inspect/tests/test_inspector.py +0 -0
  169. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/inspect/tests/test_pipeline.py +0 -0
  170. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/inspect/tests/test_preprocess.py +0 -0
  171. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/model_selection/__init__.py +0 -0
  172. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/model_selection/_optuna_searcher.py +0 -0
  173. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/model_selection/_skopt_searcher.py +0 -0
  174. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/model_selection/available_searchers.py +0 -0
  175. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/model_selection/continuous_stratified_kfold.py +0 -0
  176. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/model_selection/final_model_cv.py +0 -0
  177. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/model_selection/stratified_bootstrap.py +0 -0
  178. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/model_selection/tests/test_available_searchers.py +0 -0
  179. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/model_selection/tests/test_continous_stratified_kfold.py +0 -0
  180. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/model_selection/tests/test_final_model_cv.py +0 -0
  181. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/model_selection/tests/test_optuna_searcher.py +0 -0
  182. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/model_selection/tests/test_skopt_searcher.py +0 -0
  183. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/model_selection/tests/test_stratified_bootstrap.py +0 -0
  184. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/model_selection/utils.py +0 -0
  185. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/models/__init__.py +0 -0
  186. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/models/available_models.py +0 -0
  187. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/models/dynamic.py +0 -0
  188. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/models/tests/test_available_models.py +0 -0
  189. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/models/tests/test_dynamic.py +0 -0
  190. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/models/tests/test_models.py +0 -0
  191. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/pipeline/__init__.py +0 -0
  192. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/pipeline/merger.py +0 -0
  193. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/pipeline/pipeline_creator.py +0 -0
  194. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/pipeline/target_pipeline.py +0 -0
  195. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/pipeline/target_pipeline_creator.py +0 -0
  196. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/pipeline/tests/test_merger.py +0 -0
  197. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/pipeline/tests/test_pipeline_creator.py +0 -0
  198. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/pipeline/tests/test_target_pipeline.py +0 -0
  199. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/pipeline/tests/test_target_pipeline_creator.py +0 -0
  200. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/scoring/__init__.py +0 -0
  201. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/scoring/available_scorers.py +0 -0
  202. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/scoring/metrics.py +0 -0
  203. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/scoring/tests/test_available_scorers.py +0 -0
  204. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/scoring/tests/test_metrics.py +0 -0
  205. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/stats/__init__.py +0 -0
  206. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/stats/corrected_ttest.py +0 -0
  207. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/stats/tests/test_corrected_ttest.py +0 -0
  208. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/tests/test_api.py +0 -0
  209. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/tests/test_config.py +0 -0
  210. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/__init__.py +0 -0
  211. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/available_transformers.py +0 -0
  212. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/cbpm.py +0 -0
  213. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/confound_remover.py +0 -0
  214. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/dataframe/__init__.py +0 -0
  215. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/dataframe/change_column_types.py +0 -0
  216. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/dataframe/drop_columns.py +0 -0
  217. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/dataframe/filter_columns.py +0 -0
  218. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/dataframe/set_column_types.py +0 -0
  219. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/dataframe/tests/test_change_column_types.py +0 -0
  220. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/dataframe/tests/test_drop_columns.py +0 -0
  221. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/dataframe/tests/test_filter_columns.py +0 -0
  222. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/dataframe/tests/test_set_column_types.py +0 -0
  223. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/ju_column_transformer.py +0 -0
  224. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/target/__init__.py +0 -0
  225. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/target/available_target_transformers.py +0 -0
  226. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/target/ju_target_transformer.py +0 -0
  227. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/target/ju_transformed_target_model.py +0 -0
  228. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/target/target_confound_remover.py +0 -0
  229. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/target/tests/test_available_target_transformers.py +0 -0
  230. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/target/tests/test_ju_target_transformer.py +0 -0
  231. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/target/tests/test_ju_transformed_target_model.py +0 -0
  232. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/target/tests/test_target_confound_remover.py +0 -0
  233. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/tests/test_available_transformers.py +0 -0
  234. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/tests/test_cbpm.py +0 -0
  235. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/tests/test_confounds.py +0 -0
  236. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/transformers/tests/test_jucolumntransformers.py +0 -0
  237. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/utils/__init__.py +0 -0
  238. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/utils/_cv.py +0 -0
  239. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/utils/checks.py +0 -0
  240. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/utils/logging.py +0 -0
  241. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/utils/testing.py +0 -0
  242. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/utils/tests/test_logging.py +0 -0
  243. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/utils/tests/test_version.py +0 -0
  244. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/utils/typing.py +0 -0
  245. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/utils/versions.py +0 -0
  246. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/viz/__init__.py +0 -0
  247. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/viz/_scores.py +0 -0
  248. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn/viz/res/julearn_logo_generalization.png +0 -0
  249. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn.egg-info/dependency_links.txt +0 -0
  250. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn.egg-info/requires.txt +0 -0
  251. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/julearn.egg-info/top_level.txt +0 -0
  252. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/pyproject.toml +0 -0
  253. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/setup.cfg +0 -0
  254. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/setup.py +0 -0
  255. {julearn-0.3.5.dev80 → julearn-0.3.5.dev92}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: julearn
3
- Version: 0.3.5.dev80
3
+ Version: 0.3.5.dev92
4
4
  Summary: Juelich Machine Learning Library
5
5
  Author-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Sami Hamdan <s.hamdan@fz-juelich.de>
6
6
  Maintainer-email: Sami Hamdan <s.hamdan@fz-juelich.de>
@@ -0,0 +1 @@
1
+ Fix parenthesis escaping in column names by `Synchon Mandal`_
@@ -0,0 +1 @@
1
+ Add a new global config option `"enable_auto_escape_parenthesis"` to escape parenthesis in column names by `Synchon Mandal`_
@@ -0,0 +1 @@
1
+ Fix a bug in which inspecting predictions will result in NaNs if y had a custom index by `Fede Raimondo`_
@@ -54,3 +54,7 @@ Here you can find the comprehensive list of flags that can be set:
54
54
  | If set to ``True``, the parameter will be set back to None.
55
55
  - | Column transformers will be applied in parallel, using more resources.
56
56
  | than expected.
57
+ * - ``enable_auto_escape_parenthesis``
58
+ - | This flag enables escaping parenthesis in column names.
59
+ - | If column names include parenthesis, then they will be treated as regular
60
+ | expression metacharacters and not regular characters.
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.3.5.dev80'
32
- __version_tuple__ = version_tuple = (0, 3, 5, 'dev80')
31
+ __version__ = version = '0.3.5.dev92'
32
+ __version_tuple__ = version_tuple = (0, 3, 5, 'dev92')
33
33
 
34
- __commit_id__ = commit_id = 'g835fe2f52'
34
+ __commit_id__ = commit_id = 'g367066e38'
@@ -15,6 +15,7 @@ _global_config["disable_xtypes_check"] = False
15
15
  _global_config["disable_x_verbose"] = False
16
16
  _global_config["disable_xtypes_verbose"] = False
17
17
  _global_config["enable_parallel_column_transformers"] = False
18
+ _global_config["enable_auto_escape_parenthesis"] = True
18
19
 
19
20
 
20
21
  def set_config(key: str, value: Any) -> None:
@@ -160,6 +160,7 @@ class FoldsInspector:
160
160
  predictions = predictions.sort_index()
161
161
  target_df = pd.DataFrame(self._y)
162
162
  target_df.columns = ["target"]
163
+ target_df.reset_index(inplace=True)
163
164
  predictions = target_df.join(predictions, how="left")
164
165
  return predictions
165
166
 
@@ -132,11 +132,18 @@ def test_get_predictions(get_cv_scores, df_typed_iris):
132
132
 
133
133
  X = df_typed_iris.iloc[:, :4]
134
134
  y = df_typed_iris["species"]
135
+ # Add another kind of index to y
136
+ y.index = [f"sample-{i:03d}" for i in range(100, len(y) + 100)]
137
+ y.index.name = "sample_id"
135
138
  cv, df_scores = get_cv_scores
136
139
  inspector = FoldsInspector(df_scores, cv=cv, X=X, y=y)
137
140
  print(df_scores)
138
141
  expected_df = pd.DataFrame(
139
- {"target": y.values, "repeat0_p0": X.index.values}
142
+ {
143
+ "sample_id": y.index.values,
144
+ "target": y.values,
145
+ "repeat0_p0": X.index.values,
146
+ }
140
147
  )
141
148
  assert_frame_equal(inspector.predict(), expected_df)
142
149
  assert_frame_equal(inspector.predict_proba(), expected_df)
@@ -233,7 +240,9 @@ def test_overlapping_cv_predictions(klass, params, cv_params, df_grouped_iris):
233
240
  mock_model = MockModelReturnsIndex
234
241
  X = df_grouped_iris.iloc[:, :4]
235
242
  y = df_grouped_iris["species"]
236
-
243
+ # Add another kind of index to y
244
+ y.index = [f"sample-{i:03d}" for i in range(100, len(y) + 100)]
245
+ y.index.name = "sample_id"
237
246
  groups = None
238
247
  if "groups" in params:
239
248
  groups = df_grouped_iris["group"]
@@ -253,6 +262,7 @@ def test_overlapping_cv_predictions(klass, params, cv_params, df_grouped_iris):
253
262
  inspector = FoldsInspector(df_scores, cv=cv, X=X, y=y, groups=groups)
254
263
  print(df_scores)
255
264
  expected_dict = {}
265
+ expected_dict["sample_id"] = y.index.values
256
266
  expected_dict["target"] = y.values
257
267
  for i, (_, test) in enumerate(cv.split(X, y, groups=groups)):
258
268
  expected_dict[f"fold{i}_p0"] = np.array(
@@ -305,7 +315,9 @@ def test_nonoverlapping_cv_predictions(
305
315
  mock_model = MockModelReturnsIndex
306
316
  X = df_grouped_iris.iloc[:, :4]
307
317
  y = df_grouped_iris["species"]
308
-
318
+ # Add another kind of index to y
319
+ y.index = [f"sample-{i:03d}" for i in range(100, len(y) + 100)]
320
+ y.index.name = "sample_id"
309
321
  groups = None
310
322
  if "groups" in params:
311
323
  groups = df_grouped_iris["group"]
@@ -325,6 +337,7 @@ def test_nonoverlapping_cv_predictions(
325
337
  inspector = FoldsInspector(df_scores, cv=cv, X=X, y=y, groups=groups)
326
338
  print(df_scores)
327
339
  expected_dict = {}
340
+ expected_dict["sample_id"] = y.index.values
328
341
  expected_dict["target"] = y.values
329
342
  n_repeats = getattr(cv, "n_repeats", 1)
330
343
  for i in range(n_repeats):
@@ -378,7 +391,9 @@ def test_nonoverlapping_continuous_cv_predictions(
378
391
  mock_model = MockModelReturnsIndex
379
392
  X = df_regression.iloc[:, :-1]
380
393
  y = df_regression["target"]
381
-
394
+ # Add another kind of index to y
395
+ y.index = [f"sample-{i:03d}" for i in range(100, len(y) + 100)]
396
+ y.index.name = "sample_id"
382
397
  groups = None
383
398
  if "groups" in params:
384
399
  groups = df_regression["group"]
@@ -399,6 +414,7 @@ def test_nonoverlapping_continuous_cv_predictions(
399
414
  inspector = FoldsInspector(df_scores, cv=cv, X=X, y=y, groups=groups)
400
415
  print(df_scores)
401
416
  expected_dict = {}
417
+ expected_dict["sample_id"] = y.index.values
402
418
  expected_dict["target"] = y.values
403
419
  n_repeats = getattr(cv, "n_repeats", 1)
404
420
  for i in range(n_repeats):
@@ -175,6 +175,7 @@ def _pick_columns(
175
175
  if not isinstance(regexes, list):
176
176
  regexes = [regexes]
177
177
 
178
+ parens = ["(", ")"]
178
179
  picks = []
179
180
  for exp in regexes:
180
181
  if not _is_regex(exp):
@@ -184,7 +185,18 @@ def _pick_columns(
184
185
  cols = [
185
186
  col
186
187
  for col in columns
187
- if any([re.fullmatch(exp, col)]) and col not in picks
188
+ if any(
189
+ [
190
+ re.fullmatch(
191
+ re.escape(exp)
192
+ if get_config("enable_auto_escape_parenthesis")
193
+ and any(char in exp for char in parens)
194
+ else exp,
195
+ col,
196
+ )
197
+ ]
198
+ )
199
+ and col not in picks
188
200
  ]
189
201
  if len(cols) > 0:
190
202
  picks.extend(cols)
@@ -199,7 +211,16 @@ def _pick_columns(
199
211
  )
200
212
  unmatched = []
201
213
  for exp in regexes:
202
- if not any(re.fullmatch(exp, col) for col in columns):
214
+ if not any(
215
+ re.fullmatch(
216
+ re.escape(exp)
217
+ if get_config("enable_auto_escape_parenthesis")
218
+ and any(char in exp for char in parens)
219
+ else exp,
220
+ col,
221
+ )
222
+ for col in columns
223
+ ):
203
224
  unmatched.append(exp)
204
225
  if len(unmatched) > 0:
205
226
  raise ValueError(
@@ -476,16 +497,43 @@ def _check_x_types(
476
497
  )
477
498
  missing_columns = []
478
499
  defined_columns = []
479
- for _, columns in X_types.items():
500
+ parens = ["(", ")"]
501
+ for columns in X_types.values():
502
+ if not get_config("enable_auto_escape_parenthesis"):
503
+ if any(char in col for char in parens for col in columns):
504
+ warn_with_log(
505
+ f"{parens} found in column names, "
506
+ "recommended to use "
507
+ '`julearn.config.set_config("enable_auto_escape_'
508
+ 'parenthesis", True)`'
509
+ )
480
510
  t_columns = [
481
511
  col
482
512
  for col in X
483
- if any(re.fullmatch(exp, col) for exp in columns)
513
+ if any(
514
+ re.fullmatch(
515
+ re.escape(exp)
516
+ if get_config("enable_auto_escape_parenthesis")
517
+ and any(char in exp for char in parens)
518
+ else exp,
519
+ col,
520
+ )
521
+ for exp in columns
522
+ )
484
523
  ]
485
524
  t_missing = [
486
525
  exp
487
526
  for exp in columns
488
- if not any(re.fullmatch(exp, col) for col in X)
527
+ if not any(
528
+ re.fullmatch(
529
+ re.escape(exp)
530
+ if get_config("enable_auto_escape_parenthesis")
531
+ and any(char in exp for char in parens)
532
+ else exp,
533
+ col,
534
+ )
535
+ for col in X
536
+ )
489
537
  ]
490
538
  defined_columns.extend(t_columns)
491
539
  missing_columns.extend(t_missing)
@@ -158,6 +158,32 @@ def test_prepare_input_data() -> None:
158
158
  _check_df_input(prepared, X=X, y=y, groups=groups, df=df)
159
159
 
160
160
 
161
+ def test_prepare_input_data_with_parens_in_col_names() -> None:
162
+ """Test prepare input data (dataframe) with parenthesis in column names."""
163
+ X = [
164
+ "AgeAtScan",
165
+ "Sex-0.0",
166
+ "Feature_0.0",
167
+ "Feature_1.1",
168
+ "Feature_2.2",
169
+ "Feature_3_4_5_7",
170
+ "Scanner_(X)_pos_head",
171
+ "Scanner_(Y)_pos_head",
172
+ "Scanner_(Z)_pos_head",
173
+ "Scanner_pos_Table",
174
+ "Intensity_scaling",
175
+ "Date_of_evaluation",
176
+ ]
177
+ y = "target"
178
+ X_types = {"continuous": X}
179
+ df = pd.DataFrame(np.random.randn(100, len(X)), columns=X)
180
+ df[y] = np.random.randint(0, 2, size=100)
181
+ df_X, _, _, _ = prepare_input_data(
182
+ X=X, y=y, df=df, pos_labels=None, groups=None, X_types=X_types
183
+ )
184
+ assert df_X.columns.size == len(X)
185
+
186
+
161
187
  def test_prepare_input_data_erors() -> None:
162
188
  """Test prepare input data (dataframe) errors."""
163
189
  data = np.random.rand(4, 10)
@@ -794,3 +820,26 @@ def test__check_x_types_regexp() -> None:
794
820
  warnings.simplefilter("error")
795
821
  checked_X_types = _check_x_types(X=X, X_types=X_types)
796
822
  assert X_types == checked_X_types
823
+
824
+
825
+ def test__check_x_types_regexp_parenthesis_escape() -> None:
826
+ """Test checking for valid X types using regexp with parenthesis escape."""
827
+ X = [
828
+ "a",
829
+ "b",
830
+ "a_(c)_b",
831
+ "a_b_(c)_d",
832
+ "a-b_c_(d)_e",
833
+ "a-b_c_(d)_e-f",
834
+ "g",
835
+ ]
836
+ X_types = {"continuous": X}
837
+ # Disable escaping and expect error
838
+ set_config("enable_auto_escape_parenthesis", False)
839
+ with pytest.raises(ValueError, match=r"defined in X_types but not in X"):
840
+ with pytest.raises(RuntimeWarning, match=r"recommended to use"):
841
+ checked_X_types = _check_x_types(X=X, X_types=X_types)
842
+ # Enable escaping and no error
843
+ set_config("enable_auto_escape_parenthesis", True)
844
+ checked_X_types = _check_x_types(X=X, X_types=X_types)
845
+ assert X_types == checked_X_types
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: julearn
3
- Version: 0.3.5.dev80
3
+ Version: 0.3.5.dev92
4
4
  Summary: Juelich Machine Learning Library
5
5
  Author-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Sami Hamdan <s.hamdan@fz-juelich.de>
6
6
  Maintainer-email: Sami Hamdan <s.hamdan@fz-juelich.de>
@@ -55,6 +55,8 @@ docs/api/utils.rst
55
55
  docs/api/viz.rst
56
56
  docs/changes/contributors.inc
57
57
  docs/changes/newsfragments/.gitignore
58
+ docs/changes/newsfragments/226.bugfix
59
+ docs/changes/newsfragments/226.feature
58
60
  docs/changes/newsfragments/254.bugfix
59
61
  docs/changes/newsfragments/254.change
60
62
  docs/changes/newsfragments/277.enh
@@ -65,6 +67,7 @@ docs/changes/newsfragments/283.doc
65
67
  docs/changes/newsfragments/284.misc
66
68
  docs/changes/newsfragments/285.bugfix
67
69
  docs/changes/newsfragments/286.bugfix
70
+ docs/changes/newsfragments/288.bugfix
68
71
  docs/images/corrected_ttest.png
69
72
  docs/images/final_estimator.png
70
73
  docs/images/iris_X.png
File without changes
File without changes
File without changes
File without changes
File without changes