Nipype workflow to generate fieldmaps from EPI acquisitions with differing phase-encoding directions
Project description
nipype-generate-fieldmaps
Nipype workflow to generate fieldmaps from EPI acquisitions with differing phase-encoding directions
Installation
pip install nipype-generate-fieldmaps
Usage
As a stand-alone workflow
# create the workflow
wf = create_generate_fieldmaps_wf()
# wire-up the inputs
wf.inputs.inputnode.se_epi_pe1_file = my_se_epi_pe1_file # type: str | Path
wf.inputs.inputnode.se_epi_pe2_file = my_se_epi_pe2_file # type: str | Path
wf.inputs.inputnode.se_epi_pe1_sidecar_file = my_se_epi_pe1_sidecar_file # type: str | Path
wf.inputs.inputnode.se_epi_pe2_sidecar_file = my_se_epi_pe2_sidecar_file # type: str | Path
# set the output directory
wf.base_dir = my_output_dir # type: str | Path
# run it
wf.run()
As a nested workflow
The nodes node1, node2, some_other_node, maybe_a_4th_node, epi_node, and anat_node are made up for demonstration purposes
from nipype import Workflow
from nipype.interfaces.fsl import EpiReg
from nipype_generate_fieldmaps import create_generate_fieldmaps_wf
# parent workflow defined elsewhere
wf = Workflow(...)
# create the (sub-)workflow
fmap_wf = create_generate_fieldmaps_wf()
# connect the various nodes form the parent workflow to the nested fieldmap workflow
wf.connect(node1, 'out_file', fmap_wf, 'inputnode.se_epi_pe1_file')
wf.connect(node2, 'out', fmap_wf, 'inputnode.se_epi_pe2_file')
wf.connect(some_other_node, 'output_file', fmap_wf, 'inputnode.se_epi_pe1_sidecar_file')
wf.connect(maybe_a_4th_node, 'sidecar_file', fmap_wf, 'inputnode.se_epi_pe2_sidecar_file')
# connect the fieldmap workflow outputs to one (or more) node(s) in the parent workflow
# for example: EpiReg()
epireg = Node(EpiReg(out_base='epi2str.nii.gz'), name='epi_reg')
# from elsewhere
wf.connect(epi_node, 'my_epi_file' epireg, 'epi')
wf.connect(anat_node, 'my_t1_file', epireg, 't1_head')
wf.connect(anat_node, 'my_t1_brain_file', epireg, 't1_brain')
# from the fieldmap workflow!
wf.connect(fmap_wf, 'outputnode.fmap_rads_file', epireg, 'fmap')
wf.connect(fmap_wf, 'outputnode.fmap_mag_file', epireg, 'fmapmag')
wf.connect(fmap_wf, 'outputnode.fmap_mag_brain_file', epireg, 'fmapmagbrain')
wf.connect(fmap_wf, 'outputnode.echo_spacing', epireg, 'echospacing')
wf.connect(fmap_wf, 'outputnode.pe1_pedir', epireg, 'pedir')
From the command line
$ nipype-generate-fieldmaps --help
usage: nipype-generate-fieldmaps [-h] [-v] se_epi_pe1 se_epi_pe2 se_epi_pe1_sidecar se_epi_pe2_sidecar out_dir
Generate fieldmaps from EPI acquisitions with differing phase-encoding directions
positional arguments:
se_epi_pe1 The spin-echo EPI file acquired in the 'first' phase-encoding direction
se_epi_pe2 The spin-echo EPI file acquired in the 'second' phase-encoding direction
se_epi_pe1_sidecar The JSON sidecar for the first spin-echo EPI file
se_epi_pe2_sidecar The JSON sidecar for the second spin-echo EPI file
out_dir The directory into which outputs are written
optional arguments:
-h, --help show this help message and exit
-v, --version show program's version number and exit
Prerequisites
This workflow has a few requirements:
-
There are two acquisitions (i.e.
.nii.gzfiles) acquired with different phase encodings, usually opposite phase encodings but this need not be the case. -
The number of volumes in acquisition 1 (the first phase encoding direction) equals the number of volumes in acquisition 2 (the second phase encoding direction)
-
Each acquisition has a JSON sidecar. Specifically, this workflow requires that each sidecar contain one of the following sets of properties. These properties are listed in the order in which the workflow will search:
PhaseEncodingDirectionandTotalReadoutTime, orPhaseEncodingDirection,ReconMatrixPE, andEffectiveEchoSpacing, orPhaseEncodingDirection,ReconMatrixPE, andBandwidthPerPixelPhaseEncode
If either JSON sidecar fails to contain at least one of the above sets of parameters the workflow will produce an error.
I/O
This workflow requires 4 inputs to be connected to the node named inputnode:
-
se_epi_pe1_fileThe spin-echo EPI file acquired in the 'first' phase-encoding direction
-
se_epi_pe2_fileThe spin-echo EPI file acquired in the 'second' phase-encoding direction
-
se_epi_pe1_sidecar_fileThe JSON sidecar for the first spin-echo EPI file
-
se_epi_pe2_sidecar_fileThe JSON sidecar for the second spin-echo EPI file
This workflow also exposes the following outputs via the node named outputnode:
-
acq_params_fileThe computed file passed to the
--datainoption oftopup -
corrected_se_epi_fileThe
.nii.gzimage containing all distortion corrected volumes from the two input acquisitions -
fmap_hz_fileThe fieldmap in hertz (Hz)
-
fmap_rads_fileThe fieldmap in radians per second (rad/s)
-
fmap_mag_fileThe 'magnitude' image (mean image) computed by averaging all volumes in
corrected_se_epi_file -
fmap_mag_brain_fileThe result of applying brain-extraction to
fmap_mag_file -
fmap_mag_brain_mask_fileThe brain mask produced during the brain-extraction of
fmap_mag_file
Workflow diagram
Contributing
- Have or install a recent version of
poetry(version >= 1.1) - Fork the repo
- Setup a virtual environment (however you prefer)
- Run
poetry install - Run
pre-commit install - Add your changes
- Commit your changes + push to your fork
- Open a PR
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nipype-generate-fieldmaps-0.2.3.tar.gz.
File metadata
- Download URL: nipype-generate-fieldmaps-0.2.3.tar.gz
- Upload date:
- Size: 7.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.12 CPython/3.10.2 Linux/5.11.0-1027-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd8225e1f0a9fc65add155d9400ef670ce16b0ef37e01f4f72d335fcfc104225
|
|
| MD5 |
dfc480b88dcf0e6eabb6f34c8e1e9adf
|
|
| BLAKE2b-256 |
d68bc702c41de57e97e53f379633248427c6f2c6bb81ab7a3f27d345ad874796
|
File details
Details for the file nipype_generate_fieldmaps-0.2.3-py3-none-any.whl.
File metadata
- Download URL: nipype_generate_fieldmaps-0.2.3-py3-none-any.whl
- Upload date:
- Size: 7.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.12 CPython/3.10.2 Linux/5.11.0-1027-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fb8cbc52b9cf4b465cc9326188705cd78c9aa10cfcf27f304cb48522c51ad5e1
|
|
| MD5 |
f11ae82beb7d9c4666aa1c9db6a5b478
|
|
| BLAKE2b-256 |
6c63b8d074ca8e7655cd45f2ada4632e3c4ea509460227c3e7b138af129649c2
|