pyAFQ 3.1__tar.gz → 3.2__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 (452) hide show
  1. {pyafq-3.1 → pyafq-3.2}/AFQ/api/bundle_dict.py +40 -0
  2. {pyafq-3.1 → pyafq-3.2}/AFQ/data/fetch.py +6 -0
  3. {pyafq-3.1 → pyafq-3.2}/AFQ/models/dki.py +0 -8
  4. {pyafq-3.1 → pyafq-3.2}/AFQ/models/msmt.py +0 -6
  5. {pyafq-3.1 → pyafq-3.2}/AFQ/tasks/data.py +19 -5
  6. {pyafq-3.1 → pyafq-3.2}/AFQ/tasks/segmentation.py +6 -6
  7. {pyafq-3.1 → pyafq-3.2}/AFQ/tasks/structural.py +18 -18
  8. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/test_api.py +9 -1
  9. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/test_bundle_dict.py +1 -1
  10. {pyafq-3.1 → pyafq-3.2}/AFQ/version.py +3 -3
  11. {pyafq-3.1 → pyafq-3.2}/AFQ/viz/altair.py +3 -0
  12. {pyafq-3.1 → pyafq-3.2}/AFQ/viz/utils.py +6 -2
  13. {pyafq-3.1 → pyafq-3.2}/CHANGES.rst +11 -0
  14. {pyafq-3.1 → pyafq-3.2}/PKG-INFO +1 -1
  15. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/custom.css +8 -0
  16. {pyafq-3.1 → pyafq-3.2}/docs/source/reference/fibertracts.rst +39 -5
  17. {pyafq-3.1 → pyafq-3.2}/docs/source/reference/kwargs.rst +2 -2
  18. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/cloudknot_example.py +1 -2
  19. {pyafq-3.1 → pyafq-3.2}/examples/tutorial_examples/plot_001_group_afq_api.py +11 -6
  20. {pyafq-3.1 → pyafq-3.2}/examples/tutorial_examples/plot_002_participant_afq_api.py +5 -5
  21. {pyafq-3.1 → pyafq-3.2}/examples/tutorial_examples/plot_004_export.py +5 -5
  22. {pyafq-3.1 → pyafq-3.2}/pyAFQ.egg-info/PKG-INFO +1 -1
  23. {pyafq-3.1 → pyafq-3.2}/.codespellrc +0 -0
  24. {pyafq-3.1 → pyafq-3.2}/.github/CITATION.cff +0 -0
  25. {pyafq-3.1 → pyafq-3.2}/.github/CONTRIBUTING.md +0 -0
  26. {pyafq-3.1 → pyafq-3.2}/.github/workflows/docbuild.yml +0 -0
  27. {pyafq-3.1 → pyafq-3.2}/.github/workflows/docker_pyafq.yml +0 -0
  28. {pyafq-3.1 → pyafq-3.2}/.github/workflows/docker_pyafq_cuda12.yml +0 -0
  29. {pyafq-3.1 → pyafq-3.2}/.github/workflows/nightly_anisotropic_test.yml +0 -0
  30. {pyafq-3.1 → pyafq-3.2}/.github/workflows/nightly_basic_test.yml +0 -0
  31. {pyafq-3.1 → pyafq-3.2}/.github/workflows/nightly_custom_test.yml +0 -0
  32. {pyafq-3.1 → pyafq-3.2}/.github/workflows/nightly_reco80_test.yml +0 -0
  33. {pyafq-3.1 → pyafq-3.2}/.github/workflows/nightly_reco_test.yml +0 -0
  34. {pyafq-3.1 → pyafq-3.2}/.github/workflows/nightly_test.yml +0 -0
  35. {pyafq-3.1 → pyafq-3.2}/.github/workflows/publish-to-test-pypi.yml +0 -0
  36. {pyafq-3.1 → pyafq-3.2}/.github/workflows/test.yml +0 -0
  37. {pyafq-3.1 → pyafq-3.2}/.gitignore +0 -0
  38. {pyafq-3.1 → pyafq-3.2}/.mailmap +0 -0
  39. {pyafq-3.1 → pyafq-3.2}/.maintenance/update_changes.sh +0 -0
  40. {pyafq-3.1 → pyafq-3.2}/.maintenance/update_zenodo.py +0 -0
  41. {pyafq-3.1 → pyafq-3.2}/.pep8speaks.yml +0 -0
  42. {pyafq-3.1 → pyafq-3.2}/.pre-commit-config.yaml +0 -0
  43. {pyafq-3.1 → pyafq-3.2}/.zenodo.json +0 -0
  44. {pyafq-3.1 → pyafq-3.2}/AFQ/__init__.py +0 -0
  45. {pyafq-3.1 → pyafq-3.2}/AFQ/_fixes.py +0 -0
  46. {pyafq-3.1 → pyafq-3.2}/AFQ/api/__init__.py +0 -0
  47. {pyafq-3.1 → pyafq-3.2}/AFQ/api/group.py +0 -0
  48. {pyafq-3.1 → pyafq-3.2}/AFQ/api/participant.py +0 -0
  49. {pyafq-3.1 → pyafq-3.2}/AFQ/api/utils.py +0 -0
  50. {pyafq-3.1 → pyafq-3.2}/AFQ/data/__init__.py +0 -0
  51. {pyafq-3.1 → pyafq-3.2}/AFQ/data/utils.py +0 -0
  52. {pyafq-3.1 → pyafq-3.2}/AFQ/definitions/__init__.py +0 -0
  53. {pyafq-3.1 → pyafq-3.2}/AFQ/definitions/image.py +0 -0
  54. {pyafq-3.1 → pyafq-3.2}/AFQ/definitions/mapping.py +0 -0
  55. {pyafq-3.1 → pyafq-3.2}/AFQ/definitions/utils.py +0 -0
  56. {pyafq-3.1 → pyafq-3.2}/AFQ/models/QBallTP.py +0 -0
  57. {pyafq-3.1 → pyafq-3.2}/AFQ/models/__init__.py +0 -0
  58. {pyafq-3.1 → pyafq-3.2}/AFQ/models/asym_filtering.py +0 -0
  59. {pyafq-3.1 → pyafq-3.2}/AFQ/models/csd.py +0 -0
  60. {pyafq-3.1 → pyafq-3.2}/AFQ/models/dti.py +0 -0
  61. {pyafq-3.1 → pyafq-3.2}/AFQ/models/fwdti.py +0 -0
  62. {pyafq-3.1 → pyafq-3.2}/AFQ/models/wmgm_interface.py +0 -0
  63. {pyafq-3.1 → pyafq-3.2}/AFQ/nn/__init__.py +0 -0
  64. {pyafq-3.1 → pyafq-3.2}/AFQ/nn/brainchop.py +0 -0
  65. {pyafq-3.1 → pyafq-3.2}/AFQ/nn/multiaxial.py +0 -0
  66. {pyafq-3.1 → pyafq-3.2}/AFQ/nn/synthseg.py +0 -0
  67. {pyafq-3.1 → pyafq-3.2}/AFQ/nn/utils.py +0 -0
  68. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/__init__.py +0 -0
  69. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/cleaning.py +0 -0
  70. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/clustering.py +0 -0
  71. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/criteria.py +0 -0
  72. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/curvature.py +0 -0
  73. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/other_bundles.py +0 -0
  74. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/preprocess.py +0 -0
  75. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/recognize.py +0 -0
  76. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/roi.py +0 -0
  77. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/sparse_decisions.py +0 -0
  78. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/tests/__init__.py +0 -0
  79. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/tests/conftest.py +0 -0
  80. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/tests/test_other_bundles.py +0 -0
  81. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/tests/test_recognition.py +0 -0
  82. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/tests/test_rois.py +0 -0
  83. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/tests/test_utils.py +0 -0
  84. {pyafq-3.1 → pyafq-3.2}/AFQ/recognition/utils.py +0 -0
  85. {pyafq-3.1 → pyafq-3.2}/AFQ/registration.py +0 -0
  86. {pyafq-3.1 → pyafq-3.2}/AFQ/tasks/__init__.py +0 -0
  87. {pyafq-3.1 → pyafq-3.2}/AFQ/tasks/decorators.py +0 -0
  88. {pyafq-3.1 → pyafq-3.2}/AFQ/tasks/mapping.py +0 -0
  89. {pyafq-3.1 → pyafq-3.2}/AFQ/tasks/tissue.py +0 -0
  90. {pyafq-3.1 → pyafq-3.2}/AFQ/tasks/tractography.py +0 -0
  91. {pyafq-3.1 → pyafq-3.2}/AFQ/tasks/utils.py +0 -0
  92. {pyafq-3.1 → pyafq-3.2}/AFQ/tasks/viz.py +0 -0
  93. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/__init__.py +0 -0
  94. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/MoriGroups_Test.mat +0 -0
  95. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/WholeBrainFG_test.mat +0 -0
  96. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/.datalad/.gitattributes +0 -0
  97. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/.datalad/config +0 -0
  98. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/.gitattributes +0 -0
  99. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/CHANGES +0 -0
  100. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/README +0 -0
  101. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/T1w.json +0 -0
  102. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/annex-uuid +0 -0
  103. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/dataset_description.json +0 -0
  104. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/aMRIQC.csv +0 -0
  105. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_group.pdf +0 -0
  106. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-01.pdf +0 -0
  107. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-02.pdf +0 -0
  108. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-03.pdf +0 -0
  109. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-04.pdf +0 -0
  110. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-05.pdf +0 -0
  111. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-06.pdf +0 -0
  112. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-07.pdf +0 -0
  113. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-08.pdf +0 -0
  114. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-09.pdf +0 -0
  115. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-10.pdf +0 -0
  116. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-11.pdf +0 -0
  117. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-12.pdf +0 -0
  118. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-13.pdf +0 -0
  119. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-14.pdf +0 -0
  120. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-15.pdf +0 -0
  121. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-16.pdf +0 -0
  122. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-17.pdf +0 -0
  123. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-18.pdf +0 -0
  124. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-19.pdf +0 -0
  125. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-20.pdf +0 -0
  126. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-21.pdf +0 -0
  127. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-22.pdf +0 -0
  128. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-23.pdf +0 -0
  129. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-24.pdf +0 -0
  130. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-25.pdf +0 -0
  131. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-26.pdf +0 -0
  132. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/fMRIQC.csv +0 -0
  133. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_group.pdf +0 -0
  134. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-01.pdf +0 -0
  135. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-02.pdf +0 -0
  136. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-03.pdf +0 -0
  137. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-04.pdf +0 -0
  138. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-05.pdf +0 -0
  139. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-06.pdf +0 -0
  140. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-07.pdf +0 -0
  141. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-08.pdf +0 -0
  142. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-09.pdf +0 -0
  143. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-10.pdf +0 -0
  144. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-11.pdf +0 -0
  145. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-12.pdf +0 -0
  146. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-13.pdf +0 -0
  147. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-14.pdf +0 -0
  148. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-15.pdf +0 -0
  149. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-16.pdf +0 -0
  150. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-17.pdf +0 -0
  151. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-18.pdf +0 -0
  152. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-19.pdf +0 -0
  153. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-20.pdf +0 -0
  154. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-21.pdf +0 -0
  155. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-22.pdf +0 -0
  156. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-23.pdf +0 -0
  157. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-24.pdf +0 -0
  158. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-25.pdf +0 -0
  159. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-26.pdf +0 -0
  160. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/participants.tsv +0 -0
  161. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/anat/sub-01_T1w.nii.gz +0 -0
  162. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/func/sub-01_task-flanker_run-1_bold.nii.gz +0 -0
  163. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/func/sub-01_task-flanker_run-1_events.tsv +0 -0
  164. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/func/sub-01_task-flanker_run-2_bold.nii.gz +0 -0
  165. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/func/sub-01_task-flanker_run-2_events.tsv +0 -0
  166. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/anat/sub-02_T1w.nii.gz +0 -0
  167. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/func/sub-02_task-flanker_run-1_bold.nii.gz +0 -0
  168. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/func/sub-02_task-flanker_run-1_events.tsv +0 -0
  169. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/func/sub-02_task-flanker_run-2_bold.nii.gz +0 -0
  170. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/func/sub-02_task-flanker_run-2_events.tsv +0 -0
  171. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/anat/sub-03_T1w.nii.gz +0 -0
  172. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/func/sub-03_task-flanker_run-1_bold.nii.gz +0 -0
  173. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/func/sub-03_task-flanker_run-1_events.tsv +0 -0
  174. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/func/sub-03_task-flanker_run-2_bold.nii.gz +0 -0
  175. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/func/sub-03_task-flanker_run-2_events.tsv +0 -0
  176. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/anat/sub-04_T1w.nii.gz +0 -0
  177. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/func/sub-04_task-flanker_run-1_bold.nii.gz +0 -0
  178. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/func/sub-04_task-flanker_run-1_events.tsv +0 -0
  179. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/func/sub-04_task-flanker_run-2_bold.nii.gz +0 -0
  180. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/func/sub-04_task-flanker_run-2_events.tsv +0 -0
  181. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/anat/sub-05_T1w.nii.gz +0 -0
  182. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/func/sub-05_task-flanker_run-1_bold.nii.gz +0 -0
  183. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/func/sub-05_task-flanker_run-1_events.tsv +0 -0
  184. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/func/sub-05_task-flanker_run-2_bold.nii.gz +0 -0
  185. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/func/sub-05_task-flanker_run-2_events.tsv +0 -0
  186. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/anat/sub-06_T1w.nii.gz +0 -0
  187. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/func/sub-06_task-flanker_run-1_bold.nii.gz +0 -0
  188. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/func/sub-06_task-flanker_run-1_events.tsv +0 -0
  189. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/func/sub-06_task-flanker_run-2_bold.nii.gz +0 -0
  190. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/func/sub-06_task-flanker_run-2_events.tsv +0 -0
  191. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/anat/sub-07_T1w.nii.gz +0 -0
  192. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/func/sub-07_task-flanker_run-1_bold.nii.gz +0 -0
  193. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/func/sub-07_task-flanker_run-1_events.tsv +0 -0
  194. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/func/sub-07_task-flanker_run-2_bold.nii.gz +0 -0
  195. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/func/sub-07_task-flanker_run-2_events.tsv +0 -0
  196. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/anat/sub-08_T1w.nii.gz +0 -0
  197. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/func/sub-08_task-flanker_run-1_bold.nii.gz +0 -0
  198. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/func/sub-08_task-flanker_run-1_events.tsv +0 -0
  199. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/func/sub-08_task-flanker_run-2_bold.nii.gz +0 -0
  200. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/func/sub-08_task-flanker_run-2_events.tsv +0 -0
  201. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/anat/sub-09_T1w.nii.gz +0 -0
  202. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/func/sub-09_task-flanker_run-1_bold.nii.gz +0 -0
  203. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/func/sub-09_task-flanker_run-1_events.tsv +0 -0
  204. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/func/sub-09_task-flanker_run-2_bold.nii.gz +0 -0
  205. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/func/sub-09_task-flanker_run-2_events.tsv +0 -0
  206. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/anat/sub-10_T1w.nii.gz +0 -0
  207. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/func/sub-10_task-flanker_run-1_bold.nii.gz +0 -0
  208. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/func/sub-10_task-flanker_run-1_events.tsv +0 -0
  209. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/func/sub-10_task-flanker_run-2_bold.nii.gz +0 -0
  210. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/func/sub-10_task-flanker_run-2_events.tsv +0 -0
  211. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/anat/sub-11_T1w.nii.gz +0 -0
  212. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/func/sub-11_task-flanker_run-1_bold.nii.gz +0 -0
  213. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/func/sub-11_task-flanker_run-1_events.tsv +0 -0
  214. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/func/sub-11_task-flanker_run-2_bold.nii.gz +0 -0
  215. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/func/sub-11_task-flanker_run-2_events.tsv +0 -0
  216. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/anat/sub-12_T1w.nii.gz +0 -0
  217. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/func/sub-12_task-flanker_run-1_bold.nii.gz +0 -0
  218. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/func/sub-12_task-flanker_run-1_events.tsv +0 -0
  219. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/func/sub-12_task-flanker_run-2_bold.nii.gz +0 -0
  220. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/func/sub-12_task-flanker_run-2_events.tsv +0 -0
  221. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/anat/sub-13_T1w.nii.gz +0 -0
  222. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/func/sub-13_task-flanker_run-1_bold.nii.gz +0 -0
  223. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/func/sub-13_task-flanker_run-1_events.tsv +0 -0
  224. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/func/sub-13_task-flanker_run-2_bold.nii.gz +0 -0
  225. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/func/sub-13_task-flanker_run-2_events.tsv +0 -0
  226. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/anat/sub-14_T1w.nii.gz +0 -0
  227. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/func/sub-14_task-flanker_run-1_bold.nii.gz +0 -0
  228. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/func/sub-14_task-flanker_run-1_events.tsv +0 -0
  229. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/func/sub-14_task-flanker_run-2_bold.nii.gz +0 -0
  230. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/func/sub-14_task-flanker_run-2_events.tsv +0 -0
  231. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/anat/sub-15_T1w.nii.gz +0 -0
  232. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/func/sub-15_task-flanker_run-1_bold.nii.gz +0 -0
  233. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/func/sub-15_task-flanker_run-1_events.tsv +0 -0
  234. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/func/sub-15_task-flanker_run-2_bold.nii.gz +0 -0
  235. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/func/sub-15_task-flanker_run-2_events.tsv +0 -0
  236. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/anat/sub-16_T1w.nii.gz +0 -0
  237. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/func/sub-16_task-flanker_run-1_bold.nii.gz +0 -0
  238. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/func/sub-16_task-flanker_run-1_events.tsv +0 -0
  239. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/func/sub-16_task-flanker_run-2_bold.nii.gz +0 -0
  240. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/func/sub-16_task-flanker_run-2_events.tsv +0 -0
  241. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/anat/sub-17_T1w.nii.gz +0 -0
  242. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/func/sub-17_task-flanker_run-1_bold.nii.gz +0 -0
  243. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/func/sub-17_task-flanker_run-1_events.tsv +0 -0
  244. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/func/sub-17_task-flanker_run-2_bold.nii.gz +0 -0
  245. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/func/sub-17_task-flanker_run-2_events.tsv +0 -0
  246. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/anat/sub-18_T1w.nii.gz +0 -0
  247. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/func/sub-18_task-flanker_run-1_bold.nii.gz +0 -0
  248. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/func/sub-18_task-flanker_run-1_events.tsv +0 -0
  249. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/func/sub-18_task-flanker_run-2_bold.nii.gz +0 -0
  250. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/func/sub-18_task-flanker_run-2_events.tsv +0 -0
  251. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/anat/sub-19_T1w.nii.gz +0 -0
  252. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/func/sub-19_task-flanker_run-1_bold.nii.gz +0 -0
  253. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/func/sub-19_task-flanker_run-1_events.tsv +0 -0
  254. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/func/sub-19_task-flanker_run-2_bold.nii.gz +0 -0
  255. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/func/sub-19_task-flanker_run-2_events.tsv +0 -0
  256. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/anat/sub-20_T1w.nii.gz +0 -0
  257. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/func/sub-20_task-flanker_run-1_bold.nii.gz +0 -0
  258. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/func/sub-20_task-flanker_run-1_events.tsv +0 -0
  259. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/func/sub-20_task-flanker_run-2_bold.nii.gz +0 -0
  260. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/func/sub-20_task-flanker_run-2_events.tsv +0 -0
  261. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/anat/sub-21_T1w.nii.gz +0 -0
  262. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/func/sub-21_task-flanker_run-1_bold.nii.gz +0 -0
  263. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/func/sub-21_task-flanker_run-1_events.tsv +0 -0
  264. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/func/sub-21_task-flanker_run-2_bold.nii.gz +0 -0
  265. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/func/sub-21_task-flanker_run-2_events.tsv +0 -0
  266. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/anat/sub-22_T1w.nii.gz +0 -0
  267. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/func/sub-22_task-flanker_run-1_bold.nii.gz +0 -0
  268. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/func/sub-22_task-flanker_run-1_events.tsv +0 -0
  269. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/func/sub-22_task-flanker_run-2_bold.nii.gz +0 -0
  270. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/func/sub-22_task-flanker_run-2_events.tsv +0 -0
  271. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/anat/sub-23_T1w.nii.gz +0 -0
  272. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/func/sub-23_task-flanker_run-1_bold.nii.gz +0 -0
  273. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/func/sub-23_task-flanker_run-1_events.tsv +0 -0
  274. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/func/sub-23_task-flanker_run-2_bold.nii.gz +0 -0
  275. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/func/sub-23_task-flanker_run-2_events.tsv +0 -0
  276. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/anat/sub-24_T1w.nii.gz +0 -0
  277. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/func/sub-24_task-flanker_run-1_bold.nii.gz +0 -0
  278. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/func/sub-24_task-flanker_run-1_events.tsv +0 -0
  279. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/func/sub-24_task-flanker_run-2_bold.nii.gz +0 -0
  280. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/func/sub-24_task-flanker_run-2_events.tsv +0 -0
  281. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/anat/sub-25_T1w.nii.gz +0 -0
  282. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/func/sub-25_task-flanker_run-1_bold.nii.gz +0 -0
  283. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/func/sub-25_task-flanker_run-1_events.tsv +0 -0
  284. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/func/sub-25_task-flanker_run-2_bold.nii.gz +0 -0
  285. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/func/sub-25_task-flanker_run-2_events.tsv +0 -0
  286. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/anat/sub-26_T1w.nii.gz +0 -0
  287. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/func/sub-26_task-flanker_run-1_bold.nii.gz +0 -0
  288. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/func/sub-26_task-flanker_run-1_events.tsv +0 -0
  289. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/func/sub-26_task-flanker_run-2_bold.nii.gz +0 -0
  290. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/func/sub-26_task-flanker_run-2_events.tsv +0 -0
  291. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/data/mocks3/ds000102-mimic/task-flanker_bold.json +0 -0
  292. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/test_csd.py +0 -0
  293. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/test_data.py +0 -0
  294. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/test_definitions.py +0 -0
  295. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/test_dki.py +0 -0
  296. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/test_dti.py +0 -0
  297. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/test_fixes.py +0 -0
  298. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/test_msmt.py +0 -0
  299. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/test_nn.py +0 -0
  300. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/test_registration.py +0 -0
  301. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/test_tractography.py +0 -0
  302. {pyafq-3.1 → pyafq-3.2}/AFQ/tests/test_viz.py +0 -0
  303. {pyafq-3.1 → pyafq-3.2}/AFQ/tractography/__init__.py +0 -0
  304. {pyafq-3.1 → pyafq-3.2}/AFQ/tractography/tractography.py +0 -0
  305. {pyafq-3.1 → pyafq-3.2}/AFQ/tractography/utils.py +0 -0
  306. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/__init__.py +0 -0
  307. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/bin.py +0 -0
  308. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/conversion.py +0 -0
  309. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/docs.py +0 -0
  310. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/docstring_parser.py +0 -0
  311. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/models.py +0 -0
  312. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/path.py +0 -0
  313. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/stats.py +0 -0
  314. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/streamlines.py +0 -0
  315. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/testing.py +0 -0
  316. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/tests/__init__.py +0 -0
  317. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/tests/test_conversions.py +0 -0
  318. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/tests/test_path.py +0 -0
  319. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/tests/test_stats.py +0 -0
  320. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/tests/test_streamlines.py +0 -0
  321. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/tests/test_volume.py +0 -0
  322. {pyafq-3.1 → pyafq-3.2}/AFQ/utils/volume.py +0 -0
  323. {pyafq-3.1 → pyafq-3.2}/AFQ/viz/__init__.py +0 -0
  324. {pyafq-3.1 → pyafq-3.2}/AFQ/viz/fury_backend.py +0 -0
  325. {pyafq-3.1 → pyafq-3.2}/AFQ/viz/plot.py +0 -0
  326. {pyafq-3.1 → pyafq-3.2}/AFQ/viz/plotly_backend.py +0 -0
  327. {pyafq-3.1 → pyafq-3.2}/CITATION +0 -0
  328. {pyafq-3.1 → pyafq-3.2}/LICENSE +0 -0
  329. {pyafq-3.1 → pyafq-3.2}/MANIFEST.in +0 -0
  330. {pyafq-3.1 → pyafq-3.2}/Makefile +0 -0
  331. {pyafq-3.1 → pyafq-3.2}/NOTICE.md +0 -0
  332. {pyafq-3.1 → pyafq-3.2}/README.md +0 -0
  333. {pyafq-3.1 → pyafq-3.2}/bin/pyAFQ +0 -0
  334. {pyafq-3.1 → pyafq-3.2}/docs/Makefile +0 -0
  335. {pyafq-3.1 → pyafq-3.2}/docs/source/_progressbars.py +0 -0
  336. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/BDE_Banner_revised20160211-01.jpg +0 -0
  337. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/CSVfile.png +0 -0
  338. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/FAbrain.png +0 -0
  339. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/ProfileViz.png +0 -0
  340. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/TP_viz.png +0 -0
  341. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/arcuaterois.png +0 -0
  342. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/beaware.png +0 -0
  343. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/diffusion-anisotropic.gif +0 -0
  344. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/diffusion-isotropic.gif +0 -0
  345. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/down_left_arrow.png +0 -0
  346. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/down_right_arrow.png +0 -0
  347. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/dti_in_brain.png +0 -0
  348. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/dtiexplanation.jpg +0 -0
  349. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/eScience_Logo_HR.png +0 -0
  350. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/ecosystem.jpg +0 -0
  351. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/escience-logo.png +0 -0
  352. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/greencheck.png +0 -0
  353. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/inherintambiguity.png +0 -0
  354. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/logo.png +0 -0
  355. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/modelling.png +0 -0
  356. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/modeltotrack.png +0 -0
  357. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/sphx_glr_plot_stages_of_tractometry_001.gif +0 -0
  358. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/sphx_glr_plot_stages_of_tractometry_002.gif +0 -0
  359. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/sphx_glr_plot_stages_of_tractometry_003.gif +0 -0
  360. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/sphx_glr_plot_stages_of_tractometry_004.gif +0 -0
  361. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/sphx_glr_plot_stages_of_tractometry_005.gif +0 -0
  362. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/sphx_glr_plot_stages_of_tractometry_006.gif +0 -0
  363. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/sphx_glr_plot_stages_of_tractometry_010.gif +0 -0
  364. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/sphx_glr_plot_stages_of_tractometry_011.gif +0 -0
  365. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/sphx_glr_plot_stages_of_tractometry_012.gif +0 -0
  366. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/tract_modeling2.png +0 -0
  367. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/tract_profiling.png +0 -0
  368. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/tract_recognition.png +0 -0
  369. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/tract_tractography.png +0 -0
  370. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/tractometry_pipeline.png +0 -0
  371. {pyafq-3.1 → pyafq-3.2}/docs/source/_static/tropic.png +0 -0
  372. {pyafq-3.1 → pyafq-3.2}/docs/source/_templates/footer.html +0 -0
  373. {pyafq-3.1 → pyafq-3.2}/docs/source/_templates/layout.html +0 -0
  374. {pyafq-3.1 → pyafq-3.2}/docs/source/bib.rst +0 -0
  375. {pyafq-3.1 → pyafq-3.2}/docs/source/conf.py +0 -0
  376. {pyafq-3.1 → pyafq-3.2}/docs/source/developing/contributing.rst +0 -0
  377. {pyafq-3.1 → pyafq-3.2}/docs/source/developing/definitions.rst +0 -0
  378. {pyafq-3.1 → pyafq-3.2}/docs/source/developing/index.rst +0 -0
  379. {pyafq-3.1 → pyafq-3.2}/docs/source/developing/releasing.rst +0 -0
  380. {pyafq-3.1 → pyafq-3.2}/docs/source/developing/tasks.rst +0 -0
  381. {pyafq-3.1 → pyafq-3.2}/docs/source/explanations/bundle_orientation.rst +0 -0
  382. {pyafq-3.1 → pyafq-3.2}/docs/source/explanations/index.rst +0 -0
  383. {pyafq-3.1 → pyafq-3.2}/docs/source/explanations/modeling.rst +0 -0
  384. {pyafq-3.1 → pyafq-3.2}/docs/source/explanations/profiling.rst +0 -0
  385. {pyafq-3.1 → pyafq-3.2}/docs/source/explanations/recognition.rst +0 -0
  386. {pyafq-3.1 → pyafq-3.2}/docs/source/explanations/tractography.rst +0 -0
  387. {pyafq-3.1 → pyafq-3.2}/docs/source/explanations/whats_new_3.rst +0 -0
  388. {pyafq-3.1 → pyafq-3.2}/docs/source/guides_index.rst +0 -0
  389. {pyafq-3.1 → pyafq-3.2}/docs/source/howto/cite.rst +0 -0
  390. {pyafq-3.1 → pyafq-3.2}/docs/source/howto/cleaning_params.rst +0 -0
  391. {pyafq-3.1 → pyafq-3.2}/docs/source/howto/converter.rst +0 -0
  392. {pyafq-3.1 → pyafq-3.2}/docs/source/howto/data.rst +0 -0
  393. {pyafq-3.1 → pyafq-3.2}/docs/source/howto/docker.rst +0 -0
  394. {pyafq-3.1 → pyafq-3.2}/docs/source/howto/getting_help.rst +0 -0
  395. {pyafq-3.1 → pyafq-3.2}/docs/source/howto/image.rst +0 -0
  396. {pyafq-3.1 → pyafq-3.2}/docs/source/howto/index.rst +0 -0
  397. {pyafq-3.1 → pyafq-3.2}/docs/source/howto/installation_guide.rst +0 -0
  398. {pyafq-3.1 → pyafq-3.2}/docs/source/howto/rerun.rst +0 -0
  399. {pyafq-3.1 → pyafq-3.2}/docs/source/howto/scalars.rst +0 -0
  400. {pyafq-3.1 → pyafq-3.2}/docs/source/howto/segmentation_params.rst +0 -0
  401. {pyafq-3.1 → pyafq-3.2}/docs/source/howto/singularity.rst +0 -0
  402. {pyafq-3.1 → pyafq-3.2}/docs/source/howto/tractography_params.rst +0 -0
  403. {pyafq-3.1 → pyafq-3.2}/docs/source/index.rst +0 -0
  404. {pyafq-3.1 → pyafq-3.2}/docs/source/reference/bundledict.rst +0 -0
  405. {pyafq-3.1 → pyafq-3.2}/docs/source/reference/index.rst +0 -0
  406. {pyafq-3.1 → pyafq-3.2}/docs/source/reference/mapping.rst +0 -0
  407. {pyafq-3.1 → pyafq-3.2}/docs/source/reference/methods.rst +0 -0
  408. {pyafq-3.1 → pyafq-3.2}/docs/source/reference/tissue_properties.rst +0 -0
  409. {pyafq-3.1 → pyafq-3.2}/docs/source/reference/viz_backend.rst +0 -0
  410. {pyafq-3.1 → pyafq-3.2}/docs/source/references.bib +0 -0
  411. {pyafq-3.1 → pyafq-3.2}/docs/source/sphinxext/kwargsdocs.py +0 -0
  412. {pyafq-3.1 → pyafq-3.2}/docs/source/sphinxext/methodsdocs.py +0 -0
  413. {pyafq-3.1 → pyafq-3.2}/docs/source/sphinxext/updatedocs.py +0 -0
  414. {pyafq-3.1 → pyafq-3.2}/docs/source/tutorials/index.rst +0 -0
  415. {pyafq-3.1 → pyafq-3.2}/docs/upload-gh-pages.sh +0 -0
  416. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/README.rst +0 -0
  417. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/acoustic_radiations.py +0 -0
  418. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/add_custom_bundle.py +0 -0
  419. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/afq_callosal.py +0 -0
  420. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/afq_fwdti.py +0 -0
  421. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/baby_afq.py +0 -0
  422. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/cerebellar_peduncles.py +0 -0
  423. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/cloudknot_hcp_example.py +0 -0
  424. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/optic_radiations.py +0 -0
  425. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/optic_tract.py +0 -0
  426. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/plot_stages_of_tractometry.py +0 -0
  427. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/pyAFQ_with_GPU.py +0 -0
  428. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/pyafq_2.py +0 -0
  429. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/recobundles.py +0 -0
  430. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/use_subject_space_rois_from_freesurfer.py +0 -0
  431. {pyafq-3.1 → pyafq-3.2}/examples/howto_examples/vof_example.py +0 -0
  432. {pyafq-3.1 → pyafq-3.2}/examples/tutorial_examples/README.rst +0 -0
  433. {pyafq-3.1 → pyafq-3.2}/examples/tutorial_examples/plot_003_rerun.py +0 -0
  434. {pyafq-3.1 → pyafq-3.2}/examples/tutorial_examples/plot_005_viz.py +0 -0
  435. {pyafq-3.1 → pyafq-3.2}/examples/tutorial_examples/plot_006_bids_layout.py +0 -0
  436. {pyafq-3.1 → pyafq-3.2}/examples/tutorial_examples/plot_007_rois.py +0 -0
  437. {pyafq-3.1 → pyafq-3.2}/gpu_docker/Dockerfile +0 -0
  438. {pyafq-3.1 → pyafq-3.2}/gpu_docker/docker-build.sh +0 -0
  439. {pyafq-3.1 → pyafq-3.2}/gpu_docker/docker-push.sh +0 -0
  440. {pyafq-3.1 → pyafq-3.2}/gpu_docker/pyafq_with_gpu_template.def +0 -0
  441. {pyafq-3.1 → pyafq-3.2}/pyAFQ.egg-info/SOURCES.txt +0 -0
  442. {pyafq-3.1 → pyafq-3.2}/pyAFQ.egg-info/dependency_links.txt +0 -0
  443. {pyafq-3.1 → pyafq-3.2}/pyAFQ.egg-info/not-zip-safe +0 -0
  444. {pyafq-3.1 → pyafq-3.2}/pyAFQ.egg-info/requires.txt +0 -0
  445. {pyafq-3.1 → pyafq-3.2}/pyAFQ.egg-info/top_level.txt +0 -0
  446. {pyafq-3.1 → pyafq-3.2}/pyafq_docker/Dockerfile +0 -0
  447. {pyafq-3.1 → pyafq-3.2}/pyafq_docker/docker-build.sh +0 -0
  448. {pyafq-3.1 → pyafq-3.2}/pyafq_docker/docker-push.sh +0 -0
  449. {pyafq-3.1 → pyafq-3.2}/pyproject.toml +0 -0
  450. {pyafq-3.1 → pyafq-3.2}/setup.cfg +0 -0
  451. {pyafq-3.1 → pyafq-3.2}/setup.py +0 -0
  452. {pyafq-3.1 → pyafq-3.2}/tox.ini +0 -0
@@ -300,6 +300,7 @@ def default_bd():
300
300
  templates["SLF_roi1_L"],
301
301
  templates["IFO_roi1_L"],
302
302
  templates["pARC_xroi1_L"],
303
+ templates["TPSPL_roi1_L"],
303
304
  ],
304
305
  "space": "template",
305
306
  "start": templates["pARC_L_start"],
@@ -316,6 +317,7 @@ def default_bd():
316
317
  templates["SLF_roi1_R"],
317
318
  templates["IFO_roi1_R"],
318
319
  templates["pARC_xroi1_R"],
320
+ templates["TPSPL_roi1_R"],
319
321
  ],
320
322
  "space": "template",
321
323
  "start": templates["pARC_R_start"],
@@ -325,6 +327,44 @@ def default_bd():
325
327
  "length": {"min_len": 30},
326
328
  "primary_axis": "I/S",
327
329
  },
330
+ "Left Temporo-parietal": {
331
+ "cross_midline": False,
332
+ "include": [
333
+ templates["SLFt_roi2_L"],
334
+ templates["TPSPL_roi1_L"],
335
+ ],
336
+ "exclude": [
337
+ templates["SLF_roi1_L"],
338
+ templates["IFO_roi1_L"],
339
+ templates["pARC_xroi1_L"],
340
+ ],
341
+ "space": "template",
342
+ "start": templates["pARC_L_start"],
343
+ "end": templates["pARC_L_end"],
344
+ "Left Arcuate": {"overlap": 20},
345
+ "Left Optic Radiation": {"core": "Right"},
346
+ "length": {"min_len": 30},
347
+ "primary_axis": "I/S",
348
+ },
349
+ "Right Temporo-parietal": {
350
+ "cross_midline": False,
351
+ "include": [
352
+ templates["SLFt_roi2_R"],
353
+ templates["TPSPL_roi1_R"],
354
+ ],
355
+ "exclude": [
356
+ templates["SLF_roi1_R"],
357
+ templates["IFO_roi1_R"],
358
+ templates["pARC_xroi1_R"],
359
+ ],
360
+ "space": "template",
361
+ "start": templates["pARC_R_start"],
362
+ "end": templates["pARC_R_end"],
363
+ "Right Arcuate": {"overlap": 20},
364
+ "Right Optic Radiation": {"core": "Left"},
365
+ "length": {"min_len": 30},
366
+ "primary_axis": "I/S",
367
+ },
328
368
  "Left Vertical Occipital": {
329
369
  "cross_midline": False,
330
370
  "space": "template",
@@ -783,6 +783,8 @@ template_fnames = [
783
783
  "VOF_xroi1_R.nii.gz",
784
784
  "VOF_xroi2_L.nii.gz",
785
785
  "VOF_xroi2_R.nii.gz",
786
+ "TPSPL_roi1_L.nii.gz",
787
+ "TPSPL_roi1_R.nii.gz",
786
788
  ]
787
789
 
788
790
 
@@ -903,6 +905,8 @@ template_remote_fnames = [
903
905
  "62582596",
904
906
  "62582599",
905
907
  "62582602",
908
+ "64928463",
909
+ "64928466",
906
910
  ]
907
911
 
908
912
 
@@ -1024,6 +1028,8 @@ template_md5_hashes = [
1024
1028
  "0cda34ce714759bad909fcf9051f3d64",
1025
1029
  "6b65a5e178853e993f52b438ffb0f6c6",
1026
1030
  "e36f5adf08eb3efd5849397f0f8ef6a4",
1031
+ "4418a1277ff768a5752368edda2bbcac",
1032
+ "44db3c4b841bca2e8b56ef4f650fa3d5",
1027
1033
  ]
1028
1034
 
1029
1035
  fetch_templates = _make_reusable_fetcher(
@@ -11,14 +11,6 @@ import AFQ.utils.models as ut
11
11
  __all__ = ["fit_dki", "predict"]
12
12
 
13
13
 
14
- def _fit(gtab, data, mask=None, return_S0_hat=False):
15
- dkimodel = dki.DiffusionKurtosisModel(gtab, return_S0_hat=return_S0_hat)
16
- return dkimodel.fit(
17
- data,
18
- mask=mask,
19
- )
20
-
21
-
22
14
  def fit_dki(
23
15
  data_files,
24
16
  bval_files,
@@ -28,12 +28,6 @@ def _fit(self, data, mask=None):
28
28
  for i in range(A.shape[0]):
29
29
  A[i] /= np.linalg.norm(A[i])
30
30
 
31
- A_outer = np.empty((n, n, m), dtype=np.float64)
32
- for k in range(m):
33
- for i in range(n):
34
- for j in range(n):
35
- A_outer[i, j, k] = A[k, i] * A[k, j]
36
-
37
31
  Q = R.T @ R
38
32
 
39
33
  A = csr_matrix(A)
@@ -27,7 +27,6 @@ from AFQ.models.asym_filtering import (
27
27
  )
28
28
  from AFQ.models.csd import CsdNanResponseError
29
29
  from AFQ.models.csd import _fit as csd_fit_model
30
- from AFQ.models.dki import _fit as dki_fit_model
31
30
  from AFQ.models.dti import _fit as dti_fit_model
32
31
  from AFQ.models.dti import noise_from_b0
33
32
  from AFQ.models.fwdti import _fit as fwdti_fit_model
@@ -315,7 +314,11 @@ def dki_params(brain_mask, gtab, data, citations):
315
314
  )
316
315
  )
317
316
  mask = nib.load(brain_mask).get_fdata()
318
- dkf = dki_fit_model(gtab, data, mask=mask, return_S0_hat=True)
317
+ dkimodel = dpy_dki.DiffusionKurtosisModel(gtab, return_S0_hat=True)
318
+ dkf = dkimodel.fit(
319
+ data,
320
+ mask=mask,
321
+ )
319
322
  meta = dict(
320
323
  Description=(
321
324
  "Diffusion Coefficient, encoded as a kurtosis tensor representation"
@@ -408,7 +411,9 @@ def msdki_msd(msdki_tf):
408
411
  full path to a nifti file containing
409
412
  the MSDKI mean signal diffusivity
410
413
  """
411
- return msdki_tf.msd, {"Description": "Mean Signal Diffusivity"}
414
+ msd = msdki_tf.msd.copy()
415
+ msd[msd < 0] = 0
416
+ return msd, {"Description": "Mean Signal Diffusivity"}
412
417
 
413
418
 
414
419
  @immlib.calc("msdki_msk")
@@ -419,7 +424,10 @@ def msdki_msk(msdki_tf):
419
424
  full path to a nifti file containing
420
425
  the MSDKI mean signal kurtosis
421
426
  """
422
- return msdki_tf.msk, {"Description": "Mean Signal Kurtosis"}
427
+ msk = msdki_tf.msk.copy()
428
+ msk[msk < 0] = 0
429
+ msk[msk > 10] = 0
430
+ return msk, {"Description": "Mean Signal Kurtosis"}
423
431
 
424
432
 
425
433
  @immlib.calc("csd_params")
@@ -1480,7 +1488,13 @@ def get_data_plan(kwargs):
1480
1488
  if "scalars" not in kwargs:
1481
1489
  bvals, _ = read_bvals_bvecs(kwargs["bval_file"], kwargs["bvec_file"])
1482
1490
  if len(dpg.unique_bvals_magnitude(bvals)) > 2:
1483
- kwargs["scalars"] = ["dki_fa", "dki_md", "dki_kfa", "dki_mk", "t1w_over_b0"]
1491
+ kwargs["scalars"] = [
1492
+ "dti_fa",
1493
+ "dti_md",
1494
+ "t1w_over_b0",
1495
+ "msdki_msd",
1496
+ "msdki_msk",
1497
+ ]
1484
1498
  else:
1485
1499
  kwargs["scalars"] = ["dti_fa", "dti_md", "t1w_over_b0"]
1486
1500
  else:
@@ -398,14 +398,14 @@ def get_scalar_dict(
398
398
  "dki_mk", or other scalars found in AFQ.tasks.data.
399
399
  Can also be a scalar from AFQ.definitions.image.
400
400
  Finally, can also be "t1w".
401
- Defaults for single shell data to ["dti_fa", "dti_md", "t1w"],
402
- and for multi-shell data to ["dki_fa", "dki_md", "dki_kfa",
403
- "dki_mk", "t1w"].
404
- Default: ['dti_fa', 'dti_md', 't1w']
401
+ Defaults for single shell data to ["dti_fa", "dti_md", "t1w_over_b0"],
402
+ and for multi-shell data to ["dti_fa", "dti_md", "t1w_over_b0",
403
+ "msdki_msd", "msdki_msk"].
404
+ Default: ['dti_fa', 'dti_md', 't1w_over_b0']
405
405
  """
406
- # Note: some scalars preprocessing done in mapping plan, before this step
406
+ # Note: some scalars preprocessing done in data plan, before this step
407
407
  if scalars is None:
408
- scalars = ["dti_fa", "dti_md", "t1w"]
408
+ scalars = ["dti_fa", "dti_md", "t1w_over_b0"]
409
409
  scalar_dict = {}
410
410
  for scalar in scalars:
411
411
  if isinstance(scalar, str):
@@ -2,6 +2,7 @@ import logging
2
2
 
3
3
  import immlib
4
4
  import nibabel as nib
5
+ import numpy as np
5
6
  from numba import get_num_threads
6
7
 
7
8
  from AFQ.definitions.utils import Definition
@@ -90,7 +91,7 @@ def onnx_kwargs(
90
91
 
91
92
  @immlib.calc("synthseg_model")
92
93
  @as_file(suffix="_model-synthseg2_probseg.nii.gz", subfolder="nn")
93
- def synthseg_model(t1_masked, citations, onnx_kwargs):
94
+ def synthseg_model(t1_file, citations, onnx_kwargs):
94
95
  """
95
96
  full path to the synthseg2 model segmentations
96
97
 
@@ -110,9 +111,9 @@ def synthseg_model(t1_masked, citations, onnx_kwargs):
110
111
  "SynthSeg 2.0",
111
112
  "Or, provide your own segmentations using PVEImage or PVEImages.",
112
113
  )
113
- t1_img = nib.load(t1_masked)
114
+ t1_img = nib.load(t1_file)
114
115
  predictions = run_synthseg(ort, t1_img, "synthseg2", onnx_kwargs)
115
- return predictions, dict(T1w=t1_masked)
116
+ return predictions, dict(T1w=t1_file)
116
117
 
117
118
 
118
119
  @immlib.calc("mx_model")
@@ -143,7 +144,7 @@ def mx_model(t1_file, t1w_brain_mask, citations, onnx_kwargs):
143
144
 
144
145
  @immlib.calc("t1w_brain_mask")
145
146
  @as_file(suffix="_desc-T1w_mask.nii.gz")
146
- def t1w_brain_mask(t1_file, citations, onnx_kwargs, brain_mask_definition=None):
147
+ def t1w_brain_mask(synthseg_model, brain_mask_definition=None):
147
148
  """
148
149
  full path to a nifti file containing brain mask from T1w image
149
150
 
@@ -154,28 +155,27 @@ def t1w_brain_mask(t1_file, citations, onnx_kwargs, brain_mask_definition=None):
154
155
  the brain mask, which gets applied before registration to a
155
156
  template.
156
157
  If you want no brain mask to be applied, use FullImage.
157
- If None, use Brainchop Mindgrab model.
158
+ If None, use Synthseg model.
158
159
  Default: None
159
160
 
160
161
  References
161
162
  ----------
162
- [1] Masoud, M., Hu, F., & Plis, S. (2023). Brainchop: In-browser MRI
163
- volumetric segmentation and rendering. Journal of Open Source
164
- Software, 8(83), 5098.
165
- https://doi.org/10.21105/joss.05098
163
+ [1] Billot, Benjamin, et al. "Robust machine learning segmentation
164
+ for large-scale analysis of heterogeneous clinical brain MRI
165
+ datasets." Proceedings of the National Academy of Sciences 120.9
166
+ (2023): e2216399120.
167
+ [2] Billot, Benjamin, et al. "SynthSeg: Segmentation of brain MRI scans
168
+ of any contrast and resolution without retraining." Medical image
169
+ analysis 86 (2023): 102789.
166
170
  """
167
171
  # Note that any case where brain_mask_definition is not None
168
- # is handled in get_data_plan
172
+ # is handled in get_structural_plan
169
173
  # This is just the default
170
174
 
171
- citations.add("fani2025mindgrab")
172
-
173
- ort = check_onnxruntime(
174
- "Mindgrab", "Or, provide your own brain mask using brain_mask_definition."
175
- )
176
- return run_brainchop(ort, nib.load(t1_file), "mindgrab", onnx_kwargs), dict(
177
- T1w=t1_file, model="mindgrab"
178
- )
175
+ predictions = nib.load(synthseg_model)
176
+ brain_mask = (predictions.get_fdata() > 0).astype(np.uint8)
177
+ brain_mask_img = nib.Nifti1Image(brain_mask, predictions.affine)
178
+ return brain_mask_img, dict(SynthsegPredictions=synthseg_model)
179
179
 
180
180
 
181
181
  @immlib.calc("t1_masked")
@@ -340,7 +340,7 @@ def test_AFQ_init():
340
340
  dwi_preproc_pipeline="synthetic",
341
341
  participant_labels=participant_labels,
342
342
  )
343
- myafq.export("dwi")
343
+ myafq.export("b0")
344
344
 
345
345
 
346
346
  @pytest.mark.nightly_basic
@@ -990,12 +990,20 @@ def test_AFQ_data_waypoint():
990
990
  'suffix="seg", filters={"scope": "freesurfer"},'
991
991
  "inclusive_labels=[1, 2]))"
992
992
  )
993
+ bm_def_as_str = (
994
+ "LabelledImageFile(suffix='seg', "
995
+ "filters={'scope': 'freesurfer'}, "
996
+ "exclusive_labels=[0])"
997
+ )
993
998
  config = dict(
994
999
  BIDS_PARAMS=dict(
995
1000
  bids_path=bids_path,
996
1001
  dwi_preproc_pipeline="vistasoft",
997
1002
  t1_preproc_pipeline="freesurfer",
998
1003
  ),
1004
+ STRUCTURAL=dict(
1005
+ brain_mask_definition=bm_def_as_str,
1006
+ ),
999
1007
  DATA=dict(bundle_info=bundle_dict_as_str),
1000
1008
  TISSUE=dict(pve=pve_as_str),
1001
1009
  SEGMENTATION=dict(
@@ -20,7 +20,7 @@ def test_BundleDict():
20
20
  # test defaults
21
21
  afq_bundles = abd.default_bd()
22
22
 
23
- assert len(afq_bundles) == 20
23
+ assert len(afq_bundles) == 22
24
24
 
25
25
  # Arcuate Fasciculus
26
26
  afq_bundles = abd.default_bd()["Left Arcuate", "Right Arcuate"]
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '3.1'
22
- __version_tuple__ = version_tuple = (3, 1)
21
+ __version__ = version = '3.2'
22
+ __version_tuple__ = version_tuple = (3, 2)
23
23
 
24
- __commit_id__ = commit_id = 'gce5c4b5da'
24
+ __commit_id__ = commit_id = 'gd5b3faf6a'
@@ -138,6 +138,9 @@ def altair_df_to_chart(
138
138
  "DKI MK": "",
139
139
  "DTI FA": "",
140
140
  "DTI MD": " (µm²/ms)",
141
+ "MSDKI MSD": " (µm²/ms)",
142
+ "MSDKI MSK": "",
143
+ "T1W OVER B0": "",
141
144
  }
142
145
 
143
146
  if bundle_list is None:
@@ -121,8 +121,8 @@ COLOR_DICT = OrderedDict(
121
121
  "AF_L": tableau_20[18],
122
122
  "Right Arcuate": tableau_20[19],
123
123
  "AF_R": tableau_20[19],
124
- "Left Posterior Arcuate": tableau_20[14],
125
- "Right Posterior Arcuate": tableau_20[15],
124
+ "Left Posterior Arcuate": (0.0, 0.7, 0.4),
125
+ "Right Posterior Arcuate": (0.5, 0.95, 0.7),
126
126
  "Left Vertical Occipital": vof_l_base,
127
127
  "Right Vertical Occipital": vof_r_base,
128
128
  "Left V1V3": vof_l_shades[0],
@@ -141,6 +141,10 @@ COLOR_DICT = OrderedDict(
141
141
  "Callosum Posterior Parietal": (0.8, 0.4, 0.47),
142
142
  "Callosum Occipital": (0.67, 0.27, 0.6),
143
143
  "Callosum Temporal": (0.53, 0.13, 0.33),
144
+ "Left Optic Radiation": (0.0, 0.15, 0.75),
145
+ "Right Optic Radiation": (0.3, 0.4, 0.95),
146
+ "Left Temporo-parietal": (0.65, 0.0, 0.45),
147
+ "Right Temporo-parietal": (0.85, 0.4, 0.70),
144
148
  }
145
149
  )
146
150
 
@@ -1,3 +1,14 @@
1
+ 3.2 (May 26, 2026)
2
+ ==================
3
+ Adds the temporo-parietal as a separate bundle from the
4
+ posterior arcuate fasciculus. Updates default colors
5
+ for some visual bundles for clarity. Adds mean signal DKI
6
+ params as default tissue properties and switches DKI to DTI for default
7
+ tissue properties.
8
+ * [FIX] More reliable brain masking/FA (#193)
9
+ * [ENH] Divide pARC (#194)
10
+ * [ENH] Change some visual bundle colors for pyAFQ (#192)
11
+
1
12
  3.1 (May 18, 2026)
2
13
  ==================
3
14
  Fixes a bug in VOF recogntion where some very far anterior
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyAFQ
3
- Version: 3.1
3
+ Version: 3.2
4
4
  Summary: pyAFQ: Automated Fiber Quantification ... in Python
5
5
  Home-page: https://tractometry.github.io/pyAFQ
6
6
  Download-URL: https://github.com/tractometry/pyAFQ
@@ -102,6 +102,14 @@ header.bd-header .navbar-brand > picture > img {
102
102
  .color-lightred { color: #ff9896; }
103
103
  .color-gold { color: #f2d94e; }
104
104
  .color-lightgold { color: #faeaa5; }
105
+ .color-neonyellow { color: #f2d940; }
106
+ .color-lightneonyellow { color: #faeb80; }
107
+ .color-neonblue { color: #0026bf; }
108
+ .color-lightneonblue { color: #4d66f2; }
109
+ .color-neonmagenta { color: #a60073; }
110
+ .color-lightneonmagenta { color: #d966b3; }
111
+ .color-posteriorarcuate { color: #00b266; }
112
+ .color-lightposteriorarcuate { color: #7ff2b3; }
105
113
 
106
114
  /* Callosum Colors */
107
115
  .color-darkgreen { color: #124730; }
@@ -60,6 +60,30 @@ Major Fiber Tracts
60
60
  .. role:: lightgold
61
61
  :class: color-lightgold
62
62
 
63
+ .. role:: neonyellow
64
+ :class: color-neonyellow
65
+
66
+ .. role:: lightneonyellow
67
+ :class: color-lightneonyellow
68
+
69
+ .. role:: neonblue
70
+ :class: color-neonblue
71
+
72
+ .. role:: lightneonblue
73
+ :class: color-lightneonblue
74
+
75
+ .. role:: neonmagenta
76
+ :class: color-neonmagenta
77
+
78
+ .. role:: lightneonmagenta
79
+ :class: color-lightneonmagenta
80
+
81
+ .. role:: posteriorarcuate
82
+ :class: color-posteriorarcuate
83
+
84
+ .. role:: lightposteriorarcuate
85
+ :class: color-lightposteriorarcuate
86
+
63
87
  .. role:: darkgreen
64
88
  :class: color-darkgreen
65
89
 
@@ -145,12 +169,12 @@ Major Fiber Tracts
145
169
  -
146
170
  -
147
171
  * - Left Superior Longitudinal
148
- - :grey:`Grey`
172
+ - :neonyellow:`Neon Yellow`
149
173
  -
150
174
  -
151
175
  -
152
176
  * - Right Superior Longitudinal
153
- - :lightgrey:`Light Grey`
177
+ - :lightneonyellow:`Light Neon Yellow`
154
178
  -
155
179
  -
156
180
  -
@@ -175,12 +199,12 @@ Major Fiber Tracts
175
199
  -
176
200
  -
177
201
  * - Left Posterior Arcuate
178
- - :red:`Red`
202
+ - :posteriorarcuate:`Green`
179
203
  -
180
204
  -
181
205
  -
182
206
  * - Right Posterior Arcuate
183
- - :lightred:`Light Red`
207
+ - :lightposteriorarcuate:`Light Green`
184
208
  -
185
209
  -
186
210
  -
@@ -275,12 +299,22 @@ Major Fiber Tracts
275
299
  -
276
300
  -
277
301
  * - Left Optic Radiation
278
- -
302
+ - :neonblue:`Neon Blue`
279
303
  - :cite:`Caffarra2021`
280
304
  - Optic Radiations
281
305
  - `Optic Radiations Example <../howto/howto_examples/optic_radiations.html>`_
282
306
  * - Right Optic Radiation
307
+ - :lightneonblue:`Light Neon Blue`
308
+ -
309
+ -
310
+ -
311
+ * - Left Temporo-parietal
312
+ - :neonmagenta:`Neon Magenta`
313
+ -
314
+ -
283
315
  -
316
+ * - Right Temporo-parietal
317
+ - :lightneonmagenta:`Light Neon Magenta`
284
318
  -
285
319
  -
286
320
  -
@@ -30,7 +30,7 @@ onnx_inter_threads: int
30
30
  The number of inter threads to use for onnx models. Increasing will increase memory usage significantly. Default: 1
31
31
 
32
32
  brain_mask_definition: instance from `AFQ.definitions.image`
33
- This will be used to create the brain mask, which gets applied before registration to a template. If you want no brain mask to be applied, use FullImage. If None, use Brainchop Mindgrab model. Default: None
33
+ This will be used to create the brain mask, which gets applied before registration to a template. If you want no brain mask to be applied, use FullImage. If None, use Synthseg model. Default: None
34
34
 
35
35
 
36
36
  ==========================================================
@@ -136,7 +136,7 @@ n_points_profile: int
136
136
  Number of points to resample each streamline to before calculating the tract-profiles. Default: 100
137
137
 
138
138
  scalars: list of strings and/or scalar definitions
139
- List of scalars to use. Can be any of: "dti_fa", "dti_md", "dki_fa", "dki_md", "dki_awf", "dki_mk", or other scalars found in AFQ.tasks.data. Can also be a scalar from AFQ.definitions.image. Finally, can also be "t1w". Defaults for single shell data to ["dti_fa", "dti_md", "t1w"], and for multi-shell data to ["dki_fa", "dki_md", "dki_kfa", "dki_mk", "t1w"]. Default: ['dti_fa', 'dti_md', 't1w']
139
+ List of scalars to use. Can be any of: "dti_fa", "dti_md", "dki_fa", "dki_md", "dki_awf", "dki_mk", or other scalars found in AFQ.tasks.data. Can also be a scalar from AFQ.definitions.image. Finally, can also be "t1w". Defaults for single shell data to ["dti_fa", "dti_md", "t1w_over_b0"], and for multi-shell data to ["dti_fa", "dti_md", "t1w_over_b0", "msdki_msd", "msdki_msk"]. Default: ['dti_fa', 'dti_md', 't1w_over_b0']
140
140
 
141
141
 
142
142
  ==========================================================
@@ -66,8 +66,7 @@ def afq_process_subject(subject):
66
66
  myafq = GroupAFQ(
67
67
  "local_bids_dir",
68
68
  dwi_preproc_pipeline="pipeline_name",
69
- viz_backend_spec='plotly', # this will generate both interactive html and GIFs # noqa
70
- scalars=["dki_fa", "dki_md"])
69
+ viz_backend_spec='plotly') # this will generate both interactive html and GIFs # noqa
71
70
 
72
71
  # export_all runs the entire pipeline and creates many useful derivates
73
72
  myafq.export_all()
@@ -128,13 +128,13 @@ myafq = GroupAFQ(
128
128
  tracking_params=tracking_params)
129
129
 
130
130
  ##########################################################################
131
- # Calculating DKI FA (Diffusion Kurtosis Imaging Fractional Anisotropy)
131
+ # Calculating DTI FA (Diffusion Tensor Imaging Fractional Anisotropy)
132
132
  # ------------------------------------------------------------------
133
133
  # The GroupAFQ object has a method called `export`, which allows the user
134
134
  # to calculate various derived quantities from the data.
135
135
  #
136
- # For example, FA can be computed using the DKI model, by explicitly
137
- # calling `myafq.export("dki_fa")`. This triggers the computation of DKI
136
+ # For example, FA can be computed using the DTI model, by explicitly
137
+ # calling `myafq.export("dti_fa")`. This triggers the computation of DTI
138
138
  # parameters for all subjects in the dataset, and stores the results in
139
139
  # the AFQ derivatives directory. In addition, it calculates the FA
140
140
  # from these parameters and stores it in a different file in the same
@@ -142,7 +142,7 @@ myafq = GroupAFQ(
142
142
  #
143
143
  # .. note::
144
144
  #
145
- # The AFQ API computes quantities lazily. This means that DKI parameters
145
+ # The AFQ API computes quantities lazily. This means that DTI parameters
146
146
  # are not computed until they are required. This means that the first
147
147
  # line below is the one that requires time.
148
148
  #
@@ -151,7 +151,7 @@ myafq = GroupAFQ(
151
151
  # This means that to extract the filename corresponding to the FA of the first
152
152
  # subject, we can do:
153
153
 
154
- FA_fname = myafq.export("dki_fa", collapse=False)["NDARAA948VFH"]["HBNsiteRU"]
154
+ FA_fname = myafq.export("dti_fa", collapse=False)["NDARAA948VFH"]["HBNsiteRU"]
155
155
 
156
156
  # We will then use `nibabel` to load the deriviative file and retrieve the
157
157
  # data array.
@@ -240,7 +240,12 @@ fig_files = myafq.export("tract_profile_plots", collapse=False)[
240
240
  profiles_df = myafq.combine_profiles()
241
241
  altair_df = ava.combined_profiles_df_to_altair_df(
242
242
  profiles_df,
243
- tissue_properties=['dki_fa', 'dki_md'])
243
+ tissue_properties=[
244
+ "dti_fa",
245
+ "dti_md",
246
+ "t1w_over_b0",
247
+ "msdki_msd",
248
+ "msdki_msk"])
244
249
  altair_chart = ava.altair_df_to_chart(altair_df)
245
250
  altair_chart.display()
246
251
 
@@ -145,27 +145,27 @@ myafq = ParticipantAFQ(
145
145
  )
146
146
 
147
147
  ##########################################################################
148
- # Calculating DKI FA (Diffusion Tensor Imaging Fractional Anisotropy)
148
+ # Calculating DTI FA (Diffusion Tensor Imaging Fractional Anisotropy)
149
149
  # ------------------------------------------------------------------
150
150
  # The ParticipantAFQ object has a method called ``export``, which allows the user
151
151
  # to calculate various derived quantities from the data.
152
152
  #
153
- # For example, FA can be computed using the DKI model, by explicitly
154
- # calling ``myafq.export("dki_fa")``. This triggers the computation of DKI
153
+ # For example, FA can be computed using the DTI model, by explicitly
154
+ # calling ``myafq.export("dti_fa")``. This triggers the computation of DTI
155
155
  # parameters, and stores the results in the AFQ derivatives directory.
156
156
  # In addition, it calculates the FA from these parameters and stores it in a
157
157
  # different file in the same directory.
158
158
  #
159
159
  # .. note::
160
160
  #
161
- # The AFQ API computes quantities lazily. This means that DKI parameters
161
+ # The AFQ API computes quantities lazily. This means that DTI parameters
162
162
  # are not computed until they are required. This means that the first
163
163
  # line below is the one that requires time.
164
164
  #
165
165
  # The result of the call to ``export`` is the filename of the corresponding FA
166
166
  # files.
167
167
 
168
- FA_fname = myafq.export("dki_fa")
168
+ FA_fname = myafq.export("dti_fa")
169
169
 
170
170
  ##########################################################################
171
171
  # We will then use ``nibabel`` to load the deriviative file and retrieve the
@@ -100,24 +100,24 @@ myafq.export("help")
100
100
 
101
101
 
102
102
  ##########################################################################
103
- # Calculating DKI FA (Diffusion Tensor Imaging Fractional Anisotropy)
103
+ # Calculating DTI FA (Diffusion Tensor Imaging Fractional Anisotropy)
104
104
  # ------------------------------------------------------------------
105
- # FA can be computed using the DKI model, by explicitly calling
106
- # ``myafq.export("dki_fa")``. This triggers the computation of DKI parameters,
105
+ # FA can be computed using the DTI model, by explicitly calling
106
+ # ``myafq.export("dti_fa")``. This triggers the computation of DTI parameters,
107
107
  # and stores the results in the AFQ derivatives directory. In addition, it
108
108
  # calculates the FA from these parameters and stores it in a different file in
109
109
  # the same directory.
110
110
  #
111
111
  # .. note::
112
112
  #
113
- # The AFQ API computes quantities lazily. This means that DKI parameters
113
+ # The AFQ API computes quantities lazily. This means that DTI parameters
114
114
  # are not computed until they are required. This means that the first
115
115
  # line below is the one that requires time.
116
116
  #
117
117
  # The result of the call to ``export`` is the filename of the corresponding FA
118
118
  # files.
119
119
 
120
- FA_fname = myafq.export("dki_fa")
120
+ FA_fname = myafq.export("dti_fa")
121
121
 
122
122
 
123
123
  ##########################################################################
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyAFQ
3
- Version: 3.1
3
+ Version: 3.2
4
4
  Summary: pyAFQ: Automated Fiber Quantification ... in Python
5
5
  Home-page: https://tractometry.github.io/pyAFQ
6
6
  Download-URL: https://github.com/tractometry/pyAFQ
File without changes
File without changes
File without changes
File without changes