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