or run

tessl search
Log in

Version

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
pypipkg:pypi/dcm2niix@1.0.x

docs

index.md
tile.json

tessl/pypi-dcm2niix

tessl install tessl/pypi-dcm2niix@1.0.5

Command-line application that converts medical imaging data from DICOM format to NIfTI format with BIDS support

quick-start.mddocs/guides/

Quick Start Guide

This guide will help you get started with dcm2niix for converting DICOM medical imaging data to NIfTI format.

Installation

Via pip

pip install dcm2niix

Verify Installation

dcm2niix --version
from dcm2niix import __version__, bin
print(f"dcm2niix version: {__version__}")
print(f"Binary location: {bin}")

Basic Conversion

Python API

from dcm2niix import main

# Convert DICOM folder to NIfTI
exit_code = main(["/path/to/dicom/folder"])

if exit_code == 0:
    print("Conversion successful!")
else:
    print(f"Conversion failed with exit code {exit_code}")

Command Line

# Convert DICOM folder (output to same directory)
dcm2niix /path/to/dicom/folder

# Specify output directory
dcm2niix -o /output/nifti /input/dicom

Common Workflows

BIDS-Compliant Conversion

Create BIDS-compliant outputs with compressed NIfTI files and anonymized JSON metadata:

from dcm2niix import main

exit_code = main([
    "-z", "y",                    # Enable gzip compression
    "-b", "y",                    # Generate BIDS JSON sidecar
    "-ba", "y",                   # Anonymize patient info
    "-o", "/bids/output",         # Output directory
    "/dicom/input"                # Input directory
])
dcm2niix -z y -b y -ba y -o /bids/output /dicom/input

Custom Filename Pattern

from dcm2niix import main

# Use protocol name and series number for filenames
exit_code = main([
    "-f", "%p_%s",                # Filename: protocol_series
    "-o", "/output",
    "/input"
])
# Output: T1_MPRAGE_5.nii
dcm2niix -f %p_%s -o /output /input

Convert Specific Series Only

# Step 1: List available series with CRC values
dcm2niix -q l /dicom/folder

# Step 2: Convert only desired series
dcm2niix -n 52301 -n 52305 /dicom/folder
from dcm2niix import main

# Convert specific series by CRC
exit_code = main([
    "-n", "52301",                # First series CRC
    "-n", "52305",                # Second series CRC
    "/dicom/folder"
])

Ignore Derived and Scout Images

from dcm2niix import main

# Skip derived images, localizers, and scouts
exit_code = main([
    "-i", "y",                    # Ignore derived/localizer
    "-z", "y",                    # Compress output
    "/input/folder"
])
dcm2niix -i y -z y /input/folder

Batch Process Multiple Subjects

from dcm2niix import main
from pathlib import Path

# Process all subjects in a directory
input_root = Path("/data/dicom")
output_root = Path("/data/nifti")

for subject_dir in input_root.iterdir():
    if subject_dir.is_dir():
        subject_id = subject_dir.name
        output_dir = output_root / subject_id
        output_dir.mkdir(parents=True, exist_ok=True)
        
        exit_code = main([
            "-z", "y",
            "-b", "y",
            "-ba", "y",
            "-f", f"sub-{subject_id}_%p_%s",
            "-o", str(output_dir),
            str(subject_dir)
        ])
        
        print(f"Subject {subject_id}: {'Success' if exit_code == 0 else f'Failed ({exit_code})'}")

Verbose Output for Debugging

from dcm2niix import main

# Enable verbose output to see detailed information
exit_code = main([
    "-v", "2",                    # Maximum verbosity
    "/input/folder"
])
dcm2niix -v 2 /input/folder

Error Handling

Basic Error Checking

from dcm2niix import main

exit_code = main(["/input/folder"])

if exit_code == 0:
    print("Success: All files converted")
elif exit_code == 2:
    print("Error: No valid DICOM files found")
elif exit_code == 4:
    print("Error: Corrupt DICOM file detected")
elif exit_code == 5:
    print("Error: Input folder invalid")
elif exit_code == 6:
    print("Error: Output folder invalid")
elif exit_code == 8:
    print("Warning: Partial success - some files converted")
else:
    print(f"Error: Conversion failed with exit code {exit_code}")

Capture Output for Logging

from dcm2niix import main
import subprocess

try:
    exit_code = main(
        ["-v", "1", "/input/folder"],
        capture_output=True,
        text=True,
        timeout=300
    )
    
    if exit_code != 0:
        print(f"Conversion failed with exit code {exit_code}")
        
except subprocess.TimeoutExpired:
    print("Conversion timed out after 300 seconds")
except Exception as e:
    print(f"Unexpected error: {e}")

Compression Options

Using pigz (Parallel Gzip)

For fastest compression on multi-core systems:

# Install pigz first
# macOS: brew install pigz
# Ubuntu: sudo apt-get install pigz

# Use pigz for parallel compression
dcm2niix -z y -9 /input/folder
from dcm2niix import main

# Maximum compression with pigz
exit_code = main([
    "-z", "y",                    # Use pigz
    "-9",                         # Maximum compression level
    "/input/folder"
])

Internal Compression

# Use internal compression (no pigz required)
dcm2niix -z i /input/folder

No Compression

# Fastest I/O, larger files
dcm2niix -z n /input/folder

Output Formats

NIfTI (Default)

dcm2niix -e n -z y /input/folder

NRRD for Visualization

dcm2niix -e y /input/folder

MGH for FreeSurfer

dcm2niix -e o -z y /input/folder

Philips Quantitative Imaging

For Philips MRI data requiring quantitative analysis (DWI, DTI, T1/T2 mapping):

from dcm2niix import main

# Use precise float scaling (critical for quantitative work)
exit_code = main([
    "-p", "y",                    # Precise float scaling
    "-l", "o",                    # Preserve original values
    "-z", "y",                    # Compress output
    "/philips/dwi/folder"
])
dcm2niix -p y -l o -z y /philips/dwi/folder

Next Steps

  • Real-World Scenarios - Comprehensive usage examples
  • Python API Reference - Complete API documentation
  • CLI Options Reference - All command-line options
  • Edge Cases - Troubleshooting and advanced scenarios