1*3b9cdfa3SAntonio Huete Jimenez 2*3b9cdfa3SAntonio Huete Jimenez#------------------------------------------------------------------------------ 3*3b9cdfa3SAntonio Huete Jimenez# $File: nifty,v 1.1 2022/02/14 16:51:15 christos Exp $ 4*3b9cdfa3SAntonio Huete Jimenez# file(1) magic for the NIfTI file format 5*3b9cdfa3SAntonio Huete Jimenez 6*3b9cdfa3SAntonio Huete Jimenez# Type: NIfTI, Neuroimaging file format 7*3b9cdfa3SAntonio Huete Jimenez# URL: https://nifti.nimh.nih.gov/ 8*3b9cdfa3SAntonio Huete Jimenez# From: Yann Leprince <yann.leprince@cea.fr>, 2022 9*3b9cdfa3SAntonio Huete Jimenez 10*3b9cdfa3SAntonio Huete Jimenez344 string n+1\0 NIfTI-1 neuroimaging data, 11*3b9cdfa3SAntonio Huete Jimenez!:mime image/x.nifti 12*3b9cdfa3SAntonio Huete Jimenez!:ext nii 13*3b9cdfa3SAntonio Huete Jimenez>0 use nifti1 14*3b9cdfa3SAntonio Huete Jimenez344 string ni1\0 NIfTI-1 neuroimaging data header, 15*3b9cdfa3SAntonio Huete Jimenez!:mime image/x.nifti 16*3b9cdfa3SAntonio Huete Jimenez!:ext hdr 17*3b9cdfa3SAntonio Huete Jimenez>0 use nifti1 18*3b9cdfa3SAntonio Huete Jimenez 19*3b9cdfa3SAntonio Huete Jimenez4 string n+2\0\r\n\032\n NIfTI-2 neuroimaging data, 20*3b9cdfa3SAntonio Huete Jimenez!:mime image/x.nifti 21*3b9cdfa3SAntonio Huete Jimenez!:ext nii 22*3b9cdfa3SAntonio Huete Jimenez>0 use nifti2 23*3b9cdfa3SAntonio Huete Jimenez4 string ni2\0\r\n\032\n NIfTI-2 neuroimaging data header, 24*3b9cdfa3SAntonio Huete Jimenez!:mime image/x.nifti 25*3b9cdfa3SAntonio Huete Jimenez!:ext hdr 26*3b9cdfa3SAntonio Huete Jimenez>0 use nifti2 27*3b9cdfa3SAntonio Huete Jimenez 28*3b9cdfa3SAntonio Huete Jimenez# Main subroutine for NIfTI-1 29*3b9cdfa3SAntonio Huete Jimenez0 name nifti1 30*3b9cdfa3SAntonio Huete Jimenez>0 clear x 31*3b9cdfa3SAntonio Huete Jimenez>0 lelong =348 little endian 32*3b9cdfa3SAntonio Huete Jimenez>>70 use nifti-datatype-le 33*3b9cdfa3SAntonio Huete Jimenez>>112 lefloat !0 with scaling 34*3b9cdfa3SAntonio Huete Jimenez>>0 use nifti1-dim-le 35*3b9cdfa3SAntonio Huete Jimenez>>252 leshort >0 \b, with qform 36*3b9cdfa3SAntonio Huete Jimenez>>>252 use xform-code-nifti1-le 37*3b9cdfa3SAntonio Huete Jimenez>>254 leshort >0 \b, with sform 38*3b9cdfa3SAntonio Huete Jimenez>>>254 use xform-code-nifti1-le 39*3b9cdfa3SAntonio Huete Jimenez>>136 string >\0 \b, description: %s 40*3b9cdfa3SAntonio Huete Jimenez>0 belong =348 big endian 41*3b9cdfa3SAntonio Huete Jimenez>>70 use \^nifti-datatype-le 42*3b9cdfa3SAntonio Huete Jimenez>>112 befloat !0 with scaling 43*3b9cdfa3SAntonio Huete Jimenez>>0 use \^nifti1-dim-le 44*3b9cdfa3SAntonio Huete Jimenez>>252 beshort >0 \b, with qform 45*3b9cdfa3SAntonio Huete Jimenez>>>252 use \^xform-code-nifti1-le 46*3b9cdfa3SAntonio Huete Jimenez>>254 beshort >0 \b, with sform 47*3b9cdfa3SAntonio Huete Jimenez>>>254 use \^xform-code-nifti1-le 48*3b9cdfa3SAntonio Huete Jimenez>>136 string >\0 \b, description: %s 49*3b9cdfa3SAntonio Huete Jimenez>0 default x 50*3b9cdfa3SAntonio Huete Jimenez>>0 long x invalid sizeof_hdr=%d 51*3b9cdfa3SAntonio Huete Jimenez 52*3b9cdfa3SAntonio Huete Jimenez# Main subroutine for NIfTI-2 53*3b9cdfa3SAntonio Huete Jimenez0 name nifti2 54*3b9cdfa3SAntonio Huete Jimenez>0 clear x 55*3b9cdfa3SAntonio Huete Jimenez>0 lelong =540 little endian 56*3b9cdfa3SAntonio Huete Jimenez>>12 use nifti-datatype-le 57*3b9cdfa3SAntonio Huete Jimenez>>176 lefloat !0 with scaling 58*3b9cdfa3SAntonio Huete Jimenez>>0 use nifti2-dim-le 59*3b9cdfa3SAntonio Huete Jimenez>>344 lelong >0 \b, with qform 60*3b9cdfa3SAntonio Huete Jimenez>>>344 use xform-code-nifti2-le 61*3b9cdfa3SAntonio Huete Jimenez>>348 lelong >0 \b, with sform 62*3b9cdfa3SAntonio Huete Jimenez>>>348 use xform-code-nifti2-le 63*3b9cdfa3SAntonio Huete Jimenez>>240 string >\0 \b, description: %s 64*3b9cdfa3SAntonio Huete Jimenez>0 belong =540 big endian 65*3b9cdfa3SAntonio Huete Jimenez>>12 use \^nifti-datatype-le 66*3b9cdfa3SAntonio Huete Jimenez>>176 befloat !0 with scaling 67*3b9cdfa3SAntonio Huete Jimenez>>0 use \^nifti2-dim-le 68*3b9cdfa3SAntonio Huete Jimenez>>344 lelong >0 \b, with qform 69*3b9cdfa3SAntonio Huete Jimenez>>>344 use \^xform-code-nifti2-le 70*3b9cdfa3SAntonio Huete Jimenez>>348 lelong >0 \b, with sform 71*3b9cdfa3SAntonio Huete Jimenez>>>348 use \^xform-code-nifti2-le 72*3b9cdfa3SAntonio Huete Jimenez>>240 string >\0 \b, description: %s 73*3b9cdfa3SAntonio Huete Jimenez>0 default x 74*3b9cdfa3SAntonio Huete Jimenez>>0 long x invalid sizeof_hdr=%d 75*3b9cdfa3SAntonio Huete Jimenez 76*3b9cdfa3SAntonio Huete Jimenez 77*3b9cdfa3SAntonio Huete Jimenez# Other subroutines for details of NIfTI files 78*3b9cdfa3SAntonio Huete Jimenez 79*3b9cdfa3SAntonio Huete Jimenez0 name nifti-datatype-le 80*3b9cdfa3SAntonio Huete Jimenez>0 clear x 81*3b9cdfa3SAntonio Huete Jimenez>0 leshort =1 \b, binary datatype 82*3b9cdfa3SAntonio Huete Jimenez>0 leshort =2 \b, uint8 datatype 83*3b9cdfa3SAntonio Huete Jimenez>0 leshort =4 \b, int16 datatype 84*3b9cdfa3SAntonio Huete Jimenez>0 leshort =8 \b, int32 datatype 85*3b9cdfa3SAntonio Huete Jimenez>0 leshort =16 \b, float32 datatype 86*3b9cdfa3SAntonio Huete Jimenez>0 leshort =32 \b, complex64 datatype 87*3b9cdfa3SAntonio Huete Jimenez>0 leshort =64 \b, float64 datatype 88*3b9cdfa3SAntonio Huete Jimenez>0 leshort =128 \b, RGB24 datatype 89*3b9cdfa3SAntonio Huete Jimenez>0 leshort =256 \b, int8 datatype 90*3b9cdfa3SAntonio Huete Jimenez>0 leshort =512 \b, uint16 datatype 91*3b9cdfa3SAntonio Huete Jimenez>0 leshort =768 \b, uint32 datatype 92*3b9cdfa3SAntonio Huete Jimenez>0 leshort =1024 \b, int64 datatype 93*3b9cdfa3SAntonio Huete Jimenez>0 leshort =1280 \b, uint64 datatype 94*3b9cdfa3SAntonio Huete Jimenez>0 leshort =1536 \b, float128 datatype 95*3b9cdfa3SAntonio Huete Jimenez>0 leshort =1792 \b, complex128 datatype 96*3b9cdfa3SAntonio Huete Jimenez>0 leshort =2048 \b, complex256 datatype 97*3b9cdfa3SAntonio Huete Jimenez>0 leshort =2304 \b, RGBA32 datatype 98*3b9cdfa3SAntonio Huete Jimenez>0 default x 99*3b9cdfa3SAntonio Huete Jimenez>>0 leshort x \b, unknown datatype 0x%x 100*3b9cdfa3SAntonio Huete Jimenez>>2 leshort x (%d bits/pixel) 101*3b9cdfa3SAntonio Huete Jimenez 102*3b9cdfa3SAntonio Huete Jimenez0 name nifti1-dim-le 103*3b9cdfa3SAntonio Huete Jimenez>0 clear x 104*3b9cdfa3SAntonio Huete Jimenez>40 leshort <0 \b, INVALID dim[0]=%d 105*3b9cdfa3SAntonio Huete Jimenez>40 leshort >7 \b, INVALID dim[0]=%d 106*3b9cdfa3SAntonio Huete Jimenez>0 default x 107*3b9cdfa3SAntonio Huete Jimenez>>40 leshort x \b, %d-dimensional (size 108*3b9cdfa3SAntonio Huete Jimenez>>42 leshort x %d 109*3b9cdfa3SAntonio Huete Jimenez>>40 leshort >1 110*3b9cdfa3SAntonio Huete Jimenez>>>44 leshort x \bx%d 111*3b9cdfa3SAntonio Huete Jimenez>>40 leshort >2 112*3b9cdfa3SAntonio Huete Jimenez>>>46 leshort x \bx%d 113*3b9cdfa3SAntonio Huete Jimenez>>40 leshort >3 114*3b9cdfa3SAntonio Huete Jimenez>>>48 leshort x \bx%d 115*3b9cdfa3SAntonio Huete Jimenez>>40 leshort >4 116*3b9cdfa3SAntonio Huete Jimenez>>>50 leshort x \bx%d 117*3b9cdfa3SAntonio Huete Jimenez>>40 leshort >5 118*3b9cdfa3SAntonio Huete Jimenez>>>52 leshort x \bx%d 119*3b9cdfa3SAntonio Huete Jimenez>>40 leshort >6 120*3b9cdfa3SAntonio Huete Jimenez>>>54 leshort x \bx%d 121*3b9cdfa3SAntonio Huete Jimenez>>80 lefloat x \b, voxel size %f 122*3b9cdfa3SAntonio Huete Jimenez>>40 leshort >1 123*3b9cdfa3SAntonio Huete Jimenez>>>84 lefloat x x %f 124*3b9cdfa3SAntonio Huete Jimenez>>40 leshort >2 125*3b9cdfa3SAntonio Huete Jimenez>>>88 lefloat x x %f 126*3b9cdfa3SAntonio Huete Jimenez>>123 use nifti1-xyz-unit 127*3b9cdfa3SAntonio Huete Jimenez>>40 leshort >3 128*3b9cdfa3SAntonio Huete Jimenez>>>92 lefloat x x %f 129*3b9cdfa3SAntonio Huete Jimenez>>>123 use nifti1-t-unit 130*3b9cdfa3SAntonio Huete Jimenez>>40 leshort x \b) 131*3b9cdfa3SAntonio Huete Jimenez 132*3b9cdfa3SAntonio Huete Jimenez0 name nifti2-dim-le 133*3b9cdfa3SAntonio Huete Jimenez>0 clear x 134*3b9cdfa3SAntonio Huete Jimenez>16 lequad <0 \b, INVALID dim[0]=%lld 135*3b9cdfa3SAntonio Huete Jimenez>16 lequad >7 \b, INVALID dim[0]=%lld 136*3b9cdfa3SAntonio Huete Jimenez>0 default x 137*3b9cdfa3SAntonio Huete Jimenez>>16 lequad x \b, %lld-dimensional (size 138*3b9cdfa3SAntonio Huete Jimenez>>24 lequad x %lld 139*3b9cdfa3SAntonio Huete Jimenez>>16 lequad >1 140*3b9cdfa3SAntonio Huete Jimenez>>>32 lequad x \bx%lld 141*3b9cdfa3SAntonio Huete Jimenez>>16 lequad >2 142*3b9cdfa3SAntonio Huete Jimenez>>>40 lequad x \bx%lld 143*3b9cdfa3SAntonio Huete Jimenez>>16 lequad >3 144*3b9cdfa3SAntonio Huete Jimenez>>>48 lequad x \bx%lld 145*3b9cdfa3SAntonio Huete Jimenez>>16 lequad >4 146*3b9cdfa3SAntonio Huete Jimenez>>>56 lequad x \bx%lld 147*3b9cdfa3SAntonio Huete Jimenez>>16 lequad >5 148*3b9cdfa3SAntonio Huete Jimenez>>>64 lequad x \bx%lld 149*3b9cdfa3SAntonio Huete Jimenez>>16 lequad >6 150*3b9cdfa3SAntonio Huete Jimenez>>>72 lequad x \bx%lld, 151*3b9cdfa3SAntonio Huete Jimenez>>112 ledouble x \b, voxel size %f 152*3b9cdfa3SAntonio Huete Jimenez>>16 lequad >1 153*3b9cdfa3SAntonio Huete Jimenez>>>120 ledouble x x %f 154*3b9cdfa3SAntonio Huete Jimenez>>16 lequad >2 155*3b9cdfa3SAntonio Huete Jimenez>>>128 ledouble x x %f 156*3b9cdfa3SAntonio Huete Jimenez>>500 use nifti2-xyz-unit 157*3b9cdfa3SAntonio Huete Jimenez>>16 lequad >3 158*3b9cdfa3SAntonio Huete Jimenez>>>136 ledouble x x %f 159*3b9cdfa3SAntonio Huete Jimenez>>>500 use nifti2-t-unit 160*3b9cdfa3SAntonio Huete Jimenez>>16 lequad x \b) 161*3b9cdfa3SAntonio Huete Jimenez 162*3b9cdfa3SAntonio Huete Jimenez0 name xform-code-nifti1-le 163*3b9cdfa3SAntonio Huete Jimenez>0 leshort =1 to scanner-based coordinates 164*3b9cdfa3SAntonio Huete Jimenez>0 leshort =2 to aligned coordinates 165*3b9cdfa3SAntonio Huete Jimenez>0 leshort =3 to Talairach coordinates 166*3b9cdfa3SAntonio Huete Jimenez>0 leshort =4 to MNI152 coordinates 167*3b9cdfa3SAntonio Huete Jimenez>0 leshort =5 to template coordinates 168*3b9cdfa3SAntonio Huete Jimenez 169*3b9cdfa3SAntonio Huete Jimenez0 name xform-code-nifti2-le 170*3b9cdfa3SAntonio Huete Jimenez>0 lelong =1 to scanner-based coordinates 171*3b9cdfa3SAntonio Huete Jimenez>0 lelong =2 to aligned coordinates 172*3b9cdfa3SAntonio Huete Jimenez>0 lelong =3 to Talairach coordinates 173*3b9cdfa3SAntonio Huete Jimenez>0 lelong =4 to MNI152 coordinates 174*3b9cdfa3SAntonio Huete Jimenez>0 lelong =5 to template coordinates 175*3b9cdfa3SAntonio Huete Jimenez 176*3b9cdfa3SAntonio Huete Jimenez0 name nifti1-xyz-unit 177*3b9cdfa3SAntonio Huete Jimenez>0 byte &0x01 178*3b9cdfa3SAntonio Huete Jimenez>>0 byte ^0x02 m 179*3b9cdfa3SAntonio Huete Jimenez>>0 byte &0x02 micron 180*3b9cdfa3SAntonio Huete Jimenez>0 byte ^0x01 181*3b9cdfa3SAntonio Huete Jimenez>>0 byte &0x02 mm 182*3b9cdfa3SAntonio Huete Jimenez 183*3b9cdfa3SAntonio Huete Jimenez0 name nifti1-t-unit 184*3b9cdfa3SAntonio Huete Jimenez>0 byte &0x08 185*3b9cdfa3SAntonio Huete Jimenez>>0 byte ^0x10 s 186*3b9cdfa3SAntonio Huete Jimenez>>0 byte &0x10 ms 187*3b9cdfa3SAntonio Huete Jimenez>0 byte ^0x08 188*3b9cdfa3SAntonio Huete Jimenez>>0 byte &0x10 microsecond 189*3b9cdfa3SAntonio Huete Jimenez 190*3b9cdfa3SAntonio Huete Jimenez0 name nifti2-xyz-unit 191*3b9cdfa3SAntonio Huete Jimenez>0 lelong &0x01 192*3b9cdfa3SAntonio Huete Jimenez>>0 lelong ^0x02 m 193*3b9cdfa3SAntonio Huete Jimenez>>0 lelong &0x02 micron 194*3b9cdfa3SAntonio Huete Jimenez>0 lelong ^0x01 195*3b9cdfa3SAntonio Huete Jimenez>>0 lelong &0x02 mm 196*3b9cdfa3SAntonio Huete Jimenez 197*3b9cdfa3SAntonio Huete Jimenez0 name nifti2-t-unit 198*3b9cdfa3SAntonio Huete Jimenez>0 lelong &0x08 199*3b9cdfa3SAntonio Huete Jimenez>>0 lelong ^0x10 s 200*3b9cdfa3SAntonio Huete Jimenez>>0 lelong &0x10 ms 201*3b9cdfa3SAntonio Huete Jimenez>0 lelong ^0x08 202*3b9cdfa3SAntonio Huete Jimenez>>0 lelong &0x10 microsecond 203