Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
116 commits
Select commit Hold shift + click to select a range
e49b73d
[WIP/ENH] Retooling Multishell pipeline
36000 Jun 23, 2025
9e267dd
add cholesky option
36000 Jun 24, 2025
605d64a
Implement AODF in numba; add isolation forest for cleaning callosal a…
36000 Jun 29, 2025
fff369b
move dam/dki fitting to other files, start requiring t1
36000 Jun 29, 2025
902872d
WMGM interface seeding
36000 Jun 30, 2025
07460b7
ray integration with numba in msmt/aodf fitting
36000 Jun 30, 2025
bcadea8
Add MSMT tests
36000 Jun 30, 2025
585e7e9
better cleaning in mahal and forest for endpoints
36000 Jun 30, 2025
dad6c25
bf
36000 Jul 1, 2025
3195c0e
bf
36000 Jul 1, 2025
54f5fb1
control over cpus in msmt
36000 Jul 2, 2025
462607a
bf
36000 Jul 2, 2025
bcf00de
testing
36000 Jul 2, 2025
9953cac
try threading layer control
36000 Jul 2, 2025
24fc53d
suppress unavoidable warning
36000 Jul 2, 2025
21b1d16
wip
36000 Jul 4, 2025
8cf8909
bf
36000 Jul 4, 2025
0195ff5
msmt efficiency gains
36000 Jul 6, 2025
9b047ab
bf to solver
36000 Jul 7, 2025
64e876a
use osqpy
36000 Jul 8, 2025
cf7b3bc
add wmgmi to roiimage as option
36000 Jul 8, 2025
216365e
update pAF and VOF implementations for new system
36000 Jul 9, 2025
7261d08
bf
36000 Jul 9, 2025
629fe94
adjusting vof definition
36000 Jul 9, 2025
85d96c1
better relative core cleaning; good VOF start/end changes
36000 Jul 9, 2025
0b7c2c9
much more specific relative bundle recognition options
36000 Jul 9, 2025
384a949
bf
36000 Jul 9, 2025
09efa13
try inclusive core
36000 Jul 9, 2025
7caaac4
adjust
36000 Jul 9, 2025
31a205e
use IFOF
36000 Jul 14, 2025
d4bcc16
remove unused code
36000 Jul 14, 2025
2456b46
try some of this mahal orientation stuff
36000 Jul 15, 2025
279d1f7
bf
36000 Jul 16, 2025
baed4d0
bf
36000 Jul 16, 2025
3cb49c7
bf
36000 Jul 16, 2025
40af9e3
allow vtk
36000 Jul 17, 2025
855955a
add asymmetry maps
36000 Jul 22, 2025
d74efff
add spaces to log message
36000 Jul 22, 2025
6269660
endpoint distance map
36000 Jul 22, 2025
fc97173
BFs
36000 Jul 23, 2025
ade8056
gpu tracking compat with act
36000 Jul 24, 2025
4865ba1
bf
36000 Jul 24, 2025
18fa754
bf
36000 Jul 24, 2025
b7e1216
bf
36000 Jul 25, 2025
1e6e73c
Fix endpoint distance calculus, add example
36000 Jul 28, 2025
e661889
update threshold files
36000 Jul 28, 2025
6658326
update bundle rec docs
36000 Jul 29, 2025
5ea22bd
change defaults and parallelization setup
36000 Jul 29, 2025
b4d7ca7
bf
36000 Jul 29, 2025
6a491b6
BFs
36000 Jul 29, 2025
c223924
bug fixing and test updates for recognition code
36000 Jul 30, 2025
d340dbd
recobundles fixes
36000 Jul 30, 2025
dcfd3e2
extra space
36000 Jul 30, 2025
18cd5c8
sigma angle misspelling
36000 Jul 30, 2025
e8ce3c0
try this to enforce no concurrency
36000 Jul 30, 2025
b9a17e8
add concurrency restrictions to docker images
36000 Jul 30, 2025
81fabaf
deprecated np.bool
36000 Jul 30, 2025
4f45488
deprecated np.bool
36000 Jul 30, 2025
bb0e0da
Typo
36000 Jul 30, 2025
1e6b0cd
purge num_chunks from examples
36000 Jul 31, 2025
47193b5
add t1 file for tests/example
36000 Jul 31, 2025
22ba7ad
update default resample_subject_to
36000 Jul 31, 2025
99f3541
integrate Brainchop for segmenting T1
36000 Aug 1, 2025
b0cc82b
fix pydra test, better integration with brainchop
36000 Aug 1, 2025
798880c
add ability to specify t1 preproc pipeline
36000 Aug 1, 2025
e1139cf
bf
36000 Aug 1, 2025
d2fb253
faster examples
36000 Aug 4, 2025
fa23285
small changes here and there
36000 Aug 4, 2025
0168dd8
avoiding clang
36000 Aug 4, 2025
b1fc4fd
bf
36000 Aug 4, 2025
8c6848c
debugging tinygrad
36000 Aug 4, 2025
fa50f17
turn off JIT
36000 Aug 4, 2025
36f1dcd
try this
36000 Aug 4, 2025
4311c9e
i think we may end up requiring clang
36000 Aug 4, 2025
2448d2f
clang dependency );
36000 Aug 5, 2025
7761404
safer numba thread amounts
36000 Aug 5, 2025
6ae5266
reduce docs runtime
36000 Aug 5, 2025
9e23a92
single thread some examples
36000 Aug 5, 2025
f297433
NOT dependent on clang
36000 Aug 5, 2025
418d37d
try this
36000 Aug 5, 2025
d0a7bff
add this to toml
36000 Aug 5, 2025
ed68aa6
try to make tests/examples finish in reasonable time
36000 Aug 6, 2025
3ede313
faster tests
36000 Aug 6, 2025
c66afa0
bf
36000 Aug 6, 2025
1054f9f
move pydra test to nightly
36000 Aug 6, 2025
eacfe3a
try this
36000 Aug 6, 2025
535d105
see if this fixes it
36000 Aug 7, 2025
704a29c
beef the examples back up
36000 Aug 7, 2025
cde5e11
streamline examples
36000 Aug 7, 2025
2edbca1
dont run rerun example (no visualizations)
36000 Aug 7, 2025
41e1c1c
this also doesnt need to be run
36000 Aug 7, 2025
0800df5
fix versions
36000 Sep 19, 2025
c5d6d98
no longer need this with immlib
36000 Sep 19, 2025
30f91ac
rebase on immlib and make compatible
36000 Sep 20, 2025
d17aa7b
Remove unused code
36000 Sep 25, 2025
74c6f62
clarifications
36000 Sep 25, 2025
125dd28
remove unused functions
36000 Sep 25, 2025
4ddac16
add tests
36000 Sep 25, 2025
10d430f
make core only configurable
36000 Sep 25, 2025
f21935f
remove more unused code; kwargs for entire/remove in relative bundle …
36000 Sep 25, 2025
6258a16
add determinism to IF test
36000 Sep 25, 2025
96d5f6c
more reasonable tracking chunk siz
36000 Sep 25, 2025
8cc3c7c
cleaner error messages
36000 Sep 25, 2025
0522768
use t1 for visualizations
36000 Sep 25, 2025
c9bb42e
remove some pins that were holding us back
36000 Sep 25, 2025
b955c89
try upgrading ipython
36000 Sep 26, 2025
eacf590
add back in pytest cov
36000 Sep 26, 2025
e187e79
BF
36000 Sep 26, 2025
37f482d
fix n_cpu code for mssmt
36000 Sep 29, 2025
8e94f73
display full brainchop errors
36000 Oct 2, 2025
cbb05bd
try t1w mapping
36000 Oct 2, 2025
176fefb
BF for GPU Streamlines and better error for Custom ROI from DWI
36000 Oct 13, 2025
f6fbd47
correctly handle plot exception in export_all considering immlib
36000 Oct 13, 2025
5368798
correctly adjust for t1 space in new visualizations
36000 Oct 14, 2025
b3bac0a
one more fix for the viz
36000 Oct 17, 2025
b2cebb2
fix ROI viz as well
36000 Oct 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/docbuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Documentation build
on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

permissions:
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/docker_pyafq.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ name: Build and Push pyAFQ Docker Image

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/docker_pyafq_cuda12.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@ name: Build and Push pyAFQ CUDA12 Image

on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
build:
runs-on: ubuntu-latest
Expand Down
32 changes: 0 additions & 32 deletions .github/workflows/nightly_pft_test.yml

This file was deleted.

4 changes: 2 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Test suite
on: [push, pull_request]

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
Expand Down Expand Up @@ -39,4 +39,4 @@ jobs:
flake8 --ignore N802,N806,W503 --select W504 `find . -name \*.py | grep -v setup.py | grep -v version.py | grep -v __init__.py | grep -v /docs/`
- name: Test
run: |
cd && mkdir for_test && cd for_test && pytest --pyargs AFQ --cov-report term-missing --cov=AFQ -m "not nightly and not nightly_basic and not nightly_custom and not nightly_anisotropic and not nightly_slr and not nightly_pft and not nightly_reco and not nightly_reco80" --durations=0
cd && mkdir for_test && cd for_test && pytest --pyargs AFQ --cov-report term-missing --cov=AFQ -m "not nightly and not nightly_basic and not nightly_custom and not nightly_anisotropic and not nightly_slr and not nightly_reco and not nightly_reco80" --durations=0
63 changes: 40 additions & 23 deletions AFQ/api/bundle_dict.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,17 +110,15 @@ def default18_bd():
'exclude': [],
'space': 'template',
'prob_map': templates['CST_L_prob_map'],
'end': templates['CST_L_start'],
'start': templates['CST_L_end']},
'end': templates['CST_L_start']},
'Right Corticospinal': {
'cross_midline': False,
'include': [templates['CST_roi2_R'],
templates['CST_roi1_R']],
'exclude': [],
'space': 'template',
'prob_map': templates['CST_R_prob_map'],
'end': templates['CST_R_start'],
'start': templates['CST_R_end']},
'end': templates['CST_R_start']},
'Left Inferior Fronto-occipital': {
'cross_midline': False,
'include': [templates['IFO_roi2_L'],
Expand Down Expand Up @@ -230,41 +228,51 @@ def default18_bd():
'exclude': [templates['SLF_roi1_L']],
'space': 'template',
'start': templates['pARC_L_start'],
'Left Arcuate': {
'overlap': 30},
'primary_axis': 'I/S',
'primary_axis_percentage': 40},
'Right Posterior Arcuate': {'cross_midline': False,
'include': [templates['SLFt_roi2_R']],
'exclude': [templates['SLF_roi1_R']],
'space': 'template',
'start': templates['pARC_R_start'],
'Right Arcuate': {
'overlap': 30},
'primary_axis': 'I/S',
'primary_axis_percentage': 40},
'Left Vertical Occipital': {'cross_midline': False,
'space': 'template',
'start': templates['VOF_L_start'],
'end': templates['VOF_L_end'],
'inc_addtol': [4, 0],
'Left Arcuate': {
'node_thresh': 20},
'Left Posterior Arcuate': {
'node_thresh': 1,
'core': 'Anterior'},
'Left Inferior Longitudinal': {
'node_thresh': 20,
'entire_core': 'Anterior'},
'Left Inferior Fronto-occipital': {
'core': 'Right'},
'orient_mahal': {
'distance_threshold': 3,
'clean_rounds': 5},
'isolation_forest': {
'percent_outlier_thresh': 50},
'primary_axis': 'I/S',
'primary_axis_percentage': 40},
'Right Vertical Occipital': {'cross_midline': False,
'space': 'template',
'start': templates['VOF_R_start'],
'end': templates['VOF_R_end'],
'inc_addtol': [4, 0],
'Right Arcuate': {
'node_thresh': 20},
'Right Posterior Arcuate': {
'node_thresh': 1,
'core': 'Anterior'},
'Right Inferior Longitudinal': {
'node_thresh': 20,
'entire_core': 'Anterior'},
'Right Inferior Fronto-occipital': {
'core': 'Left'},
'orient_mahal': {
'distance_threshold': 3,
'clean_rounds': 5},
'isolation_forest': {
'percent_outlier_thresh': 50},
'primary_axis': 'I/S',
'primary_axis_percentage': 40}})

Expand Down Expand Up @@ -514,6 +522,7 @@ def baby_bd():


def callosal_bd():
templates = afd.read_templates(as_img=False)
callosal_templates =\
afd.read_callosum_templates(as_img=False)
return BundleDict({
Expand All @@ -522,56 +531,64 @@ def callosal_bd():
'include': [callosal_templates['R_AntFrontal'],
callosal_templates['Callosum_midsag'],
callosal_templates['L_AntFrontal']],
'exclude': [],
'isolation_forest': {'percent_outlier_thresh': 20},
'exclude': [templates['CST_roi1_L'], templates['CST_roi1_R']],
'space': 'template'},
'Callosum Motor': {
'cross_midline': True,
'include': [callosal_templates['R_Motor'],
callosal_templates['Callosum_midsag'],
callosal_templates['L_Motor']],
'exclude': [],
'isolation_forest': {'percent_outlier_thresh': 20},
'exclude': [templates['CST_roi1_L'], templates['CST_roi1_R']],
'space': 'template'},
'Callosum Occipital': {
'cross_midline': True,
'include': [callosal_templates['R_Occipital'],
callosal_templates['Callosum_midsag'],
callosal_templates['L_Occipital']],
'exclude': [],
'isolation_forest': {'percent_outlier_thresh': 20},
'exclude': [templates['CST_roi1_L'], templates['CST_roi1_R']],
'space': 'template'},
'Callosum Orbital': {
'cross_midline': True,
'include': [callosal_templates['R_Orbital'],
callosal_templates['Callosum_midsag'],
callosal_templates['L_Orbital']],
'exclude': [],
'isolation_forest': {'percent_outlier_thresh': 20},
'exclude': [templates['CST_roi1_L'], templates['CST_roi1_R']],
'space': 'template'},
'Callosum Posterior Parietal': {
'cross_midline': True,
'include': [callosal_templates['R_PostParietal'],
callosal_templates['Callosum_midsag'],
callosal_templates['L_PostParietal']],
'exclude': [],
'isolation_forest': {'percent_outlier_thresh': 20},
'exclude': [templates['CST_roi1_L'], templates['CST_roi1_R']],
'space': 'template'},
'Callosum Superior Frontal': {
'cross_midline': True,
'include': [callosal_templates['R_SupFrontal'],
callosal_templates['Callosum_midsag'],
callosal_templates['L_SupFrontal']],
'exclude': [],
'isolation_forest': {'percent_outlier_thresh': 20},
'exclude': [templates['CST_roi1_L'], templates['CST_roi1_R']],
'space': 'template'},
'Callosum Superior Parietal': {
'cross_midline': True,
'include': [callosal_templates['R_SupParietal'],
callosal_templates['Callosum_midsag'],
callosal_templates['L_SupParietal']],
'exclude': [],
'isolation_forest': {'percent_outlier_thresh': 20},
'exclude': [templates['CST_roi1_L'], templates['CST_roi1_R']],
'space': 'template'},
'Callosum Temporal': {
'cross_midline': True,
'include': [callosal_templates['R_Temporal'],
callosal_templates['Callosum_midsag'],
callosal_templates['L_Temporal']],
'exclude': [],
'isolation_forest': {'percent_outlier_thresh': 20},
'exclude': [templates['CST_roi1_L'], templates['CST_roi1_R']],
'space': 'template'}})


Expand Down Expand Up @@ -722,7 +739,7 @@ class BundleDict(MutableMapping):
If there are bundles in bundle_info with the 'space' attribute
set to 'subject', their images (all ROIs and probability maps)
will be resampled to the affine and shape of this image.
If None, resamples to DWI. Be careful if you use this,
If True, resamples to DWI. Be careful if you use this,
that this is the correct choice.
If False, no resampling will be done.
Default: False
Expand Down
Loading
Loading