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