xref: /freebsd/contrib/file/magic/Magdir/bioinformatics (revision 3e41d09d08f5bfa2fc1386241f334b865d6da085)
1*3e41d09dSXin LI
2*3e41d09dSXin LI#------------------------------------------------------------------------------
3*3e41d09dSXin LI# $File: bioinformatics,v 1.2 2016/02/14 15:53:53 christos Exp $
4*3e41d09dSXin LI# bioinfomatics:  file(1) magic for Bioinfomatics file formats
5*3e41d09dSXin LI
6*3e41d09dSXin LI###############################################################################
7*3e41d09dSXin LI# BGZF (Blocked GNU Zip Format) - gzip compatible, but also indexable
8*3e41d09dSXin LI# used by SAMtools bgzip/tabix (http://samtools.sourceforge.net/tabix.shtml)
9*3e41d09dSXin LI###############################################################################
10*3e41d09dSXin LI0	string		\037\213
11*3e41d09dSXin LI>3	byte		&0x04
12*3e41d09dSXin LI>>12	string		BC
13*3e41d09dSXin LI>>>14	leshort		&0x02	Blocked GNU Zip Format (BGZF; gzip compatible)
14*3e41d09dSXin LI>>>>16	leshort		x	\b, block length %d
15*3e41d09dSXin LI!:mime	application/x-gzip
16*3e41d09dSXin LI
17*3e41d09dSXin LI
18*3e41d09dSXin LI###############################################################################
19*3e41d09dSXin LI# Tabix index file
20*3e41d09dSXin LI# used by SAMtools bgzip/tabix (http://samtools.sourceforge.net/tabix.shtml)
21*3e41d09dSXin LI###############################################################################
22*3e41d09dSXin LI0	string	TBI\1		SAMtools TBI (Tabix index format)
23*3e41d09dSXin LI>0x04	lelong	=1		\b, with %d reference sequence
24*3e41d09dSXin LI>0x04	lelong	>1		\b, with %d reference sequences
25*3e41d09dSXin LI>0x08	lelong	&0x10000	\b, using half-closed-half-open coordinates (BED style)
26*3e41d09dSXin LI>0x08	lelong	^0x10000
27*3e41d09dSXin LI>>0x08	lelong	=0		\b, using closed and one based coordinates (GFF style)
28*3e41d09dSXin LI>>0x08	lelong	=1		\b, using SAM format
29*3e41d09dSXin LI>>0x08	lelong	=2		\b, using VCF format
30*3e41d09dSXin LI>0x0c	lelong	x		\b, sequence name column: %d
31*3e41d09dSXin LI>0x10	lelong	x		\b, region start column: %d
32*3e41d09dSXin LI>0x08	lelong	=0
33*3e41d09dSXin LI>>0x14	lelong	x		\b, region end column: %d
34*3e41d09dSXin LI>0x18	byte	x		\b, comment character: %c
35*3e41d09dSXin LI>0x1c	lelong	x		\b, skip line count: %d
36*3e41d09dSXin LI
37*3e41d09dSXin LI
38*3e41d09dSXin LI###############################################################################
39*3e41d09dSXin LI# BAM (Binary Sequence Alignment/Map format)
40*3e41d09dSXin LI# used by SAMtools (http://samtools.sourceforge.net/SAM1.pdf)
41*3e41d09dSXin LI# data is normally present only within compressed BGZF blocks (CDATA), so use file -z to examine it
42*3e41d09dSXin LI###############################################################################
43*3e41d09dSXin LI0	string	BAM\1	SAMtools BAM (Binary Sequence Alignment/Map)
44*3e41d09dSXin LI>0x04	lelong	>0
45*3e41d09dSXin LI>>&0x00 regex	=^[@]HD\t.*VN:		\b, with SAM header
46*3e41d09dSXin LI>>>&0	regex	=[0-9.]+		\b version %s
47*3e41d09dSXin LI>>&(0x04)	lelong	>0	\b, with %d reference sequences
48*3e41d09dSXin LI
49*3e41d09dSXin LI
50*3e41d09dSXin LI###############################################################################
51*3e41d09dSXin LI# BAI (BAM indexing format)
52*3e41d09dSXin LI# used by SAMtools (http://samtools.sourceforge.net/SAM1.pdf)
53*3e41d09dSXin LI###############################################################################
54*3e41d09dSXin LI0		string	BAI\1	SAMtools BAI (BAM indexing format)
55*3e41d09dSXin LI>0x04		lelong	>0	\b, with %d reference sequences
56*3e41d09dSXin LI
57*3e41d09dSXin LI
58*3e41d09dSXin LI###############################################################################
59*3e41d09dSXin LI# CRAM (Binary Sequence Alignment/Map format)
60*3e41d09dSXin LI###############################################################################
61*3e41d09dSXin LI0	string	CRAM	CRAM
62*3e41d09dSXin LI>0x04	byte	>-1	version %d.
63*3e41d09dSXin LI>0x05	byte	>-1	\b%d
64*3e41d09dSXin LI>0x06	string	>\0	(identified as %s)
65*3e41d09dSXin LI
66*3e41d09dSXin LI
67*3e41d09dSXin LI###############################################################################
68*3e41d09dSXin LI# BCF (Binary Call Format), version 1
69*3e41d09dSXin LI# used by SAMtools & VCFtools (http://vcftools.sourceforge.net/bcf.pdf)
70*3e41d09dSXin LI# data is normally present only within compressed BGZF blocks (CDATA), so use file -z to examine it
71*3e41d09dSXin LI###############################################################################
72*3e41d09dSXin LI0		string	   BCF\4
73*3e41d09dSXin LI# length of seqnm data in bytes is positive
74*3e41d09dSXin LI>&0x00		lelong	  >0
75*3e41d09dSXin LI# length of smpl data in bytes is positive
76*3e41d09dSXin LI>>&(&-0x04)	lelong	  >0			SAMtools BCF (Binary Call Format)
77*3e41d09dSXin LI# length of meta in bytes
78*3e41d09dSXin LI>>>&(&-0x04)	lelong	  >0
79*3e41d09dSXin LI# have meta text string
80*3e41d09dSXin LI>>>>&0x00	search	  ##samtoolsVersion=
81*3e41d09dSXin LI>>>>>&0x00	string	  x			\b, generated by SAMtools version %s
82*3e41d09dSXin LI
83*3e41d09dSXin LI
84*3e41d09dSXin LI###############################################################################
85*3e41d09dSXin LI# BCF (Binary Call Format), version 2.1
86*3e41d09dSXin LI# used by SAMtools (http://samtools.github.io/hts-specs/BCFv2_qref.pdf)
87*3e41d09dSXin LI# data is normally present only within compressed BGZF blocks (CDATA), so use file -z to examine it
88*3e41d09dSXin LI###############################################################################
89*3e41d09dSXin LI0		string	   BCF\2\1    Binary Call Format (BCF) version 2.1
90*3e41d09dSXin LI# length of header text
91*3e41d09dSXin LI>&0x00		lelong	  >0
92*3e41d09dSXin LI# have header string
93*3e41d09dSXin LI>>&0x00 search	  ##samtoolsVersion=
94*3e41d09dSXin LI>>>&0x00	string	  x			\b, generated by SAMtools version %s
95*3e41d09dSXin LI
96*3e41d09dSXin LI
97*3e41d09dSXin LI###############################################################################
98*3e41d09dSXin LI# BCF (Binary Call Format), version 2.2
99*3e41d09dSXin LI# used by SAMtools (http://samtools.github.io/hts-specs/BCFv2_qref.pdf)
100*3e41d09dSXin LI# data is normally present only within compressed BGZF blocks (CDATA), so use file -z to examine it
101*3e41d09dSXin LI###############################################################################
102*3e41d09dSXin LI0		string	   BCF\2\2    Binary Call Format (BCF) version 2.2
103*3e41d09dSXin LI# length of header text
104*3e41d09dSXin LI>&0x00		lelong	  >0
105*3e41d09dSXin LI# have header string
106*3e41d09dSXin LI>>&0x00 search	  ##samtoolsVersion=
107*3e41d09dSXin LI>>>&0x00	string	  x			\b, generated by SAMtools version %s
108*3e41d09dSXin LI
109*3e41d09dSXin LI###############################################################################
110*3e41d09dSXin LI# VCF (Variant Call Format)
111*3e41d09dSXin LI# used by VCFtools (http://vcftools.sourceforge.net/)
112*3e41d09dSXin LI###############################################################################
113*3e41d09dSXin LI0      search	   ##fileformat=VCFv	Variant Call Format (VCF)
114*3e41d09dSXin LI>&0    string	   x			\b version %s
115*3e41d09dSXin LI
116*3e41d09dSXin LI###############################################################################
117*3e41d09dSXin LI# FASTQ
118*3e41d09dSXin LI# used by MAQ (http://maq.sourceforge.net/fastq.shtml)
119*3e41d09dSXin LI###############################################################################
120*3e41d09dSXin LI# XXX Broken?
121*3e41d09dSXin LI# @<seqname>
122*3e41d09dSXin LI#0	regex	=^@[A-Za-z0-9_.:-]+\?\n
123*3e41d09dSXin LI# <seq>
124*3e41d09dSXin LI#>&1	regex	=^[A-Za-z\n.~]++
125*3e41d09dSXin LI# +[<seqname>]
126*3e41d09dSXin LI#>>&1	regex	=^[A-Za-z0-9_.:-]*\?\n
127*3e41d09dSXin LI# <qual>
128*3e41d09dSXin LI#>>>&1	regex	=^[!-~\n]+\n		FASTQ
129*3e41d09dSXin LI
130*3e41d09dSXin LI###############################################################################
131*3e41d09dSXin LI# FASTA
132*3e41d09dSXin LI# used by FASTA (http://fasta.bioch.virginia.edu/fasta_www2/fasta_guide.pdf)
133*3e41d09dSXin LI###############################################################################
134*3e41d09dSXin LI#0	byte	0x3e
135*3e41d09dSXin LI# q>0	regex	=^[>][!-~\t\ ]+$
136*3e41d09dSXin LI# Amino Acid codes: [A-IK-Z*-]+
137*3e41d09dSXin LI#>>1	regex	!=[!-'Jj;:=?@^`|~\\]		FASTA
138*3e41d09dSXin LI# IUPAC codes/gaps: [ACGTURYKMSWBDHVNX-]+
139*3e41d09dSXin LI# not in IUPAC codes/gaps: [EFIJLOPQZ]
140*3e41d09dSXin LI#>>>1	regex	!=[EFIJLOPQZefijlopqz]		\b, with IUPAC nucleotide codes
141*3e41d09dSXin LI#>>>1	regex	=^[EFIJLOPQZefijlopqz]+$	\b, with Amino Acid codes
142*3e41d09dSXin LI
143*3e41d09dSXin LI###############################################################################
144*3e41d09dSXin LI# SAM (Sequence Alignment/Map format)
145*3e41d09dSXin LI# used by SAMtools (http://samtools.sourceforge.net/SAM1.pdf)
146*3e41d09dSXin LI###############################################################################
147*3e41d09dSXin LI# Short-cut version to recognise SAM files with (optional) header at beginning
148*3e41d09dSXin LI###############################################################################
149*3e41d09dSXin LI0      string	   @HD\t
150*3e41d09dSXin LI>4     search	   VN:		Sequence Alignment/Map (SAM), with header
151*3e41d09dSXin LI>>&0   regex	   [0-9.]+	\b version %s
152*3e41d09dSXin LI###############################################################################
153*3e41d09dSXin LI# Longer version to recognise SAM alignment lines using (many) regexes
154*3e41d09dSXin LI###############################################################################
155*3e41d09dSXin LI# SAM Alignment QNAME
156*3e41d09dSXin LI0		regex	=^[!-?A-~]{1,255}(\t[^\t]+){11}
157*3e41d09dSXin LI# SAM Alignment FLAG
158*3e41d09dSXin LI>0		regex	=^([^\t]+\t){1}[0-9]{1,5}\t
159*3e41d09dSXin LI# SAM Alignment RNAME
160*3e41d09dSXin LI>>0		regex	=^([^\t]+\t){2}\\*|[^*=]*\t
161*3e41d09dSXin LI# SAM Alignment POS
162*3e41d09dSXin LI>>>0		regex	=^([^\t]+\t){3}[0-9]{1,9}\t
163*3e41d09dSXin LI# SAM Alignment MAPQ
164*3e41d09dSXin LI>>>>0		regex	=^([^\t]+\t){4}[0-9]{1,3}\t
165*3e41d09dSXin LI# SAM Alignment CIGAR
166*3e41d09dSXin LI>>>>>0		regex	=\t\\*|([0-9]+[MIDNSHPX=])+)\t
167*3e41d09dSXin LI# SAM Alignment RNEXT
168*3e41d09dSXin LI>>>>>>0		regex	=\t(\\*|=|[!-()+->?-~][!-~]*)\t
169*3e41d09dSXin LI# SAM Alignment PNEXT
170*3e41d09dSXin LI>>>>>>>0	regex	=^([^\t]+\t){7}[0-9]{1,9}\t
171*3e41d09dSXin LI# SAM Alignment TLEN
172*3e41d09dSXin LI>>>>>>>>0	regex	=\t[+-]{0,1}[0-9]{1,9}\t.*\t
173*3e41d09dSXin LI# SAM Alignment SEQ
174*3e41d09dSXin LI>>>>>>>>>0	regex	=^([^\t]+\t){9}(\\*|[A-Za-z=.]+)\t
175*3e41d09dSXin LI# SAM Alignment QUAL
176*3e41d09dSXin LI>>>>>>>>>>0	regex	=^([^\t]+\t){10}[!-~]+	Sequence Alignment/Map (SAM)
177*3e41d09dSXin LI>>>>>>>>>>>0	regex	=^[@]HD\t.*VN:		\b, with header
178*3e41d09dSXin LI>>>>>>>>>>>>&0	regex	=[0-9.]+		\b version %s
179