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