Skip to main content

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:

  1. There are two acquisitions (i.e. .nii.gz files) acquired with different phase encodings, usually opposite phase encodings but this need not be the case.

  2. 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)

  3. 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:

    • PhaseEncodingDirection and TotalReadoutTime, or
    • PhaseEncodingDirection, ReconMatrixPE, and EffectiveEchoSpacing, or
    • PhaseEncodingDirection, ReconMatrixPE, and BandwidthPerPixelPhaseEncode

    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_file

    The spin-echo EPI file acquired in the 'first' phase-encoding direction

  • se_epi_pe2_file

    The spin-echo EPI file acquired in the 'second' phase-encoding direction

  • se_epi_pe1_sidecar_file

    The JSON sidecar for the first spin-echo EPI file

  • se_epi_pe2_sidecar_file

    The JSON sidecar for the second spin-echo EPI file

This workflow also exposes the following outputs via the node named outputnode:

  • acq_params_file

    The computed file passed to the --datain option of topup

  • corrected_se_epi_file

    The .nii.gz image containing all distortion corrected volumes from the two input acquisitions

  • fmap_hz_file

    The fieldmap in hertz (Hz)

  • fmap_rads_file

    The fieldmap in radians per second (rad/s)

  • fmap_mag_file

    The 'magnitude' image (mean image) computed by averaging all volumes in corrected_se_epi_file

  • fmap_mag_brain_file

    The result of applying brain-extraction to fmap_mag_file

  • fmap_mag_brain_mask_file

    The brain mask produced during the brain-extraction of fmap_mag_file

Workflow diagram

Workflow diagram

Contributing

  1. Have or install a recent version of poetry (version >= 1.1)
  2. Fork the repo
  3. Setup a virtual environment (however you prefer)
  4. Run poetry install
  5. Run pre-commit install
  6. Add your changes
  7. Commit your changes + push to your fork
  8. Open a PR

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nipype-generate-fieldmaps-0.2.4.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nipype_generate_fieldmaps-0.2.4-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file nipype-generate-fieldmaps-0.2.4.tar.gz.

File metadata

  • Download URL: nipype-generate-fieldmaps-0.2.4.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-1028-azure

File hashes

Hashes for nipype-generate-fieldmaps-0.2.4.tar.gz
Algorithm Hash digest
SHA256 ff1d47eaca3bb2bfa0add569349ec94aca840b218513ee267168f1755a5cca95
MD5 b095addc803f86668d03a7ac89d91c74
BLAKE2b-256 0e8befd8c85bf8432a2e921235f615cb3defa0ed3f8616ef4938a66e5a1201f4

See more details on using hashes here.

File details

Details for the file nipype_generate_fieldmaps-0.2.4-py3-none-any.whl.

File metadata

File hashes

Hashes for nipype_generate_fieldmaps-0.2.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1d00c11362a158cf1728a798092b8af26a6864951a40abb7d51fa499166aad1a
MD5 6bd19f00338c7984367b2cbbe1f329ae
BLAKE2b-256 d17b9d314ed38138f9a45464ba80c71eeb485558e18dcd606e50646abb66e3c3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page