Merge commit 'upstream/0.1.13'
[samtools.git] / bcftools / bcf.tex
1 \documentclass[10pt,pdftex]{article}
2 \usepackage{color}
3 \definecolor{gray}{rgb}{0.7,0.7,0.7}
4
5 \setlength{\topmargin}{0.0cm}
6 \setlength{\textheight}{21.5cm}
7 \setlength{\oddsidemargin}{0cm} 
8 \setlength{\textwidth}{16.5cm}
9 \setlength{\columnsep}{0.6cm}
10
11 \begin{document}
12
13 \begin{center}
14 \begin{tabular}{|l|l|l|l|l|}
15 \hline
16 \multicolumn{2}{|c|}{\bf Field} & \multicolumn{1}{c|}{\bf Descrption} & \multicolumn{1}{c|}{\bf Type} & \multicolumn{1}{c|}{\bf Value} \\\hline\hline
17 \multicolumn{2}{|l|}{\sf magic} & Magic string & {\tt char[4]} & {\tt BCF\char92 4} \\\hline
18 \multicolumn{2}{|l|}{\sf l\_seqnm} & Length of concatenated sequence names & {\tt int32\_t} & \\\hline
19 \multicolumn{2}{|l|}{\sf seqnm} & Concatenated names, {\tt NULL} padded & {\tt char[{\sf l\_seqnm}]} & \\\hline
20 \multicolumn{2}{|l|}{\sf l\_smpl} & Length of concatenated sample names & {\tt int32\_t} & \\\hline
21 \multicolumn{2}{|l|}{\sf smpl} & Concatenated sample names & {\tt char[{\sf l\_smpl}]} & \\\hline
22 \multicolumn{2}{|l|}{\sf l\_meta} & Length of the meta text (double-hash lines)& {\tt int32\_t} & \\\hline
23 \multicolumn{2}{|l|}{\sf meta} & Meta text, {\tt NULL} terminated & {\tt char[{\sf l\_meta}]} & \\\hline
24 \multicolumn{5}{|c|}{\it \color{gray}{List of records until the end of the file}}\\\cline{2-5}
25 & {\sf seq\_id} & Reference sequence ID & {\tt int32\_t} & \\\cline{2-5}
26 & {\sf pos} & Position & {\tt int32\_t} & \\\cline{2-5}
27 & {\sf qual} & Variant quality & {\tt float} & \\\cline{2-5}
28 & {\sf l\_str} & Length of {\sf str} & {\tt int32\_t} & \\\cline{2-5}
29 & {\sf str} & {\tt ID+REF+ALT+FILTER+INFO+FORMAT}, {\tt NULL} padded & {\tt char[{\sf l\_str}]} &\\\cline{2-5}
30 & \multicolumn{4}{c|}{Blocks of data; \#blocks and formats defined by {\tt FORMAT} (table below)}\\
31 \hline
32 \end{tabular}
33 \end{center}
34
35 \begin{center}
36 \begin{tabular}{cll}
37 \hline
38 \multicolumn{1}{l}{\bf Field} & \multicolumn{1}{l}{\bf Type} & \multicolumn{1}{l}{\bf Description} \\\hline
39 {\tt DP} & {\tt uint16\_t[n]} & Read depth \\
40 {\tt GL} & {\tt float[n*G]} & Log10 likelihood of data; $G=\frac{A(A+1)}{2}$, $A=\#\{alleles\}$\\
41 {\tt GT} & {\tt uint8\_t[n]} & {\tt missing\char60\char60 7 | phased\char60\char60 6 | allele1\char60\char60 3 | allele2} \\
42 {\tt \_GT} & {\tt uint8\_t+uint8\_t[n*P]} & {Generic GT; the first int equals the max ploidy $P$} \\
43 {\tt GQ} & {\tt uint8\_t[n]} & {Genotype quality}\\
44 {\tt HQ} & {\tt uint8\_t[n*2]} & {Haplotype quality}\\
45 {\tt \_HQ} & {\tt uint8\_t+uint8\_t[n*P]} & {Generic HQ}\\
46 {\tt IBD} & {\tt uint32\_t[n*2]} & {IBD}\\
47 {\tt \_IBD} & {\tt uint8\_t+uint32\_t[n*P]} & {Generic IBD}\\
48 {\tt PL} & {\tt uint8\_t[n*G]} & {Phred-scaled likelihood of data}\\
49 {\tt PS} & {\tt uint32\_t[n]} & {Phase set}\\
50 %{\tt SP} & {\tt uint8\_t[n]} & {Strand bias P-value (bcftools only)}\\
51 \emph{Integer} & {\tt int32\_t[n*X]} & {Fix-sized custom Integer; $X$ defined in the header}\\
52 \emph{Numeric} & {\tt double[n*X]} & {Fix-sized custom Numeric}\\
53 \emph{String} & {\tt uint32\_t+char*} & {\tt NULL} padded concat. strings (int equals to the length) \\
54 \hline
55 \end{tabular}
56 \end{center}
57
58 \begin{itemize}
59 \item A BCF file is in the {\tt BGZF} format.
60 \item All multi-byte numbers are little-endian.
61 \item In a string, a missing value `.' is an empty C string ``{\tt
62     \char92 0}'' (not ``{\tt .\char92 0}'')
63 \item For {\tt GL} and {\tt PL}, likelihoods of genotypes appear in the
64   order of alleles in {\tt REF} and then {\tt ALT}. For example, if {\tt
65     REF=C}, {\tt ALT=T,A}, likelihoods appear in the order of {\tt
66     CC,CT,TT,CA,TA,AA} (NB: the ordering is different from the one in the original
67         BCF proposal).
68 \item Predefined {\tt FORMAT} fields can be missing from VCF headers, but custom {\tt FORMAT} fields
69         are required to be explicitly defined in the headers.
70 \item A {\tt FORMAT} field with its name starting with `{\tt \_}' gives an alternative
71         binary representation of the corresponding VCF field. The alternative representation
72         is used when the default representation is unable to keep the genotype information,
73         for example, when the ploidy is over 2 or there are more than 8 alleles.
74 \end{itemize}
75
76 \end{document}