Welcome to django_mri’s documentation!

Overview

django_mri is a reusable Django app providing general-purpose MRI data management utilities.

The purpose of this app is to abstract away technical details and automate commonplace coversion and extraction functionalities required by the various neuroimaging analysis toolkits. In addition, it provides preconfigured analysis interfaces and pipelines with the help of django_analyses and nipype.

Installation

  1. Install from PyPi:

    $ pip install django_mri
    
  2. Add “django_mri” and “django_dicom” to your project’s INSTALLED_APPS setting:

    <project>/settings.py
    INSTALLED_APPS = [
        ...,
        "django_dicom",
        "django_mri",
    ]
    

    Note

    django_mri uses django_dicom to manage data imported as DICOM files.

  3. Include the app’s URLconf in your prject urls.py:

    <project>/urls.py
    urlpatterns = [
        ...,
        path("api/", include("django_mri.urls", namespace="mri")),
    ]
    
  4. Run:

    $ python manage.py migrate
    
  5. [Optional] Load preconfigured sequence types and analyses:

    Django shell
    >>> from django_mri.analysis.utils import load_mri_analyses
    >>> from django_mri.models import SequenceType
    >>> from django_mri.models.common_sequences import sequences
    
    # Create analyses and pipelines
    >>> load_mri_analyses()
    
    # Create common MRI sequence definitions
    >>> for sequence in sequences:
    >>>     SequenceType.objects.create(**sequence)
    
  6. Start the development server and visit http://127.0.0.1:8000/admin/.

  7. Visit http://127.0.0.1:8000/api/mri/.

Importing Data

Currently, django_mri supports importing raw data only as DICOM files. To import a directory of DICOM data, simply run:

Django shell
>>> from django_mri.models import Scan

>>> path = "/path/to/dicom/archive/"
>>> Scan.objects.import_path(path)
Importing DICOM data: <####>image [<##:##>, <##.##>image/s]

Successfully imported DICOM data from <path>!
Created:        <####>

Reference

Subpackages

Analysis

Module contents

Preconfigured analyses and pipelines to be used with django_analyses.

Example

To import the analyses and pipelines to the database, start a Django shell session and run:

from django_mri.analysis.utils import load_mri_analyses

load_mri_analyses()
Subpackages
Interfaces
Module contents

Interface classes for various MRI data processing tools.

Subpackages
FSL
Module contents

Custom interface classes for FSL analyses.

Submodules
django_mri.analysis.interfaces.fsl.fast module

Definition of the FastWrapper class.

class django_mri.analysis.interfaces.fsl.fast.FastWrapper(**inputs)

Bases: nipype.interfaces.fsl.preprocess.FAST

A simple subclass of nipype’s FAST interface, tweaking the run() method’s output slightly to make output specification easier.

run(*args, **kwargs) → dict

Edits the returned results dictionary to simplify the output specification.

Returns:FAST results
Return type:dict
django_mri.analysis.interfaces.fsl.fsl_anat module

Definition of the FslAnat class.

class django_mri.analysis.interfaces.fsl.fsl_anat.FslAnat(weak_bias: bool = False, no_reorient: bool = False, no_crop: bool = False, no_bias: bool = False, no_registration: bool = False, no_nonlinear_registration: bool = False, no_segmentation: bool = False, no_subcortical_segmentation: bool = False, no_search: bool = False, bias_field_smoothing: float = None, image_type: str = 'T1', no_cleanup: bool = False)

Bases: object

Custom interface class for the fsl_anat anatomical preprocessing script.

FLAGS = {'no_nonlinear_registration': 'nononlinreg', 'no_registration': 'noreg', 'no_segmentation': 'noseg', 'no_subcortical_segmentation': 'nosubcortseg'}

Conversion dictionary between the verbose names given to the class initialization keyword arguments and the script’s parameters.

FLAG_ATTRIBUTES = ('weak_bias', 'no_reorient', 'no_crop', 'no_bias', 'no_registration', 'no_nonlinear_registration', 'no_segmentation', 'no_subcortical_segmentation', 'no_search', 'no_cleanup')

“Flags” indicate parameters that are specified without any arguments, i.e. they are a switch for some binary configuration.

FORCED_SUFFIX = '.anat'

A suffix given by fsl_anat and removed by the interface.

OUTPUT_FILES = {'bias_corrected_brain': 'T1_biascorr_brain.nii.gz', 'bias_corrected_brain_mask': 'T1_biascorr_brain_mask.nii.gz', 'csf_partial_volume': 'T1_fast_pve_0.nii.gz', 'fast_bias_correction': 'T1_biascorr.nii.gz', 'grey_matter_partial_volume': 'T1_fast_pve_1.nii.gz', 'linear_registration': 'T1_to_MNI_lin.nii.gz', 'nonlinear_registration': 'T1_to_MNI_nonlin.nii.gz', 'nonlinear_registration_field': 'T1_to_MNI_nonlin_field.nii.gz', 'nonlinear_registration_jacobian': 'T1_to_MNI_nonlin_jac.nii.gz', 'segmentation_summary': 'T1_fast_pveseg.nii.gz', 'subcortical_segmentation_summary': 'T1_subcort_seg.nii.gz', 'volume_scales': 'T1_vols.txt', 'white_matter_partial_volume': 'T1_fast_pve_2.nii.gz'}

A dictionary of the file names expected to be created by running the script.

fix_output_path(destination: pathlib.Path) → None

Removed the forced .anat suffix appended to the destination directory.

Parameters:destination (Path) – Destination directory
generate_command(scan, destination: pathlib.Path = None) → str

Returns the command to be executed in order to run the analysis.

Parameters:
  • scan (NIfTI) – The scan to run the analysis on
  • destination (Path, optional) – The directory in which output files should be created, by default None
Returns:

Command string

Return type:

str

generate_flags() → str

Returns a string containing the various flags configured for this instance.

Returns:Execution command flag parameters
Return type:str
generate_output_dict(destination: pathlib.Path = None) → dict

Returns a dictionary of the run’s output files.

Parameters:destination (Path, optional) – Destination directory, by default None
Returns:Output files by key
Return type:dict
run(scan, destination: pathlib.Path = None) → dict

Runs fsl_anat with the provided scan as input and destination as the destination directory.

Parameters:
  • scan (NIfTI) – Input scan
  • destination (Path, optional) – Destination directory, by default None
Returns:

Output files by key

Return type:

dict

Raises:

RuntimeError – Run failure

django_mri.analysis.interfaces.fsl.topup module

Definition of the TopupWrapper class.

class django_mri.analysis.interfaces.fsl.topup.TopupWrapper(*args, **kwargs)

Bases: nipype.interfaces.fsl.epi.TOPUP

A simple subclass of nipype’s TOPUP interface, tweaking the interface’s __init__() method to make input specification easier.

PHASE_ENCODING_DICT = {'i': 'x', 'j': 'y', 'k': 'z'}
fix_phase_encoding(phase_encoding: str) → str

Converts phase encoding values from i, j, k to x, y, z.

Parameters:phase_encoding (str) – Phase encoding
Returns:Coverted phase encoding
Return type:str
MATLAB
Module contents

Interfaces for MATLAB functions.

Subpackages
SPM Interfaces
Module contents

Interfaces for SPM functions.

Subpackages
CAT12 Interfaces
Module contents

Interfaces for CAT12 functions.

See also

Subpackages
CAT12 Segmentation Interface
Module contents

Definition of an interface for the CAT12 segmentation function.

Subpackages
CAT12 Segmentation Interface Utilities
Module contents

Definition of an interface for the CAT12 segmentation function.

Submodules
django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.utils.verbosify_output_dict module

A utility module created for the definition of the verbosify_output_dict() method.

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.utils.verbosify_output_dict.verbosify_output_dict(output_dict: dict) → dict

Flattens and verbosifies the output files dictionary to facilitate integration with django_analyses.

Parameters:output_dict (dict) – Output files by key
Returns:Flat and verbose output files by key
Return type:dict
Submodules
django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.defaults module

Default values for the various keys required in the batch template.

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.messages module

A module storing strings used to display messages.

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.outputs module

Dictionaries containing CAT12 segmentation output file names by key.

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.outputs.AUXILIARY_OUTPUT = {'batch_file': 'segmentation.m', 'reports': ['report/cat_{file_name}.mat', 'report/cat_{file_name}.xml', 'report/catlog_{file_name}.txt', 'report/catreport_{file_name}.pdf', 'report/catreportj_{file_name}.jpg']}

Artifacts created during execution.

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.outputs.SEGMENTATION_OUTPUT = {'cobra': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'dartel_grey_matter': {'affine': 'mri/rp1{file_name}_affine.nii', 'rigid': 'mri/rp1{file_name}_rigid.nii'}, 'dartel_white_matter': {'affine': 'mri/rp2{file_name}_affine.nii', 'rigid': 'mri/rp2{file_name}_rigid.nii'}, 'deformation_fields': {'both': ['mri/y_{file_name}.nii', 'mri/iy_{file_name}.nii'], 'forward': 'mri/y_{file_name}.nii', 'inverse': 'mri/iy_{file_name}.nii', 'none': None}, 'hammers': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'jacobian_determinant': 'mri/wj_{file_name}.nii', 'lpba40': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'modulated_grey_matter': 'mri/mwp1{file_name}.nii', 'modulated_white_matter': 'mri/mwp2{file_name}.nii', 'native_grey_matter': 'mri/p1{file_name}.nii', 'native_pve': 'mri/p0{file_name}.nii', 'native_white_matter': 'mri/p2{file_name}.nii', 'neuromorphometrics': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'surface_estimation': ['surf/lh.central.{file_name}.gii', 'surf/lh.sphere.{file_name}.gii', 'surf/lh.sphere.reg.{file_name}.gii', 'surf/lh.thickness.{file_name}', 'surf/rh.central.{file_name}.gii', 'surf/rh.sphere.{file_name}.gii', 'surf/rh.sphere.reg.{file_name}.gii', 'surf/rh.thickness.{file_name}'], 'warped_image': 'mri/wm{file_name}.nii'}

Output file names by key.

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.segmentation module

Definition of the Segmentation class.

class django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.segmentation.Segmentation(**kwargs)

Bases: django_mri.analysis.interfaces.matlab.spm.spm_procedure.SPMProcedure

An interface for the CAT12 segmentation function.

AUXILIARY_OUTPUT = {'batch_file': 'segmentation.m', 'reports': ['report/cat_{file_name}.mat', 'report/cat_{file_name}.xml', 'report/catlog_{file_name}.txt', 'report/catreport_{file_name}.pdf', 'report/catreportj_{file_name}.jpg']}
BATCH_TEMPLATE_ID = 'CAT12 Segmentation'
DEFAULTS = {'accuracy': 'average', 'affine_preprocessing': 'rough', 'affine_regularisation': 'mni', 'bias_strength': 'medium', 'cobra': False, 'dartel_grey_matter': False, 'dartel_white_matter': False, 'deformation_fields': 'none', 'hammers': False, 'internal_resampling': 1, 'jacobian_determinant': False, 'local_adaptive_segmentation_strength': 'medium', 'lpba40': False, 'modulated_grey_matter': True, 'modulated_white_matter': True, 'n_processes': 4, 'native_grey_matter': False, 'native_pve': True, 'native_white_matter': False, 'neuromorphometrics': True, 'normalized_image_voxel_size': 1.5, 'skull_stripping': 'aprg', 'surface_estimation': False, 'warped_image': True}
DEFAULT_BATCH_FILE_NAME = 'segmentation.m'
OUTPUT_DEFINITIONS = {'cobra': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'dartel_grey_matter': {'affine': 'mri/rp1{file_name}_affine.nii', 'rigid': 'mri/rp1{file_name}_rigid.nii'}, 'dartel_white_matter': {'affine': 'mri/rp2{file_name}_affine.nii', 'rigid': 'mri/rp2{file_name}_rigid.nii'}, 'deformation_fields': {'both': ['mri/y_{file_name}.nii', 'mri/iy_{file_name}.nii'], 'forward': 'mri/y_{file_name}.nii', 'inverse': 'mri/iy_{file_name}.nii', 'none': None}, 'hammers': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'jacobian_determinant': 'mri/wj_{file_name}.nii', 'lpba40': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'modulated_grey_matter': 'mri/mwp1{file_name}.nii', 'modulated_white_matter': 'mri/mwp2{file_name}.nii', 'native_grey_matter': 'mri/p1{file_name}.nii', 'native_pve': 'mri/p0{file_name}.nii', 'native_white_matter': 'mri/p2{file_name}.nii', 'neuromorphometrics': ['label/catROI_{file_name}.mat', 'label/catROI_{file_name}.xml'], 'surface_estimation': ['surf/lh.central.{file_name}.gii', 'surf/lh.sphere.{file_name}.gii', 'surf/lh.sphere.reg.{file_name}.gii', 'surf/lh.thickness.{file_name}', 'surf/rh.central.{file_name}.gii', 'surf/rh.sphere.{file_name}.gii', 'surf/rh.sphere.reg.{file_name}.gii', 'surf/rh.thickness.{file_name}'], 'warped_image': 'mri/wm{file_name}.nii'}
REDUNDANT_LOG_PATTERN = 'catlog_main_*_log*.txt'
TRANSFORMATIONS = {'accuracy': {'average': 0.5, 'high': 0.75, 'ultra high': 1}, 'affine_preprocessing': {'full': 2, 'light': 1, 'none': 0, 'rough': 1070}, 'bias_strength': {'light': 0.25, 'medium': 0.5, 'strong': 0.75}, 'dartel_grey_matter': {'affine': 2, 'no': 0, 'rigid': 1}, 'dartel_white_matter': {'affine': 2, 'no': 0, 'rigid': 1}, 'deformation_fields': {'both': '[1 1]', 'forward': '[1 0]', 'inverse': '[0 1]', 'none': '[0 0]'}, 'local_adaptive_segmentation_strength': {'light': 0.25, 'medium': 0.5, 'none': 0, 'strong': 0.75}, 'skull_stripping': {'aprg': 2, 'gcut': 0.5, 'none': -1, 'spm': 0}}
organize_output(path: pathlib.Path, created_uncompressed_version: bool, destination: pathlib.Path, remove_redundant_logs: bool, verbose_output_dict: bool = False) → dict

Organized output files after execution.

Parameters:
  • path (Path) – Input file path
  • created_uncompressed_version (bool) – Whether an uncompressed version of the input value was created or not
  • destination (Path) – Output files destination directory
  • remove_redundant_logs (bool) – Whether to remove logs created during execution or not
  • verbose_output_dict (bool, optional) – Whether to flatten the output dictionary to facilitate integration with django_analyses, by default False
Returns:

Output files by keys

Return type:

dict

remove_redundant_logs(run_dir: pathlib.Path)

Removed unnecessary logs created during execution.

Parameters:run_dir (Path) – Output files destination
run(path: pathlib.Path, destination: pathlib.Path = None, remove_redundant_logs: bool = True, verbose_output_dict: bool = False) → dict

Run CAT12 segmentation on the provided .nii input file.

Parameters:
  • path (Path) – Input file
  • destination (Path, optional) – Output file destination directory, by default None
  • remove_redundant_logs (bool, optional) – Whether to remove some logs created during execution, by default True
  • verbose_output_dict (bool, optional) – Whether to verbosify and flatten the output files dictionary, by default False
Returns:

Output files by key

Return type:

dict

transform_options() → dict

Apply any transformation defined in the transformations module to the options dictionary.

Returns:Tranformed options dictionary
Return type:dict
update_batch_template(data_path: pathlib.Path) → str

Returns a copy of the batch template, updated with the configured options and data path.

Parameters:data_path (Path) – Path of the input .nii file
Returns:Updated batch template
Return type:str
validate_and_fix_input_data(path: pathlib.Path) → Tuple[pathlib.Path, bool]

Validate the provided data path and creates an unzipped version if required.

Parameters:path (Path) – Path to input data
Returns:Fixed input data path, whether is was unzipped or not
Return type:Tuple[Path, bool]
django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.transformations module

Definition of the SEGMENTATION_TRANSFORMATIONS dictionary.

django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.transformations.SEGMENTATION_TRANSFORMATIONS = {'accuracy': {'average': 0.5, 'high': 0.75, 'ultra high': 1}, 'affine_preprocessing': {'full': 2, 'light': 1, 'none': 0, 'rough': 1070}, 'bias_strength': {'light': 0.25, 'medium': 0.5, 'strong': 0.75}, 'dartel_grey_matter': {'affine': 2, 'no': 0, 'rigid': 1}, 'dartel_white_matter': {'affine': 2, 'no': 0, 'rigid': 1}, 'deformation_fields': {'both': '[1 1]', 'forward': '[1 0]', 'inverse': '[0 1]', 'none': '[0 0]'}, 'local_adaptive_segmentation_strength': {'light': 0.25, 'medium': 0.5, 'none': 0, 'strong': 0.75}, 'skull_stripping': {'aprg': 2, 'gcut': 0.5, 'none': -1, 'spm': 0}}

Transformation to apply to option values before editing the batch template.

CAT12 Utilities
Module contents

CAT12 segmentation interface utilities.

Submodules
django_mri.analysis.interfaces.matlab.spm.cat12.utils.batch_templates module

Definition of the CAT12_TEMPLATES constant, used to locate batch template file paths by interface key.

django_mri.analysis.interfaces.matlab.spm.cat12.utils.batch_templates.CAT12_TEMPLATES = {'CAT12 Segmentation': PosixPath('/home/docs/checkouts/readthedocs.org/user_builds/django-mri/checkouts/latest/django_mri/analysis/interfaces/matlab/spm/cat12/segmentation/batch_template.m')}

Batch template file path by interface (string) key.

django_mri.analysis.interfaces.matlab.spm.cat12.utils.template_files module

Relative paths to files required by some CAT12 analysis configurations.

django_mri.analysis.interfaces.matlab.spm.cat12.utils.template_files.RELATIVE_DARTEL_TEMPLATE_LOCATION = 'toolbox/cat12/templates_1.50mm/Template_1_IXI555_MNI152.nii'

Relative path to dartel template.

django_mri.analysis.interfaces.matlab.spm.cat12.utils.template_files.RELATIVE_TISSUE_PROBABILITY_MAP_LOCATION = 'tpm/TPM.nii'

Relative path to tissue probability map.

SPM Utilities
Module contents

Utilities for the spm module.

Submodules
django_mri.analysis.interfaces.matlab.spm.utils.batch_templates module

Definition of the TEMPLATES constant.

django_mri.analysis.interfaces.matlab.spm.utils.batch_templates.TEMPLATES = {'CAT12 Segmentation': PosixPath('/home/docs/checkouts/readthedocs.org/user_builds/django-mri/checkouts/latest/django_mri/analysis/interfaces/matlab/spm/cat12/segmentation/batch_template.m')}

Batch templates dictionary, associating interface keys with template paths.

django_mri.analysis.interfaces.matlab.spm.utils.nifti_validator module

Definition of the NiftiValidator class.

class django_mri.analysis.interfaces.matlab.spm.utils.nifti_validator.NiftiValidator(allow_gz: bool = False)

Bases: object

A utility class used to validate .nii inputs and uncompress them if necessary.

validate_and_fix(path: pathlib.Path) → pathlib.Path

Validates the provided path represents a .nii file and uncompresses it if necessary.

Parameters:

path (Path) – .nii file path

Returns:

.nii file path

Return type:

Path

Raises:
validate_extension(path: pathlib.Path) → bool

Validate the given file’s extension.

Parameters:path (Path) – File path to check
Returns:Valid or invalid
Return type:bool
MRtrix3
Module contents

Interfaces for MRtrix3 scripts.

Submodules
django_mri.analysis.interfaces.mrtrix3.dwifslpreproc module

Definition of the dwifslpreproc interface.

class django_mri.analysis.interfaces.mrtrix3.dwifslpreproc.DwiFslPreproc(configuration: dict)

Bases: object

An interface for the MRtrix3 dwifslpreproc script.

References

DEFAULT_OUTPUT_NAME = 'preprocessed_dwi.mif'

Default name for primary output file.

EDDY_OUTPUTS = {'eddy_mask': 'eddy_mask.nii', 'out_movement_rms': 'eddy_movement_rms', 'out_outlier_map': 'eddy_outlier_map', 'out_outlier_n_sqr_stdev_map': 'eddy_outlier_n_sqr_stdev_map', 'out_outlier_n_stdev_map': 'eddy_outlier_n_stdev_map', 'out_outlier_report': 'eddy_outlier_report', 'out_parameter': 'eddy_parameters', 'out_restricted_movement_rms': 'eddy_restricted_movement_rms', 'out_shell_alignment_parameters': 'eddy_post_eddy_shell_alignment_parameters', 'out_shell_pe_translation_parameters': 'eddy_post_eddy_shell_PE_translation_parameters'}

eddy output files by key.

References

FLAGS = ('align_seepi', 'rpe_none', 'rpe_pair', 'rpe_all', 'rpe_header', 'force', 'quiet', 'info', 'nocleanup')

“Flags” indicate parameters that are specified without any arguments, i.e. they are a switch for some binary configuration.

SUPPLEMENTARY_OUTPUTS = ('eddyqc_text', 'eddyqc_all')

Non-default output configurations.

add_supplementary_outputs(destination: pathlib.Path) → dict

Adds the eddy output files to the interface’s configuration before generating the command to run.

References

Parameters:destination (Path) – Output directory
Returns:Updated configuration dictionary
Return type:dict
generate_command(scan, destination: pathlib.Path, config: str) → str

Returns the command to be executed in order to run the analysis.

Parameters:
  • scan (Scan) – Input scan
  • destination (Path) – Output files destination direcotry
  • config (str) – Configuration arguments for the command
Returns:

Complete execution command

Return type:

str

generate_output_dict(destination: pathlib.Path) → dict

Generates a dictionary of the expected output file paths by key.

Parameters:destination (Path) – Output files destination directory
Returns:Output files by key
Return type:dict
run(scan, destination: pathlib.Path = None) → dict

Runs dwifslpreproc with the provided scan as input. If destination is not specified, output files will be created within scan’s directory.

Parameters:
  • scan (Scan) – Input scan
  • destination (Path, optional) – Output files destination directory, by default None
Returns:

Output files by key

Return type:

dict

Raises:

RuntimeError – Run failure

Submodules
django_mri.analysis.interfaces.dcm2niix module

Definition of the Dcm2niix class.

django_mri.analysis.interfaces.dcm2niix.BASE_DIR = PosixPath('/home/docs/checkouts/readthedocs.org/user_builds/django-mri/checkouts/latest/django_mri')

Project’s base directory.

class django_mri.analysis.interfaces.dcm2niix.Dcm2niix(path: pathlib.Path = PosixPath('/home/docs/checkouts/readthedocs.org/user_builds/django-mri/checkouts/latest/django_mri/utils/dcm2niix'))

Bases: object

An interface for dcm2niix.

BOOLEAN = {False: 'n', True: 'y'}

Convert boolean configurations to “y” or “n”.

FLAGS = {'BIDS': '-b', 'compressed': '-z', 'directory': '-o', 'name': '-f'}

Arguemnts dictionary. Keys are the interface’s verbose names and values are the actual CLI’s arguments.

convert(path: pathlib.Path, destination: pathlib.Path, compressed: bool = True, generate_json: bool = True) → pathlib.Path

Coverts the series in the provided path from DICOM to NIfTI.

Parameters:
  • path (Path) – Input DICOM directory
  • destination (Path) – Output destination directory
  • compressed (bool, optional) – Whether to create compressed (.nii.gz) files or not, by default True
  • generate_json (bool, optional) – Whether to generate a “BIDS sidecar” JSON file with supplementary information, by default True
Returns:

Output file path

Return type:

Path

Raises:
extract_output_path(stdout: str, compressed: bool) → pathlib.Path

Returns the path of the output file.

Parameters:
  • stdout (str) – dcm2niix run output
  • compressed (bool) – Whether the file is compressed (.nii.gz) or not, by default True
Returns:

Output file path

Return type:

Path

generate_command(path: pathlib.Path, destination: pathlib.Path, compressed: bool = True, generate_json: bool = True) → list

Generate the command to execute to run dcm2niix.

Parameters:
  • path (Path) – Input path
  • destination (Path) – Output file destination
  • compressed (bool, optional) – Whether to compress the file or not, by default True
  • generate_json (bool, optional) – Whether to generate a JSON or not, by default True
Returns:

Command to run, split at spaces

Return type:

list

django_mri.analysis.interfaces.messages module

A module storing strings used to display messages.

Pipelines
Module contents

Proposed pipeline definitions for MRI data using commonplace neuroimaging analysis interfaces.

Pipeline definitions are aggregated in pipeline_definitions and may be added to the database using the Pipeline.objects.from_list() method.

Example

from django_analyses.models.pipeline import Pipeline
from django_mri.analysis.pipeline_definitions import pipeline_definitions

Pipeline.objects.from_list(pipeline_definitions)
Submodules
django_mri.analysis.pipelines.basic_fsl_preprocessing module
django_mri.analysis.pipelines.dwi_preprocessing module

Full DWI preprocessing pipeline.

Steps:

  • Extract b0 from AP
  • Merge AP_b0 and PA
  • Create brain mask
  • Convert to mif (merged, AP)
  • Denoise initial AP
  • dwifslpreproc AP merged
  • Gibbs correction
  • Bias correction

User inputs:

  • fslroi node: in_file [AP]
  • fslmerge node: in_files [PA]
  • mrconvert_1 –> AP: in_bvec [bvec]
  • mrconvert_1 –> AP: in_bval [bval]
django_mri.analysis.pipelines.fieldmap_correction module

Field-map correction for EPI scans using FSL.

Specifications
Module contents

Input and output specifications dictionary to be included in analysis_definitions.

References

See also

  • Analysis.objects.from_dict()
  • InputSpecification.objects.from_dict()
  • OutputSpecification.objects.from_dict()
Subpackages
FreeSurfer
Module contents

Input and output specification dicationaries for FreeSurfer analyses.

Submodules
django_mri.analysis.specifications.freesurfer.recon_all module

Input and output specification dictionaries for FreeSurfer’s recon_all script.

django_mri.analysis.specifications.freesurfer.recon_all.RECON_ALL_INPUT_SPECIFICATION = {'FLAIR_file': {'description': 'Path to FLAIR image to be used for improved pial surface estimation (can be either a DICOM, MGH or NIFTI file)', 'required': False, 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'T1_files': {'description': 'A list of T1 files to be processed, in either DICOM or NIfTI format.', 'element_type': 'FIL', 'required': False, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'T2_file': {'description': 'Path to T2 image to be used for improved pial surface estimation (can be either a DICOM, MGH or NIFTI file)', 'required': False, 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'big_ventricles': {'description': 'To be used for subjects with enlarged ventricles.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'brainstem': {'description': 'Segment brainstem structures.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'directive': {'choices': ['all', 'autorecon1', 'autorecon2', 'autorecon2-volonly', 'autorecon2-perhemi', 'autorecon2-inflate1', 'autorecon2-cp', 'autorecon2-wm', 'autorecon3', 'autorecon3-T2pial', 'autorecon-pial', 'autorecon-hemi', 'localGI', 'qcache'], 'default': 'all', 'description': 'Directives control the execution of the various processing procedures carried out.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'expert': {'description': 'Set parameters using an expert file.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'flags': {'description': 'Additional parameters.', 'element_type': 'STR', 'required': False, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'hemi': {'choices': ['lh', 'rh'], 'description': 'Choose to run only for a particular hemisphere.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'hippocampal_subfields_T1': {'description': 'Segment hippocampal subfields using the T1 image.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'hires': {'description': 'Conform to minimum voxel size (for voxels lesser than 1mm).', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'mprage': {'description': 'Assume scan parameters are MGH MPRAGE protocol, which produces darker grey matter.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'mri_aparc2aseg': {'description': 'Flags to pass to mri_aparc2aseg commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mri_ca_label': {'description': 'Flags to pass to mri_ca_label commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mri_ca_normalize': {'description': 'Flags to pass to mri_ca_normalize commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mri_ca_register': {'description': 'Flags to pass to mri_ca_register commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mri_edit_wm_with_aseg': {'description': 'Flags to pass to mri_edit_wm_with_aseg commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mri_em_register': {'description': 'Flags to pass to mri_em_register commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mri_fill': {'description': 'Flags to pass to mri_fill commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mri_mask': {'description': 'Flags to pass to mri_mask commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mri_normalize': {'description': 'Flags to pass to mri_normalize commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mri_pretess': {'description': 'Flags to pass to mri_pretess commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mri_remove_neck': {'description': 'Flags to pass to mri_remove_neck commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mri_segment': {'description': 'Flags to pass to mri_segment commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mri_segstats': {'description': 'Flags to pass to mri_segstats commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mri_tessellate': {'description': 'Flags to pass to mri_tessellate commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mri_watershed': {'description': 'Flags to pass to mri_watershed commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mris_anatomical_stats': {'description': 'Flags to pass to mris_anatomical_stats commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mris_ca_label': {'description': 'Flags to pass to mris_ca_label commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mris_fix_topology': {'description': 'Flags to pass to mris_fix_topology commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mris_inflate': {'description': 'Flags to pass to mris_inflate commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mris_make_surfaces': {'description': 'Flags to pass to mris_make_surfaces commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mris_register': {'description': 'Flags to pass to mris_register commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mris_smooth': {'description': 'Flags to pass to mris_smooth commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mris_sphere': {'description': 'Flags to pass to mris_sphere commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mris_surf2vol': {'description': 'Flags to pass to mris_surf2vol commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mrisp_paint': {'description': 'Flags to pass to mrisp_paint commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'openmp': {'description': 'Number of processes to run if parallel execution is enabled.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'parallel': {'description': 'Enable parallel execution.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'subject_id': {'description': 'Subject ID to be searched for in the SUBJECTS_DIR path.', 'dynamic_default': '{run_id}', 'is_configuration': False, 'required': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'subjects_dir': {'default': '/home/docs/checkouts/readthedocs.org/user_builds/django-mri/checkouts/latest/media/analysis', 'description': 'Path to subjects directory.', 'required': True, 'type': <class 'django_analyses.models.input.definitions.directory_input_definition.DirectoryInputDefinition'>}, 'talairach': {'description': 'Flags to pass to talairach commands.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'use_FLAIR': {'description': 'Whether to use the provided FLAIR image to generate an improved pial surface estimation.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'use_T2': {'description': 'Whether to use the provided T2 image to generate an improved pial surface estimation.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'xopts': {'choices': ['use', 'clean', 'overwrite'], 'description': 'Use, clean, or overwrite the existing experts file.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}}

recon_all input specification.

django_mri.analysis.specifications.freesurfer.recon_all.RECON_ALL_OUTPUT_SPECIFICATION = {'T1': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'aseg': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'aseg_stats': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'brain': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'brainmask': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'filled': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'norm': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'nu': {'description': "This is an intensity normalized volume generated after correcting for non-uniformity in conformed raw average (saved as 'mri/orig.mgz'). If there are any errors in later steps, it sometimes helps to check if the intensity values don't look normal in this file. If the values are too high, then scaling down the intensity a little bit and re-running recon-all usually corrects that error. In some cases, this scaling down can also be done for the orig.mgz volume.", 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'orig': {'description': 'A conformed (i.e. to 256^3, 1mm isotropic) average volume of the raw input data.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'rawavg': {'description': 'An average volume of the raw input data (if there is only one input volume, they will be identical). This volume is unconformed (i.e. to 256^3, 1mm isotropic)', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'wm': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'wmparc': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'wmparc_stats': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}}

recon_all output specification.

FSL
Module contents

Input and output specification dicationaries for FSL analyses.

Submodules
django_mri.analysis.specifications.fsl.apply_topup module

Input and output specification dictionaries for FSL’s applytopup script.

Notes

For more information about applytopup, see FSL’s TOPUP/ApplyTOPUP User Guide

django_mri.analysis.specifications.fsl.apply_topup.APPLY_TOPUP_INPUT_SPECIFICATION = {'datatype': {'choices': ['float', 'char', 'int', 'short', 'double'], 'description': 'Force output data type.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'encoding_file': {'description': "Path to a file containing images' phase-encoding directions/readout times. Mutually exclusive with inputs: encoding direction.", 'required': True, 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'in_files': {'description': "List of paths to NIfTI files to apply topup's results on.", 'element_type': 'FIL', 'is_configuration': False, 'required': True, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'in_index': {'description': 'Comma separated list of indices corresponding to –datain.', 'element_type': 'INT', 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'in_topup_fieldcoef': {'description': 'Path to topup file containing the field coefficients. Requires inputs: in_topup_movpar', 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>}, 'in_topup_movpar': {'description': 'Path to topup movpar.txt file. Requires input: in_topup_fieldcoef', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'interp': {'choices': ['spline', 'trilinear'], 'description': 'Image interpolation model, linear or spline.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'method': {'choices': ['jac', 'lsr'], 'description': 'Use jacobian modulation (jac) or least-squares resampling (lsr).', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'out_corrected': {'description': 'Path to 4D image file with unwarped images.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'output_type': {'choices': ['NIFTI', 'NIFTI_PAIR', 'NIFTI_GZ', 'NIFTI_PAIR_GZ'], 'default': 'NIFTI_GZ', 'description': 'Output file format.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}}

applytopup input specification.

django_mri.analysis.specifications.fsl.apply_topup.APPLY_TOPUP_OUTPUT_SPECIFICATION = {'out_corrected': {'description': 'Path to 4D image file with unwarped images.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}}

applytopup output specification.

django_mri.analysis.specifications.fsl.bet module

Input and output specification dictionaries for FSL’s BET_ script.

Notes

For more information about BET, see FSL’s BET documentation.

django_mri.analysis.specifications.fsl.bet.BET_INPUT_SPECIFICATION = {'center': {'description': 'Center of gravity of initial mesh surface in voxels.', 'element_type': 'INT', 'max_length': 3, 'min_length': 3, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'frac': {'default': 0.5, 'description': 'Fractional intensity threshold.', 'max_value': 1, 'min_value': 0, 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'functional': {'description': 'Apply brain extraction to 4D fMRI data.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'in_file': {'description': 'A NIfTI format file to skullstrip.', 'is_configuration': False, 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>, 'value_attribute': 'path.__str__'}, 'mask': {'description': 'Whether to create a binary mask image.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'mesh': {'description': 'Whether to generate a VTK mesh brain surface.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'no_output': {'description': 'Suppress output creation altogether.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'out_file': {'default': 'brain.nii.gz', 'description': 'Desired output file path.', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'outline': {'description': 'Whether to create a surface outline image.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'output_type': {'choices': ['NIFTI', 'NIFTI_PAIR', 'NIFTI_GZ', 'NIFTI_PAIR_GZ'], 'default': 'NIFTI_GZ', 'description': 'Output file format.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'padding': {'description': 'Whether to improve BET if FOV is very small in Z (by temporarily padding end slices).', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'radius': {'description': 'Head radius.', 'min_value': 0, 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'reduce_bias': {'description': 'Bias field and neck cleanup.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'remove_eyes': {'description': 'Whether to remove eyes and optic nerves (can be useful in SIENA).', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'robust': {'description': 'Whether to coduct a robust brain center estimation, iterating BET several times.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'skull': {'description': 'Whether to create a skull image.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'surfaces': {'description': 'Whether to run bet2 and then betsurf to get additional skull and scalp surfaces (includes registrations).', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 't2_guided': {'description': 'Include a raw T2 scan.', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'threshold': {'description': 'Whether to apply thresholding to segmented brain image and mask.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'vertical_gradient': {'default': 0, 'description': 'Verical gradient in fractional intensity threshold.', 'max_value': 1, 'min_value': -1, 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}}

BET input specification dictionary.

django_mri.analysis.specifications.fsl.bet.BET_OUTPUT_SPECIFICATION = {'inskull_mask_file': {'description': 'The path of the inward skull mask file, if generated.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'inskull_mesh_file': {'description': 'The path of the inward skull mesh outline file, if generated.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'mask_file': {'description': 'The path of the binary mask file, if generated.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'meshfile': {'description': 'The path of the VTK mesh file, if generated.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_file': {'description': 'The path of the extracted brain file, if generated.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'outline_file': {'description': 'The path of the outline file, if generated.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'outskin_mask_file': {'description': 'The path of the outward skin mask file, if generated.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'outskin_mesh_file': {'description': 'The path of the outward skin mesh outline file, if generated.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'outskull_mask_file': {'description': 'The path of the outward skull mask file, if generated.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'outskull_mesh_file': {'description': 'The path of the outward skull mesh outline file, if generated.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'skull_mask_file': {'description': 'The path of the skull mask file, if generated.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}}

BET output specification dictionary.

django_mri.analysis.specifications.fsl.binary_maths module

Input and output specification dictionaries for nipype’s BinaryMaths interface, wrapping FSL’s fslmaths.

django_mri.analysis.specifications.fsl.binary_maths.BINARY_MATHS_INPUT_SPECIFICATION = {'in_file': {'description': 'Path to image to operate on.', 'is_configuration': False, 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>, 'value_attribute': 'path.__str__'}, 'internal_datatype': {'choices': ['float', 'char', 'int', 'short', 'double', 'input'], 'default': 'float', 'description': 'Datatype to use for calculations.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'nan2zero': {'description': 'Change NaNs to zeros before doing anything.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'operand_file': {'description': 'Path to second image to perform operation with. Mutually exclusive with inputs: operand_value.', 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>}, 'operand_value': {'description': 'Value to perform operation with.', 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'operation': {'choices': ['add', 'sub', 'mul', 'div', 'rem', 'max', 'min'], 'description': 'Operation to perform.', 'required': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'out_file': {'default': 'math_out.nii.gz', 'description': 'Path to image to write results to.', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'output_datatype': {'choices': ['float', 'char', 'int', 'short', 'double', 'input'], 'description': 'Datatype to use for output (default uses input type).', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'output_type': {'choices': ['NIFTI', 'NIFTI_PAIR', 'NIFTI_GZ', 'NIFTI_PAIR_GZ'], 'default': 'NIFTI_GZ', 'description': 'Output file format.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}}

BinaryMaths input specification dictionary.

django_mri.analysis.specifications.fsl.binary_maths.BINARY_MATHS_OUTPUT_SPECIFICATION = {'out_file': {'description': "Path to image containing calculation's result.", 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}}

BinaryMaths input specification dictionary.

django_mri.analysis.specifications.fsl.eddy module

Input and output specification dictionaries for FSL’s eddy script.

django_mri.analysis.specifications.fsl.eddy.EDDY_INPUT_SPECIFICATION = {'cnr_maps': {'default': False, 'description': 'Output CNR-Maps.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'dont_peas': {'default': False, 'description': 'Do NOT perform a post-eddy alignment of shells.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'dont_sep_offs_move': {'default': False, 'description': 'Do NOT perform a post-eddy alignment of shells.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'estimate_move_by_susceptibility': {'default': False, 'description': 'Estimate how susceptibility field changes with subject movement.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'fep': {'default': False, 'description': 'Fill empty planes in x- or y-directions.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'field': {'description': 'Non-topup derived fieldmap scaled in Hz.', 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>}, 'field_mat': {'description': 'Matrix specifying the relative positions of the fieldmap, –field, and the first volume of the input file, –imain.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'flm': {'choices': ['quadratic', 'linear', 'cubic'], 'default': 'quadratic', 'description': 'First level EC model.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'fudge_factor': {'default': 10.0, 'description': 'Fudge factor for hyperparameter error variance.', 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'fwhm': {'description': 'FWHM for conditioning filter when estimating the parameters.', 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'in_acqp': {'description': 'File containing acquisition parameters.', 'required': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_bval': {'description': 'File containing the b-values for all volumes in –imain.', 'required': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_bvec': {'description': 'File containing the b-vectors for all volumes in –imain.', 'required': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_file': {'description': 'File containing all the images to estimate distortions for.', 'is_configuration': False, 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>}, 'in_index': {'description': 'File containing indices for all volumes in –imain into –acqp and –topup.', 'required': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_mask': {'description': 'Mask to indicate brain.', 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>}, 'in_topup_fieldcoef': {'description': 'opup results file containing the field coefficients.', 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>}, 'in_topup_movpar': {'description': 'Topup results file containing the movement parameters (movpar.txt). Requires inputs: in_topup_fieldcoef', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'initrand': {'description': 'Resets rand for when selecting voxels.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'interp': {'choices': ['spline', 'trilinear'], 'default': 'spline', 'description': ' Interpolation model for estimation step.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'is_shelled': {'description': 'Override internal check to ensure that date are acquired on a set of b-value shells.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'json': {'description': 'Name of .json text file with information about slice timing. Mutually exclusive with inputs: slice_order. Requires inputs: mporder.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mbs_ksp': {'description': 'Knot-spacing for MBS field estimation. Requires inputs: estimate_move_by_susceptibility.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'mbs_lambda': {'description': 'Weighting of regularisation for MBS estimation. Requires inputs: estimate_move_by_susceptibility.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'mbs_niter': {'description': 'Number of iterations for MBS estimation. Requires inputs: estimate_move_by_susceptibility.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'method': {'choices': ['jac', 'lsr'], 'default': 'jac', 'description': 'Final resampling method (jacobian/least squares).', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'mporder': {'description': 'Order of slice-to-vol movement model.Requires inputs: use_cuda.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'multiband_factor': {'description': 'Multi-band factor.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'multiband_offset': {'description': 'Multi-band offset (-1 if bottom slice removed, 1 if top slice removed. Requires inputs: multiband_factor.', 'max_value': 1, 'min_value': -1, 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'niter': {'default': 5, 'description': 'Number of iterations.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'num_threads': {'default': 1, 'description': 'Number of openmp threads to use.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'nvoxhp': {'description': '# of voxels used to estimate the hyperparameters.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'out_base': {'default': 'eddy_corrected', 'description': 'Basename for output image.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'outlier_nstd': {'description': 'Number of std off to qualify as outlier.Requires inputs: repol.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'outlier_pos': {'description': 'Consider both positive and negative outliers if set. Requires inputs: repol.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'outlier_sqr': {'description': 'Consider outliers among sums-of-squared differences if set. Requires inputs: repol.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'outlier_type': {'choices': ['sw', 'gw', 'both'], 'description': 'Type of outliers, slicewise (sw), groupwise (gw) or both (both). Requires inputs: repol.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'output_type': {'choices': ['NIFTI', 'NIFTI_PAIR', 'NIFTI_GZ', 'NIFTI_PAIR_GZ'], 'default': 'NIFTI_GZ', 'description': 'Output file format.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'repol': {'description': 'Detect and replace outlier slices.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'residuals': {'description': 'Output Residuals.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'session': {'description': 'File containing session indices for all volumes in –imain.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'slice2vol_interp': {'choices': ['trilinear', 'spline'], 'description': ' Slice-to-vol interpolation model for estimation step. Requires inputs: mporder.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'slice2vol_lambda': {'description': 'Regularisation weight for slice-to-vol movement (reasonable range 1-10). Requires inputs: mporder.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'slice2vol_niter': {'description': 'umber of iterations for slice-to-vol. Requires inputs: mporder.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'slice_order': {'description': 'Name of text file completely specifying slice/group acquisition. Mutually exclusive with inputs: json. Requires inputs: mporder.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'slm': {'choices': ['none', 'linear', 'quadratic'], 'default': 'none', 'description': 'Second level EC model.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'use_cuda': {'description': 'Run eddy using cuda gpu.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}}

eddy input specification dictionary.

django_mri.analysis.specifications.fsl.eddy.EDDY_OUTPUT_SPECIFICATION = {'out_cnr_maps': {'description': 'Path/name of file with the cnr_maps.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'out_corrected': {'description': '4D image file containing all the corrected volumes.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'out_movement_over_time': {'description': 'Text file containing translations (mm) and rotations (radians) for each excitation.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_movement_rms': {'description': 'Summary of the ‘total movement’ in each volume.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'out_outlier_free': {'description': '4D image file not corrected for susceptibility or eddy-current distortions or subject movement but with outlier slices replaced.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'out_outlier_map': {'description': 'Matrix where rows represent volumes and columns represent slices. “0” indicates that scan-slice is not an outlier and “1” indicates that it is.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_outlier_n_sqr_stdev_map': {'description': 'Matrix where rows represent volumes and columns represent slices. Values indicate number of standard deivations off the square root of the mean squared difference between observation and prediction is.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_outlier_n_stdev_map': {'description': 'Matrix where rows represent volumes and columns represent slices. Values indicate number of standard deviations off the mean difference between observation and prediction is.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_outlier_report': {'description': 'Text file with a plain language report on what outlier slices eddy has found.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_parameter': {'description': 'Text file with parameters defining the field and movement for each scan.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_residuals': {'description': 'Path/name of file with the residuals.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'out_restricted_movement_rms': {'description': 'Summary of the ‘total movement’ in each volume disregarding translation in the PE direction.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'out_rotated_bvecs': {'description': 'File containing rotated b-values for all volumes.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_shell_alignment_parameters': {'description': ' Text file containing rigid body movement parameters between the different shells as estimated by a post-hoc mutual information based registration.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_shell_pe_translation_parameters': {'description': 'Text file containing translation along the PE-direction between the different shells as estimated by a post-hoc mutual information based registration.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}}

eddy input specification dictionary.

django_mri.analysis.specifications.fsl.fast module

Input and output specification dictionaries for FSL’s FAST script.

django_mri.analysis.specifications.fsl.fast.FAST_INPUT_SPECIFICATION = {'args': {'description': 'Additional parameters to the command.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'bias_iters': {'description': 'Number of main-loop iterations during bias-field removal.', 'max_value': 10, 'min_value': 1, 'required': False, 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'bias_lowpass': {'description': 'Bias field smoothing extent (FWHM) in millimeters.', 'max_value': 40, 'min_value': 4, 'required': False, 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'hyper': {'description': 'Segmentation spatial smoothness.', 'max_value': 1, 'min_value': 0, 'required': False, 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'img_type': {'description': 'Integer specifying type of image: (1=T1, 2=T2, 3=PD).', 'max_value': 3, 'min_value': 1, 'required': False, 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'in_files': {'description': 'Path to NIfTI format image file to be segmented.', 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>, 'value_attribute': 'path.__str__'}, 'init_seg_smooth': {'description': 'Initial segmentation spatial smoothness (during bias field estimation).', 'max_value': 0.1, 'min_value': 0.0001, 'required': False, 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'init_transform': {'description': '<standard2input.mat> initialise using priors.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'iters_afterbias': {'description': 'Number of main-loop iterations after bias-field removal.', 'max_value': 20, 'min_value': 1, 'required': False, 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'manual_seg': {'description': 'Filename containing intensities.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'mixel_smooth': {'description': 'Spatial smoothness for mixeltype.', 'max_value': 1, 'min_value': 0, 'required': False, 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'no_bias': {'description': 'Do not remove bias field.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'no_pve': {'description': 'Turn off PVE (partial volume estimation).', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'number_classes': {'default': 3, 'description': 'Number of tissue-type classes.', 'max_value': 10, 'min_value': 1, 'required': False, 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'out_basename': {'default': 'segmented', 'description': 'Base name of output files.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'output_biascorrected': {'description': 'Output restored image (bias-corrected image).', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'output_biasfield': {'description': 'Output estimated bias-field.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'output_type': {'choices': ['NIFTI', 'NIFTI_PAIR', 'NIFTI_GZ', 'NIFTI_PAIR_GZ'], 'default': 'NIFTI_GZ', 'description': 'Output file format.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'probability_maps': {'description': 'Outputs individual probability maps.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'segment_iters': {'description': 'Number of segmentation-initialisation iterations.', 'max_value': 50, 'min_value': 1, 'required': False, 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'segments': {'description': 'Outputs a separate binary image for each tissue type.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'use_priors': {'description': 'Use priors throughout.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}}

FAST input specification dictionary.

django_mri.analysis.specifications.fsl.fast.FAST_OUTPUT_SPECIFICATION = {'mixeltype': {'description': 'Path/name of mixeltype volume file _mixeltype.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'partial_volume_0': {'description': '', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'partial_volume_1': {'description': '', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'partial_volume_2': {'description': '', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'tissue_class_map': {'description': 'An image of all tissue classes represented as 1, 2, and 3.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}}

FAST output specification dictionary.

django_mri.analysis.specifications.fsl.flirt module

Input and output specification dictionaries for FSL’s FLIRT script.

django_mri.analysis.specifications.fsl.flirt.FLIRT_INPUT_SPECIFICATION = {'angle_rep': {'choices': ['quaternion', 'euler'], 'description': 'Rotation angles representation.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'apply_isoxfm': {'description': 'Whether to apply an affine transformation with isotropic resampling.', 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'apply_xfm': {'description': 'Whether to apply an existing affine transformation.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'bbr_slope': {'description': 'Value of BBR slope.', 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'bbrtype': {'choices': ['signed', 'global_abs', 'local_abs'], 'description': 'Type of BBR cost function.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'bgvalue': {'description': 'Use a specified background value for points outside FOV.', 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'bins': {'description': 'Number of histogram bins.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'coarse_search': {'description': 'Coarse search delta angle.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'cost': {'choices': ['mutualinfo', 'corratio', 'normcorr', 'normmi', 'leastsq', 'labeldiff', 'bbr'], 'default': 'corratio', 'description': 'Type of cost function to apply.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'datatype': {'choices': ['char', 'short', 'int', 'float', 'double'], 'description': 'Output data type.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'display_init': {'description': 'Whether to display the initial matrix.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'dof': {'default': 12, 'description': 'Tranform degrees of freedom.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'echospacing': {'description': 'Value of EPI echo spacing in seconds.', 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'fieldmap': {'description': 'Fieldmap image in radians per second. Must be already registered to the reference image.', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'fieldmapmask': {'description': 'Mask for fieldmap image.', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'fine_search': {'description': 'Fine search delta angle.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'force_scaling': {'description': 'Force rescaling even for low resolution images.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'in_file': {'description': 'A NIfTI format file to register to the reference.', 'is_configuration': False, 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>, 'value_attribute': 'path.__str__'}, 'in_matrix_file': {'description': 'An 4x4 affine transformation matrix to apply.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'in_weight': {'description': 'Input file for weighting.', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'interp': {'choices': ['trilinear', 'nearestneighbour', 'sinc', 'spline'], 'description': 'Final interpolation method used in reslicing.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'min_sampling': {'description': 'Minimum voxel dimensions for resampling.', 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'no_clamp': {'description': 'Whether to not use intensity clamping.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'no_resample': {'description': 'Whether to not change input sampling.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'no_resample_blur': {'description': 'Whether to not use blurring on downsampling.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'no_search': {'description': 'Set all angular search ranges to [0, 0].', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'out_file': {'default': 'registered.nii.gz', 'description': 'The resulting registered image.', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'out_log': {'default': 'log.txt', 'description': 'Path to save a log of the run if required.', 'is_output_path': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'out_matrix_file': {'default': 'affine_matrix.txt', 'description': 'The calculated affine transformation that registers the input to the reference which is saved as a 4x4 affine matrix.', 'is_output_path': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'padding_size': {'description': 'Interpolates outside image when using apply_xfm.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'pedir': {'description': 'Phase encode direction of EPI - 1/2/3=x/y/z & -1/-2/-3=-x/-y/-z.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'ref_weight': {'description': 'Refernce file for weighting.', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'reference': {'description': 'A NIfTI format file to register the input file with.', 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>, 'value_attribute': 'path.__str__'}, 'rigid2D': {'description': 'Whether to use 2D rigid body mode (ignores DOF).', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'save_log': {'default': False, 'description': 'Whether to save a run log.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'schedule': {'description': 'Replace default schedule.', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'searchr_x': {'description': 'Search angles along X-axis in degrees.', 'element_type': 'INT', 'max_length': 2, 'min_length': 2, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'searchr_y': {'description': 'Search angles along Y-axis in degrees.', 'element_type': 'INT', 'max_length': 2, 'min_length': 2, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'searchr_z': {'description': 'Search angles along Z-axis in degrees.', 'element_type': 'INT', 'max_length': 2, 'min_length': 2, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'sinc_width': {'description': 'Full width in voxels.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'sinc_window': {'choices': ['rectangular', 'hanning', 'blackman'], 'description': 'Final interpolation method used in reslicing.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'uses_qform': {'description': 'Whether to initialize using sform or qform.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'verbose': {'description': 'Verbosity level (0 is the least verbose).', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'wm_seg': {'description': 'White matter segmentation volume needed by BBR cost function.', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'wmcoords': {'description': 'White matter boundary coordinates for BBR cost function.', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'wmnorms': {'description': 'White matter boundary normals for BBR cost function.', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}}

FLIRT input specification dictionary.

django_mri.analysis.specifications.fsl.flirt.FLIRT_OUTPUT_SPECIFICATION = {'out_file': {'description': 'Path to registered file (if generated).', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'out_log': {'description': 'Path to the run log (if generated).', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>, 'validate_existence': False}, 'out_matrix_file': {'description': 'Path to the calculated affine transform (if generated).', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>, 'validate_existence': False}}

FLIRT output specification dictionary.

django_mri.analysis.specifications.fsl.fnirt module

Input and output specification dictionaries for FSL’s FNIRT script.

django_mri.analysis.specifications.fsl.fnirt.FNIRT_INPUT_SPECIFICATION = {'affine_file': {'description': 'File containing an existing affine transformation matrix.', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'apply_inmask': {'description': 'A list of iterations to use the input mask on (1 to use, 0 to skip).', 'element_type': 'INT', 'required': False, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'apply_intensity_mapping': {'description': 'List of subsampling levels to apply intensity mapping for (0 to skip, 1 to apply).', 'element_type': 'INT', 'required': False, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'apply_refmask': {'description': 'A list of iterations to use the reference mask on (1 to use, 0 to skip).', 'element_type': 'INT', 'required': False, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'bias_regularization_lambda': {'default': 10000, 'description': 'Weight of regularisation for bias-field.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'biasfield_resolution': {'as_tuple': True, 'default': [50, 50, 50], 'description': 'Approximate resolution (in mm) of warp basis in the X, Y, and Z axes.', 'element_type': 'INT', 'max_length': 3, 'min_length': 3, 'required': False, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'config_file': {'description': 'Path for a config file specifying command line arguments.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'derive_from_ref': {'default': False, 'description': 'If true, reference image is used to calculate derivatives.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'field_file': {'default': 'field.nii.gz', 'description': 'Path for the output file with field.', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'fieldcoeff_file': {'default': 'field_coefficients.nii.gz', 'description': 'Name for field coefficients file to output.', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'hessian_precision': {'choices': ['double', 'float'], 'default': 'double', 'description': 'Precision for representing Hessian.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_file': {'description': 'A NIfTI format file to register to the reference.', 'is_configuration': False, 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>, 'value_attribute': 'path.__str__'}, 'in_fwhm': {'default': [6, 4, 2, 2], 'description': 'FWHM (in mm) of gaussian smoothing kernel for the input volume.', 'element_type': 'INT', 'required': False, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'in_intensitymap_file': {'description': 'File containing initial initial intensity mapping usually generated by a previous FNIRT run.', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'inmask_file': {'description': 'Path for a file with a mask in the input image space.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'inmask_val': {'default': 0, 'description': 'Value to mask out in input image.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'intensity_mapping_model': {'choices': ['none', 'global_linear', 'global_non_linear', 'local_linear', 'global_non_linear_with_bias', 'local_non_linear'], 'description': 'Model for intensity-mapping.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'intensity_mapping_order': {'default': 5, 'description': 'Order of poynomial for mapping intensities.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'inwarp_file': {'description': 'File containing initial non-linear warps.', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'jacobian_file': {'default': 'jacobian.nii.gz', 'description': 'Path to the output file for writing out the Jacobian of the field (for diagnostic or VBM purposes).', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'jacobian_range': {'as_tuple': True, 'default': [0.01, 100.0], 'description': 'Allowed range of Jacobian determinants.', 'element_type': 'FLT', 'required': False, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'log_file': {'default': 'log.txt', 'description': 'Path for a log file.', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'max_nonlin_iter': {'default': [5, 5, 5, 5], 'description': 'List containing the maximal numbers of non-linear iterations.', 'element_type': 'INT', 'required': False, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'modulatedref_file': {'default': 'modulatedref.nii.gz', 'description': 'Path to the output file for writing out intensity modulated --ref (for diagnostic purposes).', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'output_type': {'choices': ['NIFTI', 'NIFTI_PAIR', 'NIFTI_GZ', 'NIFTI_PAIR_GZ'], 'description': 'Output file format.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'ref_file': {'description': 'A NIfTI format file to register the input file with.', 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>, 'value_attribute': 'path.__str__'}, 'ref_fwhm': {'default': [4, 2, 0, 0], 'description': 'FWHM (in mm) of gaussian smoothing kernel for the reference volume.', 'element_type': 'INT', 'required': False, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'refmask_file': {'description': 'Path for a file with a mask in the reference space.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'refmask_val': {'default': 0, 'description': 'Value to mask out in reference image.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'regularization_lambda': {'description': 'Weight of regularisation.', 'element_type': 'FLT', 'required': False, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'regularization_model': {'choices': ['membrane_energy', 'bending_energy'], 'default': 'bending_energy', 'description': 'Model for regularisation of warp-field.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'skip_implicit_in_masking': {'description': 'Skip implicit masking based on value in input image.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'skip_implicit_ref_masking': {'description': 'Skip implicit masking based on value in reference image.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'skip_inmask': {'description': 'Skip specified inmask_file if set.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'skip_intensity_mapping': {'default': False, 'description': 'Whether to skip estimate intensity-mapping.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'skip_lambda_ssq': {'default': False, 'description': 'If true, lambda is not weighted by current ssq.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'skip_refmask': {'description': 'Skip specified refmask_file if set.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'spline_order': {'default': 3, 'description': 'Order of spline (2 = quadratic, 3 = cubic).', 'required': False, 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'subsampling_scheme': {'default': [4, 2, 1, 1], 'description': 'Sub-sampling scheme.', 'element_type': 'INT', 'required': False, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'warp_resolution': {'as_tuple': True, 'default': [10, 10, 10], 'description': 'Approximate resolution (in mm) of warp basis in the X, Y, and Z axes.', 'element_type': 'INT', 'max_length': 3, 'min_length': 3, 'required': False, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'warped_file': {'default': 'warped.nii.gz', 'description': 'Path for the output image.', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}}

FNIRT input specification dictionary.

django_mri.analysis.specifications.fsl.fnirt.FNIRT_OUTPUT_SPECIFICATION = {'field_file': {'description': 'Warp field.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'fieldcoeff_file': {'description': 'Field coefficients.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'jacobian_file': {'description': 'Jacobian of the field.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'log_file': {'description': 'Run log.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'modulatedref_file': {'description': 'Intensity modulated reference.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'warped_file': {'description': 'Warped image.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}}

FNIRT output specification dictionary.

django_mri.analysis.specifications.fsl.fsl_anat module

Input and output specification dictionaries for FSL’s fsl_anat script.

django_mri.analysis.specifications.fsl.fsl_anat.FSL_ANAT_INPUT_SPECIFICATION = {'bias_field_smoothing': {'description': 'Specify the value for bias field smoothing (the -l option in FAST).', 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'destination': {'description': 'Run output destination.', 'is_configuration': False, 'is_output_directory': True, 'required': False, 'run_method_input': True, 'type': <class 'django_analyses.models.input.definitions.directory_input_definition.DirectoryInputDefinition'>}, 'image': {'description': 'Input image for preprocessing.', 'is_configuration': False, 'required': True, 'run_method_input': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>}, 'image_type': {'choices': ['T1', 'T2', 'PD'], 'default': 'T1', 'description': 'Specify the type of image (T1, T2, or PD, default is T1).', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'no_bias': {'description': 'Turn off FAST bias field correction.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'no_cleanup': {'description': 'Do not remove intermediate files.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'no_crop': {'description': 'Turn off automated cropping (`robustfov`).', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'no_nonlinear_registration': {'description': 'Turn off non-linear registration to standard using FNIRT.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'no_registration': {'description': 'Turn off registration to standard using FLIRT and FNIRT.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'no_reorient': {'description': 'Turn off `fslreorient2std` execution.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'no_search': {'description': 'Specify that linear registration uses the -nosearch option (FLIRT).', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'no_segmentation': {'description': 'Turn off tissue-type segmentation using FAST.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'no_subcortical_segmentation': {'description': 'Turn off subcortical segmentation using FIRST.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'weak_bias': {'description': 'Used for images with little and/or smooth bias fields.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}}

fsl_anat input specification dictionary.

django_mri.analysis.specifications.fsl.fsl_anat.FSL_ANAT_OUTPUT_SPECIFICATION = {'bias_corrected_brain': {'description': 'Bias-corrected brain extraction result.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'bias_corrected_brain_mask': {'description': 'Mask of bias-corrected brain extraction result.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'csf_partial_volume': {'description': 'CSF partial volume segmenetation.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'fast_bias_correction': {'description': 'Bias-corrected version used for FAST segmentation.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'grey_matter_partial_volume': {'description': 'Grey matter partial volume segmenetation.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'linear_registration': {'description': 'Linear registration output.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'nonlinear_registration': {'description': 'Non-linear registration output.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'nonlinear_registration_field': {'description': 'Non-linear warp field.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'nonlinear_registration_jacobian': {'description': 'Jacobian of the non-linear warp field.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'segmentation_summary': {'description': 'A summary image showing the tissue with the greatest partial volume fraction per voxel.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'subcortical_segmentation_summary': {'description': 'A summary image of subcortical segmentation results.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'volume_scales': {'description': 'A file containing a scaling factor and brain volumes, based on skull-contrained registration, suitable for head-size normalisation (as the scaling is based on the skull size, not the brain size).', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'white_matter_partial_volume': {'description': 'White matter partial volume segmenetation.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}}

fsl_anat output specification dictionary.

django_mri.analysis.specifications.fsl.fslmerge module

Input and output specification dictionaries for FSL’s fslmerge script.

django_mri.analysis.specifications.fsl.fslmerge.FSLMERGE_INPUT_SPECIFICATION = {'dimension': {'choices': ['t', 'x', 'y', 'z', 'a'], 'description': "Dimension along which to merge, optionally set tr inputs when dimension is 't'.", 'required': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_files': {'db_value_preprocessing': 'path.__str__', 'description': 'A list of (at least 2) NIfTI format files to merge.', 'element_type': 'FIL', 'is_configuration': False, 'required': True, 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'merged_file': {'default': 'merged.nii.gz', 'description': 'Desired output file path.', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'output_type': {'choices': ['NIFTI', 'NIFTI_PAIR', 'NIFTI_GZ', 'NIFTI_PAIR_GZ'], 'default': 'NIFTI_GZ', 'description': 'Output file format.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'tr': {'default': 1.0, 'description': 'Specified TR in seconds.', 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}}

fslmerge input specification dictionary.

django_mri.analysis.specifications.fsl.fslmerge.FSLMERGE_OUTPUT_SPECIFICATION = {'merged_file': {'description': 'Path of merged file', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}}

fslmerge output specification dictionary.

django_mri.analysis.specifications.fsl.fslroi module

Input and output specification dictionaries for FSL’s fslroi script.

django_mri.analysis.specifications.fsl.fslroi.FSLROI_INPUT_SPECIFICATION = {'crop_list': {'description': 'list of two tuples specifying crop options.', 'element_type': 'TUP', 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'ignore_exception': {'description': 'Print an error message instead of throwing an exception in case the interface fails to run', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'in_file': {'description': 'A NIfTI to extract an ROI from.', 'is_configuration': False, 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>, 'value_attribute': 'path.__str__'}, 'output_type': {'choices': ['NIFTI', 'NIFTI_PAIR', 'NIFTI_GZ', 'NIFTI_PAIR_GZ'], 'default': 'NIFTI_GZ', 'description': 'Output file format.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'roi_file': {'default': 'roi.nii.gz', 'description': 'Path to output file.', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 't_min': {'description': '', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 't_size': {'description': '', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'x_min': {'description': '', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'x_size': {'description': '', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'y_min': {'description': '', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'y_size': {'description': '', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'z_min': {'description': '', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'z_size': {'description': '', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}}

fslroi input specification dictionary.

django_mri.analysis.specifications.fsl.fslroi.FSLROI_OUTPUT_SPECIFICATION = {'roi_file': {'description': 'Path to output file.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}}

fslroi output specification dictionary.

django_mri.analysis.specifications.fsl.mean_image module

Input and output specification dictionaries for nipype’s MeanImage interface, wrapping FSL’s fslmaths.

django_mri.analysis.specifications.fsl.mean_image.MEAN_IMAGE_INPUT_SPECIFICATION = {'dimension': {'choices': ['T', 'X', 'Y', 'Z'], 'description': "Dimension along which to merge, optionally set TR inputs when dimension is 'T'", 'required': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_file': {'description': 'Path to image to operate on.', 'is_configuration': False, 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>, 'value_attribute': 'path.__str__'}, 'internal_datatype': {'choices': ['float', 'char', 'int', 'short', 'double', 'input'], 'default': 'float', 'description': 'Datatype to use for calculations.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'nan2zero': {'description': 'Change NaNs to zeros before doing anything.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'out_file': {'default': 'mean.nii.gz', 'description': 'Path to image to write results to.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'output_datatype': {'choices': ['float', 'char', 'int', 'short', 'double', 'input'], 'description': 'Datatype to use for output (default uses input type).', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'output_type': {'choices': ['NIFTI', 'NIFTI_PAIR', 'NIFTI_GZ', 'NIFTI_PAIR_GZ'], 'default': 'NIFTI_GZ', 'description': 'Output file format.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}}

MeanImage input specification dictionary.

django_mri.analysis.specifications.fsl.mean_image.MEAN_IMAGE_OUTPUT_SPECIFICATION = {'out_file': {'description': "Path to image containing calculation's result.", 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}}

MeanImage output specification dictionary.

django_mri.analysis.specifications.fsl.reorient2std module

Input and output specification dictionaries for nipype’s Reorient2Std interface, wrapping FSL’s fslreorient2std.

django_mri.analysis.specifications.fsl.reorient2std.REORIENT2STD_INPUT_SPECIFICATION = {'args': {'description': 'Additional parameters to the command.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_file': {'description': 'Path to NIfTI format image file to reorient.', 'is_configuration': False, 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>, 'value_attribute': 'path.__str__'}, 'out_file': {'default': 'reoriented.nii.gz', 'description': 'Desired output file path.', 'is_output_path': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'output_type': {'choices': ['NIFTI', 'NIFTI_PAIR', 'NIFTI_GZ', 'NIFTI_PAIR_GZ'], 'default': 'NIFTI_GZ', 'description': 'Output file format.', 'is_configuration': False, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}}

Reorient2Std input specification dictionary.

django_mri.analysis.specifications.fsl.reorient2std.REORIENT2STD_OUTPUT_SPECIFICATION = {'out_file': {'description': 'Reorient output file.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}}

Reorient2Std output specification dictionary.

django_mri.analysis.specifications.fsl.robustfov module

Input and output specification dictionaries for nipype’s RobustFOV interface, wrapping FSL’s robustfov.

django_mri.analysis.specifications.fsl.robustfov.ROBUSTFOV_INPUT_SPECIFICATION = {'args': {'description': 'Additional parameters to the command.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'brainsize': {'default': 170, 'description': 'Size of brain (in millimiteres) in the z-dimension.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'in_file': {'description': 'Path to NIfTI format image file to crop.', 'is_configuration': False, 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>, 'value_attribute': 'path.__str__'}, 'out_roi': {'default': 'roi.nii.gz', 'description': 'ROI volume output file path.', 'is_output_path': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'out_transform': {'default': 'transform.mat', 'description': 'Tranformation matrix output file path.', 'is_output_path': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'output_type': {'choices': ['NIFTI', 'NIFTI_PAIR', 'NIFTI_GZ', 'NIFTI_PAIR_GZ'], 'default': 'NIFTI_GZ', 'description': 'Output file format.', 'is_configuration': False, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}}

RobustFOV input specification dictionary.

django_mri.analysis.specifications.fsl.robustfov.ROBUSTFOV_OUTPUT_SPECIFICATION = {'out_roi': {'description': 'ROI volume.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'out_transform': {'description': 'Transformation matrix in_file to out_roi output name.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}}

RobustFOV output specification dictionary.

django_mri.analysis.specifications.fsl.susan module

Input and output specification dictionaries for FSL’s SUSAN script.

django_mri.analysis.specifications.fsl.susan.SUSAN_INPUT_SPECIFICATION = {'args': {'description': 'Additional parameters to pass to the command.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'brightness_threshold': {'description': 'Should be greater than noise level and less than contrast of edges to be preserved.', 'required': True, 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'dimension': {'default': 3, 'max_value': 3, 'min_value': 2, 'required': False, 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'fwhm': {'description': 'FWHM of smoothing, in millimeters.', 'required': True, 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'in_file': {'description': 'Filename of input time-series.', 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>, 'value_attribute': 'path.__str__'}, 'out_file': {'default': 'smooth.nii.gz', 'description': 'Desired output file path.', 'is_output_path': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'output_type': {'choices': ['NIFTI', 'NIFTI_PAIR', 'NIFTI_GZ', 'NIFTI_PAIR_GZ'], 'default': 'NIFTI_GZ', 'description': 'Output file format.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'use_median': {'default': True, 'description': 'Whether to use a local median filter in the cases where single-point noise is detected.', 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}}

SUSAN input specification dictionary.

django_mri.analysis.specifications.fsl.susan.SUSAN_OUTPUT_SPECIFICATION = {'smoothed_file': {'description': 'Smoothed output file.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}}

SUSAN output specification dictionary.

django_mri.analysis.specifications.fsl.topup module
MRtrix3
Module contents

Input and output specification dicationaries for MRtrix3 analyses.

Submodules
django_mri.analysis.specifications.mrtrix3.bias_correct module

Input and output specification dictionaries for MRtrix’s dwibiascorrect script.

Notes

For more information, see MRtrix3’s dwibiascorrect reference.

django_mri.analysis.specifications.mrtrix3.bias_correct.BIAS_CORRECT_INPUT_SPECIFICATION = {'bias': {'default': 'bias.mif', 'description': 'The output noise map.', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'bval_scale': {'choices': ['yes', 'no'], 'default': 'yes', 'description': 'Specifies whether the b - values should be scaled by the square of the corresponding DW gradient norm, as often required for multishell or DSI DW acquisition schemes.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'grad_file': {'description': 'DWI gradient scheme (MRTrix format). Mutually exclusive with inputs: grad_fsl.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'grad_fsl': {'description': 'DWI gradient scheme (FSL format). Mutually exclusive with inputs: grad_file.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_bval': {'description': 'Bvals file in FSL format.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_bvec': {'description': 'Bvecs file in FSL format.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_file': {'description': 'Input DWI image.', 'is_configuration': False, 'required': True, 'type': <class 'django_mri.models.inputs.scan_input_definition.ScanInputDefinition'>, 'value_attribute': 'mif.__str__'}, 'in_mask': {'description': 'Mask image.', 'type': <class 'django_mri.models.inputs.scan_input_definition.ScanInputDefinition'>, 'value_attribute': 'mif.__str__'}, 'nthreads': {'description': 'Number of threads. if zero, the number of available cpus will be used.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'out_file': {'default': 'bias_corrected.nii.gz', 'description': 'The output denoised DWI image.', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'use_ants': {'description': 'Use ANTS N4 to estimate the inhomogeneity field. Mutually exclusive with inputs: use_fsl.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'use_fsl': {'description': 'Use FSL FAST to estimate the inhomogeneity field. Mutually exclusive with inputs: use_ants.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}}

DWIBiasCorrect input specification dictionary.

django_mri.analysis.specifications.mrtrix3.bias_correct.BIAS_CORRECT_OUTPUT_SPECIFICATION = {'bias': {'description': 'The output bias field.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_file': {'description': 'The output denoised DWI image.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}}

DWIBiasCorrect output specification dictionary.

django_mri.analysis.specifications.mrtrix.degibbs module

Input and output specification dictionaries for MRtrix’s mrdegibbs script.

Notes

For more information, see MRtrix3’s mrdegibbs reference.

django_mri.analysis.specifications.mrtrix3.degibbs.DEGIBBS_INPUT_SPECIFICATION = {'axes': {'default': [0, 1], 'description': 'Indicate the plane in which the data was acquired (axial = 0,1; coronal = 0,2; sagittal = 1,2).', 'element_type': 'INT', 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'bval_scale': {'choices': ['yes', 'no'], 'default': 'yes', 'description': 'Specifies whether the b - values should be scaled by the square of the corresponding DW gradient norm, as often required for multishell or DSI DW acquisition schemes.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'grad_file': {'description': 'Dw gradient scheme (MRTrix format). Mutually exclusive with inputs: grad_fsl.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'grad_fsl': {'description': 'dw gradient scheme (FSL format). Mutually exclusive with inputs: grad_file.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_bval': {'description': 'Bvals file in FSL format.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_bvec': {'description': 'Bvecs file in FSL format.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_file': {'is_configuration': False, 'required': True, 'type': <class 'django_mri.models.inputs.scan_input_definition.ScanInputDefinition'>, 'value_attribute': 'mif.__str__'}, 'maxW': {'default': 3, 'description': 'Right border of window used for total variation (TV) computation.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'minW': {'default': 1, 'description': 'Left border of window used for total variation (TV) computation.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'nshifts': {'default': 20, 'description': 'Discretization of subpixel spacing.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'nthreads': {'description': 'Number of threads. if zero, the number of available cpus will be used.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'out_file': {'default': 'denoised.mif', 'description': 'The output denoised DWI image.', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}}

MRDeGibbs input specification.

django_mri.analysis.specifications.mrtrix3.degibbs.DEGIBBS_OUTPUT_SPECIFICATION = {'out_file': {'description': 'The output denoised DWI image.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}}

MRDeGibbs output specification.

django_mri.analysis.specifications.mrtrix.denoise module

Input and output specification dictionaries for MRtrix’s dwidenoise script.

Notes

For more information, see MRtrix3’s dwidenoise reference.

django_mri.analysis.specifications.mrtrix.dwifslpreproc module

Input and output specification dictionaries for MRtrix’s dwifslpreproc script.

See also

Notes

For more information, see MRtrix3’s dwifslpreproc reference.

django_mri.analysis.specifications.mrtrix3.dwifslpreproc.DWIFSLPREPROC_INPUT_SPECIFICATION = {'align_seepi': {'description': 'Achieve alignment between the SE-EPI images used for inhomogeneity field estimation, and the DWIs (more information in Description section)', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'destination': {'description': 'Run output destination.', 'is_configuration': False, 'is_output_directory': True, 'required': False, 'run_method_input': True, 'type': <class 'django_analyses.models.input.definitions.directory_input_definition.DirectoryInputDefinition'>}, 'eddy_mask': {'description': 'Provide a processing mask to use for eddy, instead of having dwifslpreproc generate one internally using dwi2mask', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'eddy_options': {'description': 'Manually provide additional command-line options to the eddy command (provide a string within quotation marks that contains at least one space, even if only passing a single command-line option to eddy)', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'eddy_slspec': {'description': 'Provide a file containing slice groupings for eddy’s slice-to-volume registration', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'eddyqc_all': {'description': 'Copy ALL outputs generated by eddy (including images), and the output of eddy_qc (if installed), into an output directory', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'eddyqc_text': {'description': 'Copy the various text-based statistical outputs generated by eddy, and the output of eddy_qc (if installed), into an output directory', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'export_grad_fsl': {'description': 'Export the final gradient table in FSL bvecs/bvals format', 'element_type': 'STR', 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'export_grad_mrtrix': {'description': 'Export the final gradient table in MRtrix format', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'grad': {'description': 'Provide the diffusion gradient table in MRtrix format', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'grad_fsl': {'description': 'Provide the diffusion gradient table in MRtrix format', 'element_type': 'STR', 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'json_import': {'description': 'Import image header information from an associated JSON file (may be necessary to determine phase encoding information)', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'nocleanup': {'description': 'do not delete intermediate files during script execution, and do not delete scratch directory at script completion.', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'nthreads': {'description': 'Number of threads. if zero, the number of available cpus will be used.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'pe_dir': {'choices': ['rl', 'lr', 'ap', 'pa', 'is', 'si', '-0', '0', '-1', '1', '-2', '2', 'i', 'i-', 'j', 'j-', 'k', 'k-'], 'description': 'Manually specify the phase encoding direction of the input series', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'readout_time': {'description': 'Manually specify the total readout time of the input series (in seconds)', 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'rpe_all': {'description': 'Specify that ALL DWIs have been acquired with opposing phase-encoding', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'rpe_header': {'description': 'Specify that the phase-encoding information can be found in the image header(s), and that this is the information that the script should use', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'rpe_none': {'description': 'Specify that no reversed phase-encoding image data is being provided; eddy will perform eddy current and motion correction only', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'rpe_pair': {'description': 'Specify that a set of images (typically b=0 volumes) will be provided for use in inhomogeneity field estimation only (using the -se_epi option)', 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'scan': {'description': 'Input DWI image.', 'is_configuration': False, 'required': True, 'run_method_input': True, 'type': <class 'django_mri.models.inputs.scan_input_definition.ScanInputDefinition'>, 'value_attribute': 'mif.__str__'}, 'scratch': {'description': 'manually specify the path in which to generate the scratch directory.', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'se_epi': {'description': 'Provide an additional image series consisting of spin-echo EPI images, which is to be used exclusively by topup for estimating the inhomogeneity field (i.e. it will not form part of the output image series)', 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'topup_options': {'description': 'Manually provide additional command-line options to the topup command (provide a string within quotation marks that contains at least one space, even if only passing a single command-line option to topup)', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}}

DwiFslPreproc input specification dictionary.

django_mri.analysis.specifications.mrtrix3.dwifslpreproc.DWIFSLPREPROC_OUTPUT_SPECIFICATION = {'eddy_mask': {'description': 'Brain mask used durring eddy currents correction.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}, 'out_movement_rms': {'description': 'Summary of the ‘total movement’ in each volume', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_outlier_map': {'description': 'Matrix where rows represent volumes and columns represent slices. “0” indicates that scan-slice is not an outlier and “1” indicates that it is.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_outlier_n_sqr_stdev_map': {'description': 'Matrix where rows represent volumes and columns represent slices. Values indicate number of standard deivations off the square root of the mean squared difference between observation and prediction is.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_outlier_n_stdev_map': {'description': 'Matrix where rows represent volumes and columns represent slices. Values indicate number of standard deviations off the mean difference between observation and prediction is.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_outlier_report': {'description': 'Text file with a plain language report on what outlier slices eddy has found.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_parameter': {'description': 'Text file with parameters defining the field and movement for each scan.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_restricted_movement_rms': {'description': 'Summary of the ‘total movement’ in each volume disregarding translation in the PE direction.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_shell_alignment_parameters': {'description': 'Text file containing rigid body movement parameters between the different shells as estimated by a post-hoc mutual information based registration.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'out_shell_pe_translation_parameters': {'description': 'Text file containing translation along the PE-direction between the different shells as estimated by a post-hoc mutual information based registration.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'preprocessed_dwi': {'description': 'The output preprocessed DWI.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}}

DwiFslPreproc output specification dictionary.

django_mri.analysis.specifications.mrtrix.mrconvert module

Input and output specification dictionaries for MRtrix’s mrconvert script.

Notes

For more information, see MRtrix3’s mrconvert reference.

django_mri.analysis.specifications.mrtrix3.mrconvert.MRCONVERT_INPUT_SPECIFICATION = {'axes': {'description': 'specify the axes that will be used', 'element_type': 'INT', 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'bval_scale': {'choices': ['yes', 'no'], 'default': 'yes', 'description': 'Specifies whether the b - values should be scaled by the square of the corresponding DW gradient norm, as often required for multishell or DSI DW acquisition schemes.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'coord': {'description': 'extract data at the specified coordinates', 'element_type': 'FLT', 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'grad_file': {'description': 'Dw gradient scheme (MRTrix format). Mutually exclusive with inputs: grad_fsl.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'grad_fsl': {'description': '(bvec, bval) DW gradient scheme (FSL format). Mutually exclusive with inputs: grad_file.', 'element_type': 'STR', 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'in_bval': {'description': 'Bvals file in FSL format.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_bvec': {'description': 'Bvecs file in FSL format.', 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'in_file': {'description': 'Input DWI image.', 'is_configuration': False, 'required': True, 'type': <class 'django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition'>}, 'nthreads': {'description': 'Number of threads. if zero, the number of available cpus will be used.', 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'out_file': {'default': 'denoised.nii.gz', 'description': 'The output denoised DWI image.', 'is_output_path': True, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'scaling': {'description': 'specify the data scaling parameter', 'element_type': 'FLT', 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}, 'vox': {'description': 'Change the voxel dimensions.', 'element_type': 'FLT', 'type': <class 'django_analyses.models.input.definitions.list_input_definition.ListInputDefinition'>}}

MRConvert input specification dictionary.

django_mri.analysis.specifications.mrtrix3.mrconvert.MRCONVERT_OUTPUT_SPECIFICATION = {'out_file': {'description': 'The output converted image.', 'type': <class 'django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition'>}}

MRConvert output specification dictionary.

SPM
Module contents

Input and output specifications for SPM functions.

Subpackages
CAT12
Module contents

Input and output specifications for CAT12 functions.

Submodules
django_mri.analysis.specifications.spm.cat12.segmentation module

Input and output specification dictionaries for CAT12 segmentation interface.

django_mri.analysis.specifications.spm.cat12.segmentation.CAT12_SEGMENTATION_INPUT_SPECIFICATION = {'accuracy': {'choices': ['average', 'high', 'ultra high'], 'default': 'average', 'description': '', 'is_configuration': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'affine_preprocessing': {'choices': ['none', 'light', 'full', 'rough'], 'default': 'rough', 'description': '', 'is_configuration': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'affine_regularisation': {'choices': ['mni', 'eastern', 'none'], 'default': 'mni', 'description': '', 'is_configuration': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'bias_strength': {'choices': ['light', 'medium', 'strong'], 'default': 'medium', 'description': '', 'is_configuration': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'cobra': {'default': False, 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'dartel_grey_matter': {'default': False, 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'dartel_white_matter': {'default': False, 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'deformation_fields': {'choices': ['none', 'forward', 'inverse', 'both'], 'default': 'none', 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'destination': {'description': 'Where to output the results.', 'is_configuration': False, 'is_output_directory': True, 'run_method_input': True, 'type': <class 'django_analyses.models.input.definitions.directory_input_definition.DirectoryInputDefinition'>}, 'hammers': {'default': False, 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'internal_resampling': {'default': 1.5, 'description': '', 'is_configuration': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'jacobian_determinant': {'default': False, 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'local_adaptive_segmentation_strength': {'choices': ['none', 'light', 'medium', 'strong'], 'default': 'medium', 'description': '', 'is_configuration': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'lpba40': {'default': False, 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'modulated_grey_matter': {'default': True, 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'modulated_white_matter': {'default': True, 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'n_processes': {'default': 4, 'description': 'Whether to implement multi-threading and with how many processes.', 'is_configuration': False, 'required': False, 'type': <class 'django_analyses.models.input.definitions.integer_input_definition.IntegerInputDefinition'>}, 'native_grey_matter': {'default': False, 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'native_pve': {'default': True, 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'native_white_matter': {'default': False, 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'neuromorphometrics': {'default': True, 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'normalized_image_voxel_size': {'default': 1.5, 'description': '', 'is_configuration': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.float_input_definition.FloatInputDefinition'>}, 'path': {'description': 'Anatomical high resolution raw data to be segmented.', 'is_configuration': False, 'required': True, 'run_method_input': True, 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'skull_stripping': {'choices': ['none', 'spm', 'gcut', 'aprg'], 'default': 'aprg', 'description': '', 'is_configuration': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.string_input_definition.StringInputDefinition'>}, 'surface_estimation': {'default': False, 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}, 'tpm_path': {'description': 'Tissue probability map to be used.', 'is_configuration': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.file_input_definition.FileInputDefinition'>}, 'warped_image': {'default': True, 'description': '', 'is_configuration': False, 'is_output_switch': True, 'required': False, 'type': <class 'django_analyses.models.input.definitions.boolean_input_definition.BooleanInputDefinition'>}}

CAT12 segmentation interface input specification dictionary.

django_mri.analysis.specifications.spm.cat12.segmentation.CAT12_SEGMENTATION_OUTPUT_SPECIFICATION = {'batch_file': {'description': 'The MATLAB .m file used to run the CAT12 segmentation.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'dartel_grey_matter': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'dartel_white_matter': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'forward_deformation_field': {'description': 'The deformation field from the image to the template.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'inverse_deformation_field': {'description': 'The deformation field from the template to the image.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'jacobian_determinant': {'description': 'A value representing local volume changes.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'labels_mat': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'labels_xml': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'left_hemisphere_central_surface': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'left_hemisphere_cortical_thickness': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'left_hemisphere_spherical_registered_surface': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'left_hemisphere_spherical_surface': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'modulated_grey_matter': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'modulated_white_matter': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'native_grey_matter': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'native_pve': {'description': 'Labeled version of the segmentation in native space.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'native_white_matter': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'report_jpg': {'description': 'JPG log of the run.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'report_mat': {'description': "MATLAB format .mat file containing the run's log.", 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'report_pdf': {'description': 'PDF log of the run.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'report_txt': {'description': 'Text format log file.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'report_xml': {'description': 'XML log of the run.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'right_hemisphere_central_surface': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'right_hemisphere_cortical_thickness': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'right_hemisphere_spherical_registered_surface': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'right_hemisphere_spherical_surface': {'description': '', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}, 'warped_image': {'description': 'The image in normalised space without any modulation.', 'type': <class 'django_analyses.models.output.definitions.file_output_definition.FileOutputDefinition'>}}

CAT12 segmentation interface output specification dictionary.

Utilities
Module contents
Submodules
django_mri.analysis.utils.get_latest_analysis_version module

Definition of the get_lastest_analysis_version() function.

django_mri.analysis.utils.get_latest_analysis_version.get_lastest_analysis_version(analysis: Union[str, int, django_analyses.models.analysis.Analysis]) → django_analyses.models.analysis_version.AnalysisVersion

Returns the “lastest” (first by descending title order) analysis version of the provided analysis.

Analysis may be specified providing either its primary key, title, or an actual Analysis instance.

Parameters:analysis (Union[str, int, Analysis]) – The desired analysis
Returns:First analysis version
Return type:AnalysisVersion
Raises:ValueError – No analysis version found
django_mri.analysis.utils.get_mrconvert_node
django_mri.analysis.utils.load_mri_analyses
Submodules
django_mri.analysis.analysis_definitions module
django_mri.analysis.mri_interfaces module

Each analysis version imported to the database using django_analyses needs to have a matching interface registered for it in the project’s settings. This interface is expected to be some class exposing a method (by default run()) which returns a dictionary of outputs matching its associated OutputSpecification.

References

django_mri.analysis.mri_interfaces.interfaces = {'BET': {None: <class 'nipype.interfaces.fsl.preprocess.BET'>}, 'CAT12 Segmentation': {'12.6': <class 'django_mri.analysis.interfaces.matlab.spm.cat12.segmentation.segmentation.Segmentation'>}, 'FAST': {<property object>: <class 'django_mri.analysis.interfaces.fsl.fast.FastWrapper'>}, 'FLIRT': {None: <class 'nipype.interfaces.fsl.preprocess.FLIRT'>}, 'FNIRT': {None: <class 'nipype.interfaces.fsl.preprocess.FNIRT'>}, 'FSL Anatomical Processing Script': {'BETA': <class 'django_mri.analysis.interfaces.fsl.fsl_anat.FslAnat'>}, 'ReconAll': {None: <class 'nipype.interfaces.freesurfer.preprocess.ReconAll'>}, 'SUSAN': {None: <class 'nipype.interfaces.fsl.preprocess.SUSAN'>}, 'apply_topup': {None: <class 'nipype.interfaces.fsl.epi.ApplyTOPUP'>}, 'bias_correct': {None: <class 'nipype.interfaces.mrtrix3.preprocess.DWIBiasCorrect'>}, 'binary_maths': {None: <class 'nipype.interfaces.fsl.maths.BinaryMaths'>}, 'degibbs': {None: <class 'nipype.interfaces.mrtrix3.preprocess.MRDeGibbs'>}, 'denoise': {None: <class 'nipype.interfaces.mrtrix3.preprocess.DWIDenoise'>}, 'dwipreproc': {'BETA': <class 'django_mri.analysis.interfaces.mrtrix3.dwifslpreproc.DwiFslPreproc'>}, 'eddy': {None: <class 'nipype.interfaces.fsl.epi.Eddy'>}, 'fslmerge': {None: <class 'nipype.interfaces.fsl.utils.Merge'>}, 'fslreorient2std': {None: <class 'nipype.interfaces.fsl.utils.Reorient2Std'>}, 'fslroi': {None: <class 'nipype.interfaces.fsl.utils.ExtractROI'>}, 'mean_image': {None: <class 'nipype.interfaces.fsl.maths.MeanImage'>}, 'robustfov': {None: <class 'nipype.interfaces.fsl.utils.RobustFOV'>}, 'topup': {<property object>: <class 'django_mri.analysis.interfaces.fsl.topup.TopupWrapper'>}}

A dictionary that should be imported in the project’s settings and included within the ANALYSIS_INTERFACES setting.

django_mri.analysis.messages module

A module storing strings used to display messages.

django_mri.analysis.pipeline_definitions module
django_mri.analysis.visualizers module
class django_mri.analysis.visualizers.FslAnatVisualizer(run: django_analyses.models.run.Run)

Bases: object

input_image
output_images
visualize() → None

Filters

Module contents

Filters for app’s models.

Notes

For more information, see:

Submodules
django_mri.filters.scan_filter module

Definition of the ScanFilter class.

class django_mri.filters.scan_filter.NumberInFilter(*args, **kwargs)

Bases: django_filters.filters.BaseInFilter, django_filters.filters.NumberFilter

class django_mri.filters.scan_filter.ScanFilter(data=None, queryset=None, *, request=None, prefix=None)

Bases: django_filters.rest_framework.filterset.FilterSet

Provides useful filtering options for the Series class.

base_filters = {'created': <django_filters.filters.DateTimeFromToRangeFilter object>, 'description': <django_filters.filters.LookupChoiceFilter object>, 'dicom__id': <django_filters.filters.NumberFilter object>, 'dicom_id_in': <django_mri.filters.scan_filter.NumberInFilter object>, 'echo_time': <django_filters.filters.NumberFilter object>, 'id': <django_filters.filters.NumberFilter object>, 'institution_name': <django_filters.filters.AllValuesFilter object>, 'inversion_time': <django_filters.filters.NumberFilter object>, 'is_updated_from_dicom': <django_filters.rest_framework.filters.BooleanFilter object>, 'number': <django_filters.filters.NumberFilter object>, 'repetition_time': <django_filters.filters.NumberFilter object>, 'scan_time': <django_filters.filters.DateTimeFromToRangeFilter object>, 'sequence_type': <django_mri.filters.scan_filter.NumberInFilter object>, 'subject': <django_filters.filters.ModelChoiceFilter object>}
declared_filters = {'created': <django_filters.filters.DateTimeFromToRangeFilter object>, 'description': <django_filters.filters.LookupChoiceFilter object>, 'dicom_id_in': <django_mri.filters.scan_filter.NumberInFilter object>, 'institution_name': <django_filters.filters.AllValuesFilter object>, 'number': <django_filters.filters.NumberFilter object>, 'scan_time': <django_filters.filters.DateTimeFromToRangeFilter object>, 'sequence_type': <django_mri.filters.scan_filter.NumberInFilter object>}
django_mri.filters.scan_filter.filter_by_sequence_type(queryset, field_name, value)
django_mri.filters.sequence_type_filter module

Models

Module contents

Definition of the app’s models.

Subpackages
Choices
Module contents

Choice ENUMs for easier maintenance of CharField’s choice parameters.

Submodules
django_mri.models.choices.scanning_sequence module

A ChoiceEnum to represent ScanningSequence values.

class django_mri.models.choices.scanning_sequence.ScanningSequence

Bases: dicom_parser.utils.choice_enum.ChoiceEnum

An enumeration.

EP = 'Echo Planar'
GR = 'Gradient Recalled'
IR = 'Inversion Recovery'
RM = 'Research Mode'
SE = 'Spin Echo'
django_mri.models.choices.sequence_variant module

A ChoiceEnum to represent SequenceVariant values.

class django_mri.models.choices.sequence_variant.SequenceVariant

Bases: dicom_parser.utils.choice_enum.ChoiceEnum

An enumeration.

MP = 'MAG Prepared'
MTC = 'Magnetization Transfer Contrast'
NONE = 'None'
OSP = 'Oversampling Phase'
SK = 'Segmented k-Space'
SP = 'Spoiled'
SS = 'Steady State'
TRSS = 'Time Reversed Steady State'
Inputs
Module contents

Custom Input and InputDefinition subclasses.

These models expand upon django_analysesinput module to facilitate integration with the various analysis interfaces.

Submodules
django_mri.models.inputs.nifti_input module
class django_mri.models.inputs.nifti_input.NiftiInput(id, run, input_ptr, value, definition)

Bases: django_analyses.models.input.input.Input

definition

Accessor to the related object on the forward side of a many-to-one or one-to-one (via ForwardOneToOneDescriptor subclass) relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Child.parent is a ForwardManyToOneDescriptor instance.

value

Accessor to the related object on the forward side of a many-to-one or one-to-one (via ForwardOneToOneDescriptor subclass) relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Child.parent is a ForwardManyToOneDescriptor instance.

django_mri.models.inputs.nifti_input_definition module
class django_mri.models.inputs.nifti_input_definition.NiftiInputDefinition(id, key, required, description, is_configuration, value_attribute, db_value_preprocessing, run_method_input, inputdefinition_ptr)

Bases: django_analyses.models.input.definitions.input_definition.InputDefinition

input_class

alias of django_mri.models.inputs.nifti_input.NiftiInput

input_set

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

django_mri.models.inputs.scan_input module
class django_mri.models.inputs.scan_input.ScanInput(id, run, input_ptr, value, definition)

Bases: django_analyses.models.input.input.Input

definition

Accessor to the related object on the forward side of a many-to-one or one-to-one (via ForwardOneToOneDescriptor subclass) relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Child.parent is a ForwardManyToOneDescriptor instance.

value

Accessor to the related object on the forward side of a many-to-one or one-to-one (via ForwardOneToOneDescriptor subclass) relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Child.parent is a ForwardManyToOneDescriptor instance.

django_mri.models.inputs.scan_input_definition module
class django_mri.models.inputs.scan_input_definition.ScanInputDefinition(id, key, required, description, is_configuration, value_attribute, db_value_preprocessing, run_method_input, inputdefinition_ptr)

Bases: django_analyses.models.input.definitions.input_definition.InputDefinition

input_class

alias of django_mri.models.inputs.scan_input.ScanInput

input_set

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

Managers
Module contents
Submodules
django_mri.models.managers.scan module
class django_mri.models.managers.scan.ScanManager

Bases: django.db.models.manager.Manager

import_dicom_data(path: pathlib.Path, progressbar: bool = True, report: bool = True) → tuple
import_path(path: pathlib.Path, progressbar: bool = True, report: bool = True) → tuple
Outputs
Module contents

Custom Output and OutputDefinition subclasses.

These models expand upon django_analysesoutput module to facilitate integration with the various analysis interfaces.

Submodules
django_mri.models.outputs.nifti_output module
class django_mri.models.outputs.nifti_output.NiftiOutput(id, run, output_ptr, value, definition)

Bases: django_analyses.models.output.output.Output

definition

Accessor to the related object on the forward side of a many-to-one or one-to-one (via ForwardOneToOneDescriptor subclass) relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Child.parent is a ForwardManyToOneDescriptor instance.

value

Accessor to the related object on the forward side of a many-to-one or one-to-one (via ForwardOneToOneDescriptor subclass) relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Child.parent is a ForwardManyToOneDescriptor instance.

django_mri.models.outputs.nifti_output_definition module
class django_mri.models.outputs.nifti_output_definition.NiftiOutputDefinition(id, key, description, outputdefinition_ptr)

Bases: django_analyses.models.output.definitions.output_definition.OutputDefinition

output_class

alias of django_mri.models.outputs.nifti_output.NiftiOutput

output_set

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

pre_output_instance_create(kwargs: dict) → None
django_mri.models.outputs.output_definitions module
class django_mri.models.outputs.output_definitions.OutputDefinitions

Bases: enum.Enum

An enumeration.

NIFTI = 'NIfTI'
SCAN = 'Scan'
Submodules
django_mri.models.common_sequences module

A list of common MRI sequences and their respective DICOM header attributes.

django_mri.models.fields module

Definition of a custom ArrayField subclass.

Copied from https://blogs.gnome.org/danni/2016/03/08/multiple-choice-using-djangos-postgres-arrayfield/.

class django_mri.models.fields.ChoiceArrayField(base_field, size=None, **kwargs)

Bases: django.contrib.postgres.fields.array.ArrayField

A field that allows us to store an array of choices.

Uses Django’s PostgreSQL ArrayField and a MultipleChoiceField for its formfield.

formfield(**kwargs)

Return a django.forms.Field instance for this field.

django_mri.models.help_text module

A module storing strings used to populate the fields’ help_text attributes.

django_mri.models.messages module

A module storing strings used to display messages.

django_mri.models.nifti module

Definition of the NIfTI model.

class django_mri.models.nifti.NIfTI(*args, **kwargs)

Bases: django_extensions.db.models.TimeStampedModel

A model representing a NIfTI file in the database.

b_value

Returns the B-value of DWI scans as calculated by dcm2niix.

See also

Returns:B-value
Return type:List[int]
b_vector

Returns the B-vector of DWI scans as calculated by dcm2niix.

See also

Returns:B-vector
Return type:List[List[float]]
compress(keep_source: bool = False) → pathlib.Path

Compress the associated .nii using gzip, if it isn’t already compressed.

Parameters:keep_source (bool, optional) – Whether to keep a copy of the uncompressed file, by default False
Returns:Path of the compressed (.nii.gz) file
Return type:Path
compressed

Compresses the associated .nii file using gzip if it isn’t and returns its path.

Returns:Compressed .nii.gz file associated with this instance
Return type:Path
get_b_value() → List[int]

Returns the degree of diffusion weighting applied (b-value) for each diffusion direction. This method relies on dcm2niix’s default configuration in which when diffusion-weighted images (DWI) are converted, another file with the same name and a “bval” extension is created alongside.

Hint

For more information, see dcm2niix’s Diffusion Tensor Imaging section of the user guide.

See also

Returns:b-value for each diffusion direction.
Return type:List[int]
get_b_vector() → List[List[float]]

Returns the b-vectors representing the diffusion weighting gradient scheme. This method relies on dcm2niix’s default configuration in which when diffusion-weighted images (DWI) are converted, another file with the same name and a “bvec” extension is created alongside.

Hint

For more information, see dcm2niix’s Diffusion Tensor Imaging section of the user guide.

See also

Returns:b-value for each diffusion direction
Return type:List[List[float]]
get_data() → numpy.ndarray

Uses NiBabel to return the underlying pixel data as a NumPy array.

Returns:Pixel data.
Return type:np.ndarray
get_effective_spacing() → float

Reads the effective echo spacing value extracted by dcm2niix upon conversion.

Returns:Effective echo spacing
Return type:float
get_phase_encoding_direction() → float

Reads the phase encoding direction value extracted by dcm2niix upon conversion.

Returns:Phase encoding direction
Return type:float
get_total_readout_time() → float

Reads the total readout time extracted by dcm2niix upon conversion.

Hint

Total readout time is defined as the time from the center of the first echo to the center of the last (in seconds).

Returns:Total readout time
Return type:float
is_compressed

Whether the associated .nii file is compressed with gzip or not.

Returns:Associated .nii file gzip compression state
Return type:bool
is_raw

Whether the created instance is the product of a direct conversion from some raw format to NIfTI or of a manipulation of the data.

json_data

Reads BIDS sidecar information and caches within a local variable to prevent multiple reads.

See also

Returns:“BIDS sidecar” JSON data
Return type:dict
objects = <django.db.models.manager.Manager object>
path

Path of the .nii file within the application’s media directory.

read_json() → dict

Returns the JSON data generated alognside .nii files generated using dcm2niix’s “BIDS sidecar” option.

Notes

Returns:BIDS sidecar information stored in a JSON file, or {} if the file doesn’t exist
Return type:dict
run_input_set

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

run_output_set

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

scan

Accessor to the related object on the reverse side of a one-to-one relation.

In the example:

class Restaurant(Model):
    place = OneToOneField(Place, related_name='restaurant')

Place.restaurant is a ReverseOneToOneDescriptor instance.

uncompress(keep_source: bool = False) → pathlib.Path

Uncompress the associated .nii using gzip, if it isn’t already uncompressed.

Parameters:keep_source (bool, optional) – Whether to keep a copy of the compressed file, by default False
Returns:Path of the uncompressed (.nii) file
Return type:Path
uncompressed

Uncompresses the associated .nii file using gzip if it isn’t and returns its path.

Returns:Uncompressed .nii file associated with this instance
Return type:Path
django_mri.models.scan module

Definition of the Scan model.

class django_mri.models.scan.Scan(*args, **kwargs)

Bases: django_extensions.db.models.TimeStampedModel

A model used to represent an MRI scan independently from the file-format in which it is saved. This model handles any conversions between formats in case they are required, and allows for easy querying of MRI scans based on universal attributes.

added_by

Keeps a record of the user that added this scan.

comments

Any other comments about this scan.

compile_to_bids(bids_path: pathlib.Path)
convert_to_mif() → pathlib.Path

Creates a .mif version of this scan using mrconvert.

Returns:Created file path
Return type:Path
description

Short description of the scan’s acquisition parameters.

dicom

If this instance’s origin is a DICOM file, or it was saved as one, this field stores the association with the appropriate :class`django_dicom.models.series.Series` instance.

dicom_to_nifti(destination: pathlib.Path = None, compressed: bool = True, generate_json: bool = True) → django_mri.models.nifti.NIfTI

Convert this scan from DICOM to NIfTI using _dcm2niix.

Parameters:destination (Path, optional) – The desired path for conversion output (the default is None, which will create the file in some default location)
Raises:AttributeError – If no DICOM series is related to this scan
Returns:A django_mri.NIfTI instance referencing the conversion output
Return type:NIfTI
echo_time

The time between the application of the radio-frequency excitation pulse and the peak of the signal induced in the coil (in milliseconds).

get_bids_destination() → pathlib.Path

Returns the BIDS-compatible destination of this scan’s associated NIfTI file.

Returns:BIDS-compatible NIfTI file destination
Return type:pathlib.Path
get_default_mif_path() → pathlib.Path

Returns the default .mif path for this scan.

Returns:Default .mif path
Return type:Path
get_default_nifti_destination() → pathlib.Path

Returns the default path for a NIfTI version of this scan.

Returns:Default path for NIfTI file
Return type:str
get_default_nifti_dir() → pathlib.Path

Returns the default location for the creation of a NIfTI version of the scan. Currently only conversion from DICOM is supported.

Returns:Default location for conversion output
Return type:str
get_default_nifti_name() → str

Returns the default file name for a NIfTI version of this scan.

Returns:Default file name
Return type:str
infer_sequence_type() → django_mri.models.sequence_type.SequenceType

Tries to infer the sequence type using associated data.

Returns:The inferred sequence type
Return type:SequenceType
infer_sequence_type_from_dicom() → django_mri.models.sequence_type.SequenceType

Returns the appropriate django_mri.SequenceType instance according to the scan’s “ScanningSequence” and “SequenceVariant” header values.

Returns:The inferred sequence type
Return type:SequenceType
institution_name

The institution in which this scan was acquired.

inversion_time

The time between the 180-degree inversion pulse and the following spin-echo (SE) sequence (in milliseconds).

is_updated_from_dicom

Keeps track of whether we’ve updated the instance’s fields from DICOM header data or not.

mif

Returns the .mif version of this scan, creating it if it doesn’t exist.

Returns:.mif file path
Return type:Path

See also

nifti

Returns the associated NIfTI instance if one exists, or tries to create one if it doesn’t.

Returns:Associated NIfTI instance
Return type:NIfTI
number

The relative number of this scan in the session in which it was acquired.

objects = <django_mri.models.managers.scan.ScanManager object>
repetition_time

The time between two successive RF pulses (in milliseconds).

run_input_set

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

save(*args, **kwargs) → None

Overrides the model’s save() method to provide custom validation.

Hint

For more information, see Django’s documentation on overriding model methods.

sequence_type

Returns the sequence type instance fitting this scan if one exists.

Returns:Inferred sequence type
Return type:SequenceType
spatial_resolution

The spatial resolution of the image in millimeters.

study_groups

Individual scans may be associated with multiple Group instances. This is meant to provide flexibility in managing access to data between researchers working on different studies. The Group model is expected to be specified as STUDY_GROUP_MODEL in the project’s settings.

subject

Associates this scan with some subject. Subjects are expected to be represented by a model specified as SUBJECT_MODEL in the project’s settings.

suggest_subject(subject) → None
time

Acquisition datetime.

update_fields_from_dicom() → None

Sets instance fields from related DICOM series.

Raises:AttributeError – If not DICOM series is related to this scan
warn_subject_mismatch(subject)

Warns the user regarding a mismatch in subject identity.

Parameters:subject (django.db.models.Model) – Suggested subject identity
django_mri.models.sequence_type module
class django_mri.models.sequence_type.SequenceType(*args, **kwargs)

Bases: django_extensions.db.models.TitleDescriptionModel, django_extensions.db.models.TimeStampedModel

The purpose of this model is to provide a title and description for
commonly used sequences, as well as to facilitate queries.

Each particular sequence is defined as a unique combination of DICOM’s “ScanningSequence” and “SequenceVariant” attributes. This model is a wrapper for the known combinations.

objects = <django_mri.models.managers.sequence_type.SequenceTypeManager object>
sequence_definition_set

Accessor to the related objects manager on the reverse side of a many-to-one relation.

In the example:

class Child(Model):
    parent = ForeignKey(Parent, related_name='children')

Parent.children is a ReverseManyToOneDescriptor instance.

Most of the implementation is delegated to a dynamically defined manager class built by create_forward_many_to_many_manager() defined below.

sequence_definitions

Serializers

Module contents

Serializers for the app’s models.

References

Subpackages
Input
Module contents

Serializers for the NiftiInput, NiftiInputDefinition, ScanInput, and ScanInputDefinition models.

Submodules
django_mri.serializers.input.nifti_input module

Definition of the NiftiInputSerializer class.

class django_mri.serializers.input.nifti_input.NiftiInputSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)

Bases: rest_framework.serializers.ModelSerializer

Serializer for the NiftiInput model.

value = None

Hyperlink to the actual django_mri.models.nifti.NIfTI instance that was used.

django_mri.serializers.input.nifti_input_definition module

Definition of the NiftiInputDefinitionSerializer class.

class django_mri.serializers.input.nifti_input_definition.NiftiInputDefinitionSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)

Bases: rest_framework.serializers.ModelSerializer

Serializer for the NiftiInputDefinition model.

django_mri.serializers.input.scan_input module

Definition of the ScanInputSerializer class.

class django_mri.serializers.input.scan_input.ScanInputSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)

Bases: rest_framework.serializers.ModelSerializer

Serializer for the ScanInput model.

value = None

Hyperlink to the actual django_mri.models.scan.Scan instance that was used.

django_mri.serializers.input.scan_input_definition module

Definition of the ScanInputDefinitionSerializer class.

class django_mri.serializers.input.scan_input_definition.ScanInputDefinitionSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)

Bases: rest_framework.serializers.ModelSerializer

Serializer for the ScanInputDefinition model.

Output
Module contents

Serializer for the NiftiOutput and NiftiOutputDefinition models.

Submodules
django_mri.serializers.output.nifti_output module

Definition of the NiftiOutputSerializer class.

class django_mri.serializers.output.nifti_output.NiftiOutputSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)

Bases: rest_framework.serializers.ModelSerializer

Serializer for the NiftiOutput model.

django_mri.serializers.output.nifti_output_definition module

Definition of the NiftiOutputDefinitionSerializer class.

class django_mri.serializers.output.nifti_output_definition.NiftiOutputDefinitionSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)

Bases: rest_framework.serializers.ModelSerializer

Serializer for the NiftiOutputDefinition model.

Submodules
django_mri.serializers.nifti module

Definition of the NiftiSerializer class.

class django_mri.serializers.nifti.NiftiSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)

Bases: rest_framework.serializers.HyperlinkedModelSerializer

Serializer for the NIfTI model.

django_mri.serializers.scan module

Definition of the ScanSerializer class.

class django_mri.serializers.scan.ScanSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)

Bases: rest_framework.serializers.HyperlinkedModelSerializer

Serializer class for the User model.

References

create(data: dict)

Gets or creates an instance of the Scan model based on the provided data.

Parameters:data (dict) – Instance data
Returns:Matching scan
Return type:Scan
django_mri.serializers.sequence_type module
class django_mri.serializers.sequence_type.SequenceTypeSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, **kwargs)

Bases: rest_framework.serializers.HyperlinkedModelSerializer

Utilities

Module contents

General app utilities.

Submodules
django_mri.utils.bids module

Definition of the Bids class.

class django_mri.utils.bids.Bids(scan)

Bases: object

A class to compose BIDS-appropriate paths for usage by dcm2niix In short, standard template for BIDS-appropriate path is: sub-<label>/<data_type>/sub-<label>_<modality_label>

References

DATASET_DESCRIPTION_FILE_NAME = 'dataset_description.json'
PARTICIPANTS_FILE_NAME = 'participants.tsv'
calculate_age(born: datetime.date) → float

Returns age by date of birth.

Parameters:born (datetime.date) – Subject’s birth date
Returns:Subject’s age
Return type:float
clean_unwanted_files(bids_path: pathlib.Path)

Clean irrelevant .bvec and .bval files; Some versions of dcm2niix produce .bvec and .bval for fieldmap images as well as dwi images. Since BIDS specifications do now allow such files under “fmap” data-type, this method deletes them from the relevant directory.

Parameters:bids_path (Path) – Path to the BIDS-compatible directory
compose_bids_path()

Uses parameters extracted by {self.get_data} to compose a BIDS- compatible file path

Returns:Full path to a BIDS-compatible file, according to scan’s parameters.
Return type:pathlib.Path
fix_functional_json(bids_path: pathlib.Path)

Add required “TaskName” field to functional scan, as stated in BIDS stucture.

Parameters:bids_path (Path) – Path to the BIDS-compatible directory

References

generate_bidsignore(parent: pathlib.Path)

Some acquisitions do not conform to BIDS specification (mainly localizers), so we generate a .bidsignore file, pointing to them.

Parameters:parent (Path) – BIDS-compatible directory, underwhich there are “sub-x” directories

References

generate_readme(parent: pathlib.Path)

It is recommended by BIDS specifications to have a README file at the base of our project, so we create a blank one for further usage.

Parameters:parent (Path) – BIDS-compatible directory, underwhich there are “sub-x” directories
get_data()

Extracts relevant parameters for BIDS-compatible naming.

Returns:
  • parent (Path) – Parent BIDS directory, under which there will be “sub-x” directories
  • data_type (str) – sub-directory under “sub-x”. either “anat”,”func”,”fmap” or “dwi”
  • modality_label (str) – modality label as described in BIDS specifications. either “dwi”, “epi”,”T1w”,”FLAIR”,”bold” or “localizer”
  • task (Union[str, None]) – task name for functional scans. “rest” or None
  • pe_dir (Union[str, None]) – PhaseEncodingDirection for DWI-related images or fieldmap-related images. Either “AP”,”PA” or None
get_subject_data()

Extract relevant Scan-related subject’s parameters, as stated by BIDS structure.

Returns:subject’s relevant parameters, sorted by “participant_id”, “handedness”,”age” and “sex” fields
Return type:subject_dict[dict]
set_description_json(parent: pathlib.Path)

Generates required “dataset_description.json” file, as stated by BIDS structure.

Parameters:parent (Path) – BIDS-compatible directory, underwhich there are “sub-x” directories

References

set_participant_tsv_and_json(parent: pathlib.Path, subject_dict: dict)

Generates recommended “participants.tsv” by either copying the template from TEMPLATES_DiR or editing an existing one under {parent} directory.

Parameters:
  • parent (Path) – BIDS-compatible directory, underwhich there are “sub-x” directories
  • subject_dict (dict) – Subject’s parameters dictionary, containing “participant_id”, “handedness”,”age”,”sex” fields

References

class django_mri.utils.bids.DATA_TYPES

Bases: enum.Enum

An enumeration.

AP = 'dwi'
PA = 'fmap'
dwi = 'dwi'
flair = 'anat'
fmri = 'func'
ir_epi = 'anat'
ir_epi2 = 'anat'
localizer = 'anat'
mprage = 'anat'
class django_mri.utils.bids.MODALITY_LABELS

Bases: enum.Enum

An enumeration.

AP = 'dwi'
PA = 'epi'
dwi = 'dwi'
flair = 'FLAIR'
fmri = 'bold'
ir_epi = 'T1w'
ir_epi2 = 'T1w'
localizer = 'localizer'
mprage = 'T1w'
django_mri.utils.compression module

Definition of the compress() and uncompress() utility functions.

django_mri.utils.compression.compress(source: pathlib.Path, destination: pathlib.Path = None, keep_source: bool = True) → pathlib.Path

Compresses the provided source file.

Parameters:
  • source (Path) – File to compress
  • destination (Path, optional) – Compressed output file path, by default None
  • keep_source (bool, optional) – Whether to keep the source file or not, by default True
Returns:

Output file path

Return type:

Path

django_mri.utils.compression.uncompress(source: pathlib.Path, destination: pathlib.Path = None, keep_source: bool = True) → pathlib.Path

Uncompresses the provided (compressed) source file.

Parameters:
  • source (Path) – File to uncompress
  • destination (Path, optional) – Uncompressed output file path, by default None
  • keep_source (bool, optional) – Whether to keep the source file or not, by default True
Returns:

Output file path

Return type:

Path

django_mri.utils.messages module

A module storing strings used to display messages.

django_mri.utils.scan_type module

Definition of the django_mri.utils.scan_type.ScanType Enum.

class django_mri.utils.scan_type.ScanType

Bases: enum.Enum

Supported scan file formats.

DICOM = 'DICOM'
NIFTI = 'NIfTI'
django_mri.utils.utils module

General app utilites.

django_mri.utils.utils.DEFAULT_DICOM_DIR_NAME = 'DICOM'

The name of the subdirectory under the MRI data root in which DICOM files will be saved.

django_mri.utils.utils.DEFAULT_MRI_DIR_NAME = 'MRI'

The name of the subdirectory under MEDIA_ROOT in which MRI data will be saved.

django_mri.utils.utils.DEFAULT_STUDY_GROUP_MODEL = 'research.Group'

Default identifier for a study group model scans should be related to.

django_mri.utils.utils.DEFAULT_SUBJECT_MODEL = 'research.Subject'

Default identifier for a subject model scans should be related to.

django_mri.utils.utils.get_dicom_root() → pathlib.Path

Returns the path of the directory in which DICOM data should be saved.

django_mri.utils.utils.get_group_model()

Returns the study group model MRI scans should be related to.

Returns:Study group model
Return type:django.db.models.Model
django_mri.utils.utils.get_mri_root() → pathlib.Path

Returns the path of the directory in which MRI data should be saved.

django_mri.utils.utils.get_subject_model()

Returns the subject model MRI scans should be related to.

Returns:Subject model
Return type:django.db.models.Model

Views

Module contents
Submodules
django_mri.views.defaults module
class django_mri.views.defaults.DefaultsMixin

Bases: object

Default settings for view authentication, permissions and filtering.

authentication_classes = (<class 'rest_framework.authentication.BasicAuthentication'>, <class 'rest_framework.authentication.TokenAuthentication'>)
filter_backends = (<class 'django_filters.rest_framework.backends.DjangoFilterBackend'>, <class 'rest_framework.filters.SearchFilter'>, <class 'rest_framework.filters.OrderingFilter'>)
permission_classes = (<class 'rest_framework.permissions.IsAuthenticated'>,)
django_mri.views.nifti module
class django_mri.views.nifti.NiftiViewSet(**kwargs)

Bases: django_mri.views.defaults.DefaultsMixin, rest_framework.viewsets.ModelViewSet

pagination_class

alias of django_mri.views.pagination.StandardResultsSetPagination

queryset
serializer_class

alias of django_mri.serializers.nifti.NiftiSerializer

django_mri.views.pagination module
class django_mri.views.pagination.StandardResultsSetPagination

Bases: rest_framework.pagination.PageNumberPagination

Default pagination parameters. This didn’t work as part of the DefaultsMixin and therefore has to be defined separately in the ‘pagination_class’ configuration.

page_size = 25
page_size_query_param = 'page_size'
django_mri.views.scan module
class django_mri.views.scan.ScanViewSet(**kwargs)

Bases: django_mri.views.defaults.DefaultsMixin, rest_framework.viewsets.ModelViewSet

API endpoint that allows scans to be viewed or edited.

filter_class

alias of django_mri.filters.scan_filter.ScanFilter

from_dicom(request: rest_framework.request.Request, series_id: int = None) → rest_framework.response.Response

Returns scan information from a Series instance without serializing.

Parameters:
  • request – A request from the client.
  • series_id (int, optional) – Series primary key, by default None
Returns:

Serialized data or messagerequirements

Return type:

Response

get_queryset() → django.db.models.query.QuerySet

Filter the returned scans according to the studies the requesting user is a collaborator in, unless the user is staff, in which case return all scans.

Returns:Scan instances.
Return type:QuerySet
ordering_fields = ('id', 'description', 'number', 'created', 'echo_time', 'inversion_time', 'repetition_time', 'sequence_type', 'spatial_resolution', 'institution_name')
pagination_class

alias of django_mri.views.pagination.StandardResultsSetPagination

plot(request: rest_framework.request.Request, pk: int = None) → rest_framework.response.Response
preview_script(request: rest_framework.request.Request, pk: int = None) → rest_framework.response.Response
queryset
search_fields = ('id', 'description', 'number', 'created', 'scan_time', 'echo_time', 'inversion_time', 'repetition_time', 'sequence_type', 'spatial_resolution', 'institution_name', 'is_updated_from_dicom')
serializer_class

alias of django_mri.serializers.scan.ScanSerializer

django_mri.views.sequence_type module
class django_mri.views.sequence_type.SequenceTypeViewSet(**kwargs)

Bases: django_mri.views.defaults.DefaultsMixin, rest_framework.viewsets.ModelViewSet

pagination_class

alias of django_mri.views.pagination.StandardResultsSetPagination

queryset
serializer_class

alias of django_mri.serializers.sequence_type.SequenceTypeSerializer

django_mri.views.utils module
django_mri.views.utils.fix_bokeh_script(html: str, destination_id: str = 'bk-app') → str

Submodules

django_mri.admin module

Registers various admin models to generate the app’s admin site interface.

References

class django_mri.admin.ScanAdmin(model, admin_site)

Bases: django.contrib.admin.options.ModelAdmin

Adds the Scan to the admin interface.

list_display = ('id', 'subject', 'time', 'number', 'description')

Fields displayed on the change list page of the admin.

media
ordering = ('subject', 'time', 'number')

List ordering in the Django admin views.

django_mri.apps module

Definition of the DjangoMriConfig class.

References

class django_mri.apps.DjangoMriConfig(app_name, app_module)

Bases: django.apps.config.AppConfig

django_mri app configuration.

References

name = 'django_mri'

Full Python path to the application.

ready()

Loads the app’s signals.

References

verbose_name = 'MRI Data Management'

Human-readable name for the application.

django_mri.signals module

Signal receivers.

References

django_mri.signals.scan_post_save_receiver(sender: django.db.models.base.Model, instance: django_mri.models.scan.Scan, created: bool, **kwargs) → None

Creates a new subject automatically if a subject was not assigned and a DICOM series is accessible by extracting the Patient information.

Parameters:
  • sender (Model) – The Scan model
  • instance (Scan) – Scan instance
  • created (bool) – Whether the scan instance was created or not
django_mri.signals.series_post_save_receiver(sender: django.db.models.base.Model, instance: django_dicom.models.series.Series, created: bool, **kwargs) → None

Create a new Scan for any created DICOM Series in case one doesn’t exist.

Parameters:
  • sender (Model) – The Series model
  • instance (Series) – Series instance
  • created (bool) – Whether the series instance was created or not

django_mri.urls module

The app’s URLs configuration.

References

django_mri.urls.path(route, view, kwargs=None, name=None, *, Pattern=<class 'django.urls.resolvers.RoutePattern'>)
django_mri.urls.router = <rest_framework.routers.DefaultRouter object>

Automatic URL routing using Django REST Framework.

References

Indices and tables