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