Getting Started

Installation

pip install kwneuro             # Core (DTI, CSD, registration, templates)
pip install kwneuro[all]        # Everything including optional extras

Individual optional extras can also be installed separately:

pip install kwneuro[hdbet]      # Brain extraction (HD-BET)
pip install kwneuro[noddi]      # NODDI estimation (AMICO)
pip install kwneuro[tractseg]   # Tract segmentation (TractSeg)
pip install kwneuro[combat]     # ComBat harmonization (neuroCombat)

Requires Python 3.10+.

Quick start

from kwneuro.dwi import Dwi
from kwneuro.io import FslBvalResource, FslBvecResource, NiftiVolumeResource

# Load DWI data into memory
dwi = Dwi(
    NiftiVolumeResource("sub-01_dwi.nii.gz"),
    FslBvalResource("sub-01_dwi.bval"),
    FslBvecResource("sub-01_dwi.bvec"),
).load()

# Denoise and fit DTI (core -- no extras needed)
dwi = dwi.denoise()
dti = dwi.estimate_dti()
fa, md = dti.get_fa_md()

# Brain extraction and NODDI require optional extras:
#   pip install kwneuro[hdbet,noddi]
mask = dwi.extract_brain()
noddi = dwi.estimate_noddi(mask=mask)

# Save everything to disk
dti.save("output/dti.nii.gz")
NiftiVolumeResource.save(fa, "output/fa.nii.gz")
noddi.save("output/noddi.nii.gz")

What’s included

Capability

What it does

Powered by

Extra

Denoising

Patch2Self self-supervised denoising

DIPY

Brain extraction

Deep-learning brain masking from mean b=0

HD-BET

[hdbet]

DTI

Tensor fitting, FA, MD, eigenvalue decomposition

DIPY

NODDI

Neurite density, orientation dispersion, free water fraction

AMICO

[noddi]

CSD

Fiber orientation distributions and peak extraction

DIPY

Tract segmentation

72 white-matter bundles from CSD peaks

TractSeg

[tractseg]

Registration

Pairwise registration (rigid, affine, SyN)

ANTs

Template building

Iterative unbiased population templates (single- or multi-metric)

ANTs

Harmonization

ComBat site-effect removal for multi-site scalar maps

neuroCombat

[combat]