xref: /freebsd/contrib/file/magic/Magdir/nifty (revision 1d386b48a555f61cb7325543adbbb5c3f3407a66)
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