junifer 0.0.6.dev33__tar.gz → 0.0.6.dev51__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 (392) hide show
  1. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/PKG-INFO +1 -1
  2. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/api.rst +3 -3
  3. junifer-0.0.6.dev51/docs/api/cli.rst +6 -0
  4. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/index.rst +1 -0
  5. junifer-0.0.6.dev51/docs/changes/newsfragments/361.misc +1 -0
  6. junifer-0.0.6.dev51/docs/changes/newsfragments/367.enh +1 -0
  7. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/extending/extension.rst +22 -5
  8. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/__init__.py +2 -0
  9. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/_version.py +2 -2
  10. junifer-0.0.6.dev51/junifer/api/__init__.py +11 -0
  11. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/decorators.py +1 -1
  12. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/functions.py +3 -4
  13. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/tests/test_functions.py +2 -2
  14. junifer-0.0.6.dev51/junifer/cli/__init__.py +8 -0
  15. {junifer-0.0.6.dev33/junifer/api → junifer-0.0.6.dev51/junifer/cli}/cli.py +23 -119
  16. {junifer-0.0.6.dev33/junifer/api → junifer-0.0.6.dev51/junifer/cli}/parser.py +117 -6
  17. {junifer-0.0.6.dev33/junifer/api → junifer-0.0.6.dev51/junifer/cli}/tests/test_cli.py +3 -3
  18. junifer-0.0.6.dev33/junifer/api/tests/test_api_utils.py → junifer-0.0.6.dev51/junifer/cli/tests/test_cli_utils.py +2 -2
  19. {junifer-0.0.6.dev33/junifer/api → junifer-0.0.6.dev51/junifer/cli}/tests/test_parser.py +2 -2
  20. {junifer-0.0.6.dev33/junifer/api → junifer-0.0.6.dev51/junifer/cli}/utils.py +1 -10
  21. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/utils/__init__.py +2 -0
  22. junifer-0.0.6.dev51/junifer/utils/_yaml.py +16 -0
  23. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer.egg-info/PKG-INFO +1 -1
  24. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer.egg-info/SOURCES.txt +14 -9
  25. junifer-0.0.6.dev51/junifer.egg-info/entry_points.txt +2 -0
  26. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/pyproject.toml +1 -1
  27. junifer-0.0.6.dev33/junifer/api/__init__.py +0 -12
  28. junifer-0.0.6.dev33/junifer.egg-info/entry_points.txt +0 -2
  29. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.github/ISSUE_TEMPLATE/bug-report.yml +0 -0
  30. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  31. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.github/ISSUE_TEMPLATE/dataset-request.yml +0 -0
  32. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.github/ISSUE_TEMPLATE/documention-request.yml +0 -0
  33. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.github/ISSUE_TEMPLATE/feature-request.yml +0 -0
  34. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.github/ISSUE_TEMPLATE/marker-request.yml +0 -0
  35. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.github/dependabot.yml +0 -0
  36. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.github/pull_request_template.md +0 -0
  37. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.github/workflows/ci-docs.yml +0 -0
  38. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.github/workflows/ci.yml +0 -0
  39. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.github/workflows/docs-preview.yml +0 -0
  40. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.github/workflows/docs.yml +0 -0
  41. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.github/workflows/lint.yml +0 -0
  42. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.github/workflows/pypi.yml +0 -0
  43. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.gitignore +0 -0
  44. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.gitmodules +0 -0
  45. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/.pre-commit-config.yaml +0 -0
  46. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/AUTHORS.rst +0 -0
  47. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/LICENSE.md +0 -0
  48. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/README.md +0 -0
  49. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/codecov.yml +0 -0
  50. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/conda-env.yml +0 -0
  51. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/Makefile +0 -0
  52. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/_static/css/custom.css +0 -0
  53. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/_static/js/custom.js +0 -0
  54. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/_templates/versions.html +0 -0
  55. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/configs.rst +0 -0
  56. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/data.rst +0 -0
  57. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/datagrabbers.rst +0 -0
  58. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/datareaders.rst +0 -0
  59. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/markers.rst +0 -0
  60. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/nilearn.rst +0 -0
  61. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/onthefly.rst +0 -0
  62. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/pipeline.rst +0 -0
  63. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/preprocessing.rst +0 -0
  64. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/stats.rst +0 -0
  65. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/storage.rst +0 -0
  66. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/testing.rst +0 -0
  67. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/api/utils.rst +0 -0
  68. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/builtin.rst +0 -0
  69. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/changes/contributors.inc +0 -0
  70. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/changes/newsfragments/.gitignore +0 -0
  71. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/changes/newsfragments/335.enh +0 -0
  72. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/changes/newsfragments/354.feature +0 -0
  73. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/changes/newsfragments/356.bugfix +0 -0
  74. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/changes/newsfragments/357.enh +0 -0
  75. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/changes/newsfragments/358.doc +0 -0
  76. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/changes/newsfragments/359.doc +0 -0
  77. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/changes/newsfragments/360.bugfix +0 -0
  78. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/conf.py +0 -0
  79. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/contribution.rst +0 -0
  80. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/extending/coordinates.rst +0 -0
  81. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/extending/datagrabber.rst +0 -0
  82. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/extending/dependencies.rst +0 -0
  83. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/extending/index.rst +0 -0
  84. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/extending/marker.rst +0 -0
  85. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/extending/masks.rst +0 -0
  86. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/extending/parcellations.rst +0 -0
  87. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/extending/preprocessor.rst +0 -0
  88. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/faq.rst +0 -0
  89. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/help.rst +0 -0
  90. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/images/junifer_logo.png +0 -0
  91. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/index.rst +0 -0
  92. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/installation.rst +0 -0
  93. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/links.inc +0 -0
  94. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/maintaining.rst +0 -0
  95. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/redirect.html +0 -0
  96. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/starting.rst +0 -0
  97. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/understanding/data.rst +0 -0
  98. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/understanding/datagrabber.rst +0 -0
  99. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/understanding/datareader.rst +0 -0
  100. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/understanding/index.rst +0 -0
  101. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/understanding/marker.rst +0 -0
  102. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/understanding/pipeline.rst +0 -0
  103. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/understanding/preprocess.rst +0 -0
  104. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/understanding/storage.rst +0 -0
  105. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/using/codeless.rst +0 -0
  106. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/using/index.rst +0 -0
  107. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/using/masks.rst +0 -0
  108. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/using/queueing.rst +0 -0
  109. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/using/running.rst +0 -0
  110. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/docs/whats_new.rst +0 -0
  111. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/examples/README.rst +0 -0
  112. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/examples/norun_hcpfc_pearson.py +0 -0
  113. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/examples/norun_ukbvm_gmd.py +0 -0
  114. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/examples/run_compute_parcel_mean.py +0 -0
  115. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/examples/run_datagrabber_bids_datalad.py +0 -0
  116. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/examples/run_ets_rss_marker.py +0 -0
  117. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/examples/run_junifer_julearn.py +0 -0
  118. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/examples/run_run_gmd_mean.py +0 -0
  119. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/examples/yamls/gmd_mean.yaml +0 -0
  120. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/examples/yamls/gmd_mean_htcondor.yaml +0 -0
  121. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/examples/yamls/partly_cloudy_agg_mean_tian.yml +0 -0
  122. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/examples/yamls/ukb_gmd_mean.yaml +0 -0
  123. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/ignore_words.txt +0 -0
  124. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/queue_context/__init__.py +0 -0
  125. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/queue_context/gnu_parallel_local_adapter.py +0 -0
  126. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/queue_context/htcondor_adapter.py +0 -0
  127. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/queue_context/queue_context_adapter.py +0 -0
  128. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/queue_context/tests/test_gnu_parallel_local_adapter.py +0 -0
  129. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/queue_context/tests/test_htcondor_adapter.py +0 -0
  130. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/afni/3dAFNItoNIFTI +0 -0
  131. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/afni/3dRSFC +0 -0
  132. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/afni/3dReHo +0 -0
  133. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/afni/afni +0 -0
  134. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/afni/run_afni_docker.sh +0 -0
  135. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/ants/ResampleImage +0 -0
  136. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/ants/antsApplyTransforms +0 -0
  137. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/ants/antsApplyTransformsToPoints +0 -0
  138. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/ants/run_ants_docker.sh +0 -0
  139. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/freesurfer/mri_binarize +0 -0
  140. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/freesurfer/mri_mc +0 -0
  141. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/freesurfer/mri_pretess +0 -0
  142. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/freesurfer/mris_convert +0 -0
  143. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/freesurfer/run_freesurfer_docker.sh +0 -0
  144. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/fsl/applywarp +0 -0
  145. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/fsl/flirt +0 -0
  146. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/fsl/img2imgcoord +0 -0
  147. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/fsl/run_fsl_docker.sh +0 -0
  148. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/fsl/std2imgcoord +0 -0
  149. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/run_conda.bash +0 -0
  150. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/run_conda.zsh +0 -0
  151. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/run_venv.bash +0 -0
  152. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/api/res/run_venv.zsh +0 -0
  153. {junifer-0.0.6.dev33/junifer/api → junifer-0.0.6.dev51/junifer/cli}/tests/data/gmd_mean.yaml +0 -0
  154. {junifer-0.0.6.dev33/junifer/api → junifer-0.0.6.dev51/junifer/cli}/tests/data/gmd_mean_htcondor.yaml +0 -0
  155. {junifer-0.0.6.dev33/junifer/api → junifer-0.0.6.dev51/junifer/cli}/tests/data/partly_cloudy_agg_mean_tian.yml +0 -0
  156. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/configs/__init__.py +0 -0
  157. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/configs/juseless/__init__.py +0 -0
  158. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/configs/juseless/datagrabbers/__init__.py +0 -0
  159. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/configs/juseless/datagrabbers/aomic_id1000_vbm.py +0 -0
  160. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/configs/juseless/datagrabbers/camcan_vbm.py +0 -0
  161. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/configs/juseless/datagrabbers/ixi_vbm.py +0 -0
  162. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/configs/juseless/datagrabbers/tests/test_aomic_id1000_vbm.py +0 -0
  163. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/configs/juseless/datagrabbers/tests/test_camcan_vbm.py +0 -0
  164. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/configs/juseless/datagrabbers/tests/test_ixi_vbm.py +0 -0
  165. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/configs/juseless/datagrabbers/tests/test_ucla.py +0 -0
  166. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/configs/juseless/datagrabbers/tests/test_ukb_vbm.py +0 -0
  167. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/configs/juseless/datagrabbers/ucla.py +0 -0
  168. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/configs/juseless/datagrabbers/ukb_vbm.py +0 -0
  169. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/AutobiographicalMemory_VOIs.txt +0 -0
  170. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/CogAC_VOIs.txt +0 -0
  171. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/CogAR_VOIs.txt +0 -0
  172. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/DMNBuckner_VOIs.txt +0 -0
  173. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/Dosenbach2010_MNI_VOIs.txt +0 -0
  174. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/Empathy_VOIs.txt +0 -0
  175. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/Motor_VOIs.txt +0 -0
  176. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/MultiTask_VOIs.txt +0 -0
  177. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/PhysioStress_VOIs.txt +0 -0
  178. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/Power2011_MNI_VOIs.txt +0 -0
  179. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/Power2013_MNI_VOIs.tsv +0 -0
  180. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/Rew_VOIs.txt +0 -0
  181. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/Somatosensory_VOIs.txt +0 -0
  182. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/ToM_VOIs.txt +0 -0
  183. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/VigAtt_VOIs.txt +0 -0
  184. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/WM_VOIs.txt +0 -0
  185. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/eMDN_VOIs.txt +0 -0
  186. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/eSAD_VOIs.txt +0 -0
  187. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/VOIs/meta/extDMN_VOIs.txt +0 -0
  188. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/__init__.py +0 -0
  189. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/coordinates.py +0 -0
  190. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/masks/ukb/UKB_15K_GM_template.nii.gz +0 -0
  191. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean.nii.gz +0 -0
  192. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/masks/vickery-patil/CAT12_IXI555_MNI152_TMP_GS_GMprob0.2_clean_3mm.nii.gz +0 -0
  193. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/masks/vickery-patil/GMprob0.2_cortex_3mm_NA_rm.nii.gz +0 -0
  194. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/masks.py +0 -0
  195. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/parcellations.py +0 -0
  196. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/template_spaces.py +0 -0
  197. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/tests/test_coordinates.py +0 -0
  198. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/tests/test_data_utils.py +0 -0
  199. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/tests/test_masks.py +0 -0
  200. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/tests/test_parcellations.py +0 -0
  201. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/tests/test_template_spaces.py +0 -0
  202. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/data/utils.py +0 -0
  203. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/__init__.py +0 -0
  204. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/aomic/__init__.py +0 -0
  205. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/aomic/id1000.py +0 -0
  206. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/aomic/piop1.py +0 -0
  207. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/aomic/piop2.py +0 -0
  208. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/aomic/tests/test_id1000.py +0 -0
  209. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/aomic/tests/test_piop1.py +0 -0
  210. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/aomic/tests/test_piop2.py +0 -0
  211. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/base.py +0 -0
  212. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/datalad_base.py +0 -0
  213. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/dmcc13_benchmark.py +0 -0
  214. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/hcp1200/__init__.py +0 -0
  215. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/hcp1200/datalad_hcp1200.py +0 -0
  216. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/hcp1200/hcp1200.py +0 -0
  217. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/hcp1200/tests/test_hcp1200.py +0 -0
  218. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/multiple.py +0 -0
  219. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/pattern.py +0 -0
  220. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/pattern_datalad.py +0 -0
  221. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/pattern_validation_mixin.py +0 -0
  222. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/tests/test_base.py +0 -0
  223. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/tests/test_datalad_base.py +0 -0
  224. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/tests/test_dmcc13_benchmark.py +0 -0
  225. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/tests/test_multiple.py +0 -0
  226. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/tests/test_pattern.py +0 -0
  227. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/tests/test_pattern_datalad.py +0 -0
  228. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datagrabber/tests/test_pattern_validation_mixin.py +0 -0
  229. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datareader/__init__.py +0 -0
  230. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datareader/default.py +0 -0
  231. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/datareader/tests/test_default_reader.py +0 -0
  232. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/BrainPrint/brainprint/__init__.py +0 -0
  233. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/BrainPrint/brainprint/_version.py +0 -0
  234. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/BrainPrint/brainprint/asymmetry.py +0 -0
  235. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/BrainPrint/brainprint/brainprint.py +0 -0
  236. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/BrainPrint/brainprint/surfaces.py +0 -0
  237. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/BrainPrint/brainprint/utils/__init__.py +0 -0
  238. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/BrainPrint/brainprint/utils/_config.py +0 -0
  239. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/BrainPrint/brainprint/utils/utils.py +0 -0
  240. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/__init__.py +0 -0
  241. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/h5io/h5io/__init__.py +0 -0
  242. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/h5io/h5io/_h5io.py +0 -0
  243. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/h5io/h5io/_version.py +0 -0
  244. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/h5io/h5io/chunked_array.py +0 -0
  245. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/h5io/h5io/chunked_list.py +0 -0
  246. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/nilearn/__init__.py +0 -0
  247. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/nilearn/junifer_connectivity_measure.py +0 -0
  248. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/nilearn/junifer_nifti_spheres_masker.py +0 -0
  249. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/nilearn/tests/test_junifer_connectivity_measure.py +0 -0
  250. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/external/nilearn/tests/test_junifer_nifti_spheres_masker.py +0 -0
  251. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/__init__.py +0 -0
  252. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/base.py +0 -0
  253. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/brainprint.py +0 -0
  254. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/collection.py +0 -0
  255. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/__init__.py +0 -0
  256. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/complexity_base.py +0 -0
  257. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/hurst_exponent.py +0 -0
  258. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/multiscale_entropy_auc.py +0 -0
  259. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/perm_entropy.py +0 -0
  260. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/range_entropy.py +0 -0
  261. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/range_entropy_auc.py +0 -0
  262. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/sample_entropy.py +0 -0
  263. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/tests/test_complexity_base.py +0 -0
  264. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/tests/test_hurst_exponent.py +0 -0
  265. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/tests/test_multiscale_entropy_auc.py +0 -0
  266. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/tests/test_perm_entropy.py +0 -0
  267. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/tests/test_range_entropy.py +0 -0
  268. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/tests/test_range_entropy_auc.py +0 -0
  269. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/tests/test_sample_entropy.py +0 -0
  270. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/tests/test_weighted_perm_entropy.py +0 -0
  271. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/complexity/weighted_perm_entropy.py +0 -0
  272. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/ets_rss.py +0 -0
  273. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/falff/__init__.py +0 -0
  274. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/falff/_afni_falff.py +0 -0
  275. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/falff/_junifer_falff.py +0 -0
  276. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/falff/falff_base.py +0 -0
  277. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/falff/falff_parcels.py +0 -0
  278. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/falff/falff_spheres.py +0 -0
  279. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/falff/tests/test_falff_parcels.py +0 -0
  280. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/falff/tests/test_falff_spheres.py +0 -0
  281. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/functional_connectivity/__init__.py +0 -0
  282. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/functional_connectivity/crossparcellation_functional_connectivity.py +0 -0
  283. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/functional_connectivity/edge_functional_connectivity_parcels.py +0 -0
  284. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/functional_connectivity/edge_functional_connectivity_spheres.py +0 -0
  285. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/functional_connectivity/functional_connectivity_base.py +0 -0
  286. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/functional_connectivity/functional_connectivity_parcels.py +0 -0
  287. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/functional_connectivity/functional_connectivity_spheres.py +0 -0
  288. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/functional_connectivity/tests/test_crossparcellation_functional_connectivity.py +0 -0
  289. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_parcels.py +0 -0
  290. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/functional_connectivity/tests/test_edge_functional_connectivity_spheres.py +0 -0
  291. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_base.py +0 -0
  292. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_parcels.py +0 -0
  293. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/functional_connectivity/tests/test_functional_connectivity_spheres.py +0 -0
  294. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/parcel_aggregation.py +0 -0
  295. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/reho/__init__.py +0 -0
  296. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/reho/_afni_reho.py +0 -0
  297. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/reho/_junifer_reho.py +0 -0
  298. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/reho/reho_base.py +0 -0
  299. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/reho/reho_parcels.py +0 -0
  300. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/reho/reho_spheres.py +0 -0
  301. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/reho/tests/test_reho_parcels.py +0 -0
  302. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/reho/tests/test_reho_spheres.py +0 -0
  303. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/sphere_aggregation.py +0 -0
  304. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/temporal_snr/__init__.py +0 -0
  305. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/temporal_snr/temporal_snr_base.py +0 -0
  306. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/temporal_snr/temporal_snr_parcels.py +0 -0
  307. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/temporal_snr/temporal_snr_spheres.py +0 -0
  308. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/temporal_snr/tests/test_temporal_snr_base.py +0 -0
  309. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/temporal_snr/tests/test_temporal_snr_parcels.py +0 -0
  310. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/temporal_snr/tests/test_temporal_snr_spheres.py +0 -0
  311. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/tests/test_brainprint.py +0 -0
  312. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/tests/test_collection.py +0 -0
  313. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/tests/test_ets_rss.py +0 -0
  314. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/tests/test_marker_utils.py +0 -0
  315. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/tests/test_markers_base.py +0 -0
  316. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/tests/test_parcel_aggregation.py +0 -0
  317. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/tests/test_sphere_aggregation.py +0 -0
  318. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/markers/utils.py +0 -0
  319. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/onthefly/__init__.py +0 -0
  320. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/onthefly/_brainprint.py +0 -0
  321. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/onthefly/read_transform.py +0 -0
  322. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/onthefly/tests/test_read_transform.py +0 -0
  323. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/pipeline/__init__.py +0 -0
  324. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/pipeline/pipeline_step_mixin.py +0 -0
  325. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/pipeline/registry.py +0 -0
  326. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/pipeline/singleton.py +0 -0
  327. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/pipeline/tests/test_pipeline_step_mixin.py +0 -0
  328. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/pipeline/tests/test_registry.py +0 -0
  329. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/pipeline/tests/test_update_meta_mixin.py +0 -0
  330. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/pipeline/tests/test_workdir_manager.py +0 -0
  331. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/pipeline/update_meta_mixin.py +0 -0
  332. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/pipeline/utils.py +0 -0
  333. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/pipeline/workdir_manager.py +0 -0
  334. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/__init__.py +0 -0
  335. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/base.py +0 -0
  336. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/confounds/__init__.py +0 -0
  337. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/confounds/fmriprep_confound_remover.py +0 -0
  338. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/confounds/tests/test_fmriprep_confound_remover.py +0 -0
  339. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/smoothing/__init__.py +0 -0
  340. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/smoothing/_afni_smoothing.py +0 -0
  341. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/smoothing/_fsl_smoothing.py +0 -0
  342. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/smoothing/_nilearn_smoothing.py +0 -0
  343. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/smoothing/smoothing.py +0 -0
  344. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/smoothing/tests/test_smoothing.py +0 -0
  345. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/tests/test_preprocess_base.py +0 -0
  346. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/warping/__init__.py +0 -0
  347. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/warping/_ants_warper.py +0 -0
  348. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/warping/_fsl_warper.py +0 -0
  349. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/warping/space_warper.py +0 -0
  350. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/preprocess/warping/tests/test_space_warper.py +0 -0
  351. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/stats.py +0 -0
  352. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/storage/__init__.py +0 -0
  353. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/storage/base.py +0 -0
  354. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/storage/hdf5.py +0 -0
  355. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/storage/pandas_base.py +0 -0
  356. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/storage/sqlite.py +0 -0
  357. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/storage/tests/test_hdf5.py +0 -0
  358. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/storage/tests/test_pandas_base.py +0 -0
  359. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/storage/tests/test_sqlite.py +0 -0
  360. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/storage/tests/test_storage_base.py +0 -0
  361. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/storage/tests/test_utils.py +0 -0
  362. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/storage/utils.py +0 -0
  363. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/testing/__init__.py +0 -0
  364. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/testing/data/sub-0001_task-anticipation_acq-seq_desc-confounds_regressors.tsv +0 -0
  365. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/testing/datagrabbers.py +0 -0
  366. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/testing/registry.py +0 -0
  367. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/testing/tests/test_oasisvmbtesting_datagrabber.py +0 -0
  368. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/testing/tests/test_partlycloudytesting_datagrabber.py +0 -0
  369. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/testing/tests/test_spmauditory_datagrabber.py +0 -0
  370. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/testing/tests/test_testing_registry.py +0 -0
  371. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/testing/utils.py +0 -0
  372. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/tests/test_main.py +0 -0
  373. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/tests/test_stats.py +0 -0
  374. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/utils/fs.py +0 -0
  375. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/utils/helpers.py +0 -0
  376. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/utils/logging.py +0 -0
  377. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/utils/tests/test_fs.py +0 -0
  378. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/utils/tests/test_helpers.py +0 -0
  379. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer/utils/tests/test_logging.py +0 -0
  380. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer.egg-info/dependency_links.txt +0 -0
  381. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer.egg-info/requires.txt +0 -0
  382. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/junifer.egg-info/top_level.txt +0 -0
  383. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/setup.cfg +0 -0
  384. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/setup.py +0 -0
  385. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/tools/create_aomic1000_example_dataset.py +0 -0
  386. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/tools/create_aomicpiop1_example_dataset.py +0 -0
  387. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/tools/create_aomicpiop2_example_dataset.py +0 -0
  388. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/tools/create_bids_example_dataset.py +0 -0
  389. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/tools/create_bids_example_dataset_sessions.py +0 -0
  390. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/tools/create_dmcc13_benchmark_example_dataset.py +0 -0
  391. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/tools/create_hcp1200_example_dataset.py +0 -0
  392. {junifer-0.0.6.dev33 → junifer-0.0.6.dev51}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: junifer
3
- Version: 0.0.6.dev33
3
+ Version: 0.0.6.dev51
4
4
  Summary: JUelich NeuroImaging FEature extractoR
5
5
  Author-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Synchon Mandal <s.mandal@fz-juelich.de>
6
6
  Maintainer-email: Fede Raimondo <f.raimondo@fz-juelich.de>, Synchon Mandal <s.mandal@fz-juelich.de>
@@ -1,10 +1,10 @@
1
1
  API Functions
2
2
  =============
3
3
 
4
- Main API functions
5
- ------------------
4
+ Main Functions
5
+ --------------
6
6
 
7
- .. automodule:: junifer.api
7
+ .. automodule:: junifer.api.functions
8
8
  :members:
9
9
  :imported-members:
10
10
 
@@ -0,0 +1,6 @@
1
+ CLI Functions
2
+ =============
3
+
4
+ .. automodule:: junifer.cli.parser
5
+ :members:
6
+ :imported-members:
@@ -25,6 +25,7 @@ Utilities
25
25
  stats
26
26
  pipeline
27
27
  api
28
+ cli
28
29
  utils
29
30
  testing
30
31
  onthefly
@@ -0,0 +1 @@
1
+ Refactor ``api`` sub-package and introduce new ``cli`` sub-package by `Synchon Mandal`_
@@ -0,0 +1 @@
1
+ Allow for external python files in the ``with`` section of the yaml to import other files by `Fede Raimondo`_
@@ -28,8 +28,25 @@ This is the ideal place to include ``junifer`` extensions.
28
28
 
29
29
  .. important::
30
30
 
31
- Some ``junifer`` commands will not consider files imported from files included
32
- in the ``with`` statement. If ``my_file.py`` imports ``my_other_file.py``,
33
- some of the ``junifer`` commands will not consider ``my_other_file.py``. Either
34
- place all the code in one file or add multiple files to the ``with``
35
- statement.
31
+ Some ``junifer`` commands will not consider files imported from files
32
+ included in the ``with`` statement, unless this is known to junifer. If
33
+ ``my_file.py`` imports ``my_other_file.py``, the ``run`` command will work,
34
+ but ``queue`` will not create a proper job. This is because we need to
35
+ let junifer know that ``my_other_file.py`` is also part of the code. To do
36
+ so, we need to include a special function in ``my_file.py`` which tells
37
+ ``junifer`` about the dependencies of the module:
38
+
39
+ .. code-block:: python
40
+
41
+ def junifer_module_deps() -> List[str]:
42
+ """Return the dependencies of the module.
43
+
44
+ Returns
45
+ -------
46
+ list of str
47
+ The list of dependencies.
48
+
49
+ """
50
+
51
+ return ["my_other_file.py"]
52
+
@@ -6,6 +6,7 @@
6
6
 
7
7
  from . import (
8
8
  api,
9
+ cli,
9
10
  configs,
10
11
  data,
11
12
  datagrabber,
@@ -24,6 +25,7 @@ from ._version import __version__
24
25
 
25
26
  __all__ = [
26
27
  "api",
28
+ "cli",
27
29
  "configs",
28
30
  "data",
29
31
  "datagrabber",
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.0.6.dev33'
16
- __version_tuple__ = version_tuple = (0, 0, 6, 'dev33')
15
+ __version__ = version = '0.0.6.dev51'
16
+ __version_tuple__ = version_tuple = (0, 0, 6, 'dev51')
@@ -0,0 +1,11 @@
1
+ """Public API components."""
2
+
3
+ # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
+ # Synchon Mandal <s.mandal@fz-juelich.de>
5
+ # License: AGPL
6
+
7
+ from . import decorators
8
+ from .functions import collect, list_elements, reset, run, queue
9
+
10
+
11
+ __all__ = ["decorators", "collect", "queue", "run", "reset", "list_elements"]
@@ -1,4 +1,4 @@
1
- """Provide decorators for api."""
1
+ """Provide API decorators."""
2
2
 
3
3
  # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
4
  # Leonard Sasse <l.sasse@fz-juelich.de>
@@ -1,4 +1,4 @@
1
- """Provide functions for cli."""
1
+ """Provide API functions."""
2
2
 
3
3
  # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
4
  # Leonard Sasse <l.sasse@fz-juelich.de>
@@ -11,6 +11,7 @@ import typing
11
11
  from pathlib import Path
12
12
  from typing import Dict, List, Optional, Tuple, Union
13
13
 
14
+ from ..api.queue_context import GnuParallelLocalAdapter, HTCondorAdapter
14
15
  from ..datagrabber.base import BaseDataGrabber
15
16
  from ..markers.base import BaseMarker
16
17
  from ..markers.collection import MarkerCollection
@@ -18,9 +19,7 @@ from ..pipeline import WorkDirManager
18
19
  from ..pipeline.registry import build
19
20
  from ..preprocess.base import BasePreprocessor
20
21
  from ..storage.base import BaseFeatureStorage
21
- from ..utils import logger, raise_error
22
- from .queue_context import GnuParallelLocalAdapter, HTCondorAdapter
23
- from .utils import yaml
22
+ from ..utils import logger, raise_error, yaml
24
23
 
25
24
 
26
25
  __all__ = ["run", "collect", "queue", "reset", "list_elements"]
@@ -1,4 +1,4 @@
1
- """Provide tests for functions."""
1
+ """Provide tests for API functions."""
2
2
 
3
3
  # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
4
  # Leonard Sasse <l.sasse@fz-juelich.de>
@@ -13,7 +13,7 @@ import pytest
13
13
  from ruamel.yaml import YAML
14
14
 
15
15
  import junifer.testing.registry # noqa: F401
16
- from junifer.api.functions import collect, list_elements, queue, reset, run
16
+ from junifer.api import collect, list_elements, queue, reset, run
17
17
  from junifer.datagrabber.base import BaseDataGrabber
18
18
  from junifer.pipeline.registry import build
19
19
 
@@ -0,0 +1,8 @@
1
+ """Junifer CLI."""
2
+
3
+ # Authors: Synchon Mandal <s.mandal@fz-juelich.de>
4
+ # License: AGPL
5
+
6
+ from .cli import cli
7
+
8
+ __all__ = ["cli"]
@@ -1,4 +1,4 @@
1
- """Provide functions for cli."""
1
+ """Provide functions for CLI."""
2
2
 
3
3
  # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
4
  # Synchon Mandal <s.mandal@fz-juelich.de>
@@ -8,122 +8,26 @@ import pathlib
8
8
  import subprocess
9
9
  import sys
10
10
  from pathlib import Path
11
- from typing import Dict, List, Optional, Tuple, Union
11
+ from typing import Optional, Tuple, Union
12
12
 
13
13
  import click
14
- import pandas as pd
15
14
 
16
- from ..utils.logging import (
15
+ from ..api import functions as cli_func
16
+ from ..utils import (
17
17
  configure_logging,
18
- logger,
19
18
  raise_error,
20
- warn_with_log,
19
+ yaml,
21
20
  )
22
- from .functions import collect as api_collect
23
- from .functions import list_elements as api_list_elements
24
- from .functions import queue as api_queue
25
- from .functions import reset as api_reset
26
- from .functions import run as api_run
27
- from .parser import parse_yaml
21
+ from .parser import parse_elements, parse_yaml
28
22
  from .utils import (
29
23
  _get_dependency_information,
30
24
  _get_environment_information,
31
25
  _get_junifer_version,
32
26
  _get_python_information,
33
27
  _get_system_information,
34
- yaml,
35
28
  )
36
29
 
37
30
 
38
- def _parse_elements(element: Tuple[str], config: Dict) -> Union[List, None]:
39
- """Parse elements from cli.
40
-
41
- Parameters
42
- ----------
43
- element : tuple of str
44
- The element(s) to operate on.
45
- config : dict
46
- The configuration to operate using.
47
-
48
- Returns
49
- -------
50
- list or None
51
- The element(s) as list or None.
52
-
53
- Raises
54
- ------
55
- ValueError
56
- If no element is found either in the command-line options or
57
- the configuration file.
58
-
59
- Warns
60
- -----
61
- RuntimeWarning
62
- If elements are specified both via the command-line options and
63
- the configuration file.
64
-
65
- """
66
- logger.debug(f"Parsing elements: {element}")
67
- # Early return None to continue with all elements
68
- if len(element) == 0:
69
- return None
70
- # Check if the element is a file for single element;
71
- # if yes, then parse elements from it
72
- if len(element) == 1 and Path(element[0]).resolve().is_file():
73
- elements = _parse_elements_file(Path(element[0]).resolve())
74
- else:
75
- # Process multi-keyed elements
76
- elements = [tuple(x.split(",")) if "," in x else x for x in element]
77
- logger.debug(f"Parsed elements: {elements}")
78
- if elements is not None and "elements" in config:
79
- warn_with_log(
80
- "One or more elements have been specified in both the command "
81
- "line and in the config file. The command line has precedence "
82
- "over the configuration file. That is, the elements specified "
83
- "in the command line will be used. The elements specified in "
84
- "the configuration file will be ignored. To remove this warning, "
85
- "please remove the `elements` item from the configuration file."
86
- )
87
- elif elements is None:
88
- # Check in config
89
- elements = config.get("elements", None)
90
- if elements is None:
91
- raise_error(
92
- "The `elements` key is set in the configuration, but its value"
93
- " is `None`. It is likely that there is an empty `elements` "
94
- "section in the yaml configuration file."
95
- )
96
- return elements
97
-
98
-
99
- def _parse_elements_file(filepath: Path) -> List[Tuple[str, ...]]:
100
- """Parse elements from file.
101
-
102
- Parameters
103
- ----------
104
- filepath : pathlib.Path
105
- The path to the element file.
106
-
107
- Returns
108
- -------
109
- list of tuple of str
110
- The element(s) as list.
111
-
112
- """
113
- # Read CSV into dataframe
114
- csv_df = pd.read_csv(
115
- filepath,
116
- header=None, # no header # type: ignore
117
- index_col=False, # no index column
118
- dtype=str,
119
- skipinitialspace=True, # no leading space after delimiter
120
- )
121
- # Remove trailing whitespace in cell entries
122
- csv_df_trimmed = csv_df.apply(lambda x: x.str.strip())
123
- # Convert to list of tuple of str
124
- return list(map(tuple, csv_df_trimmed.to_numpy()))
125
-
126
-
127
31
  def _validate_verbose(
128
32
  ctx: click.Context, param: str, value: str
129
33
  ) -> Union[str, int]:
@@ -166,7 +70,7 @@ def _validate_verbose(
166
70
 
167
71
  @click.group()
168
72
  def cli() -> None: # pragma: no cover
169
- """CLI for JUelich NeuroImaging FEature extractoR."""
73
+ """JUelich NeuroImaging FEature extractoR."""
170
74
 
171
75
 
172
76
  @cli.command()
@@ -187,7 +91,7 @@ def cli() -> None: # pragma: no cover
187
91
  def run(
188
92
  filepath: click.Path, element: Tuple[str], verbose: Union[str, int]
189
93
  ) -> None:
190
- """Run command for CLI.
94
+ """Run feature extraction.
191
95
 
192
96
  \f
193
97
 
@@ -219,9 +123,9 @@ def run(
219
123
  if preprocessors is not None and not isinstance(preprocessors, list):
220
124
  preprocessors = [preprocessors]
221
125
  # Parse elements
222
- elements = _parse_elements(element, config)
126
+ elements = parse_elements(element, config)
223
127
  # Perform operation
224
- api_run(
128
+ cli_func.run(
225
129
  workdir=workdir,
226
130
  datagrabber=datagrabber,
227
131
  markers=markers,
@@ -246,7 +150,7 @@ def run(
246
150
  default="info",
247
151
  )
248
152
  def collect(filepath: click.Path, verbose: Union[str, int]) -> None:
249
- """Collect command for CLI.
153
+ """Collect extracted features.
250
154
 
251
155
  \f
252
156
 
@@ -263,7 +167,7 @@ def collect(filepath: click.Path, verbose: Union[str, int]) -> None:
263
167
  config = parse_yaml(filepath) # type: ignore
264
168
  storage = config["storage"]
265
169
  # Perform operation
266
- api_collect(storage=storage)
170
+ cli_func.collect(storage=storage)
267
171
 
268
172
 
269
173
  @cli.command()
@@ -290,7 +194,7 @@ def queue(
290
194
  submit: bool,
291
195
  verbose: Union[str, int],
292
196
  ) -> None:
293
- """Queue command for CLI.
197
+ """Queue feature extraction.
294
198
 
295
199
  \f
296
200
 
@@ -311,12 +215,12 @@ def queue(
311
215
  configure_logging(level=verbose)
312
216
  # TODO: add validation
313
217
  config = parse_yaml(filepath) # type: ignore
314
- elements = _parse_elements(element, config)
218
+ elements = parse_elements(element, config)
315
219
  if "queue" not in config:
316
220
  raise_error(f"No queue configuration found in {filepath}.")
317
221
  queue_config = config.pop("queue")
318
222
  kind = queue_config.pop("kind")
319
- api_queue(
223
+ cli_func.queue(
320
224
  config=config,
321
225
  kind=kind,
322
226
  overwrite=overwrite,
@@ -329,7 +233,7 @@ def queue(
329
233
  @cli.command()
330
234
  @click.option("--long", "long_", is_flag=True)
331
235
  def wtf(long_: bool) -> None:
332
- """Wtf command for CLI.
236
+ """WTF?!.
333
237
 
334
238
  \f
335
239
 
@@ -352,7 +256,7 @@ def wtf(long_: bool) -> None:
352
256
  @cli.command()
353
257
  @click.argument("subpkg", type=str)
354
258
  def selftest(subpkg: str) -> None:
355
- """Selftest command for CLI.
259
+ """Selftest.
356
260
 
357
261
  \f
358
262
 
@@ -433,7 +337,7 @@ def reset(
433
337
  filepath: click.Path,
434
338
  verbose: Union[str, int],
435
339
  ) -> None:
436
- """Reset command for CLI.
340
+ """Reset generated assets.
437
341
 
438
342
  \f
439
343
 
@@ -449,7 +353,7 @@ def reset(
449
353
  # Parse YAML
450
354
  config = parse_yaml(filepath)
451
355
  # Perform operation
452
- api_reset(config)
356
+ cli_func.reset(config)
453
357
 
454
358
 
455
359
  @cli.command()
@@ -478,7 +382,7 @@ def list_elements(
478
382
  output_file: Optional[click.Path],
479
383
  verbose: Union[str, int],
480
384
  ) -> None:
481
- """Element listing command for CLI.
385
+ """List elements of a dataset.
482
386
 
483
387
  \f
484
388
 
@@ -501,9 +405,9 @@ def list_elements(
501
405
  # Fetch datagrabber
502
406
  datagrabber = config["datagrabber"]
503
407
  # Parse elements
504
- elements = _parse_elements(element, config)
408
+ elements = parse_elements(element, config)
505
409
  # Perform operation
506
- listed_elements = api_list_elements(
410
+ listed_elements = cli_func.list_elements(
507
411
  datagrabber=datagrabber,
508
412
  elements=elements,
509
413
  )
@@ -517,7 +421,7 @@ def list_elements(
517
421
 
518
422
  @cli.group()
519
423
  def setup() -> None: # pragma: no cover
520
- """Configure commands for Junifer."""
424
+ """Configure external tools."""
521
425
  pass
522
426
 
523
427
 
@@ -1,4 +1,4 @@
1
- """Provide functions for parser."""
1
+ """Provide functions for CLI parser."""
2
2
 
3
3
  # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
4
  # Synchon Mandal <s.mandal@fz-juelich.de>
@@ -8,16 +8,17 @@ import importlib
8
8
  import importlib.util
9
9
  import sys
10
10
  from pathlib import Path
11
- from typing import Dict, Union
11
+ from typing import Dict, List, Tuple, Union
12
12
 
13
- from ..utils.logging import logger, raise_error
14
- from .utils import yaml
13
+ import pandas as pd
15
14
 
15
+ from ..utils import logger, raise_error, warn_with_log, yaml
16
16
 
17
- __all__ = ["parse_yaml"]
18
17
 
18
+ __all__ = ["parse_yaml", "parse_elements"]
19
19
 
20
- def parse_yaml(filepath: Union[str, Path]) -> Dict:
20
+
21
+ def parse_yaml(filepath: Union[str, Path]) -> Dict: # noqa: C901
21
22
  """Parse YAML.
22
23
 
23
24
  Parameters
@@ -64,14 +65,35 @@ def parse_yaml(filepath: Union[str, Path]) -> Dict:
64
65
  raise_error(
65
66
  f"File in 'with' section does not exist: {file_path}"
66
67
  )
68
+ # Add the parent directory to the sys.path so that the
69
+ # any imports from this module work correctly
70
+ t_path = str(file_path.parent)
71
+ if t_path not in sys.path:
72
+ sys.path.append(str(file_path.parent))
73
+
67
74
  spec = importlib.util.spec_from_file_location(
68
75
  t_module, file_path
69
76
  )
70
77
  module = importlib.util.module_from_spec(spec) # type: ignore
71
78
  sys.modules[t_module] = module
72
79
  spec.loader.exec_module(module) # type: ignore
80
+
73
81
  # Add absolute path to final list
74
82
  final_to_load.append(str(file_path.resolve()))
83
+
84
+ # Check if the module has junifer_module_deps function
85
+ if hasattr(module, "junifer_module_deps"):
86
+ logger.debug(
87
+ f"Module {t_module} has junifer_module_deps function"
88
+ )
89
+ # Get the dependencies
90
+ deps = module.junifer_module_deps()
91
+ # Add the dependencies to the final list
92
+ for dep in deps:
93
+ if dep not in final_to_load:
94
+ final_to_load.append(
95
+ str((file_path.parent / dep).resolve())
96
+ )
75
97
  else:
76
98
  logger.info(f"Importing module: {t_module}")
77
99
  importlib.import_module(t_module)
@@ -116,3 +138,92 @@ def parse_yaml(filepath: Union[str, Path]) -> Dict:
116
138
  )
117
139
 
118
140
  return contents
141
+
142
+
143
+ def parse_elements(element: Tuple[str], config: Dict) -> Union[List, None]:
144
+ """Parse elements from cli.
145
+
146
+ Parameters
147
+ ----------
148
+ element : tuple of str
149
+ The element(s) to operate on.
150
+ config : dict
151
+ The configuration to operate using.
152
+
153
+ Returns
154
+ -------
155
+ list or None
156
+ The element(s) as list or None.
157
+
158
+ Raises
159
+ ------
160
+ ValueError
161
+ If no element is found either in the command-line options or
162
+ the configuration file.
163
+
164
+ Warns
165
+ -----
166
+ RuntimeWarning
167
+ If elements are specified both via the command-line options and
168
+ the configuration file.
169
+
170
+ """
171
+ logger.debug(f"Parsing elements: {element}")
172
+ # Early return None to continue with all elements
173
+ if len(element) == 0:
174
+ return None
175
+ # Check if the element is a file for single element;
176
+ # if yes, then parse elements from it
177
+ if len(element) == 1 and Path(element[0]).resolve().is_file():
178
+ elements = _parse_elements_file(Path(element[0]).resolve())
179
+ else:
180
+ # Process multi-keyed elements
181
+ elements = [tuple(x.split(",")) if "," in x else x for x in element]
182
+ logger.debug(f"Parsed elements: {elements}")
183
+ if elements is not None and "elements" in config:
184
+ warn_with_log(
185
+ "One or more elements have been specified in both the command "
186
+ "line and in the config file. The command line has precedence "
187
+ "over the configuration file. That is, the elements specified "
188
+ "in the command line will be used. The elements specified in "
189
+ "the configuration file will be ignored. To remove this warning, "
190
+ "please remove the `elements` item from the configuration file."
191
+ )
192
+ elif elements is None:
193
+ # Check in config
194
+ elements = config.get("elements", None)
195
+ if elements is None:
196
+ raise_error(
197
+ "The `elements` key is set in the configuration, but its value"
198
+ " is `None`. It is likely that there is an empty `elements` "
199
+ "section in the yaml configuration file."
200
+ )
201
+ return elements
202
+
203
+
204
+ def _parse_elements_file(filepath: Path) -> List[Tuple[str, ...]]:
205
+ """Parse elements from file.
206
+
207
+ Parameters
208
+ ----------
209
+ filepath : pathlib.Path
210
+ The path to the element file.
211
+
212
+ Returns
213
+ -------
214
+ list of tuple of str
215
+ The element(s) as list.
216
+
217
+ """
218
+ # Read CSV into dataframe
219
+ csv_df = pd.read_csv(
220
+ filepath,
221
+ header=None, # no header # type: ignore
222
+ index_col=False, # no index column
223
+ dtype=str,
224
+ skipinitialspace=True, # no leading space after delimiter
225
+ )
226
+ # Remove trailing whitespace in cell entries
227
+ csv_df_trimmed = csv_df.apply(lambda x: x.str.strip())
228
+ # Convert to list of tuple of str
229
+ return list(map(tuple, csv_df_trimmed.to_numpy()))
@@ -1,4 +1,4 @@
1
- """Provide tests for cli."""
1
+ """Provide tests for CLI."""
2
2
 
3
3
  # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
4
  # Synchon Mandal <s.mandal@fz-juelich.de>
@@ -11,8 +11,7 @@ import pytest
11
11
  from click.testing import CliRunner
12
12
  from ruamel.yaml import YAML
13
13
 
14
- from junifer.api.cli import (
15
- _parse_elements_file,
14
+ from junifer.cli.cli import (
16
15
  collect,
17
16
  list_elements,
18
17
  queue,
@@ -21,6 +20,7 @@ from junifer.api.cli import (
21
20
  selftest,
22
21
  wtf,
23
22
  )
23
+ from junifer.cli.parser import _parse_elements_file
24
24
 
25
25
 
26
26
  # Configure YAML class
@@ -1,4 +1,4 @@
1
- """Provide tests for utils."""
1
+ """Provide tests for CLI utils."""
2
2
 
3
3
  # Authors: Synchon Mandal <s.mandal@fz-juelich.de>
4
4
  # License: AGPL
@@ -9,7 +9,7 @@ import sys
9
9
  import pytest
10
10
 
11
11
  from junifer._version import __version__
12
- from junifer.api.utils import (
12
+ from junifer.cli.utils import (
13
13
  _get_dependency_information,
14
14
  _get_environment_information,
15
15
  _get_junifer_version,
@@ -1,4 +1,4 @@
1
- """Provide tests for parser."""
1
+ """Provide tests for CLI parser."""
2
2
 
3
3
  # Authors: Federico Raimondo <f.raimondo@fz-juelich.de>
4
4
  # Synchon Mandal <s.mandal@fz-juelich.de>
@@ -9,7 +9,7 @@ from pathlib import Path
9
9
 
10
10
  import pytest
11
11
 
12
- from junifer.api.parser import parse_yaml
12
+ from junifer.cli.parser import parse_yaml
13
13
 
14
14
 
15
15
  def test_parse_yaml_failure() -> None:
@@ -1,4 +1,4 @@
1
- """Provide utility functions for the api sub-package."""
1
+ """Provide utility functions for the cli sub-package."""
2
2
 
3
3
  # Authors: Synchon Mandal <s.mandal@fz-juelich.de>
4
4
  # License: AGPL
@@ -9,19 +9,10 @@ import re
9
9
  from importlib.metadata import distribution
10
10
  from typing import Dict
11
11
 
12
- from ruamel.yaml import YAML
13
-
14
12
  from .._version import __version__
15
13
  from ..utils.logging import get_versions
16
14
 
17
15
 
18
- # Configure YAML class once for further use
19
- yaml = YAML()
20
- yaml.default_flow_style = False
21
- yaml.allow_unicode = True
22
- yaml.indent(mapping=2, sequence=4, offset=2)
23
-
24
-
25
16
  def _get_junifer_version() -> Dict[str, str]:
26
17
  """Get junifer version information.
27
18