Pydra tasks package for fsl
Project description
pydra-fsl
Pydra tasks for FSL.
Pydra is a dataflow engine which provides a set of lightweight abstractions for DAG construction, manipulation, and distributed execution.
FSL is a comprehensive library of analysis tools for FMRI, MRI and DTI brain imaging data.
Table of contents
Tested interfaces
Module | Tasks |
---|---|
bet | BET, RobustFOV |
eddy | Eddy, ApplyTopup, Topup |
fast | FAST |
flirt | FLIRT, ApplyXFM, ConcatXFM, ConvertXFM, InvertXFM, FixScaleSkew, Img2ImgCoord, Img2StdCoord, Std2ImgCoord |
fnirt | FNIRT, FNIRTFileUtils, ApplyWarp, ConvertWarp, InvWarp |
fugue | FUGUE, PrepareFieldmap, Prelude, SigLoss |
maths | (experimental) Maths, Mul |
susan | SUSAN |
utils | ChFileType, FFT, Info, Interleave, Merge, Orient, Reorient2Std, ROI, SelectVols, Slice, SmoothFill, Split, SwapDim |
Installation
pip install pydra-fsl
A separate installation of FSL is required to use this package. Please review the FSL installation instructions and licensing details.
Automatic Conversion
Automatically generated tasks can be found in the pydra.tasks.fsl.auto
sub-package.
These interfaces should be treated with caution as they likely do not pass testing.
Generated tasks that have been edited and pass testing will be imported into one or more of the
pydra.tasks.fsl.v*
sub-packages (e.g. pydra.tasks.fsl.v7_4
) corresponding
to the version of the fsl toolkit they are designed for.
Continuous integration
This template uses GitHub Actions to run tests and
deploy packages to PYPI. New packages are built and uploaded when releases are created on
GitHub, or new releases of Nipype or the Nipype2Pydra conversion tool are released.
Releases triggered by updates to Nipype or Nipype2Pydra are signified by the postN
suffix where N = <nipype-version><nipype2pydra-version>
with the '.'s stripped, e.g.
v0.2.3post185010
corresponds to the v0.2.3 tag of this repository with auto-generated
packages from Nipype 1.8.5 using Nipype2Pydra 0.1.0.
Development
Methodology
The development of this package is expected to have two phases
- Where the corresponding Nipype interfaces are considered to be the ground truth, and the Pydra tasks are generated from them
- When the Pydra tasks are considered be mature and they are edited by hand
Different tasks will probably mature at different times so there will probably be an intermediate phase between 1 and 2.
Developer installation
Before the pydra task interfaces can be generated and installed, the file-format classes fileformats packages corresponding to FSL specific file formats will need to be installed
pip install -e ./related-packages/fileformats[dev]
pip install -e ./related-packages/fileformats-extras[dev]
Next install the requirements for running the auto-conversion script and generate the Pydra task interfaces from their Nipype counterparts
pip install -r nipype-auto-conv/requirements.txt
The run the conversion script to convert Nipype interfaces to Pydra
nipype-auto-conv/generate
Install repo in developer mode from the source directory and install pre-commit to ensure consistent code-style and quality.
pip install -e .[test,dev]
pre-commit install
Auto-conversion phase
The auto-converted Pydra tasks are generated from their corresponding Nipype interface
in combination with "conversion hints" contained in YAML specs
located in nipype-auto-conv/specs/
. The self-documented conversion specs are
to be edited by hand in order to assist the auto-converter produce valid pydra tasks.
After editing one or more conversion specs the pydra.tasks.fsl.auto
package should
be regenerated by running
nipype-auto-conv/generate
The tests should be run on the auto-generated tasks to see if they are valid
pytest pydra/tasks/fsl/auto/tests/test_<the-name-of-the-task-you-edited>.py
If the test passes you should then edit the pydra/tasks/fsl/v*/__init__.py
file
to import the auto-generated task interface to signify that it has been validated and is
ready for use, where v* corresponds to the version of FSL that you have tested
it against e.g.
from pydra.tasks.fsl.auto import <the-task-you-have-validated>
and copy the test file pydra/tasks/fsl/auto/tests/test_<validated-task>.py
into pydra/tasks/fsl/v*/tests
.
File-formats and sample test data
The automatically generated tests will attempt to provided the task instance to be tested with sensible default values based on the type of the field and any constraints it has on it. However, these will often need to be manually overridden after consulting the underlying tool's documentation.
For file-based data, automatically generated file-system objects will be created for
selected format types, e.g. Nifti, Dicom. Therefore, it is important to specify the
format of the file using the "mime-like" string corresponding to a
fileformats class
in the inputs > types
and outputs > types
dicts of the YAML spec.
If the required file-type is not found implemented within fileformats, please see the fileformats
docs [https://arcanaframework.github.io/fileformats/developer.html] for instructions on how to define
new fileformat types, and see
fileformats-medimage-extras
for an example on how to implement methods to generate sample data for them. Implementations of
new fileformats that are specific to FSL, and functions to
generate sample data for them, should be defined in related-packages/fileformats
and related-packages/fileformats-extras
, respectively.
License
This project is distributed under the terms of the Apache License, Version 2.0.
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
Hashes for pydra_fsl-0.1.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f81bbd31f0f96fcb785f0175e9172e74cabafb9a4f207539bcf5fb036092334b |
|
MD5 | 71e57d0d2c458a5bd0d8b56d627fafac |
|
BLAKE2b-256 | 4ea21e48898ba7bdcc324b046da63cbaf2528902383fa381760f2d22b5477b82 |