Skip to content

Commit

Permalink
Merge branch 'master' of https://github.com/zachlindsey/nipype
Browse files Browse the repository at this point in the history
  • Loading branch information
Zach Lindsey committed Mar 21, 2024
2 parents 0953e5b + edf7a4a commit 6b81d26
Show file tree
Hide file tree
Showing 23 changed files with 555 additions and 54 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/contrib.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,10 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: ['ubuntu-latest']
os: ["ubuntu-latest"]
python-version: [3.8]
nipype-extras: ['dev']
check: ['specs', 'style']
nipype-extras: ["dev"]
check: ["specs", "style"]
env:
DEPENDS: ""
CHECK_TYPE: ${{ matrix.check }}
Expand Down
34 changes: 17 additions & 17 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ on:
- maint/*
schedule:
# 8am EST / 9am EDT Mondays
- cron: '0 13 * * 1'
- cron: "0 13 * * 1"

defaults:
run:
Expand Down Expand Up @@ -57,7 +57,7 @@ jobs:
needs: [build]
strategy:
matrix:
package: ['wheel', 'sdist']
package: ["wheel", "sdist"]
steps:
- uses: actions/download-artifact@v4
with:
Expand Down Expand Up @@ -90,28 +90,28 @@ jobs:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: ['ubuntu-22.04']
python-version: ['3.8', '3.9', '3.10', '3.11']
check: ['test']
pip-flags: ['']
depends: ['REQUIREMENTS']
os: ["ubuntu-22.04"]
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
check: ["test"]
pip-flags: [""]
depends: ["REQUIREMENTS"]
deb-depends: [false]
nipype-extras: ['doc,tests,profiler']
nipype-extras: ["doc,tests,profiler"]
include:
- os: ubuntu-22.04
python-version: '3.8'
python-version: "3.8"
check: test
pip-flags: ''
pip-flags: ""
depends: REQUIREMENTS
deb-depends: true
nipype-extras: doc,tests,profiler,duecredit,ssh
# - os: ubuntu-20.04
# python-version: 3.8
# check: test
# pip-flags: ''
# depends: NUMPY123
# deb-depends: true
# nipype-extras: doc,tests,nipy,profiler,duecredit,ssh
- os: ubuntu-20.04
python-version: 3.8
check: test
pip-flags: ""
depends: REQUIREMENTS
deb-depends: true
nipype-extras: doc,tests,nipy,profiler,duecredit,ssh
env:
DEPENDS: ${{ matrix.depends }}
CHECK_TYPE: ${{ matrix.check }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tutorials.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ name: Test tutorials
on:
push:
branches:
- 'rel/*'
- "rel/*"

concurrency:
group: tutorials-${{ github.ref }}
Expand Down
28 changes: 16 additions & 12 deletions .zenodo.json
Original file line number Diff line number Diff line change
Expand Up @@ -891,16 +891,6 @@
"name": "Mihai, Paul Glad",
"orcid": "0000-0001-5715-6442"
},
{
"affiliation": "Department of Psychology, Stanford University",
"name": "Gorgolewski, Krzysztof J.",
"orcid": "0000-0003-3321-7583"
},
{
"affiliation": "MIT, HMS",
"name": "Ghosh, Satrajit",
"orcid": "0000-0002-5312-6729"
},
{
"affiliation": "University of Tübingen and MPI for Biological Cybernertics",
"name": "Bannert, Michael M.",
Expand All @@ -909,13 +899,27 @@
{
"affiliation": "Research Centre Juelich",
"name": "Wu, Jianxiao",
"orcid": "0000-0002-4866-272X",
"orcid": "0000-0002-4866-272X"
},
{
"affiliation": "Department of Neurology, BG-University Hospital Bergmannsheil Bochum, Germany",
"name": "Butry, Lionel"
},
{
"affiliation": "Lund University",
"name": "Anijärv, Toomas Erik",
"orcid": "0000-0002-3650-4230",
"orcid": "0000-0002-3650-4230"
},
{
"affiliation": "Department of Psychology, Stanford University",
"name": "Gorgolewski, Krzysztof J.",
"orcid": "0000-0003-3321-7583"
},
{
"affiliation": "MIT, HMS",
"name": "Ghosh, Satrajit",
"orcid": "0000-0002-5312-6729"
}
],
"keywords": [
"neuroimaging",
Expand Down
1 change: 1 addition & 0 deletions nipype/info.py
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@ def get_nipype_gitversion():
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Topic :: Scientific/Engineering",
]
PYTHON_REQUIRES = ">= 3.8"
Expand Down
8 changes: 8 additions & 0 deletions nipype/interfaces/freesurfer/model.py
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,14 @@ class GLMFitInputSpec(FSTraitedSpec):
argstr="--logan %s %s %f",
desc="RefTac TimeSec tstar : perform Logan kinetic modeling",
)
bp_clip_neg = traits.Bool(
argstr="--bp-clip-neg",
desc="set negative BP voxels to zero",
)
bp_clip_max = traits.Float(
argstr="--bp-clip-max %f",
desc="set BP voxels above max to max",
)
force_perm = traits.Bool(
argstr="--perm-force",
desc="force perumtation test, even when design matrix is not orthog",
Expand Down
44 changes: 34 additions & 10 deletions nipype/interfaces/freesurfer/petsurfer.py
Original file line number Diff line number Diff line change
Expand Up @@ -458,10 +458,25 @@ class GTMPVCOutputSpec(TraitedSpec):
yhat_with_noise = File(
desc="4D PET file with full FOV of signal estimate (yhat) with noise after PVC (smoothed with PSF)",
)
eres = File(
desc="4D PET file of residual error after PVC (smoothed with PSF)",
)
tissue_fraction = File(
desc="4D PET file of tissue fraction before PVC",
)
tissue_fraction_psf = File(
desc="4D PET file of tissue fraction after PVC (smoothed with PSF)",
)
seg = File(
desc="Segmentation file of regions used for PVC",
)
seg_ctab = File(
desc="Color table file for segmentation file",
)


class GTMPVC(FSCommand):
"""create an anatomical segmentation for the geometric transfer matrix (GTM).
"""Perform Partial Volume Correction (PVC) to PET Data.
Examples
--------
Expand Down Expand Up @@ -536,6 +551,15 @@ def _list_outputs(self):
outputs["gtm_stats"] = os.path.join(pvcdir, "gtm.stats.dat")
outputs["reg_pet2anat"] = os.path.join(pvcdir, "aux", "bbpet2anat.lta")
outputs["reg_anat2pet"] = os.path.join(pvcdir, "aux", "anat2bbpet.lta")
outputs["eres"] = os.path.join(pvcdir, "eres.nii.gz")
outputs["tissue_fraction"] = os.path.join(
pvcdir, "aux", "tissue.fraction.nii.gz"
)
outputs["tissue_fraction_psf"] = os.path.join(
pvcdir, "aux", "tissue.fraction.psf.nii.gz"
)
outputs["seg"] = os.path.join(pvcdir, "aux", "seg.nii.gz")
outputs["seg_ctab"] = os.path.join(pvcdir, "aux", "seg.ctab")

# Assign the conditional outputs
if self.inputs.save_input:
Expand All @@ -562,7 +586,7 @@ def _list_outputs(self):
return outputs


class MRTMInputSpec(GLMFitInputSpec):
class MRTM1InputSpec(GLMFitInputSpec):
mrtm1 = traits.Tuple(
File(exists=True),
File(exists=True),
Expand All @@ -572,20 +596,20 @@ class MRTMInputSpec(GLMFitInputSpec):
)


class MRTM(GLMFit):
class MRTM1(GLMFit):
"""Perform MRTM1 kinetic modeling.
Examples
--------
>>> mrtm = MRTM()
>>> mrtm = MRTM1()
>>> mrtm.inputs.in_file = 'tac.nii'
>>> mrtm.inputs.mrtm1 = ('ref_tac.dat', 'timing.dat')
>>> mrtm.inputs.glm_dir = 'mrtm'
>>> mrtm.cmdline
'mri_glmfit --glmdir mrtm --y tac.nii --mrtm1 ref_tac.dat timing.dat'
"""

input_spec = MRTMInputSpec
input_spec = MRTM1InputSpec


class MRTM2InputSpec(GLMFitInputSpec):
Expand Down Expand Up @@ -614,7 +638,7 @@ class MRTM2(GLMFit):
input_spec = MRTM2InputSpec


class LoganRefInputSpec(GLMFitInputSpec):
class LoganInputSpec(GLMFitInputSpec):
logan = traits.Tuple(
File(exists=True),
File(exists=True),
Expand All @@ -625,16 +649,16 @@ class LoganRefInputSpec(GLMFitInputSpec):
)


class LoganRef(GLMFit):
"""Perform Logan reference kinetic modeling.
class Logan(GLMFit):
"""Perform Logan kinetic modeling.
Examples
--------
>>> logan = LoganRef()
>>> logan = Logan()
>>> logan.inputs.in_file = 'tac.nii'
>>> logan.inputs.logan = ('ref_tac.dat', 'timing.dat', 2600)
>>> logan.inputs.glm_dir = 'logan'
>>> logan.cmdline
'mri_glmfit --glmdir logan --y tac.nii --logan ref_tac.dat timing.dat 2600'
"""

input_spec = LoganRefInputSpec
input_spec = LoganInputSpec
6 changes: 6 additions & 0 deletions nipype/interfaces/freesurfer/tests/test_auto_GLMFit.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ def test_GLMFit_inputs():
args=dict(
argstr="%s",
),
bp_clip_max=dict(
argstr="--bp-clip-max %f",
),
bp_clip_neg=dict(
argstr="--bp-clip-neg",
),
calc_AR1=dict(
argstr="--tar1",
),
Expand Down
15 changes: 15 additions & 0 deletions nipype/interfaces/freesurfer/tests/test_auto_GTMPVC.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,9 @@ def test_GTMPVC_inputs():

def test_GTMPVC_outputs():
output_map = dict(
eres=dict(
extensions=None,
),
gtm_file=dict(
extensions=None,
),
Expand Down Expand Up @@ -256,6 +259,18 @@ def test_GTMPVC_outputs():
reg_rbvpet2anat=dict(
extensions=None,
),
seg=dict(
extensions=None,
),
seg_ctab=dict(
extensions=None,
),
tissue_fraction=dict(
extensions=None,
),
tissue_fraction_psf=dict(
extensions=None,
),
yhat=dict(
extensions=None,
),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# AUTO-GENERATED by tools/checkspecs.py - DO NOT EDIT
from ..petsurfer import LoganRef
from ..petsurfer import Logan


def test_LoganRef_inputs():
def test_Logan_inputs():
input_map = dict(
allow_ill_cond=dict(
argstr="--illcond",
Expand All @@ -13,6 +13,12 @@ def test_LoganRef_inputs():
args=dict(
argstr="%s",
),
bp_clip_max=dict(
argstr="--bp-clip-max %f",
),
bp_clip_neg=dict(
argstr="--bp-clip-neg",
),
calc_AR1=dict(
argstr="--tar1",
),
Expand Down Expand Up @@ -214,14 +220,14 @@ def test_LoganRef_inputs():
xor=("weight_file", "weight_inv", "weight_sqrt"),
),
)
inputs = LoganRef.input_spec()
inputs = Logan.input_spec()

for key, metadata in list(input_map.items()):
for metakey, value in list(metadata.items()):
assert getattr(inputs.traits()[key], metakey) == value


def test_LoganRef_outputs():
def test_Logan_outputs():
output_map = dict(
beta_file=dict(
extensions=None,
Expand Down Expand Up @@ -271,7 +277,7 @@ def test_LoganRef_outputs():
extensions=None,
),
)
outputs = LoganRef.output_spec()
outputs = Logan.output_spec()

for key, metadata in list(output_map.items()):
for metakey, value in list(metadata.items()):
Expand Down
Loading

0 comments on commit 6b81d26

Please sign in to comment.