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