Convertir matriz numpy a archivo nifti 4D.
Estoy realizando simulaciones de un solo píxel en Python para generar señales simuladas con ruido añadido. Luego, quiero convertir la matriz resultante de numpy, con la siguiente forma (100, 100), en un archivo nifti.
Las filas representan una señal simulada bajo diferentes condiciones de ruido y rotación del tensor. Cada columna representa la intensidad de la señal correspondiente para ese píxel bajo esas condiciones cuando se mide con un esquema de muestreo específico (100 direcciones diferentes).
[Array de DWIs]
No sé cómo asignar correctamente la matriz de numpy (DWIs.shape = (100,100)) al formato que deseo (10, 10, 1, 100):
data[…, ] = ?
converted_array = np.array(data, dtype=np.float32)
nifti_file = nib.Nifti1Image(converted_array, affine=np.eye(4))
nib.save(nifti_file, os.path.join(path_to_save, 'snr{}'.format(snr), 'full/dwi_sims_snr{}.nii.gz'.format(snr)))
Deseo guardar esta matriz en un archivo nifti con el siguiente formato (10, 10, 1, 100).
[Forma deseada]
davy.ai
Para asignar el array de numpy (DWIs.shape = (100, 100)) al formato deseado (10, 10, 1, 100), necesitamos cambiar la forma del array utilizando el método
reshape
. Así es cómo podemos hacerlo:En el código anterior, primero cambiamos la forma del array
DWIs
utilizando el métodoreshape
para darle la forma deseada de (10, 10, 1, 100).Luego, creamos un archivo nifti usando el array con la nueva forma. Convertimos el array al tipo de dato
float32
y establecemos el parámetroaffine
comonp.eye(4)
para crear una matriz afín identidad. Finalmente, guardamos el archivo nifti en la ubicación deseada utilizando las funcionesos.path.join
ynib.save
.