Commit 294a9c43 authored by Damien Leroux's avatar Damien Leroux
Browse files
parents 40d5b227 d8be4b42
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="604px" height="324px" version="1.1">
<defs>
<linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-dae8fc-1-7ea6e0-1-s-0">
<stop offset="0%" style="stop-color:#dae8fc"/>
<stop offset="100%" style="stop-color:#7ea6e0"/>
</linearGradient>
</defs>
<g transform="translate(0.5,0.5)">
<path d="M 170.19 60 L 170.19 80.1 L 170.19 83.73" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 170.19 88.98 L 166.69 81.98 L 170.19 83.73 L 173.69 81.98 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<rect x="100" y="0" width="140" height="60" fill="#f5f5f5" stroke="#666666" pointer-events="none"/>
<g transform="translate(101.5,18.5)">
<switch>
<foreignObject style="overflow:visible;" pointer-events="all" width="135" height="22" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 137px; white-space: nowrap; word-wrap: normal; font-weight: bold; text-align: center;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">spell-pedigree</div>
</div>
</foreignObject>
<text x="68" y="21" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica" font-weight="bold">spell-pedigree</text>
</switch>
</g>
<path d="M 60 30.1 L 80.19 30.1 L 93.82 30.1" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 99.07 30.1 L 92.07 33.6 L 93.82 30.1 L 92.07 26.6 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 60 30.1 L 80.19 30.1 L 80.19 158.19 L 94.77 158.19" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 100.02 158.19 L 93.02 161.69 L 94.77 158.19 L 93.02 154.69 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 0 10 L 60 10 L 60 44.44 Q 45 34.42 30 44.44 Q 15 54.45 0 44.44 L 0 15.56 Z" fill="#dae8fc" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/>
<g transform="translate(11.5,16.5)">
<switch>
<foreignObject style="overflow:visible;" pointer-events="all" width="35" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 37px; white-space: nowrap; word-wrap: normal; text-align: center;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">.ped</div>
</div>
</foreignObject>
<text x="18" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">.ped</text>
</switch>
</g>
<path d="M 330 180.1 L 350.19 180.1 L 353.82 180.1" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 359.07 180.1 L 352.07 183.6 L 353.82 180.1 L 352.07 176.6 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 270 160 L 330 160 L 330 194.44 Q 315 184.43 300 194.44 Q 285 204.45 270 194.44 L 270 165.56 Z" fill="#ffe6cc" stroke="#d79b00" stroke-miterlimit="10" pointer-events="none"/>
<g transform="translate(277.5,166.5)">
<switch>
<foreignObject style="overflow:visible;" pointer-events="all" width="43" height="14" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 43px; white-space: nowrap; word-wrap: normal; text-align: center;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">.smdat</div>
</div>
</foreignObject>
<text x="22" y="14" fill="#000000" text-anchor="middle" font-size="14px" font-family="Helvetica">.smdat</text>
</switch>
</g>
<path d="M 172.1 122 L 170.19 122 L 170.19 143.73" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 170.19 148.98 L 166.69 141.98 L 170.19 143.73 L 173.69 141.98 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 140 90 L 200 90 L 200 124.44 Q 185 114.42 170 124.44 Q 155 134.45 140 124.44 L 140 95.56 Z" fill="#ffe6cc" stroke="#d79b00" stroke-miterlimit="10" pointer-events="none"/>
<g transform="translate(149.5,96.5)">
<switch>
<foreignObject style="overflow:visible;" pointer-events="all" width="39" height="14" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 39px; white-space: nowrap; word-wrap: normal; text-align: center;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">.spdat</div>
</div>
</foreignObject>
<text x="20" y="14" fill="#000000" text-anchor="middle" font-size="14px" font-family="Helvetica">.spdat</text>
</switch>
</g>
<path d="M 60 240.1 L 80.19 240.1 L 80.19 202 L 93.63 202" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 98.88 202 L 91.88 205.5 L 93.63 202 L 91.88 198.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 0 220 L 60 220 L 60 254.44 Q 45 244.43 30 254.44 Q 15 264.45 0 254.44 L 0 225.56 Z" fill="url(#mx-gradient-dae8fc-1-7ea6e0-1-s-0)" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/>
<g transform="translate(5.5,226.5)">
<switch>
<foreignObject style="overflow:visible;" pointer-events="all" width="47" height="14" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 47px; white-space: nowrap; word-wrap: normal; text-align: center;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">formats</div>
</div>
</foreignObject>
<text x="24" y="14" fill="#000000" text-anchor="middle" font-size="14px" font-family="Helvetica">formats</text>
</switch>
</g>
<path d="M 430.19 114.38 L 430.19 143.73" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 430.19 148.98 L 426.69 141.98 L 430.19 143.73 L 433.69 141.98 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 400 80 L 460 80 L 460 114.44 Q 445 104.42 430 114.44 Q 415 124.45 400 114.44 L 400 85.56 Z" fill="#dae8fc" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/>
<g transform="translate(406.5,86.5)">
<switch>
<foreignObject style="overflow:visible;" pointer-events="all" width="45" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 47px; white-space: nowrap; word-wrap: normal; text-align: center;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">.phen</div>
</div>
</foreignObject>
<text x="23" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">.phen</text>
</switch>
</g>
<path d="M 60 180.1 L 80.19 180.1 L 93.82 180.1" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 99.07 180.1 L 92.07 183.6 L 93.82 180.1 L 92.07 176.6 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 0 160 L 60 160 L 60 194.44 Q 45 184.43 30 194.44 Q 15 204.45 0 194.44 L 0 165.56 Z" fill="#dae8fc" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/>
<g transform="translate(11.5,166.5)">
<switch>
<foreignObject style="overflow:visible;" pointer-events="all" width="35" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 37px; white-space: nowrap; word-wrap: normal; text-align: center;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">.gen</div>
</div>
</foreignObject>
<text x="18" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">.gen</text>
</switch>
</g>
<path d="M 430.19 240 L 430.19 220.1 L 430.19 216.46" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 430.19 211.21 L 433.69 218.21 L 430.19 216.46 L 426.69 218.21 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 400 240 L 460 240 L 460 274.44 Q 445 264.43 430 274.44 Q 415 284.45 400 274.44 L 400 245.56 Z" fill="#dae8fc" stroke="#6c8ebf" stroke-miterlimit="10" pointer-events="none"/>
<g transform="translate(408.5,246.5)">
<switch>
<foreignObject style="overflow:visible;" pointer-events="all" width="41" height="19" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 18px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 41px; white-space: nowrap; word-wrap: normal; text-align: center;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">.map</div>
</div>
</foreignObject>
<text x="21" y="19" fill="#000000" text-anchor="middle" font-size="18px" font-family="Helvetica">.map</text>
</switch>
</g>
<path d="M 500 180.1 L 520.19 180.1 L 520.19 250.1 L 533.63 250.1" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 538.88 250.1 L 531.88 253.6 L 533.63 250.1 L 531.88 246.6 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 500.19 180.1 L 520.19 180.1 L 520.19 110.1 L 533.82 110.1" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 539.07 110.1 L 532.07 113.6 L 533.82 110.1 L 532.07 106.6 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<rect x="360" y="150" width="140" height="60" fill="#f5f5f5" stroke="#666666" pointer-events="none"/>
<g transform="translate(390.5,168.5)">
<switch>
<foreignObject style="overflow:visible;" pointer-events="all" width="77" height="22" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 77px; white-space: nowrap; word-wrap: normal; font-weight: bold; text-align: center;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">spell-qtl</div>
</div>
</foreignObject>
<text x="39" y="21" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica" font-weight="bold">spell-qtl</text>
</switch>
</g>
<path d="M 240 180.1 L 260.19 180.1 L 263.82 180.1" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 269.07 180.1 L 262.07 183.6 L 263.82 180.1 L 262.07 176.6 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 170.19 210.1 L 170.19 230.1 L 170.19 233.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 170.19 238.88 L 166.69 231.88 L 170.19 233.63 L 173.69 231.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/>
<rect x="100" y="150" width="140" height="60" fill="#f5f5f5" stroke="#666666" pointer-events="none"/>
<g transform="translate(109.5,168.5)">
<switch>
<foreignObject style="overflow:visible;" pointer-events="all" width="119" height="22" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 20px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 119px; white-space: nowrap; word-wrap: normal; font-weight: bold; text-align: center;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">spell-marker</div>
</div>
</foreignObject>
<text x="60" y="21" fill="#000000" text-anchor="middle" font-size="20px" font-family="Helvetica" font-weight="bold">spell-marker</text>
</switch>
</g>
<path d="M 540 226 C 540 204.67 600 204.67 600 226 L 600 274 C 600 295.33 540 295.33 540 274 Z" fill="#d5e8d4" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 540 226 C 540 242 600 242 600 226" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/>
<g transform="translate(541.5,234.5)">
<switch>
<foreignObject style="overflow:visible;" pointer-events="all" width="55" height="30" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 57px; white-space: nowrap; word-wrap: normal; font-weight: bold; text-align: center;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">QTL<div>analysis</div></div>
</div>
</foreignObject>
<text x="28" y="32" fill="#000000" text-anchor="middle" font-size="14px" font-family="Helvetica" font-weight="bold">QTL analysis</text>
</switch>
</g>
<path d="M 140 256 C 140 234.67 200 234.67 200 256 L 200 304 C 200 325.33 140 325.33 140 304 Z" fill="#d5e8d4" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 140 256 C 140 272 200 272 200 256" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/>
<g transform="translate(145.5,264.5)">
<switch>
<foreignObject style="overflow:visible;" pointer-events="all" width="47" height="30" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 47px; white-space: nowrap; word-wrap: normal; font-weight: bold; text-align: center;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
<div>1-point</div>
<div>POP</div>
</div>
</div>
</foreignObject>
<text x="24" y="22" fill="#000000" text-anchor="middle" font-size="14px" font-family="Helvetica" font-weight="bold">1-point POP</text>
</switch>
</g>
<path d="M 540 86 C 540 64.67 600 64.67 600 86 L 600 134 C 600 155.33 540 155.33 540 134 Z" fill="#d5e8d4" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/>
<path d="M 540 86 C 540 102 600 102 600 86" fill="none" stroke="#82b366" stroke-miterlimit="10" pointer-events="none"/>
<g transform="translate(545.5,94.5)">
<switch>
<foreignObject style="overflow:visible;" pointer-events="all" width="47" height="30" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility">
<div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 49px; white-space: nowrap; word-wrap: normal; font-weight: bold; text-align: center;">
<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">
<div>n-point</div>
<div>POP</div>
</div>
</div>
</foreignObject>
<text x="24" y="32" fill="#000000" text-anchor="middle" font-size="14px" font-family="Helvetica" font-weight="bold">N-point POP</text>
</switch>
</g>
</g>
</svg>
user_manual.pdf : spell-pedigree.tex spell-marker.tex spell-qtl.tex spell-qtl-examples.tex version.tex user_manual.tex
pdflatex user_manual.tex && pdflatex user_manual.tex
user_manual.pdf : spell-pedigree.tex spell-marker.tex spell-qtl.tex spell-qtl-examples.tex version.tex user_manual.tex images/Spell-pipeline2.svg
pdflatex --shell-escape user_manual.tex && pdflatex --shell-escape user_manual.tex
version.tex :
git tag | tail -1 > version.tex
......@@ -17,9 +17,10 @@ spell-qtl-examples.tex : ../man/spell-qtl-examples.1.md
/usr/bin/pandoc ../man/spell-qtl-examples.1.md --listings -f markdown -t latex -o spell-qtl-examples.tex
clean:
rm -f *.aux *.log *.pdf *.toc
rm -f *.aux *.log *.pdf *.toc *.out *.lol
rm -f version.tex
rm -f spell-pedigree.tex spell-marker.tex spell-qtl.tex spell-qtl-examples.tex
rm -f images/*.pdf images/*.pdf_tex
veryclean: clean
rm -f *~
\documentclass[openright,twoside,10pt,DIV=11]{scrreprt}
\documentclass[openright,oneside,10pt,DIV=11]{scrreprt}
\usepackage[toc,page]{appendix}
\usepackage{url}
\usepackage{listings}
......@@ -6,12 +6,26 @@
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{braket}
\usepackage{hyperref} %required by pandoc
\usepackage{svg}
\usepackage{import} %required for svg inkscape import
\graphicspath{{images/}}
\renewcommand{\lstlistingname}{Sample file}
\renewcommand{\lstlistlistingname}{List of \lstlistingname s}
\lstset{
breakatwhitespace=false,
breaklines=true
}
% required by pandoc... should be in a pandoc.sty file
\providecommand{\tightlist}{%
\setlength{\itemsep}{0pt}\setlength{\parskip}{0pt}}
\title{Spell-QTL User Manual}
\subtitle{Species perscrutandis enixe locis locabuntur}
\author{Damien Leroux \and Sylvain Jasson}
......@@ -115,7 +129,7 @@ This model is much like the previous one. The only difference is that interactio
Note that $\forall g_k\in\mathbf{P}, \ \delta_{g_k,g_k,l}=0$: dominance exists only when distinct alleles are involved.
Most of the time, the degree of freedom used by adding a new QTL to such a model is the number of distinct possible allele minus one plus the number of possible interactions $df_{new}-df_{current}=p-1 + \frac{p(p-1)}{2}=\frac{(p-1)(p+2)}{2}$. Some design do not allow to detect such effect (e.g. Back-cross), spell-qtl is able to detect such cases, and will then discard any dominance effect, even if asked.
Most of the time, the degree of freedom used by adding a new QTL to such a model is the number of distinct possible allele minus one plus the number of possible interactions $df_{new}-df_{current}=p-1 + \frac{p(p-1)}{2}=\frac{(p-1)(p+2)}{2}$. Some design do not allow to detect such effect (e.g. Back-cross), \texttt{spell-qtl} is able to detect such cases, and will then discard any dominance effect, even if asked.
\subsubsection{Additive and disconnected model}
......@@ -175,10 +189,11 @@ In this first epistatsis model, the single QTL direct term follows the additive
% \sum_{\mathclap{\substack{(l_1,l_2) \in h^2\\l_1 \neq l_2}}} \zeta_{g,l_1,l_2}
\section{Simplest model}
\section{Simplest possible test}
If we address only direct additive effects of a unique QTL in a unique biparental population, the phenotypic
the equation \ref{eq:complete_model} can be simplified in :
If we address only direct additive effects of a unique QTL in a unique biparental population, the phenotypic values in
the equation \ref{eq:complete_model} can be simplified :
\subsection*{no QTL}
$ \mathbf{H}=\mathbf{V}=\varnothing$
......@@ -230,9 +245,9 @@ score(\mathbf{H}=\set{ \set{l} },\mathbf{H}=\varnothing)=-log_{10}P[\mathcal{F}(
\chapter{Underlying parental origin probability model}\label{ch:probas}
The probabilities in equation \ref{eq:complete_model} are computed on the fly by spell-qtl when necessary. A hidden Markov chain representing the origin of the genetic material is derived for any population in the pedigree by spell-pedigree. Depending on the number of different parents in the design and the number of non-independent meiosis the minimal number of states that allow to enjoy the Markov property can be much more than the number of possible genotypes. Spell-pedigree ensures that this number is the smallest possible using lumping operations as soon as it is possible.
The probabilities in equation \ref{eq:complete_model} are computed on the fly by \texttt{spell-qtl} when necessary. A hidden Markov chain representing the origin of the genetic material is derived for any population in the pedigree by \texttt{spell-pedigree}. Depending on the number of different parents in the design and the number of non-independent meiosis the minimal number of states that allow to enjoy the Markov property can be much more than the number of possible genotypes. Spell-pedigree ensures that this number is the smallest possible using lumping operations as soon as it is possible.
At any observed marker, the probabilities of these states are inferred by spell-marker. Note that as soon as non clone population are involved, some information is gathered from siblings in order to infer states probabilities.
At any observed marker, the probabilities of these states are inferred by \texttt{spell-marker}. Note that as soon as non clone population are involved, some information is gathered from siblings in order to infer states probabilities. (See figure \ref{fig:pipeline} for more information about information exchange between parts of the software).
Suppose the locus of interest $q$ being preceded by $n_l$ observed loci and followed by $n_r$ observed loci, the loci sequence being
$[l_{n_l},...,l_2,l_1,q,r_1,r_2,...,r_{n_r}]$. The parental origin probability vector at locus $q$ is then :
......@@ -245,30 +260,190 @@ Suppose the locus of interest $q$ being preceded by $n_l$ observed loci and foll
Where :
\begin{itemize}
\item $T_d$ is the transition matrix of the Markov chain (as a function of genetic distance $d$). It is computed by spell-pedigree;
\item $T_d$ is the transition matrix of the Markov chain (as a function of genetic distance $d$). It is computed by \texttt{spell-pedigree};
\item $\varphi$ is the steady state vector associated with transition matrix $T_d$, $\varphi^{-1}$ its component wise inverse ;
\item $M_l$ is the observation matrix at locus $l$. It is inferred from observations at locus $l$ by spell-marker;
\end{itemize}
Equation \ref{eq:pop} can be applied recursively in order to compute multi-loci joint probabilities. The code in spell-qtl allows these joint probabilities computations when needed.
Equation \ref{eq:pop} can be applied recursively in order to compute multi-loci joint probabilities. The code in \texttt{spell-qtl} allows these joint probabilities computations when needed.
\chapter{Generated outputs}
\chapter{The main Spell-QTL pipeline}
\section{General view}
\begin{figure}[h]
\centering
\includesvg[width=\columnwidth]{images/Spell-pipeline2}
\caption{The main Spell-QTL pipeline}\label{fig:pipeline}
\end{figure}
Global software organization is displayed in figure \ref{fig:pipeline}. More detailed informations about the main purpose of each part and then about the required input files will be provided in this chapter.
\section{Software suite details}
\subsection{\texttt{spell-pedigree}}
\begin{itemize}
\item Computes the transition matrices for the Continuous Time Hidden Markov Models (The $T_d$ matrices in formula \ref{eq:pop}).
\item These computations are inherently dependent, so it can only run sequentially.
\item Outputs a data file that can be fed to \texttt{spell-marker}.
\end{itemize}
\subsection{\texttt{spell-marker}}
\begin{itemize}
\item Computes the 1-point Parental Origins Probabilities by Bayesian inference for all markers.
\item Each marker is independent, so it can run in various ways:
\begin{itemize}
\item Sequentially,
\item Multithreaded,
\item Scheduling jobs on {\em Sun Grid Engine},
\item Sending jobs to remote machines via {\tt ssh}
\end{itemize}
\item Outputs a data file that can be fed to \texttt{spell-qtl}.
\item Can also output the raw Parental Origin Probabilities.
\end{itemize}
\subsection{\texttt{spell-qtl}}
\begin{itemize}
\item Performs the QTL analysis {\em per se}.
\item Can also output the n-point Parental Origin Probabilities along the linkage groups.
\item Can run most computations concurrently on a multicore computer.
\item Computation results are cached on disk (and/or in RAM).
\end{itemize}
\section{Input files}
\subsection{Pedigree}
\subsubsection{File format}
See \texttt{spell-pedigree} man page (at appendix \ref{ch:spell:predigree})
\subsubsection{File sample}
\begin{lstlisting}[frame=single,caption={Pedigree (.ped)}]
Founders,1,0,0
Founders,2,0,0
Founders,3,0,0
Founders,4,0,0
F1,5,1,2
F1,6,3,4
CP,7,5,6
F2,8,7,7
F3,9,8,8
F3,10,8,8
F3,11,8,8
\end{lstlisting}
\subsection{Marker observations}
\subsubsection{File format}
\texttt{spell-marker} understand a few common formats, based on MapMaker RAW format (without traits) :
\begin{itemize}
\item A line beginning with {\tt data type} followed by ignored text
\item A line containing four integer values : number of markers, number of individuals, two ignored values
\item A line per marker beginning with starred(*) marker name followed by a space and by allele observed or inferred for each individual (a character per individual).
\end{itemize}
Build in allele code are :
\begin{description}
\item[02] SNP observations, where 0 and 2 are homozygous and 1 is heterozygous. These observations type are relevant for any individual in the pedigree.
\item[ABHCD] MapMaker like Parental Origin inferred observations. These are relevant for inbred lines crosses products. Let's consider the cross $A|A \times B|B$:
\begin{itemize}
\item The child is typed A and the allele A is not dominant. The only possible genotype is $A|A$. This is encoded by the character {\tt A} in MapMaker.
\item The child is typed A and the allele A is dominant. The possible genotype are $A|A$, $A|B$ and $B|A$. This is encoded by the character {\tt D} in MapMaker.
\item The child is typed B and the allele B is not dominant. The only possible genotype is $B|B$. This is encoded by the character {\tt B} in MapMaker.
\item The child is typed B and the allele B is dominant. The possible genotype are $A|B$, $B|A$ and $B|B$. This is encoded by the character {\tt C} in MapMaker.
\item The child is typed AB (the allele A and B are codominant). The possible genotype are $A|B$ and $B|A$. This is encoded by the character {\tt H} in MapMaker.
\item The child in not typed. The possible genotypes are $A|A$, $A|B$, $B|A$ and $B|B$. This is encoded by the character {\tt -} in MapMaker.
\end{itemize}
The parental origin letters can be overridden in the command line.
\item[CP] Outbred observations as defined in Cathagene. These observations are relevant for all known phases situations, including cases where one parent is homozygous, when 3 or 4 different alleles are present. Lets consider the cross $A|B \times C|D$: The possibles child genotypes are $A|C$, $A|D$, $B|C$ and $B|D$. Carthagene format actually enables the user to express any subset of the 4 different possibilities using a single hexadecimal digit (0-f).
\begin{center}
\begin{tabular}{cc}
Code & Possible genotypes \\
\hline
1 & $A|C$ \\
2 & $A|D$ \\
3 & $A|C$,$A|D$ \\
4 & $B|C$ \\
5 & $A|C$,$B|C$ \\
6 & $A|D$,$B|C$ \\
7 & $A|C$,$A|D$,$B|C$ \\
8 & $B|D$ \\
9 & $A|C$,$B|D$ \\
a & $A|D$,$B|D$ \\
b & $A|C$,$A|D$,$B|D$ \\
c & $B|C$,$B|D$ \\
d & $A|C$,$B|C$,$B|D$ \\
e & $A|D$,$B|C$,$B|D$ \\
0 or f or - & $A|C$,$A|D$,$B|C$,$B|D$ \\
\end{tabular}
\end{center}
\end{description}
Other allele code can be defined via a JSON file. (see appendix \ref{ch:spell:marker} for format and sample files)
\subsubsection{File sample}
\begin{lstlisting}[frame=single,caption={Marker alleles (.gen)}]
data type random example
42 42 0 0
*M1 21221-0212-122-20000-101022220100202102200
*M2 012120-0221010220101112222101211122120211-
*M3 0221022000211200012112-020000-101221222202
*M4 00112-021012200110101221221222112120100120
*M5 2211-00211121002221--2-20002102-1011220211
*M6 01211-201202221121002-12211200000001011001
*M7 202212202-00--10-101221200-112001-110-220-
*M8 222-22-02102002002220112-021-022--12012-11
*M9 0210-10-1122212-21000-2200-121200200222211
...
\end{lstlisting}
Note that {\tt data type} is irrelevant
\subsection{Genetic map}
\subsubsection{File format}
One line per linkage group (space separated) :
\begin{itemize}
\item Starred(*) name for this linkage group
\item Number of markers in the linkage group
\item Name of first marker
\item Series of distance in cM and name of next marker
\end{itemize}
\subsubsection{File sample}
\begin{lstlisting}[frame=single,breaklines=false,caption={Genetic map (.map)}]
*Chrom1 3 M11 10.5 M12 30.3 M13
*Chrom2 17 M21 5.5 M22 0 M23 2 M24 5 M25 8 M26 11 M27 2.2 M28 2.5 M29 ...
*Chrom3 8 M31 10 M32 10 M33 10 M34 10 M35 10 M36 10 M37 10 M38
\end{lstlisting}
\subsection{Trait observations}
\subsubsection{File format}
As in MapMaker RAW format, without header : one line per trait beginning with starred (*) trait name followed by space separated observations (one numerical observation per individual, {\tt -} means unobserved).
\subsubsection{File sample}
\begin{lstlisting}[frame=single,breaklines=false,caption={Trait observations (.phen)}]
*trait_1 131.97 113.96 - 125.53 56.31 87.55 73.55 66.6 91.13 5.74 ...
*trait_2 149.12 -56.72 104.56 100.54 88.49 102.0 65.75 121.94 68.92 ...
*trait_3 147.87 - - 38.53 103.83 95.51 20.05 72.69 66.74 136.95 78.57 ...
*trait_4 57.52 143.51 128.02 41.53 122.34 100.11 123.41 74.11 119.22 ...
*trait_5 125.69 197.13 - 152.77 74.41 188.16 64.8 108.04 89.6 154.62 ...
...
\end{lstlisting}
\chapter{Generated outputs}
\begin{appendices}
\chapter{spell-Pedigree man page}
\chapter{\texttt{spell-pedigree} man page} \label{ch:spell:predigree}
\sloppy
\input{spell-pedigree.tex}
\fussy
\chapter{spell-marker man page}
\chapter{\texttt{spell-marker} man page} \label{ch:spell:marker}
\input{spell-marker.tex}
\chapter{spell-qtl man page}
\chapter{\texttt{spell-qtl} man page}
\input{spell-qtl.tex}
\chapter{spell-qtl-examples man page}
\input{spell-qtl-examples.tex}
\end{appendices}
\lstlistoflistings
\tableofcontents
\end{document}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment