xref: /freebsd/contrib/file/magic/Magdir/bioinformatics (revision 48c779cdecb5f803e5fe5d761987e976ca9609db)
13e41d09dSXin LI
23e41d09dSXin LI#------------------------------------------------------------------------------
3*48c779cdSXin LI# $File: bioinformatics,v 1.5 2019/04/19 00:42:27 christos Exp $
43e41d09dSXin LI# bioinfomatics:  file(1) magic for Bioinfomatics file formats
53e41d09dSXin LI
63e41d09dSXin LI###############################################################################
73e41d09dSXin LI# BGZF (Blocked GNU Zip Format) - gzip compatible, but also indexable
83e41d09dSXin LI# used by SAMtools bgzip/tabix (http://samtools.sourceforge.net/tabix.shtml)
93e41d09dSXin LI###############################################################################
103e41d09dSXin LI0	string		\037\213
113e41d09dSXin LI>3	byte		&0x04
123e41d09dSXin LI>>12	string		BC
133e41d09dSXin LI>>>14	leshort		&0x02	Blocked GNU Zip Format (BGZF; gzip compatible)
143e41d09dSXin LI>>>>16	leshort		x	\b, block length %d
153e41d09dSXin LI!:mime	application/x-gzip
163e41d09dSXin LI
173e41d09dSXin LI
183e41d09dSXin LI###############################################################################
193e41d09dSXin LI# Tabix index file
203e41d09dSXin LI# used by SAMtools bgzip/tabix (http://samtools.sourceforge.net/tabix.shtml)
213e41d09dSXin LI###############################################################################
223e41d09dSXin LI0	string	TBI\1		SAMtools TBI (Tabix index format)
233e41d09dSXin LI>0x04	lelong	=1		\b, with %d reference sequence
243e41d09dSXin LI>0x04	lelong	>1		\b, with %d reference sequences
253e41d09dSXin LI>0x08	lelong	&0x10000	\b, using half-closed-half-open coordinates (BED style)
263e41d09dSXin LI>0x08	lelong	^0x10000
273e41d09dSXin LI>>0x08	lelong	=0		\b, using closed and one based coordinates (GFF style)
283e41d09dSXin LI>>0x08	lelong	=1		\b, using SAM format
293e41d09dSXin LI>>0x08	lelong	=2		\b, using VCF format
303e41d09dSXin LI>0x0c	lelong	x		\b, sequence name column: %d
313e41d09dSXin LI>0x10	lelong	x		\b, region start column: %d
323e41d09dSXin LI>0x08	lelong	=0
333e41d09dSXin LI>>0x14	lelong	x		\b, region end column: %d
343e41d09dSXin LI>0x18	byte	x		\b, comment character: %c
353e41d09dSXin LI>0x1c	lelong	x		\b, skip line count: %d
363e41d09dSXin LI
373e41d09dSXin LI
383e41d09dSXin LI###############################################################################
393e41d09dSXin LI# BAM (Binary Sequence Alignment/Map format)
403e41d09dSXin LI# used by SAMtools (http://samtools.sourceforge.net/SAM1.pdf)
413e41d09dSXin LI# data is normally present only within compressed BGZF blocks (CDATA), so use file -z to examine it
423e41d09dSXin LI###############################################################################
433e41d09dSXin LI0	string	BAM\1	SAMtools BAM (Binary Sequence Alignment/Map)
443e41d09dSXin LI>0x04	lelong	>0
453e41d09dSXin LI>>&0x00 regex	=^[@]HD\t.*VN:		\b, with SAM header
463e41d09dSXin LI>>>&0	regex	=[0-9.]+		\b version %s
473e41d09dSXin LI>>&(0x04)	lelong	>0	\b, with %d reference sequences
483e41d09dSXin LI
493e41d09dSXin LI
503e41d09dSXin LI###############################################################################
513e41d09dSXin LI# BAI (BAM indexing format)
523e41d09dSXin LI# used by SAMtools (http://samtools.sourceforge.net/SAM1.pdf)
533e41d09dSXin LI###############################################################################
543e41d09dSXin LI0		string	BAI\1	SAMtools BAI (BAM indexing format)
553e41d09dSXin LI>0x04		lelong	>0	\b, with %d reference sequences
563e41d09dSXin LI
573e41d09dSXin LI
583e41d09dSXin LI###############################################################################
593e41d09dSXin LI# CRAM (Binary Sequence Alignment/Map format)
603e41d09dSXin LI###############################################################################
613e41d09dSXin LI0	string	CRAM	CRAM
623e41d09dSXin LI>0x04	byte	>-1	version %d.
633e41d09dSXin LI>0x05	byte	>-1	\b%d
643e41d09dSXin LI>0x06	string	>\0	(identified as %s)
653e41d09dSXin LI
663e41d09dSXin LI
673e41d09dSXin LI###############################################################################
683e41d09dSXin LI# BCF (Binary Call Format), version 1
693e41d09dSXin LI# used by SAMtools & VCFtools (http://vcftools.sourceforge.net/bcf.pdf)
703e41d09dSXin LI# data is normally present only within compressed BGZF blocks (CDATA), so use file -z to examine it
713e41d09dSXin LI###############################################################################
723e41d09dSXin LI0		string	   BCF\4
733e41d09dSXin LI# length of seqnm data in bytes is positive
743e41d09dSXin LI>&0x00		lelong	  >0
753e41d09dSXin LI# length of smpl data in bytes is positive
763e41d09dSXin LI>>&(&-0x04)	lelong	  >0			SAMtools BCF (Binary Call Format)
773e41d09dSXin LI# length of meta in bytes
783e41d09dSXin LI>>>&(&-0x04)	lelong	  >0
793e41d09dSXin LI# have meta text string
803e41d09dSXin LI>>>>&0x00	search	  ##samtoolsVersion=
813e41d09dSXin LI>>>>>&0x00	string	  x			\b, generated by SAMtools version %s
823e41d09dSXin LI
833e41d09dSXin LI
843e41d09dSXin LI###############################################################################
853e41d09dSXin LI# BCF (Binary Call Format), version 2.1
86*48c779cdSXin LI# used by SAMtools (https://samtools.github.io/hts-specs/BCFv2_qref.pdf)
873e41d09dSXin LI# data is normally present only within compressed BGZF blocks (CDATA), so use file -z to examine it
883e41d09dSXin LI###############################################################################
893e41d09dSXin LI0		string	   BCF\2\1    Binary Call Format (BCF) version 2.1
903e41d09dSXin LI# length of header text
913e41d09dSXin LI>&0x00		lelong	  >0
923e41d09dSXin LI# have header string
933e41d09dSXin LI>>&0x00 search	  ##samtoolsVersion=
943e41d09dSXin LI>>>&0x00	string	  x			\b, generated by SAMtools version %s
953e41d09dSXin LI
963e41d09dSXin LI
973e41d09dSXin LI###############################################################################
983e41d09dSXin LI# BCF (Binary Call Format), version 2.2
99*48c779cdSXin LI# used by SAMtools (https://samtools.github.io/hts-specs/BCFv2_qref.pdf)
1003e41d09dSXin LI# data is normally present only within compressed BGZF blocks (CDATA), so use file -z to examine it
1013e41d09dSXin LI###############################################################################
1023e41d09dSXin LI0		string	   BCF\2\2    Binary Call Format (BCF) version 2.2
1033e41d09dSXin LI# length of header text
1043e41d09dSXin LI>&0x00		lelong	  >0
1053e41d09dSXin LI# have header string
1063e41d09dSXin LI>>&0x00 search	  ##samtoolsVersion=
1073e41d09dSXin LI>>>&0x00	string	  x			\b, generated by SAMtools version %s
1083e41d09dSXin LI
1093e41d09dSXin LI###############################################################################
1103e41d09dSXin LI# VCF (Variant Call Format)
1113e41d09dSXin LI# used by VCFtools (http://vcftools.sourceforge.net/)
1123e41d09dSXin LI###############################################################################
1133e41d09dSXin LI0      search	   ##fileformat=VCFv	Variant Call Format (VCF)
1143e41d09dSXin LI>&0    string	   x			\b version %s
1153e41d09dSXin LI
1163e41d09dSXin LI###############################################################################
1173e41d09dSXin LI# FASTQ
1183e41d09dSXin LI# used by MAQ (http://maq.sourceforge.net/fastq.shtml)
1193e41d09dSXin LI###############################################################################
1203e41d09dSXin LI# XXX Broken?
1213e41d09dSXin LI# @<seqname>
1223e41d09dSXin LI#0	regex	=^@[A-Za-z0-9_.:-]+\?\n
1233e41d09dSXin LI# <seq>
1243e41d09dSXin LI#>&1	regex	=^[A-Za-z\n.~]++
1253e41d09dSXin LI# +[<seqname>]
1263e41d09dSXin LI#>>&1	regex	=^[A-Za-z0-9_.:-]*\?\n
1273e41d09dSXin LI# <qual>
1283e41d09dSXin LI#>>>&1	regex	=^[!-~\n]+\n		FASTQ
1293e41d09dSXin LI
1303e41d09dSXin LI###############################################################################
1313e41d09dSXin LI# FASTA
132*48c779cdSXin LI# used by FASTA (https://fasta.bioch.virginia.edu/fasta_www2/fasta_guide.pdf)
1333e41d09dSXin LI###############################################################################
1343e41d09dSXin LI#0	byte	0x3e
1353e41d09dSXin LI# q>0	regex	=^[>][!-~\t\ ]+$
1363e41d09dSXin LI# Amino Acid codes: [A-IK-Z*-]+
1373e41d09dSXin LI#>>1	regex	!=[!-'Jj;:=?@^`|~\\]		FASTA
1383e41d09dSXin LI# IUPAC codes/gaps: [ACGTURYKMSWBDHVNX-]+
1393e41d09dSXin LI# not in IUPAC codes/gaps: [EFIJLOPQZ]
1403e41d09dSXin LI#>>>1	regex	!=[EFIJLOPQZefijlopqz]		\b, with IUPAC nucleotide codes
1413e41d09dSXin LI#>>>1	regex	=^[EFIJLOPQZefijlopqz]+$	\b, with Amino Acid codes
1423e41d09dSXin LI
1433e41d09dSXin LI###############################################################################
1443e41d09dSXin LI# SAM (Sequence Alignment/Map format)
1453e41d09dSXin LI# used by SAMtools (http://samtools.sourceforge.net/SAM1.pdf)
1463e41d09dSXin LI###############################################################################
1473e41d09dSXin LI# Short-cut version to recognise SAM files with (optional) header at beginning
1483e41d09dSXin LI###############################################################################
1493e41d09dSXin LI0      string	   @HD\t
1503e41d09dSXin LI>4     search	   VN:		Sequence Alignment/Map (SAM), with header
1513e41d09dSXin LI>>&0   regex	   [0-9.]+	\b version %s
1523e41d09dSXin LI###############################################################################
1533e41d09dSXin LI# Longer version to recognise SAM alignment lines using (many) regexes
1543e41d09dSXin LI###############################################################################
1553e41d09dSXin LI# SAM Alignment QNAME
1563e41d09dSXin LI0		regex	=^[!-?A-~]{1,255}(\t[^\t]+){11}
1573e41d09dSXin LI# SAM Alignment FLAG
1583e41d09dSXin LI>0		regex	=^([^\t]+\t){1}[0-9]{1,5}\t
1593e41d09dSXin LI# SAM Alignment RNAME
1603e41d09dSXin LI>>0		regex	=^([^\t]+\t){2}\\*|[^*=]*\t
1613e41d09dSXin LI# SAM Alignment POS
1623e41d09dSXin LI>>>0		regex	=^([^\t]+\t){3}[0-9]{1,9}\t
1633e41d09dSXin LI# SAM Alignment MAPQ
1643e41d09dSXin LI>>>>0		regex	=^([^\t]+\t){4}[0-9]{1,3}\t
1653e41d09dSXin LI# SAM Alignment CIGAR
166a5d223e6SXin LI>>>>>0		regex	=\t(\\*|([0-9]+[MIDNSHPX=])+)\t
1673e41d09dSXin LI# SAM Alignment RNEXT
1683e41d09dSXin LI>>>>>>0		regex	=\t(\\*|=|[!-()+->?-~][!-~]*)\t
1693e41d09dSXin LI# SAM Alignment PNEXT
1703e41d09dSXin LI>>>>>>>0	regex	=^([^\t]+\t){7}[0-9]{1,9}\t
1713e41d09dSXin LI# SAM Alignment TLEN
1723e41d09dSXin LI>>>>>>>>0	regex	=\t[+-]{0,1}[0-9]{1,9}\t.*\t
1733e41d09dSXin LI# SAM Alignment SEQ
1743e41d09dSXin LI>>>>>>>>>0	regex	=^([^\t]+\t){9}(\\*|[A-Za-z=.]+)\t
1753e41d09dSXin LI# SAM Alignment QUAL
1763e41d09dSXin LI>>>>>>>>>>0	regex	=^([^\t]+\t){10}[!-~]+	Sequence Alignment/Map (SAM)
1773e41d09dSXin LI>>>>>>>>>>>0	regex	=^[@]HD\t.*VN:		\b, with header
1783e41d09dSXin LI>>>>>>>>>>>>&0	regex	=[0-9.]+		\b version %s
179