pyAFQ 1.3.2__tar.gz → 1.3.4__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 (398) hide show
  1. {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/docbuild.yml +2 -3
  2. {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/publish-to-test-pypi.yml +13 -13
  3. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/_fixes.py +30 -25
  4. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/api/bundle_dict.py +82 -84
  5. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/api/group.py +37 -41
  6. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/api/participant.py +2 -3
  7. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/api/utils.py +3 -5
  8. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/data/fetch.py +9 -20
  9. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/definitions/mapping.py +1 -1
  10. pyafq-1.3.4/AFQ/recognition/cleaning.py +184 -0
  11. pyafq-1.3.4/AFQ/recognition/criteria.py +358 -0
  12. pyafq-1.3.4/AFQ/recognition/curvature.py +52 -0
  13. pyafq-1.3.4/AFQ/recognition/preprocess.py +73 -0
  14. pyafq-1.3.4/AFQ/recognition/recognize.py +309 -0
  15. pyafq-1.3.4/AFQ/recognition/roi.py +94 -0
  16. pyafq-1.3.2/AFQ/tests/test_segmentation.py → pyafq-1.3.4/AFQ/recognition/tests/test_recognition.py +54 -174
  17. pyafq-1.3.4/AFQ/recognition/tests/test_rois.py +102 -0
  18. pyafq-1.3.4/AFQ/recognition/tests/test_utils.py +75 -0
  19. pyafq-1.3.4/AFQ/recognition/utils.py +222 -0
  20. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tasks/data.py +5 -14
  21. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tasks/segmentation.py +38 -38
  22. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tasks/utils.py +2 -3
  23. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tasks/viz.py +26 -27
  24. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_api.py +12 -6
  25. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_bundle_dict.py +0 -3
  26. pyafq-1.3.4/AFQ/tests/test_fixes.py +72 -0
  27. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/bin.py +8 -6
  28. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/streamlines.py +4 -5
  29. pyafq-1.3.4/AFQ/utils/tests/__init__.py +0 -0
  30. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/version.py +2 -2
  31. pyafq-1.3.4/AFQ/viz/__init__.py +0 -0
  32. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/viz/plot.py +6 -6
  33. {pyafq-1.3.2 → pyafq-1.3.4}/CHANGES.rst +16 -5
  34. {pyafq-1.3.2 → pyafq-1.3.4}/PKG-INFO +1 -1
  35. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/_progressbars.py +0 -2
  36. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/kwargs.rst +2 -2
  37. pyafq-1.3.4/docs/source/reference/bundledict.rst +98 -0
  38. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/reference/kwargs.rst +24 -7
  39. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/reference/methods.rst +40 -0
  40. {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/baby_afq.py +1 -5
  41. {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/plot_recobundles.py +3 -2
  42. {pyafq-1.3.2 → pyafq-1.3.4}/examples/tutorial_examples/plot_001_afq_api.py +1 -1
  43. {pyafq-1.3.2 → pyafq-1.3.4}/gpu_docker/Dockerfile +1 -1
  44. {pyafq-1.3.2 → pyafq-1.3.4}/pyAFQ.egg-info/PKG-INFO +1 -1
  45. {pyafq-1.3.2 → pyafq-1.3.4}/pyAFQ.egg-info/SOURCES.txt +12 -2
  46. {pyafq-1.3.2 → pyafq-1.3.4}/pyafq_docker/Dockerfile +1 -1
  47. pyafq-1.3.2/AFQ/segmentation.py +0 -1444
  48. pyafq-1.3.2/AFQ/tests/test_fixes.py +0 -62
  49. pyafq-1.3.2/docs/source/reference/bundledict.rst +0 -64
  50. {pyafq-1.3.2 → pyafq-1.3.4}/.github/CITATION.cff +0 -0
  51. {pyafq-1.3.2 → pyafq-1.3.4}/.github/CONTRIBUTING.md +0 -0
  52. {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/docker_pyafq.yml +0 -0
  53. {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/docker_pyafq_cuda12.yml +0 -0
  54. {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/nightly_anisotropic_test.yml +0 -0
  55. {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/nightly_basic_test.yml +0 -0
  56. {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/nightly_custom_test.yml +0 -0
  57. {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/nightly_pft_test.yml +0 -0
  58. {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/nightly_reco80_test.yml +0 -0
  59. {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/nightly_reco_test.yml +0 -0
  60. {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/nightly_test.yml +0 -0
  61. {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/test.yml +0 -0
  62. {pyafq-1.3.2 → pyafq-1.3.4}/.gitignore +0 -0
  63. {pyafq-1.3.2 → pyafq-1.3.4}/.mailmap +0 -0
  64. {pyafq-1.3.2 → pyafq-1.3.4}/.maintenance/update_changes.sh +0 -0
  65. {pyafq-1.3.2 → pyafq-1.3.4}/.maintenance/update_zenodo.py +0 -0
  66. {pyafq-1.3.2 → pyafq-1.3.4}/.pep8speaks.yml +0 -0
  67. {pyafq-1.3.2 → pyafq-1.3.4}/.zenodo.json +0 -0
  68. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/__init__.py +0 -0
  69. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/afq_bids_entities.json +0 -0
  70. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/api/__init__.py +0 -0
  71. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/data/__init__.py +0 -0
  72. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/data/utils.py +0 -0
  73. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/definitions/__init__.py +0 -0
  74. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/definitions/image.py +0 -0
  75. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/definitions/utils.py +0 -0
  76. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/models/QBallTP.py +0 -0
  77. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/models/__init__.py +0 -0
  78. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/models/csd.py +0 -0
  79. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/models/dki.py +0 -0
  80. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/models/dti.py +0 -0
  81. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/models/fwdti.py +0 -0
  82. {pyafq-1.3.2/AFQ/tasks → pyafq-1.3.4/AFQ/recognition}/__init__.py +0 -0
  83. {pyafq-1.3.2/AFQ → pyafq-1.3.4/AFQ/recognition}/tests/__init__.py +0 -0
  84. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/registration.py +0 -0
  85. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/.datalad/.gitattributes → /pyafq-1.3.4/AFQ/tasks/__init__.py +0 -0
  86. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tasks/decorators.py +0 -0
  87. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tasks/mapping.py +0 -0
  88. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tasks/tractography.py +0 -0
  89. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/.datalad/config → /pyafq-1.3.4/AFQ/tests/__init__.py +0 -0
  90. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/data/MoriGroups_Test.mat +0 -0
  91. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/data/WholeBrainFG_test.mat +0 -0
  92. {pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic → pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/.datalad}/.gitattributes +0 -0
  93. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/CHANGES → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/.datalad/config +0 -0
  94. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/README → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/.gitattributes +0 -0
  95. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/annex-uuid → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/CHANGES +0 -0
  96. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/aMRIQC.csv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/README +0 -0
  97. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/data/mocks3/ds000102-mimic/T1w.json +0 -0
  98. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_group.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/annex-uuid +0 -0
  99. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/data/mocks3/ds000102-mimic/dataset_description.json +0 -0
  100. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-01.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/aMRIQC.csv +0 -0
  101. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-02.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_group.pdf +0 -0
  102. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-03.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-01.pdf +0 -0
  103. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-04.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-02.pdf +0 -0
  104. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-05.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-03.pdf +0 -0
  105. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-06.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-04.pdf +0 -0
  106. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-07.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-05.pdf +0 -0
  107. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-08.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-06.pdf +0 -0
  108. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-09.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-07.pdf +0 -0
  109. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-10.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-08.pdf +0 -0
  110. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-11.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-09.pdf +0 -0
  111. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-12.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-10.pdf +0 -0
  112. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-13.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-11.pdf +0 -0
  113. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-14.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-12.pdf +0 -0
  114. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-15.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-13.pdf +0 -0
  115. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-16.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-14.pdf +0 -0
  116. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-17.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-15.pdf +0 -0
  117. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-18.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-16.pdf +0 -0
  118. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-19.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-17.pdf +0 -0
  119. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-20.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-18.pdf +0 -0
  120. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-21.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-19.pdf +0 -0
  121. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-22.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-20.pdf +0 -0
  122. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-23.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-21.pdf +0 -0
  123. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-24.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-22.pdf +0 -0
  124. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-25.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-23.pdf +0 -0
  125. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-26.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-24.pdf +0 -0
  126. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/fMRIQC.csv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-25.pdf +0 -0
  127. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_group.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/anatomical_sub-26.pdf +0 -0
  128. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-01.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/fMRIQC.csv +0 -0
  129. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-02.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_group.pdf +0 -0
  130. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-03.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-01.pdf +0 -0
  131. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-04.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-02.pdf +0 -0
  132. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-05.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-03.pdf +0 -0
  133. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-06.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-04.pdf +0 -0
  134. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-07.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-05.pdf +0 -0
  135. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-08.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-06.pdf +0 -0
  136. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-09.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-07.pdf +0 -0
  137. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-10.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-08.pdf +0 -0
  138. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-11.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-09.pdf +0 -0
  139. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-12.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-10.pdf +0 -0
  140. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-13.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-11.pdf +0 -0
  141. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-14.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-12.pdf +0 -0
  142. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-15.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-13.pdf +0 -0
  143. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-16.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-14.pdf +0 -0
  144. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-17.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-15.pdf +0 -0
  145. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-18.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-16.pdf +0 -0
  146. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-19.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-17.pdf +0 -0
  147. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-20.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-18.pdf +0 -0
  148. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-21.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-19.pdf +0 -0
  149. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-22.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-20.pdf +0 -0
  150. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-23.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-21.pdf +0 -0
  151. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-24.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-22.pdf +0 -0
  152. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-25.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-23.pdf +0 -0
  153. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-26.pdf → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-24.pdf +0 -0
  154. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/participants.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-25.pdf +0 -0
  155. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/anat/sub-01_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/derivatives/mriqc/functional_sub-26.pdf +0 -0
  156. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/func/sub-01_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/participants.tsv +0 -0
  157. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/func/sub-01_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/anat/sub-01_T1w.nii.gz +0 -0
  158. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/func/sub-01_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/func/sub-01_task-flanker_run-1_bold.nii.gz +0 -0
  159. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/func/sub-01_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/func/sub-01_task-flanker_run-1_events.tsv +0 -0
  160. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/anat/sub-02_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/func/sub-01_task-flanker_run-2_bold.nii.gz +0 -0
  161. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/func/sub-02_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-01/func/sub-01_task-flanker_run-2_events.tsv +0 -0
  162. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/func/sub-02_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/anat/sub-02_T1w.nii.gz +0 -0
  163. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/func/sub-02_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/func/sub-02_task-flanker_run-1_bold.nii.gz +0 -0
  164. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/func/sub-02_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/func/sub-02_task-flanker_run-1_events.tsv +0 -0
  165. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/anat/sub-03_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/func/sub-02_task-flanker_run-2_bold.nii.gz +0 -0
  166. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/func/sub-03_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-02/func/sub-02_task-flanker_run-2_events.tsv +0 -0
  167. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/func/sub-03_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/anat/sub-03_T1w.nii.gz +0 -0
  168. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/func/sub-03_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/func/sub-03_task-flanker_run-1_bold.nii.gz +0 -0
  169. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/func/sub-03_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/func/sub-03_task-flanker_run-1_events.tsv +0 -0
  170. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/anat/sub-04_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/func/sub-03_task-flanker_run-2_bold.nii.gz +0 -0
  171. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/func/sub-04_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-03/func/sub-03_task-flanker_run-2_events.tsv +0 -0
  172. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/func/sub-04_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/anat/sub-04_T1w.nii.gz +0 -0
  173. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/func/sub-04_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/func/sub-04_task-flanker_run-1_bold.nii.gz +0 -0
  174. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/func/sub-04_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/func/sub-04_task-flanker_run-1_events.tsv +0 -0
  175. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/anat/sub-05_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/func/sub-04_task-flanker_run-2_bold.nii.gz +0 -0
  176. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/func/sub-05_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-04/func/sub-04_task-flanker_run-2_events.tsv +0 -0
  177. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/func/sub-05_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/anat/sub-05_T1w.nii.gz +0 -0
  178. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/func/sub-05_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/func/sub-05_task-flanker_run-1_bold.nii.gz +0 -0
  179. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/func/sub-05_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/func/sub-05_task-flanker_run-1_events.tsv +0 -0
  180. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/anat/sub-06_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/func/sub-05_task-flanker_run-2_bold.nii.gz +0 -0
  181. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/func/sub-06_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-05/func/sub-05_task-flanker_run-2_events.tsv +0 -0
  182. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/func/sub-06_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/anat/sub-06_T1w.nii.gz +0 -0
  183. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/func/sub-06_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/func/sub-06_task-flanker_run-1_bold.nii.gz +0 -0
  184. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/func/sub-06_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/func/sub-06_task-flanker_run-1_events.tsv +0 -0
  185. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/anat/sub-07_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/func/sub-06_task-flanker_run-2_bold.nii.gz +0 -0
  186. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/func/sub-07_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-06/func/sub-06_task-flanker_run-2_events.tsv +0 -0
  187. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/func/sub-07_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/anat/sub-07_T1w.nii.gz +0 -0
  188. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/func/sub-07_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/func/sub-07_task-flanker_run-1_bold.nii.gz +0 -0
  189. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/func/sub-07_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/func/sub-07_task-flanker_run-1_events.tsv +0 -0
  190. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/anat/sub-08_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/func/sub-07_task-flanker_run-2_bold.nii.gz +0 -0
  191. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/func/sub-08_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-07/func/sub-07_task-flanker_run-2_events.tsv +0 -0
  192. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/func/sub-08_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/anat/sub-08_T1w.nii.gz +0 -0
  193. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/func/sub-08_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/func/sub-08_task-flanker_run-1_bold.nii.gz +0 -0
  194. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/func/sub-08_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/func/sub-08_task-flanker_run-1_events.tsv +0 -0
  195. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/anat/sub-09_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/func/sub-08_task-flanker_run-2_bold.nii.gz +0 -0
  196. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/func/sub-09_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-08/func/sub-08_task-flanker_run-2_events.tsv +0 -0
  197. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/func/sub-09_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/anat/sub-09_T1w.nii.gz +0 -0
  198. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/func/sub-09_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/func/sub-09_task-flanker_run-1_bold.nii.gz +0 -0
  199. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/func/sub-09_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/func/sub-09_task-flanker_run-1_events.tsv +0 -0
  200. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/anat/sub-10_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/func/sub-09_task-flanker_run-2_bold.nii.gz +0 -0
  201. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/func/sub-10_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-09/func/sub-09_task-flanker_run-2_events.tsv +0 -0
  202. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/func/sub-10_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/anat/sub-10_T1w.nii.gz +0 -0
  203. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/func/sub-10_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/func/sub-10_task-flanker_run-1_bold.nii.gz +0 -0
  204. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/func/sub-10_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/func/sub-10_task-flanker_run-1_events.tsv +0 -0
  205. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/anat/sub-11_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/func/sub-10_task-flanker_run-2_bold.nii.gz +0 -0
  206. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/func/sub-11_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-10/func/sub-10_task-flanker_run-2_events.tsv +0 -0
  207. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/func/sub-11_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/anat/sub-11_T1w.nii.gz +0 -0
  208. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/func/sub-11_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/func/sub-11_task-flanker_run-1_bold.nii.gz +0 -0
  209. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/func/sub-11_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/func/sub-11_task-flanker_run-1_events.tsv +0 -0
  210. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/anat/sub-12_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/func/sub-11_task-flanker_run-2_bold.nii.gz +0 -0
  211. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/func/sub-12_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-11/func/sub-11_task-flanker_run-2_events.tsv +0 -0
  212. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/func/sub-12_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/anat/sub-12_T1w.nii.gz +0 -0
  213. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/func/sub-12_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/func/sub-12_task-flanker_run-1_bold.nii.gz +0 -0
  214. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/func/sub-12_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/func/sub-12_task-flanker_run-1_events.tsv +0 -0
  215. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/anat/sub-13_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/func/sub-12_task-flanker_run-2_bold.nii.gz +0 -0
  216. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/func/sub-13_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-12/func/sub-12_task-flanker_run-2_events.tsv +0 -0
  217. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/func/sub-13_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/anat/sub-13_T1w.nii.gz +0 -0
  218. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/func/sub-13_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/func/sub-13_task-flanker_run-1_bold.nii.gz +0 -0
  219. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/func/sub-13_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/func/sub-13_task-flanker_run-1_events.tsv +0 -0
  220. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/anat/sub-14_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/func/sub-13_task-flanker_run-2_bold.nii.gz +0 -0
  221. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/func/sub-14_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-13/func/sub-13_task-flanker_run-2_events.tsv +0 -0
  222. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/func/sub-14_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/anat/sub-14_T1w.nii.gz +0 -0
  223. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/func/sub-14_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/func/sub-14_task-flanker_run-1_bold.nii.gz +0 -0
  224. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/func/sub-14_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/func/sub-14_task-flanker_run-1_events.tsv +0 -0
  225. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/anat/sub-15_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/func/sub-14_task-flanker_run-2_bold.nii.gz +0 -0
  226. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/func/sub-15_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-14/func/sub-14_task-flanker_run-2_events.tsv +0 -0
  227. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/func/sub-15_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/anat/sub-15_T1w.nii.gz +0 -0
  228. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/func/sub-15_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/func/sub-15_task-flanker_run-1_bold.nii.gz +0 -0
  229. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/func/sub-15_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/func/sub-15_task-flanker_run-1_events.tsv +0 -0
  230. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/anat/sub-16_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/func/sub-15_task-flanker_run-2_bold.nii.gz +0 -0
  231. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/func/sub-16_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-15/func/sub-15_task-flanker_run-2_events.tsv +0 -0
  232. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/func/sub-16_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/anat/sub-16_T1w.nii.gz +0 -0
  233. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/func/sub-16_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/func/sub-16_task-flanker_run-1_bold.nii.gz +0 -0
  234. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/func/sub-16_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/func/sub-16_task-flanker_run-1_events.tsv +0 -0
  235. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/anat/sub-17_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/func/sub-16_task-flanker_run-2_bold.nii.gz +0 -0
  236. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/func/sub-17_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-16/func/sub-16_task-flanker_run-2_events.tsv +0 -0
  237. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/func/sub-17_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/anat/sub-17_T1w.nii.gz +0 -0
  238. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/func/sub-17_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/func/sub-17_task-flanker_run-1_bold.nii.gz +0 -0
  239. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/func/sub-17_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/func/sub-17_task-flanker_run-1_events.tsv +0 -0
  240. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/anat/sub-18_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/func/sub-17_task-flanker_run-2_bold.nii.gz +0 -0
  241. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/func/sub-18_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-17/func/sub-17_task-flanker_run-2_events.tsv +0 -0
  242. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/func/sub-18_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/anat/sub-18_T1w.nii.gz +0 -0
  243. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/func/sub-18_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/func/sub-18_task-flanker_run-1_bold.nii.gz +0 -0
  244. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/func/sub-18_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/func/sub-18_task-flanker_run-1_events.tsv +0 -0
  245. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/anat/sub-19_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/func/sub-18_task-flanker_run-2_bold.nii.gz +0 -0
  246. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/func/sub-19_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-18/func/sub-18_task-flanker_run-2_events.tsv +0 -0
  247. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/func/sub-19_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/anat/sub-19_T1w.nii.gz +0 -0
  248. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/func/sub-19_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/func/sub-19_task-flanker_run-1_bold.nii.gz +0 -0
  249. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/func/sub-19_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/func/sub-19_task-flanker_run-1_events.tsv +0 -0
  250. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/anat/sub-20_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/func/sub-19_task-flanker_run-2_bold.nii.gz +0 -0
  251. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/func/sub-20_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-19/func/sub-19_task-flanker_run-2_events.tsv +0 -0
  252. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/func/sub-20_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/anat/sub-20_T1w.nii.gz +0 -0
  253. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/func/sub-20_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/func/sub-20_task-flanker_run-1_bold.nii.gz +0 -0
  254. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/func/sub-20_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/func/sub-20_task-flanker_run-1_events.tsv +0 -0
  255. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/anat/sub-21_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/func/sub-20_task-flanker_run-2_bold.nii.gz +0 -0
  256. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/func/sub-21_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-20/func/sub-20_task-flanker_run-2_events.tsv +0 -0
  257. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/func/sub-21_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/anat/sub-21_T1w.nii.gz +0 -0
  258. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/func/sub-21_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/func/sub-21_task-flanker_run-1_bold.nii.gz +0 -0
  259. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/func/sub-21_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/func/sub-21_task-flanker_run-1_events.tsv +0 -0
  260. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/anat/sub-22_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/func/sub-21_task-flanker_run-2_bold.nii.gz +0 -0
  261. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/func/sub-22_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-21/func/sub-21_task-flanker_run-2_events.tsv +0 -0
  262. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/func/sub-22_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/anat/sub-22_T1w.nii.gz +0 -0
  263. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/func/sub-22_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/func/sub-22_task-flanker_run-1_bold.nii.gz +0 -0
  264. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/func/sub-22_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/func/sub-22_task-flanker_run-1_events.tsv +0 -0
  265. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/anat/sub-23_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/func/sub-22_task-flanker_run-2_bold.nii.gz +0 -0
  266. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/func/sub-23_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-22/func/sub-22_task-flanker_run-2_events.tsv +0 -0
  267. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/func/sub-23_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/anat/sub-23_T1w.nii.gz +0 -0
  268. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/func/sub-23_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/func/sub-23_task-flanker_run-1_bold.nii.gz +0 -0
  269. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/func/sub-23_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/func/sub-23_task-flanker_run-1_events.tsv +0 -0
  270. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/anat/sub-24_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/func/sub-23_task-flanker_run-2_bold.nii.gz +0 -0
  271. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/func/sub-24_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-23/func/sub-23_task-flanker_run-2_events.tsv +0 -0
  272. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/func/sub-24_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/anat/sub-24_T1w.nii.gz +0 -0
  273. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/func/sub-24_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/func/sub-24_task-flanker_run-1_bold.nii.gz +0 -0
  274. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/func/sub-24_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/func/sub-24_task-flanker_run-1_events.tsv +0 -0
  275. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/anat/sub-25_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/func/sub-24_task-flanker_run-2_bold.nii.gz +0 -0
  276. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/func/sub-25_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-24/func/sub-24_task-flanker_run-2_events.tsv +0 -0
  277. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/func/sub-25_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/anat/sub-25_T1w.nii.gz +0 -0
  278. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/func/sub-25_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/func/sub-25_task-flanker_run-1_bold.nii.gz +0 -0
  279. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/func/sub-25_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/func/sub-25_task-flanker_run-1_events.tsv +0 -0
  280. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/anat/sub-26_T1w.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/func/sub-25_task-flanker_run-2_bold.nii.gz +0 -0
  281. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/func/sub-26_task-flanker_run-1_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-25/func/sub-25_task-flanker_run-2_events.tsv +0 -0
  282. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/func/sub-26_task-flanker_run-1_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/anat/sub-26_T1w.nii.gz +0 -0
  283. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/func/sub-26_task-flanker_run-2_bold.nii.gz → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/func/sub-26_task-flanker_run-1_bold.nii.gz +0 -0
  284. /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/func/sub-26_task-flanker_run-2_events.tsv → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/func/sub-26_task-flanker_run-1_events.tsv +0 -0
  285. /pyafq-1.3.2/AFQ/tractography/__init__.py → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/func/sub-26_task-flanker_run-2_bold.nii.gz +0 -0
  286. /pyafq-1.3.2/AFQ/utils/__init__.py → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/sub-26/func/sub-26_task-flanker_run-2_events.tsv +0 -0
  287. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/data/mocks3/ds000102-mimic/task-flanker_bold.json +0 -0
  288. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_csd.py +0 -0
  289. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_data.py +0 -0
  290. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_definitions.py +0 -0
  291. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_dki.py +0 -0
  292. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_dti.py +0 -0
  293. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_registration.py +0 -0
  294. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_tractography.py +0 -0
  295. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_viz.py +0 -0
  296. {pyafq-1.3.2/AFQ/utils/tests → pyafq-1.3.4/AFQ/tractography}/__init__.py +0 -0
  297. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tractography/gputractography.py +0 -0
  298. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tractography/tractography.py +0 -0
  299. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tractography/utils.py +0 -0
  300. {pyafq-1.3.2/AFQ/viz → pyafq-1.3.4/AFQ/utils}/__init__.py +0 -0
  301. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/conversion.py +0 -0
  302. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/docs.py +0 -0
  303. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/models.py +0 -0
  304. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/path.py +0 -0
  305. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/stats.py +0 -0
  306. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/testing.py +0 -0
  307. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/tests/test_conversions.py +0 -0
  308. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/tests/test_path.py +0 -0
  309. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/tests/test_stats.py +0 -0
  310. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/tests/test_streamlines.py +0 -0
  311. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/tests/test_volume.py +0 -0
  312. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/volume.py +0 -0
  313. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/viz/altair.py +0 -0
  314. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/viz/fury_backend.py +0 -0
  315. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/viz/plotly_backend.py +0 -0
  316. {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/viz/utils.py +0 -0
  317. {pyafq-1.3.2 → pyafq-1.3.4}/CITATION +0 -0
  318. {pyafq-1.3.2 → pyafq-1.3.4}/LICENSE +0 -0
  319. {pyafq-1.3.2 → pyafq-1.3.4}/MANIFEST.in +0 -0
  320. {pyafq-1.3.2 → pyafq-1.3.4}/Makefile +0 -0
  321. {pyafq-1.3.2 → pyafq-1.3.4}/README.md +0 -0
  322. {pyafq-1.3.2 → pyafq-1.3.4}/bin/pyAFQ +0 -0
  323. {pyafq-1.3.2 → pyafq-1.3.4}/docs/Makefile +0 -0
  324. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/_static/BDE_Banner_revised20160211-01.jpg +0 -0
  325. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/_static/custom.css +0 -0
  326. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/_static/eScience_Logo_HR.png +0 -0
  327. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/_static/escience-logo.png +0 -0
  328. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/_static/logo.png +0 -0
  329. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/_templates/layout.html +0 -0
  330. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/conf.py +0 -0
  331. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/_static/down_left_arrow.png +0 -0
  332. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/_static/down_right_arrow.png +0 -0
  333. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/_static/greencheck.png +0 -0
  334. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/_static/tract_modeling2.png +0 -0
  335. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/_static/tract_profiling.png +0 -0
  336. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/_static/tract_recognition.png +0 -0
  337. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/_static/tract_tractography.png +0 -0
  338. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/bundle_orientation.rst +0 -0
  339. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/index.rst +0 -0
  340. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/modeling.rst +0 -0
  341. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/profiling.rst +0 -0
  342. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/recognition.rst +0 -0
  343. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/tractography.rst +0 -0
  344. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/tractometry_pipeline.rst +0 -0
  345. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/cite.rst +0 -0
  346. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/contributing.rst +0 -0
  347. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/developing/definitions.rst +0 -0
  348. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/developing/index.rst +0 -0
  349. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/developing/releasing.rst +0 -0
  350. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/developing/tasks.rst +0 -0
  351. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/getting_help.rst +0 -0
  352. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/index.rst +0 -0
  353. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/installation_guide.rst +0 -0
  354. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/converter.rst +0 -0
  355. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/data.rst +0 -0
  356. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/docker.rst +0 -0
  357. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/image.rst +0 -0
  358. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/index.rst +0 -0
  359. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/methods.rst +0 -0
  360. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/scalars.rst +0 -0
  361. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/index.rst +0 -0
  362. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/reference/index.rst +0 -0
  363. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/reference/mapping.rst +0 -0
  364. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/reference/viz_backend.rst +0 -0
  365. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/sphinxext/kwargsdocs.py +0 -0
  366. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/sphinxext/methodsdocs.py +0 -0
  367. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/sphinxext/updatedocs.py +0 -0
  368. {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/tutorials/index.rst +0 -0
  369. {pyafq-1.3.2 → pyafq-1.3.4}/docs/upload-gh-pages.sh +0 -0
  370. {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/README.rst +0 -0
  371. {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/add_custom_bundle.py +0 -0
  372. {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/cerebellar_peduncles.py +0 -0
  373. {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/cloudknot_example.py +0 -0
  374. {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/cloudknot_hcp_example.py +0 -0
  375. {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/plot_acoustic_radiations.py +0 -0
  376. {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/plot_afq_callosal.py +0 -0
  377. {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/plot_afq_fwdti.py +0 -0
  378. {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/plot_optic_radiations.py +0 -0
  379. {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/plot_stages_of_tractometry.py +0 -0
  380. {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/use_subject_space_rois_from_freesurfer.py +0 -0
  381. {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/vof_example.py +0 -0
  382. {pyafq-1.3.2 → pyafq-1.3.4}/examples/tutorial_examples/README.rst +0 -0
  383. {pyafq-1.3.2 → pyafq-1.3.4}/examples/tutorial_examples/plot_002_bids_layout.py +0 -0
  384. {pyafq-1.3.2 → pyafq-1.3.4}/examples/tutorial_examples/plot_003_viz.py +0 -0
  385. {pyafq-1.3.2 → pyafq-1.3.4}/gpu_docker/cuda_build.sh +0 -0
  386. {pyafq-1.3.2 → pyafq-1.3.4}/gpu_docker/cuda_track_template.def +0 -0
  387. {pyafq-1.3.2 → pyafq-1.3.4}/gpu_docker/docker-build.sh +0 -0
  388. {pyafq-1.3.2 → pyafq-1.3.4}/gpu_docker/docker-push.sh +0 -0
  389. {pyafq-1.3.2 → pyafq-1.3.4}/pyAFQ.egg-info/dependency_links.txt +0 -0
  390. {pyafq-1.3.2 → pyafq-1.3.4}/pyAFQ.egg-info/not-zip-safe +0 -0
  391. {pyafq-1.3.2 → pyafq-1.3.4}/pyAFQ.egg-info/requires.txt +0 -0
  392. {pyafq-1.3.2 → pyafq-1.3.4}/pyAFQ.egg-info/top_level.txt +0 -0
  393. {pyafq-1.3.2 → pyafq-1.3.4}/pyafq_docker/docker-build.sh +0 -0
  394. {pyafq-1.3.2 → pyafq-1.3.4}/pyafq_docker/docker-push.sh +0 -0
  395. {pyafq-1.3.2 → pyafq-1.3.4}/pyproject.toml +0 -0
  396. {pyafq-1.3.2 → pyafq-1.3.4}/setup.cfg +0 -0
  397. {pyafq-1.3.2 → pyafq-1.3.4}/setup.py +0 -0
  398. {pyafq-1.3.2 → pyafq-1.3.4}/tox.ini +0 -0
@@ -6,9 +6,8 @@ jobs:
6
6
  build:
7
7
  runs-on: ubuntu-latest
8
8
  strategy:
9
- max-parallel: 4
10
9
  matrix:
11
- python-version: ["3.9", "3.10", "3.11"]
10
+ python-version: ["3.11"]
12
11
 
13
12
  steps:
14
13
  - name: Checkout repo
@@ -31,7 +30,7 @@ jobs:
31
30
  cd docs
32
31
  make html
33
32
  - name: Upload docs
34
- uses: actions/upload-artifact@v1
33
+ uses: actions/upload-artifact@v4
35
34
  with:
36
35
  name: docs
37
36
  path: docs/build/html
@@ -6,34 +6,34 @@ jobs:
6
6
  name: Build and publish Python 🐍 distributions 📦 to PyPI and TestPyPI
7
7
  runs-on: ubuntu-latest
8
8
  steps:
9
- - uses: actions/checkout@master
10
- - name: Set up Python 3.9
9
+ - uses: actions/checkout@v4
10
+ - name: Set up Python 3.11
11
11
  uses: actions/setup-python@v1
12
12
  with:
13
- python-version: 3.9
14
- - name: Install pypa/build
13
+ python-version: 3.11
14
+ - name: Install pep517
15
15
  run: >-
16
16
  python -m
17
17
  pip install
18
- build
18
+ pep517
19
19
  --user
20
20
  - name: Build a binary wheel and a source tarball
21
21
  run: >-
22
22
  python -m
23
- build
24
- --sdist
25
- --wheel
26
- --outdir dist/
23
+ pep517.build
24
+ --source
25
+ --binary
26
+ --out-dir dist/
27
27
  .
28
28
  - name: Publish distribution 📦 to Test PyPI
29
- uses: pypa/gh-action-pypi-publish@master
29
+ uses: pypa/gh-action-pypi-publish@release/v1
30
30
  with:
31
31
  user: __token__
32
32
  password: ${{ secrets.test_pypi_password }}
33
- repository_url: https://test.pypi.org/legacy/
33
+ repository-url: https://test.pypi.org/legacy/
34
34
  - name: Publish distribution 📦 to PyPI
35
35
  if: startsWith(github.event.ref, 'refs/tags')
36
- uses: pypa/gh-action-pypi-publish@master
36
+ uses: pypa/gh-action-pypi-publish@release/v1
37
37
  with:
38
38
  user: __token__
39
- password: ${{ secrets.pypi_password }}
39
+ password: ${{ secrets.pypi_password }}
@@ -1,4 +1,5 @@
1
1
  import numpy as np
2
+ import logging
2
3
 
3
4
  from scipy.special import lpmv, gammaln
4
5
 
@@ -12,6 +13,9 @@ from dipy.tracking.streamline import set_number_of_points
12
13
  from scipy.linalg import blas
13
14
 
14
15
 
16
+ logger = logging.getLogger('AFQ')
17
+
18
+
15
19
  def gwi_odf(gqmodel, data):
16
20
  gqi_vector = np.real(
17
21
  squared_radial_component(np.dot(
@@ -163,9 +167,9 @@ def gaussian_weights(bundle, n_points=100, return_mahalnobis=False,
163
167
  ----------
164
168
  bundle : Streamlines
165
169
  The streamlines to weight.
166
- n_points : int, optional
167
- The number of points to resample to. *If the `bundle` is an array,
168
- this input is ignored*. Default: 100.
170
+ n_points : int or None, optional
171
+ The number of points to resample to. If this is None, we assume bundle
172
+ is already resampled, and do not do any resampling. Default: 100.
169
173
  return_mahalanobis : bool, optional
170
174
  Whether to return the Mahalanobis distance instead of the weights.
171
175
  Default: False.
@@ -173,7 +177,10 @@ def gaussian_weights(bundle, n_points=100, return_mahalnobis=False,
173
177
  The statistic used to calculate the central tendency of streamlines in
174
178
  each node. Can be one of {`np.mean`, `np.median`} or other functions
175
179
  that have similar API. Default: `np.mean`
176
-
180
+ resample : bool, optional
181
+ Whether its necessary to resample the streamlines to the same number
182
+ of points. Only set to False if they are already resampled.
183
+ Default: True.
177
184
  Returns
178
185
  -------
179
186
  w : array of shape (n_streamlines, n_points)
@@ -182,38 +189,36 @@ def gaussian_weights(bundle, n_points=100, return_mahalnobis=False,
182
189
  coordinates at that node position across streamlines.
183
190
 
184
191
  """
185
-
186
- # Resample to same length for each streamline
187
- # if necessary
188
- resample = False
189
- if isinstance(bundle, np.ndarray):
190
- if len(bundle.shape) > 2:
191
- if bundle.shape[1] != n_points:
192
- sls = bundle.tolist()
193
- sls = [np.asarray(item) for item in sls]
194
- resample = True
195
- else:
196
- resample = True
197
- if resample:
198
- sls = set_number_of_points(bundle, n_points)
192
+ if n_points is not None:
193
+ if isinstance(bundle, np.ndarray):
194
+ bundle = bundle.tolist()
195
+ if isinstance(bundle, list):
196
+ bundle = [np.asarray(item) for item in bundle]
197
+ sls = np.asarray(set_number_of_points(bundle, n_points))
199
198
  else:
200
199
  sls = bundle
201
200
 
202
- # If there's only one fiber here, it gets the entire weighting:
203
- if len(bundle) == 1:
201
+ n_sls, n_nodes, _ = sls.shape
202
+
203
+ if n_sls < 15: # Cov^-1 unstable under this amount
204
+ weights = np.ones((n_sls, n_nodes))
205
+ logger.warning((
206
+ "Not enough streamlines for weight calculation, "
207
+ "weighting everything evenly"))
204
208
  if return_mahalnobis:
205
- return np.array([np.nan])
209
+ return np.full((n_sls, n_nodes), np.nan)
206
210
  else:
207
- return np.array([1])
208
-
209
- n_sls, n_nodes, n_dim = sls.shape
210
- weights = np.zeros((n_sls, n_nodes))
211
+ return weights / np.sum(weights, 0)
212
+ else:
213
+ weights = np.zeros((n_sls, n_nodes))
211
214
  diff = stat(sls, axis=0) - sls
212
215
  for i in range(n_nodes):
213
216
  # This should come back as a 3D covariance matrix with the spatial
214
217
  # variance covariance of this node across the different streamlines,
215
218
  # reorganized as an upper diagonal matrix for expected Mahalanobis
216
219
  cov = np.cov(sls[:, i, :].T, ddof=0)
220
+ while np.any(np.linalg.eigvals(cov) < 0):
221
+ cov += np.eye(cov.shape[0]) * 1e-12
217
222
 
218
223
  # calculate Mahalanobis for node in every fiber
219
224
  if np.any(cov > 0):
@@ -494,7 +494,6 @@ def baby_bd():
494
494
  "primary_axis_percentage": 40,
495
495
  "cross_midline": False,
496
496
  "mahal": {"distance_threshold": 4}}},
497
- seg_algo="afq",
498
497
  resample_to=afd.read_pediatric_templates()[
499
498
  'UNCNeo-withCerebellum-for-babyAFQ'])
500
499
 
@@ -567,7 +566,7 @@ def reco_bd(n_bundles):
567
566
  Selects between 16 or 80 bundle atlas
568
567
  """
569
568
  templates = afd.read_hcp_atlas(n_bundles, as_file=True)
570
- return BundleDict(templates, seg_algo="reco")
569
+ return BundleDict(templates)
571
570
 
572
571
 
573
572
  def cerebellar_bd():
@@ -695,12 +694,6 @@ class BundleDict(MutableMapping):
695
694
  custom bundles. See `Defining Custom Bundle Dictionaries`
696
695
  in the `usage` section of pyAFQ's documentation for details.
697
696
 
698
- seg_algo: One of {"afq", "reco"}
699
- The bundle segmentation algorithm to use.
700
- "afq" : Use waypoint ROIs + probability maps, as described
701
- in [Yeatman2012]_
702
- "reco" : Use Recobundles [Garyfallidis2017]_
703
-
704
697
  resample_to : Nifti1Image or bool, optional
705
698
  If there are bundles in bundle_info with the 'space' attribute
706
699
  set to 'template', or with no 'space' attribute,
@@ -761,7 +754,6 @@ class BundleDict(MutableMapping):
761
754
 
762
755
  def __init__(self,
763
756
  bundle_info,
764
- seg_algo="afq",
765
757
  resample_to=None,
766
758
  resample_subject_to=False,
767
759
  keep_in_memory=False):
@@ -769,7 +761,6 @@ class BundleDict(MutableMapping):
769
761
  raise TypeError((
770
762
  f"bundle_info must be a dict,"
771
763
  f" currently a {type(bundle_info)}"))
772
- self.seg_algo = seg_algo.lower()
773
764
  if resample_to is None:
774
765
  resample_to = afd.read_mni_template()
775
766
  self.resample_to = resample_to
@@ -783,31 +774,30 @@ class BundleDict(MutableMapping):
783
774
  self.__setitem__(key, item)
784
775
 
785
776
  self.logger = logging.getLogger('AFQ')
786
- if self.seg_algo == "afq":
787
- if "Forceps Major" in self.bundle_names\
788
- and "Callosum Occipital" in self.bundle_names:
789
- self.logger.info((
790
- "Forceps Major and Callosum Occipital bundles"
791
- " are co-located, and AFQ"
792
- " assigns each streamline to only one bundle."
793
- " Only Callosum Occipital will be used."))
794
- self.bundle_names.remove("Forceps Major")
795
- if "Forceps Minor" in self.bundle_names\
796
- and "Callosum Orbital" in self.bundle_names:
797
- self.logger.info((
798
- "Forceps Minor and Callosum Orbital bundles"
799
- " are co-located, and AFQ"
800
- " assigns each streamline to only one bundle."
801
- " Only Callosum Orbital will be used."))
802
- self.bundle_names.remove("Forceps Minor")
803
- if "Forceps Minor" in self.bundle_names\
804
- and "Callosum Anterior Frontal" in self.bundle_names:
805
- self.logger.info((
806
- "Forceps Minor and Callosum Anterior Frontal bundles"
807
- " are co-located, and AFQ"
808
- " assigns each streamline to only one bundle."
809
- " Only Callosum Anterior Frontal will be used."))
810
- self.bundle_names.remove("Forceps Minor")
777
+ if "Forceps Major" in self.bundle_names\
778
+ and "Callosum Occipital" in self.bundle_names:
779
+ self.logger.info((
780
+ "Forceps Major and Callosum Occipital bundles"
781
+ " are co-located, and AFQ"
782
+ " assigns each streamline to only one bundle."
783
+ " Only Callosum Occipital will be used."))
784
+ self.bundle_names.remove("Forceps Major")
785
+ if "Forceps Minor" in self.bundle_names\
786
+ and "Callosum Orbital" in self.bundle_names:
787
+ self.logger.info((
788
+ "Forceps Minor and Callosum Orbital bundles"
789
+ " are co-located, and AFQ"
790
+ " assigns each streamline to only one bundle."
791
+ " Only Callosum Orbital will be used."))
792
+ self.bundle_names.remove("Forceps Minor")
793
+ if "Forceps Minor" in self.bundle_names\
794
+ and "Callosum Anterior Frontal" in self.bundle_names:
795
+ self.logger.info((
796
+ "Forceps Minor and Callosum Anterior Frontal bundles"
797
+ " are co-located, and AFQ"
798
+ " assigns each streamline to only one bundle."
799
+ " Only Callosum Anterior Frontal will be used."))
800
+ self.bundle_names.remove("Forceps Minor")
811
801
 
812
802
  def update_max_includes(self, new_max):
813
803
  if new_max > self.max_includes:
@@ -831,15 +821,19 @@ class BundleDict(MutableMapping):
831
821
  Load ROI or streamline if not already loaded
832
822
  """
833
823
  if isinstance(roi_or_sl, str):
834
- if self.seg_algo == "afq":
824
+ if ".nii" in roi_or_sl:
835
825
  return afd.read_resample_roi(
836
826
  roi_or_sl,
837
827
  resample_to=resample_to)
838
- elif self.seg_algo.startswith("reco"):
828
+ else:
839
829
  return load_tractogram(
840
830
  roi_or_sl,
841
831
  'same',
842
832
  bbox_valid_check=False).streamlines
833
+ elif isinstance(roi_or_sl, nib.Nifti1Image):
834
+ return afd.read_resample_roi(
835
+ roi_or_sl,
836
+ resample_to=resample_to)
843
837
  else:
844
838
  return roi_or_sl
845
839
 
@@ -859,7 +853,6 @@ class BundleDict(MutableMapping):
859
853
 
860
854
  return self.__class__(
861
855
  new_bd,
862
- seg_algo=self.seg_algo,
863
856
  resample_to=self.resample_to,
864
857
  resample_subject_to=self.resample_subject_to,
865
858
  keep_in_memory=self.keep_in_memory)
@@ -924,13 +917,12 @@ class BundleDict(MutableMapping):
924
917
  """
925
918
  return self.__class__(
926
919
  self._dict.copy(),
927
- seg_algo=self.seg_algo,
928
920
  resample_to=self.resample_to,
929
921
  resample_subject_to=self.resample_subject_to,
930
922
  keep_in_memory=self.keep_in_memory)
931
923
 
932
924
  def apply_to_rois(self, b_name, func, *args,
933
- dry_run=False,
925
+ dry_run=False, apply_to_recobundles=False,
934
926
  **kwargs):
935
927
  """
936
928
  Applies some transformation to all ROIs (include, exclude, end, start)
@@ -946,6 +938,11 @@ class BundleDict(MutableMapping):
946
938
  dry_run : bool
947
939
  Whether to actually apply changes returned by `func` to the ROIs.
948
940
  If has_return is False, dry_run is not used.
941
+ apply_to_recobundles : bool, optional
942
+ Whether to apply the transformation to recobundles
943
+ TRKs as well.
944
+ Default: False
945
+
949
946
  *args :
950
947
  Additional arguments for func
951
948
  **kwargs
@@ -957,27 +954,25 @@ class BundleDict(MutableMapping):
957
954
  the roi type and values are the transformed ROIs.
958
955
  """
959
956
  return_vals = {}
960
- if self.seg_algo == "afq":
961
- for roi_type in ["include", "exclude", "start", "end", "prob_map"]:
962
- if roi_type in self._dict[b_name]:
963
- if roi_type in ["start", "end", "prob_map"]:
964
- return_vals[roi_type] = func(
965
- self._dict[b_name][roi_type], *args, **kwargs)
966
- else:
967
- changed_rois = []
968
- for _roi in self._dict[b_name][roi_type]:
969
- changed_rois.append(func(
970
- _roi, *args, **kwargs))
971
- return_vals[roi_type] = changed_rois
972
- elif self.seg_algo.startswith("reco"):
973
- if b_name == "whole_brain":
974
- return_vals = func(
975
- self._dict[b_name], *args, **kwargs)
976
- else:
977
- for sl_type in ["sl", "centroid"]:
978
- return_vals[sl_type] = func(
979
- self._dict[b_name][sl_type],
980
- *args, **kwargs)
957
+ for roi_type in [
958
+ "include", "exclude",
959
+ "start", "end", "prob_map"]:
960
+ if roi_type in self._dict[b_name]:
961
+ if roi_type in ["start", "end", "prob_map"]:
962
+ return_vals[roi_type] = func(
963
+ self._dict[b_name][roi_type], *args, **kwargs)
964
+ else:
965
+ changed_rois = []
966
+ for _roi in self._dict[b_name][roi_type]:
967
+ changed_rois.append(func(
968
+ _roi, *args, **kwargs))
969
+ return_vals[roi_type] = changed_rois
970
+ if apply_to_recobundles and "recobundles" in self._dict[b_name]:
971
+ return_vals["recobundles"] = {}
972
+ for sl_type in ["sl", "centroid"]:
973
+ return_vals["recobundles"][sl_type] = func(
974
+ self._dict[b_name]["recobundles"][sl_type],
975
+ *args, **kwargs)
981
976
  if not dry_run:
982
977
  for roi_type, roi in return_vals.items():
983
978
  self._dict[b_name][roi_type] = roi
@@ -994,34 +989,36 @@ class BundleDict(MutableMapping):
994
989
  b_name : str
995
990
  Name of the bundle to be resampled.
996
991
  """
997
- if self.seg_algo == "afq":
998
- if self.is_bundle_in_template(b_name):
999
- resample_to = self.resample_to
1000
- else:
1001
- resample_to = self.resample_subject_to
992
+ if self.is_bundle_in_template(b_name):
993
+ resample_to = self.resample_to
1002
994
  else:
1003
- resample_to = None
995
+ resample_to = self.resample_subject_to
1004
996
  return self.apply_to_rois(
1005
997
  b_name,
1006
998
  self._cond_load,
1007
999
  resample_to,
1008
- dry_run=dry_run)
1000
+ dry_run=dry_run,
1001
+ apply_to_recobundles=True)
1009
1002
 
1010
1003
  def is_bundle_in_template(self, bundle_name):
1011
1004
  return "space" not in self._dict[bundle_name]\
1012
1005
  or self._dict[bundle_name]["space"] == "template"
1013
1006
 
1014
- def _roi_transform_helper(self, roi, mapping, new_affine, bundle_name):
1015
- roi = afd.read_resample_roi(roi, self.resample_to)
1016
- warped_img = auv.transform_inverse_roi(
1017
- roi.get_fdata(),
1018
- mapping,
1019
- bundle_name=bundle_name)
1020
- warped_img = nib.Nifti1Image(warped_img, new_affine)
1021
- return warped_img
1007
+ def _roi_transform_helper(self, roi_or_sl, mapping,
1008
+ new_affine, bundle_name):
1009
+ roi_or_sl = self._cond_load(roi_or_sl, self.resample_to)
1010
+ if isinstance(roi_or_sl, nib.Nifti1Image):
1011
+ warped_img = auv.transform_inverse_roi(
1012
+ roi_or_sl.get_fdata(),
1013
+ mapping,
1014
+ bundle_name=bundle_name)
1015
+ warped_img = nib.Nifti1Image(warped_img, new_affine)
1016
+ return warped_img
1017
+ else:
1018
+ return roi_or_sl
1022
1019
 
1023
1020
  def transform_rois(self, bundle_name, mapping, new_affine,
1024
- base_fname=None):
1021
+ base_fname=None, apply_to_recobundles=False):
1025
1022
  """
1026
1023
  Get the bundle definition with transformed ROIs
1027
1024
  for a given bundle into a
@@ -1042,6 +1039,10 @@ class BundleDict(MutableMapping):
1042
1039
  Base file path to save ROIs too. Additional BIDS
1043
1040
  descriptors will be added to this file path. If None,
1044
1041
  do not save the ROIs.
1042
+ apply_to_recobundles : bool, optional
1043
+ Whether to apply the transformation to recobundles
1044
+ TRKs as well.
1045
+ Default: False
1045
1046
 
1046
1047
  Returns
1047
1048
  -------
@@ -1057,13 +1058,15 @@ class BundleDict(MutableMapping):
1057
1058
  mapping,
1058
1059
  new_affine,
1059
1060
  bundle_name,
1060
- dry_run=True)
1061
+ dry_run=True,
1062
+ apply_to_recobundles=apply_to_recobundles)
1061
1063
  else:
1062
1064
  transformed_rois = self.apply_to_rois(
1063
1065
  bundle_name,
1064
1066
  self._cond_load,
1065
1067
  self.resample_subject_to,
1066
- dry_run=True)
1068
+ dry_run=True,
1069
+ apply_to_recobundles=apply_to_recobundles)
1067
1070
 
1068
1071
  if base_fname is not None:
1069
1072
  fnames = []
@@ -1086,10 +1089,6 @@ class BundleDict(MutableMapping):
1086
1089
  return transformed_rois
1087
1090
 
1088
1091
  def __add__(self, other):
1089
- if self.seg_algo != other.seg_algo:
1090
- raise ValueError((
1091
- "Adding BundleDicts where seg_algo do not match."
1092
- f"seg_algo's are {self.seg_algo} and {other.seg_algo}"))
1093
1092
  for resample in ["resample_to", "resample_subject_to"]:
1094
1093
  if not getattr(self, resample)\
1095
1094
  or not getattr(other, resample)\
@@ -1119,7 +1118,6 @@ class BundleDict(MutableMapping):
1119
1118
  f"{getattr(other, resample).header['dim']}"))
1120
1119
  return self.__class__(
1121
1120
  {**self._dict, **other._dict},
1122
- self.seg_algo,
1123
1121
  self.resample_to,
1124
1122
  self.resample_subject_to,
1125
1123
  self.keep_in_memory)
@@ -161,7 +161,7 @@ class GroupAFQ(object):
161
161
  if not isinstance(bids_layout_kwargs, dict):
162
162
  raise TypeError("bids_layout_kwargs must be a dict")
163
163
 
164
-
164
+ parallel_params["engine"] = parallel_params.get("engine", "serial")
165
165
  self.logger = logger
166
166
 
167
167
  self.parallel_params = parallel_params
@@ -377,7 +377,7 @@ class GroupAFQ(object):
377
377
  this_kwargs["bundle_info"].apply_to_rois(
378
378
  b_name,
379
379
  this_kwargs["bundle_info"]._use_bids_info,
380
- bids_layout, bids_path, subject, session,
380
+ bids_layout, dwi_data_file, subject, session,
381
381
  dry_run=False)
382
382
 
383
383
  self.valid_sub_list.append(subject)
@@ -441,40 +441,39 @@ class GroupAFQ(object):
441
441
  sls_dict = {}
442
442
  load_next_subject() # load first subject
443
443
  for b in bundle_dict.keys():
444
- if b != "whole_brain":
445
- for i in range(len(self.valid_sub_list)):
446
- seg_sft, mapping = subses_info[i]
447
- idx = seg_sft.bundle_idxs[b]
448
- # use the first subses that works
449
- # otherwise try each successive subses
450
- if len(idx) == 0:
451
- # break if we run out of subses
452
- if i + 1 >= len(self.valid_sub_list):
453
- break
454
- # load subses if not already loaded
455
- if i + 1 >= len(subses_info):
456
- load_next_subject()
457
- continue
458
- if len(idx) > 100:
459
- idx = np.random.choice(
460
- idx, size=100, replace=False)
461
- these_sls = seg_sft.sft.streamlines[idx]
462
- these_sls = dps.set_number_of_points(these_sls, 100)
463
- tg = StatefulTractogram(
464
- these_sls,
465
- seg_sft.sft,
466
- Space.RASMM)
467
- delta = dts.values_from_volume(
468
- mapping.forward,
469
- tg.streamlines, np.eye(4))
470
- moved_sl = dts.Streamlines(
471
- [d + s for d, s in zip(delta, tg.streamlines)])
472
- moved_sl = np.asarray(moved_sl)
473
- median_sl = np.median(moved_sl, axis=0)
474
- sls_dict[b] = {"coreFiber": median_sl.tolist()}
475
- for ii, sl_idx in enumerate(idx):
476
- sls_dict[b][str(sl_idx)] = moved_sl[ii].tolist()
477
- break
444
+ for i in range(len(self.valid_sub_list)):
445
+ seg_sft, mapping = subses_info[i]
446
+ idx = seg_sft.bundle_idxs[b]
447
+ # use the first subses that works
448
+ # otherwise try each successive subses
449
+ if len(idx) == 0:
450
+ # break if we run out of subses
451
+ if i + 1 >= len(self.valid_sub_list):
452
+ break
453
+ # load subses if not already loaded
454
+ if i + 1 >= len(subses_info):
455
+ load_next_subject()
456
+ continue
457
+ if len(idx) > 100:
458
+ idx = np.random.choice(
459
+ idx, size=100, replace=False)
460
+ these_sls = seg_sft.sft.streamlines[idx]
461
+ these_sls = dps.set_number_of_points(these_sls, 100)
462
+ tg = StatefulTractogram(
463
+ these_sls,
464
+ seg_sft.sft,
465
+ Space.RASMM)
466
+ delta = dts.values_from_volume(
467
+ mapping.forward,
468
+ tg.streamlines, np.eye(4))
469
+ moved_sl = dts.Streamlines(
470
+ [d + s for d, s in zip(delta, tg.streamlines)])
471
+ moved_sl = np.asarray(moved_sl)
472
+ median_sl = np.median(moved_sl, axis=0)
473
+ sls_dict[b] = {"coreFiber": median_sl.tolist()}
474
+ for ii, sl_idx in enumerate(idx):
475
+ sls_dict[b][str(sl_idx)] = moved_sl[ii].tolist()
476
+ break
478
477
 
479
478
  with open(sls_json_fname, 'w') as fp:
480
479
  json.dump(sls_dict, fp)
@@ -590,11 +589,8 @@ class GroupAFQ(object):
590
589
  Default: True
591
590
  """
592
591
  start_time = time()
593
- seg_params = self.export("segmentation_params", collapse=False)[
594
- self.valid_sub_list[0]][self.valid_ses_list[0]]
595
- seg_algo = seg_params.get("seg_algo", "AFQ")
596
592
 
597
- export_all_helper(self, seg_algo, xforms, indiv, viz)
593
+ export_all_helper(self, xforms, indiv, viz)
598
594
 
599
595
  self.combine_profiles()
600
596
  if afqbrowser:
@@ -1009,7 +1005,7 @@ class ParallelGroupAFQ():
1009
1005
 
1010
1006
  orig.parallel_params["submitter_params"] = \
1011
1007
  orig.parallel_params.get("submitter_params", {"plugin": "cf"})
1012
-
1008
+
1013
1009
  orig.parallel_params["cache_dir"] = \
1014
1010
  orig.parallel_params.get("cache_dir", None)
1015
1011
 
@@ -198,8 +198,7 @@ class ParticipantAFQ(object):
198
198
  Default: True
199
199
  """
200
200
  start_time = time()
201
- seg_algo = self.export("segmentation_params").get("seg_algo", "AFQ")
202
- export_all_helper(self, seg_algo, xforms, indiv, viz)
201
+ export_all_helper(self, xforms, indiv, viz)
203
202
  self.logger.info(
204
203
  f"Time taken for export all: {time() - start_time}")
205
204
 
@@ -366,7 +365,7 @@ class ParticipantAFQ(object):
366
365
  if isinstance(file_name, str):
367
366
  exception_file_names.append(file_name)
368
367
  else:
369
- self.logger.warn((
368
+ self.logger.warning((
370
369
  f"The exception '{exception}' does not correspond"
371
370
  " to a filename and will be ignored."))
372
371
 
@@ -109,7 +109,7 @@ def check_attribute(attr_name):
109
109
  f"{attr_name} not found for export. {valid_exports_string}")
110
110
 
111
111
 
112
- def export_all_helper(api_afq_object, seg_algo, xforms, indiv, viz):
112
+ def export_all_helper(api_afq_object, xforms, indiv, viz):
113
113
  if xforms:
114
114
  try:
115
115
  api_afq_object.export("b0_warped")
@@ -122,8 +122,7 @@ def export_all_helper(api_afq_object, seg_algo, xforms, indiv, viz):
122
122
 
123
123
  if indiv:
124
124
  api_afq_object.export("indiv_bundles")
125
- if seg_algo == "AFQ":
126
- api_afq_object.export("rois")
125
+ api_afq_object.export("rois")
127
126
  api_afq_object.export("sl_counts")
128
127
  api_afq_object.export("median_bundle_lengths")
129
128
  api_afq_object.export("profiles")
@@ -138,5 +137,4 @@ def export_all_helper(api_afq_object, seg_algo, xforms, indiv, viz):
138
137
  else:
139
138
  api_afq_object.logger.warning(plot_err_message)
140
139
  api_afq_object.export("all_bundles_figure")
141
- if seg_algo == "AFQ":
142
- api_afq_object.export("indiv_bundles_figures")
140
+ api_afq_object.export("indiv_bundles_figures")