123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- #------------------------------------------------------------------------------
- # $File: bioinformatics,v 1.5 2019/04/19 00:42:27 christos Exp $
- # bioinfomatics: file(1) magic for Bioinfomatics file formats
- ###############################################################################
- # BGZF (Blocked GNU Zip Format) - gzip compatible, but also indexable
- # used by SAMtools bgzip/tabix (http://samtools.sourceforge.net/tabix.shtml)
- ###############################################################################
- 0 string \037\213
- >3 byte &0x04
- >>12 string BC
- >>>14 leshort &0x02 Blocked GNU Zip Format (BGZF; gzip compatible)
- >>>>16 leshort x \b, block length %d
- !:mime application/x-gzip
- ###############################################################################
- # Tabix index file
- # used by SAMtools bgzip/tabix (http://samtools.sourceforge.net/tabix.shtml)
- ###############################################################################
- 0 string TBI\1 SAMtools TBI (Tabix index format)
- >0x04 lelong =1 \b, with %d reference sequence
- >0x04 lelong >1 \b, with %d reference sequences
- >0x08 lelong &0x10000 \b, using half-closed-half-open coordinates (BED style)
- >0x08 lelong ^0x10000
- >>0x08 lelong =0 \b, using closed and one based coordinates (GFF style)
- >>0x08 lelong =1 \b, using SAM format
- >>0x08 lelong =2 \b, using VCF format
- >0x0c lelong x \b, sequence name column: %d
- >0x10 lelong x \b, region start column: %d
- >0x08 lelong =0
- >>0x14 lelong x \b, region end column: %d
- >0x18 byte x \b, comment character: %c
- >0x1c lelong x \b, skip line count: %d
- ###############################################################################
- # BAM (Binary Sequence Alignment/Map format)
- # used by SAMtools (http://samtools.sourceforge.net/SAM1.pdf)
- # data is normally present only within compressed BGZF blocks (CDATA), so use file -z to examine it
- ###############################################################################
- 0 string BAM\1 SAMtools BAM (Binary Sequence Alignment/Map)
- >0x04 lelong >0
- >>&0x00 regex =^[@]HD\t.*VN: \b, with SAM header
- >>>&0 regex =[0-9.]+ \b version %s
- >>&(0x04) lelong >0 \b, with %d reference sequences
- ###############################################################################
- # BAI (BAM indexing format)
- # used by SAMtools (http://samtools.sourceforge.net/SAM1.pdf)
- ###############################################################################
- 0 string BAI\1 SAMtools BAI (BAM indexing format)
- >0x04 lelong >0 \b, with %d reference sequences
- ###############################################################################
- # CRAM (Binary Sequence Alignment/Map format)
- ###############################################################################
- 0 string CRAM CRAM
- >0x04 byte >-1 version %d.
- >0x05 byte >-1 \b%d
- >0x06 string >\0 (identified as %s)
- ###############################################################################
- # BCF (Binary Call Format), version 1
- # used by SAMtools & VCFtools (http://vcftools.sourceforge.net/bcf.pdf)
- # data is normally present only within compressed BGZF blocks (CDATA), so use file -z to examine it
- ###############################################################################
- 0 string BCF\4
- # length of seqnm data in bytes is positive
- >&0x00 lelong >0
- # length of smpl data in bytes is positive
- >>&(&-0x04) lelong >0 SAMtools BCF (Binary Call Format)
- # length of meta in bytes
- >>>&(&-0x04) lelong >0
- # have meta text string
- >>>>&0x00 search ##samtoolsVersion=
- >>>>>&0x00 string x \b, generated by SAMtools version %s
- ###############################################################################
- # BCF (Binary Call Format), version 2.1
- # used by SAMtools (https://samtools.github.io/hts-specs/BCFv2_qref.pdf)
- # data is normally present only within compressed BGZF blocks (CDATA), so use file -z to examine it
- ###############################################################################
- 0 string BCF\2\1 Binary Call Format (BCF) version 2.1
- # length of header text
- >&0x00 lelong >0
- # have header string
- >>&0x00 search ##samtoolsVersion=
- >>>&0x00 string x \b, generated by SAMtools version %s
- ###############################################################################
- # BCF (Binary Call Format), version 2.2
- # used by SAMtools (https://samtools.github.io/hts-specs/BCFv2_qref.pdf)
- # data is normally present only within compressed BGZF blocks (CDATA), so use file -z to examine it
- ###############################################################################
- 0 string BCF\2\2 Binary Call Format (BCF) version 2.2
- # length of header text
- >&0x00 lelong >0
- # have header string
- >>&0x00 search ##samtoolsVersion=
- >>>&0x00 string x \b, generated by SAMtools version %s
- ###############################################################################
- # VCF (Variant Call Format)
- # used by VCFtools (http://vcftools.sourceforge.net/)
- ###############################################################################
- 0 search ##fileformat=VCFv Variant Call Format (VCF)
- >&0 string x \b version %s
- ###############################################################################
- # FASTQ
- # used by MAQ (http://maq.sourceforge.net/fastq.shtml)
- ###############################################################################
- # XXX Broken?
- # @<seqname>
- #0 regex =^@[A-Za-z0-9_.:-]+\?\n
- # <seq>
- #>&1 regex =^[A-Za-z\n.~]++
- # +[<seqname>]
- #>>&1 regex =^[A-Za-z0-9_.:-]*\?\n
- # <qual>
- #>>>&1 regex =^[!-~\n]+\n FASTQ
- ###############################################################################
- # FASTA
- # used by FASTA (https://fasta.bioch.virginia.edu/fasta_www2/fasta_guide.pdf)
- ###############################################################################
- #0 byte 0x3e
- # q>0 regex =^[>][!-~\t\ ]+$
- # Amino Acid codes: [A-IK-Z*-]+
- #>>1 regex !=[!-'Jj;:=?@^`|~\\] FASTA
- # IUPAC codes/gaps: [ACGTURYKMSWBDHVNX-]+
- # not in IUPAC codes/gaps: [EFIJLOPQZ]
- #>>>1 regex !=[EFIJLOPQZefijlopqz] \b, with IUPAC nucleotide codes
- #>>>1 regex =^[EFIJLOPQZefijlopqz]+$ \b, with Amino Acid codes
- ###############################################################################
- # SAM (Sequence Alignment/Map format)
- # used by SAMtools (http://samtools.sourceforge.net/SAM1.pdf)
- ###############################################################################
- # Short-cut version to recognise SAM files with (optional) header at beginning
- ###############################################################################
- 0 string @HD\t
- >4 search VN: Sequence Alignment/Map (SAM), with header
- >>&0 regex [0-9.]+ \b version %s
- ###############################################################################
- # Longer version to recognise SAM alignment lines using (many) regexes
- ###############################################################################
- # SAM Alignment QNAME
- 0 regex =^[!-?A-~]{1,255}(\t[^\t]+){11}
- # SAM Alignment FLAG
- >0 regex =^([^\t]+\t){1}[0-9]{1,5}\t
- # SAM Alignment RNAME
- >>0 regex =^([^\t]+\t){2}\\*|[^*=]*\t
- # SAM Alignment POS
- >>>0 regex =^([^\t]+\t){3}[0-9]{1,9}\t
- # SAM Alignment MAPQ
- >>>>0 regex =^([^\t]+\t){4}[0-9]{1,3}\t
- # SAM Alignment CIGAR
- >>>>>0 regex =\t(\\*|([0-9]+[MIDNSHPX=])+)\t
- # SAM Alignment RNEXT
- >>>>>>0 regex =\t(\\*|=|[!-()+->?-~][!-~]*)\t
- # SAM Alignment PNEXT
- >>>>>>>0 regex =^([^\t]+\t){7}[0-9]{1,9}\t
- # SAM Alignment TLEN
- >>>>>>>>0 regex =\t[+-]{0,1}[0-9]{1,9}\t.*\t
- # SAM Alignment SEQ
- >>>>>>>>>0 regex =^([^\t]+\t){9}(\\*|[A-Za-z=.]+)\t
- # SAM Alignment QUAL
- >>>>>>>>>>0 regex =^([^\t]+\t){10}[!-~]+ Sequence Alignment/Map (SAM)
- >>>>>>>>>>>0 regex =^[@]HD\t.*VN: \b, with header
- >>>>>>>>>>>>&0 regex =[0-9.]+ \b version %s
|