bioinformatics 7.5 KB

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