Registration and Transformation to Qsiprep output

Hi Steven,

Thanks for the help. I am still having issues however.

Here is the code I use:

import ants
import numpy as np
import nibabel as nib
import os

WORK_DIR = '/work'

MOV_FSBRAIN_MGZ = '/derivatives/freesurfer/sub-x/mri/aparc.a2009s+aseg.mgz'
FIXED_QSIPREPT1 = '/derivatives/qsiprep/sub-x/anat/sub-x_space-ACPC_desc-preproc_T1w.nii.gz'
QSIPREP_T1_MASK = '/derivatives/qsiprep/sub-x/anat/sub-x_space-ACPC_desc-brain_mask.nii.gz'

## We need to convert fs brain .mgz to nifti format for registration
# Load the .mgz file
mgz_img = nib.load(MOV_FSBRAIN_MGZ)

# Save as NIfTI format
MOV_FSBRAIN_NII = os.path.join(WORK_DIR, "sub-x/aparc.a2009s+aseg.nii")
nib.save(mgz_img, MOV_FSBRAIN_NII)

# movImg = ants.image_read(movDir)
# targImg = ants.image_read(targetDir)

##2 Run the registration
qsiprep_t1 = ants.image_read(FIXED_QSIPREPT1)
fs_brain_nii = ants.image_read(MOV_FSBRAIN_NII)
qsiprep_t1_mask = ants.image_read(QSIPREP_T1_MASK)

# Perform registration
reg = ants.registration(
    fixed=qsiprep_t1,
    moving=fs_brain_nii,
    type_of_transform= 'SyN', #"Rigid",  # Corresponds to --transform Rigid[ 0.1 ]
    mask=qsiprep_t1_mask,  # Corresponds to --masks [ ${QSIPREP_T1_MASK} NULL ]
    reg_iterations=(1000, 500, 250, 100),  # Corresponds to --convergence [ 1000x500x250x100, 1e-06, 10 ]
    verbose=True
)

# Save outputs
ants.image_write(reg["warpedmovout"], os.path.join(WORK_DIR, "sub-x/transform_Warped.nii.gz"))
#ants.write_transform(reg["fwdtransforms"], os.path.join(WORK_DIR, "sub-x/transform"))

mytx = reg['invtransforms']

##3 Apply the transformation
fsbrain_warped = ants.apply_transforms( fixed = qsiprep_t1, 
                                       moving = fs_brain_nii , 
                                       transformlist = mytx,                                       
                                       interpolator  = 'genericLabel', 
                                       whichtoinvert = [True, False])

ants.plot( qsiprep_t1, fsbrain_warped, overlay_alpha = 0.5 )

Here is the output:

I’m also unable to save the transform:

ants.write_transform(reg["fwdtransforms"], os.path.join(WORK_DIR, "sub-x/transform"))

I am also unable to use it in place of invtransforms.

Thanks,
Best,
-Loïc