nibabel

Par mkurman · zorai

Lire et écrire des formats de fichiers de neuroimagerie : NIfTI, GIFTI, CIFTI, MGH, Minc, Analyze, SPM. I/O de base pour les pipelines d'IRMf, d'IRM de diffusion et d'IRM structurelle. À utiliser lors du traitement de données d'imagerie cérébrale.

npx skills add https://github.com/mkurman/zorai --skill nibabel

Aperçu

NiBabel est la bibliothèque Python de référence pour l'I/O de fichiers de neuroimagerie. Utilisez-la pour lire et écrire des fichiers NIfTI, GIFTI, CIFTI, MGH, MINC et Analyze, inspecter les métadonnées affines et déplacer les données entre les outils d'imagerie et NumPy.

Installation

uv pip install nibabel

Charger un volume NIfTI

import nibabel as nib

img = nib.load('brain_t1.nii.gz')
data = img.get_fdata()
affine = img.affine
header = img.header

print(data.shape)
print(header.get_zooms())
print(affine)

Enregistrer une image modifiée

import numpy as np

masked = (data > data.mean()).astype(np.float32)
out = nib.Nifti1Image(masked, affine, header)
nib.save(out, 'brain_mask.nii.gz')

Exemple fMRI 4D

fmri = nib.load('rest_bold.nii.gz')
arr = fmri.get_fdata()   # shape like (x, y, z, t)
tr = fmri.header.get_zooms()[-1]
print(arr.shape, tr)

Gestion des coordonnées

NiBabel stocke la transformation affine des coordonnées voxel vers les coordonnées du monde. Ne l'ignorez pas si vous combinez des outils, rééchantillonnez des données ou comparez des scans entre différentes sessions.

Flux de travail

  1. Charger avec nib.load().
  2. Inspecter la forme, l'affine, l'espacement des voxels et les hypothèses d'orientation.
  3. Utiliser .get_fdata() quand vous voulez des tableaux en virgule flottante.
  4. Lors de l'enregistrement des sorties dérivées, préserver l'affine/header sauf si vous les modifiez intentionnellement.
  5. Pour le rééchantillonnage/réorientation, combiner avec Nilearn, DIPY ou des workflows ANTs/SimpleITK plutôt que de modifier le tableau à l'aveuglette.

Skills similaires