From ede0236fce2e5be7aab826727f5aabd5991c27f4 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Fri, 2 Oct 2026 10:04:42 -0400 Subject: [PATCH 1/5] fix: Use rigid affine initialization for BOLD mask --- niworkflows/func/util.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/niworkflows/func/util.py b/niworkflows/func/util.py index c4924f5af31..5f882898a71 100644 --- a/niworkflows/func/util.py +++ b/niworkflows/func/util.py @@ -428,7 +428,7 @@ def init_enhance_and_skullstrip_bold_wf( fixed_image=str(bold_template), fixed_image_mask=str(brain_mask), metric=('Mattes', 32, 'Regular', 0.2), - transform=('Affine', 0.1), + transform=('Rigid', 0.1), search_factor=(20, 0.12), principal_axes=False, convergence=(10, 1e-6, 10), From eaf067820afc162c0e4a82f9d4e87a65d75ea960 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Fri, 2 Oct 2026 10:22:22 -0400 Subject: [PATCH 2/5] chore(ci): Reduce build matrix --- .github/workflows/tox.yml | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index 606d101bf19..3844640fa24 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -94,17 +94,9 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] - dependencies: [latest, pre] - include: - - python-version: "3.9" - dependencies: min - exclude: - # Do not test pre-releases for versions out of SPEC0 - - python-version: "3.9" - dependencies: pre - - python-version: "3.10" - dependencies: pre + # LTS branch: Test minimum supported and container-distributed Pythons + python-version: ["3.10", "3.12"] + dependencies: [latest] env: DEPENDS: ${{ matrix.dependencies }} @@ -153,7 +145,7 @@ jobs: continue-on-error: true strategy: matrix: - check: ['style', 'spellcheck'] + check: ['spellcheck'] steps: - uses: actions/checkout@v5 From 06d9148db26a29b6486041f8e6fbebdad5b0dc69 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Fri, 2 Oct 2026 10:23:25 -0400 Subject: [PATCH 3/5] [DATALAD RUNCMD] uvx codespell -w niworkflows === Do not change lines below === { "chain": [], "cmd": "uvx codespell -w niworkflows", "exit": 0, "extra_inputs": [], "inputs": [], "outputs": [], "pwd": "." } ^^^ Do not change lines above ^^^ --- niworkflows/workflows/epi/refmap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/niworkflows/workflows/epi/refmap.py b/niworkflows/workflows/epi/refmap.py index 1ee3b2297e0..672be7f07b4 100644 --- a/niworkflows/workflows/epi/refmap.py +++ b/niworkflows/workflows/epi/refmap.py @@ -227,7 +227,7 @@ def _post_merge(in_file, in_xfms): """ Massage output from ``SpatialReference``. - If the previous ``SpatialReference`` node by-passed the execution of + If the previous ``SpatialReference`` node bypassed the execution of ``mri_robust_template`` (hence, there was only one input file), the single-file is forwarded to the output. From 9b0f11b0046993f52fb66ce7e89ac9e421ce7a67 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Fri, 2 Oct 2026 11:01:01 -0400 Subject: [PATCH 4/5] test: Remove old regression test against broken upstream --- niworkflows/interfaces/tests/test_images.py | 52 --------------------- 1 file changed, 52 deletions(-) diff --git a/niworkflows/interfaces/tests/test_images.py b/niworkflows/interfaces/tests/test_images.py index 4f261bcf485..3e6bda6c79d 100644 --- a/niworkflows/interfaces/tests/test_images.py +++ b/niworkflows/interfaces/tests/test_images.py @@ -28,7 +28,6 @@ import nibabel as nb import numpy as np import pytest -from nipype.interfaces import nilearn as nl from nipype.pipeline import engine as pe from niworkflows.testing import has_afni @@ -36,57 +35,6 @@ from .. import images as im -@pytest.mark.parametrize( - ('nvols', 'nmasks', 'ext', 'factor'), - [ - (200, 3, '.nii', 1.1), - ], -) -def test_signal_extraction_equivalence(tmp_path, nvols, nmasks, ext, factor): - nlsignals = str(tmp_path / 'nlsignals.tsv') - imsignals = str(tmp_path / 'imsignals.tsv') - - vol_shape = (64, 64, 40) - - img_fname = str(tmp_path / ('img' + ext)) - masks_fname = str(tmp_path / ('masks' + ext)) - - random_data = np.random.random(size=vol_shape + (nvols,)) * 2000 - random_mask_data = np.random.random(size=vol_shape + (nmasks,)) < 0.2 - - nb.Nifti1Image(random_data, np.eye(4)).to_filename(img_fname) - nb.Nifti1Image(random_mask_data.astype(np.uint8), np.eye(4)).to_filename(masks_fname) - - se1 = nl.SignalExtraction( - in_file=img_fname, - label_files=masks_fname, - class_labels=[f'a{i}' for i in range(nmasks)], - out_file=nlsignals, - ) - se2 = im.SignalExtraction( - in_file=img_fname, - label_files=masks_fname, - class_labels=[f'a{i}' for i in range(nmasks)], - out_file=imsignals, - ) - - tic = time.time() - se1.run() - toc = time.time() - se2.run() - toc2 = time.time() - - tab1 = np.loadtxt(nlsignals, skiprows=1) - tab2 = np.loadtxt(imsignals, skiprows=1) - - assert np.allclose(tab1, tab2) - - t1 = toc - tic - t2 = toc2 - toc - - assert t2 < t1 / factor - - @pytest.mark.parametrize( ('shape', 'mshape'), [ From 0ed972d47265722f79181afbec49ee26d1f799b0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 2 Oct 2026 15:01:19 +0000 Subject: [PATCH 5/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- niworkflows/interfaces/tests/test_images.py | 1 - 1 file changed, 1 deletion(-) diff --git a/niworkflows/interfaces/tests/test_images.py b/niworkflows/interfaces/tests/test_images.py index 3e6bda6c79d..bb78f2900e2 100644 --- a/niworkflows/interfaces/tests/test_images.py +++ b/niworkflows/interfaces/tests/test_images.py @@ -22,7 +22,6 @@ # """Test images module.""" -import time from pathlib import Path import nibabel as nb