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.
- {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/docbuild.yml +2 -3
- {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/publish-to-test-pypi.yml +13 -13
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/_fixes.py +30 -25
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/api/bundle_dict.py +82 -84
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/api/group.py +37 -41
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/api/participant.py +2 -3
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/api/utils.py +3 -5
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/data/fetch.py +9 -20
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/definitions/mapping.py +1 -1
- pyafq-1.3.4/AFQ/recognition/cleaning.py +184 -0
- pyafq-1.3.4/AFQ/recognition/criteria.py +358 -0
- pyafq-1.3.4/AFQ/recognition/curvature.py +52 -0
- pyafq-1.3.4/AFQ/recognition/preprocess.py +73 -0
- pyafq-1.3.4/AFQ/recognition/recognize.py +309 -0
- pyafq-1.3.4/AFQ/recognition/roi.py +94 -0
- pyafq-1.3.2/AFQ/tests/test_segmentation.py → pyafq-1.3.4/AFQ/recognition/tests/test_recognition.py +54 -174
- pyafq-1.3.4/AFQ/recognition/tests/test_rois.py +102 -0
- pyafq-1.3.4/AFQ/recognition/tests/test_utils.py +75 -0
- pyafq-1.3.4/AFQ/recognition/utils.py +222 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tasks/data.py +5 -14
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tasks/segmentation.py +38 -38
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tasks/utils.py +2 -3
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tasks/viz.py +26 -27
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_api.py +12 -6
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_bundle_dict.py +0 -3
- pyafq-1.3.4/AFQ/tests/test_fixes.py +72 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/bin.py +8 -6
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/streamlines.py +4 -5
- pyafq-1.3.4/AFQ/utils/tests/__init__.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/version.py +2 -2
- pyafq-1.3.4/AFQ/viz/__init__.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/viz/plot.py +6 -6
- {pyafq-1.3.2 → pyafq-1.3.4}/CHANGES.rst +16 -5
- {pyafq-1.3.2 → pyafq-1.3.4}/PKG-INFO +1 -1
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/_progressbars.py +0 -2
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/kwargs.rst +2 -2
- pyafq-1.3.4/docs/source/reference/bundledict.rst +98 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/reference/kwargs.rst +24 -7
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/reference/methods.rst +40 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/baby_afq.py +1 -5
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/plot_recobundles.py +3 -2
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/tutorial_examples/plot_001_afq_api.py +1 -1
- {pyafq-1.3.2 → pyafq-1.3.4}/gpu_docker/Dockerfile +1 -1
- {pyafq-1.3.2 → pyafq-1.3.4}/pyAFQ.egg-info/PKG-INFO +1 -1
- {pyafq-1.3.2 → pyafq-1.3.4}/pyAFQ.egg-info/SOURCES.txt +12 -2
- {pyafq-1.3.2 → pyafq-1.3.4}/pyafq_docker/Dockerfile +1 -1
- pyafq-1.3.2/AFQ/segmentation.py +0 -1444
- pyafq-1.3.2/AFQ/tests/test_fixes.py +0 -62
- pyafq-1.3.2/docs/source/reference/bundledict.rst +0 -64
- {pyafq-1.3.2 → pyafq-1.3.4}/.github/CITATION.cff +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.github/CONTRIBUTING.md +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/docker_pyafq.yml +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/docker_pyafq_cuda12.yml +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/nightly_anisotropic_test.yml +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/nightly_basic_test.yml +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/nightly_custom_test.yml +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/nightly_pft_test.yml +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/nightly_reco80_test.yml +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/nightly_reco_test.yml +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/nightly_test.yml +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.github/workflows/test.yml +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.gitignore +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.mailmap +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.maintenance/update_changes.sh +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.maintenance/update_zenodo.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.pep8speaks.yml +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/.zenodo.json +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/__init__.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/afq_bids_entities.json +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/api/__init__.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/data/__init__.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/data/utils.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/definitions/__init__.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/definitions/image.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/definitions/utils.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/models/QBallTP.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/models/__init__.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/models/csd.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/models/dki.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/models/dti.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/models/fwdti.py +0 -0
- {pyafq-1.3.2/AFQ/tasks → pyafq-1.3.4/AFQ/recognition}/__init__.py +0 -0
- {pyafq-1.3.2/AFQ → pyafq-1.3.4/AFQ/recognition}/tests/__init__.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/registration.py +0 -0
- /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/.datalad/.gitattributes → /pyafq-1.3.4/AFQ/tasks/__init__.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tasks/decorators.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tasks/mapping.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tasks/tractography.py +0 -0
- /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/.datalad/config → /pyafq-1.3.4/AFQ/tests/__init__.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/data/MoriGroups_Test.mat +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/data/WholeBrainFG_test.mat +0 -0
- {pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic → pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/.datalad}/.gitattributes +0 -0
- /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
- /pyafq-1.3.2/AFQ/tests/data/mocks3/ds000102-mimic/README → /pyafq-1.3.4/AFQ/tests/data/mocks3/ds000102-mimic/.gitattributes +0 -0
- /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
- /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
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/data/mocks3/ds000102-mimic/T1w.json +0 -0
- /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
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/data/mocks3/ds000102-mimic/dataset_description.json +0 -0
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- /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
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/data/mocks3/ds000102-mimic/task-flanker_bold.json +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_csd.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_data.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_definitions.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_dki.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_dti.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_registration.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_tractography.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tests/test_viz.py +0 -0
- {pyafq-1.3.2/AFQ/utils/tests → pyafq-1.3.4/AFQ/tractography}/__init__.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tractography/gputractography.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tractography/tractography.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/tractography/utils.py +0 -0
- {pyafq-1.3.2/AFQ/viz → pyafq-1.3.4/AFQ/utils}/__init__.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/conversion.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/docs.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/models.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/path.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/stats.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/testing.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/tests/test_conversions.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/tests/test_path.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/tests/test_stats.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/tests/test_streamlines.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/tests/test_volume.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/utils/volume.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/viz/altair.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/viz/fury_backend.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/viz/plotly_backend.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/AFQ/viz/utils.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/CITATION +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/LICENSE +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/MANIFEST.in +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/Makefile +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/README.md +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/bin/pyAFQ +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/Makefile +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/_static/BDE_Banner_revised20160211-01.jpg +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/_static/custom.css +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/_static/eScience_Logo_HR.png +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/_static/escience-logo.png +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/_static/logo.png +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/_templates/layout.html +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/conf.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/_static/down_left_arrow.png +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/_static/down_right_arrow.png +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/_static/greencheck.png +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/_static/tract_modeling2.png +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/_static/tract_profiling.png +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/_static/tract_recognition.png +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/_static/tract_tractography.png +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/bundle_orientation.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/index.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/modeling.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/profiling.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/recognition.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/tractography.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/explanations/tractometry_pipeline.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/cite.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/contributing.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/developing/definitions.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/developing/index.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/developing/releasing.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/developing/tasks.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/getting_help.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/index.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/installation_guide.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/converter.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/data.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/docker.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/image.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/index.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/methods.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/howto/usage/scalars.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/index.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/reference/index.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/reference/mapping.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/reference/viz_backend.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/sphinxext/kwargsdocs.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/sphinxext/methodsdocs.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/sphinxext/updatedocs.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/source/tutorials/index.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/docs/upload-gh-pages.sh +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/README.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/add_custom_bundle.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/cerebellar_peduncles.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/cloudknot_example.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/cloudknot_hcp_example.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/plot_acoustic_radiations.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/plot_afq_callosal.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/plot_afq_fwdti.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/plot_optic_radiations.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/plot_stages_of_tractometry.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/use_subject_space_rois_from_freesurfer.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/howto_examples/vof_example.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/tutorial_examples/README.rst +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/tutorial_examples/plot_002_bids_layout.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/examples/tutorial_examples/plot_003_viz.py +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/gpu_docker/cuda_build.sh +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/gpu_docker/cuda_track_template.def +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/gpu_docker/docker-build.sh +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/gpu_docker/docker-push.sh +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/pyAFQ.egg-info/dependency_links.txt +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/pyAFQ.egg-info/not-zip-safe +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/pyAFQ.egg-info/requires.txt +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/pyAFQ.egg-info/top_level.txt +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/pyafq_docker/docker-build.sh +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/pyafq_docker/docker-push.sh +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/pyproject.toml +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/setup.cfg +0 -0
- {pyafq-1.3.2 → pyafq-1.3.4}/setup.py +0 -0
- {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.
|
|
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@
|
|
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@
|
|
10
|
-
- name: Set up Python 3.
|
|
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.
|
|
14
|
-
- name: Install
|
|
13
|
+
python-version: 3.11
|
|
14
|
+
- name: Install pep517
|
|
15
15
|
run: >-
|
|
16
16
|
python -m
|
|
17
17
|
pip install
|
|
18
|
-
|
|
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
|
-
--
|
|
25
|
-
--
|
|
26
|
-
--
|
|
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@
|
|
29
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
30
30
|
with:
|
|
31
31
|
user: __token__
|
|
32
32
|
password: ${{ secrets.test_pypi_password }}
|
|
33
|
-
|
|
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@
|
|
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.
|
|
168
|
-
|
|
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
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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
|
-
|
|
203
|
-
|
|
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.
|
|
209
|
+
return np.full((n_sls, n_nodes), np.nan)
|
|
206
210
|
else:
|
|
207
|
-
return np.
|
|
208
|
-
|
|
209
|
-
|
|
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
|
|
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.
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
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.
|
|
998
|
-
|
|
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 =
|
|
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,
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
1021
|
-
|
|
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,
|
|
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
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
if
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
idx =
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
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,
|
|
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
|
-
|
|
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.
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
142
|
-
api_afq_object.export("indiv_bundles_figures")
|
|
140
|
+
api_afq_object.export("indiv_bundles_figures")
|