General Description and functionnalities

Authors : P. Le Roy, INRA, JM. Elsen, INRA, H. Gilbert, INRA, C. Moreno, INRA, A. Legarra, INRA, O. Filangi, INRA

Background

QTLmap is a linkage analysis software dedicated to the analysis of outbred population in an experimental design. This software is developed at INRA (french National Institute for Agronomical Research) to map following linkage analyses approaches in various experimental populations. Specific models were implemented to take maximum advantage of large data sets now available for QTL detection and get fine locus descriptions (indications of pleiotropy, of linked loci…)to facilitate further explorations. In QTLMAP, the basis of the QTL detection technique is an interval mapping applied to half-sib families or a mixture of full- and half-sib families where the exact computation of phase probability is undertaken from a 2 or 3 generation pedigree. The test statistics are computed either using exact calculation of likelihood ratios or using partial linear approximations of the likelihood or complete regression on marker genotypes.

Various genetic models will be proposed depending on 1) the QTL allele segregation (biallelic in crosses between monomorphic breeds, biallelic without hypothesis on the origin, multiallelic, haplotype identity), 2) the number of QTL segregating (one, two linked, several unlinked), 3) the number of traits under the QTL influence. The trait determinism is envisaged depending on 1) the trait distribution (gaussian trait, survival trait or threshold distribution), 2) the interactions between the QTL and fixed effects or other loci, 3) the residual variance structure (homo- or heteroskedasticity for half-sib families). Due to differences with the asymptotical conditions from the chi2 theory, the test statistic significance are evaluated either through numerical approximations, or through empirical calculations obtained from permutations or simulations under the null hypothesis.

Finally, the software will be released in coordination with procedures for data verification to facilitate genotyping validations and trait evaluations of data sets.

Available Functionnalities

Up to now, the following functionnalities have been implemented :
  • QTL detection in half-sib families or mixture of full- and half-sib families
  • One or two linked QTL segregating in the population
  • Single trait or multiple trait analyses
  • Nuisance parameters (e.g. sex, batch, weight...) and their interactions with QTL can be included in the analysis
  • Gaussian, discrete or survival (Cox model) data
  • Familial heterogeneity of variances (heteroscedasticity)
  • Can handle eQTL analyses
  • Computation of transmission and phase probabilities adapted to high throughput genotyping (SNP)
  • Empirical thresholds are estimated using simulations under the null hypothesis or permutations of trait values
  • Computation of power and accuracy of your design or any simulated design

References

  • Knott SA, Elsen JM, Haley CS, 1996. Methods for multiple marker mapping of quantitative trait loci in half-sib populations. Theor. Appl. Genet. : 93 : 71-80.
  • Elsen JM, Mangin B, Goffinet B, Boichard D, Le Roy P, 1999. Alternative models for QTL detection in livestock. I. General introduction. Genet. Sel. Evol., 31, 213-224
  • Mangin B, Goffinet B, Le Roy P, Boichard D, Elsen JM, 1999. Alternative models for QTL detection in livestock. II. Likelihood approximations and sire marker genotype estimations. Genet. Sel. Evol., 31, 225-237.
  • Goffinet B, Le Roy P, Boichard D, Elsen JM, Mangin B, 1999. Alternative models for QTL detection in livestock. III. Heteroskedastic model and models corresponding to several distributions of the QTL effect.. Genet. Sel. Evol., 31, 341-350.
  • Moreno C.R., Elsen J.M., Le Roy P., Ducrocq V., 2005. Interval mapping methods for detecting QTL affecting survival and time–to–event phenotypes. Genet. Res. Camb., 85 : 139-149.
  • Gilbert H, Le Roy P., 2007. Methods for the detection of multiple linked QTL applied to a mixture of full and half sib families. Genet Sel Evol., 39(2):139-58.
  • Gilbert H., Le Roy P., Moreno C., Robelin D., Elsen J. M., 2008. QTLMAP, a software for QTL detection in outbred population. Annals of Human Genetics, 72(5): 694.
  • Filangi.O , Moreno C. , Gilbert H. , Legarra A. , Le Roy P. , Elsen JM. QTLMap, a software for QTL detection in outbred populations. 9th World Congress on Genetics Applied to Livestock Production, Leipzig. 2010.

Documentations

- Utilisation de QTLMap (pas à jours => voir plutot le .docx)

Spécifications techniques

- Types structurés et description des structures - Version 0.9.6

Développement des nouvelles analyses

- Modèle biallélic/farnir
- epistasie - modele pere avec un effet d interaction
- Modèle Animal

Installation

Dépendances

  • GCC 4.8.2
  • CMake 2.8.2
  • Lapack ou MKL (selon la compilation Intel ou GCC)
  • CUDA 5.5

Recupération des versions QTLMap

(depuis la version initiale packagée par D.Robelin)

Des versions figées sont disponibles dans le dépot SVN :

Pour récuperer la liste des versions de QTLMap

svn list https://forge-dga.jouy.inra.fr/svn/qtlmap/tags

0.2.0/
0.3.0/
0.4.0/
0.7.0/
0.8.4/
0.8.5/
0.8.9/
0.9.0/
0.9.1/
0.9.3/
0.9.4/
0.9.5/
0.9.6/
0.9.6b/
0.9.7/
0.9.7b/
0.9.7c/

Pour sortir une version (0.9.7c dans l'exemple)

svn export https://forge-dga.jouy.inra.fr/svn/qtlmap/tags/0.9.7c qtlmap

Récupération de la version de développement

Il faut sortir la version en cours de développement. Celle ci sera sous gestion des sources (en cohérence avec le dépot) pour pouvoir faire des commit (inserer les modifcations dans le dépot) et des updates (mettre à jours ses sources locales)

svn co https://forge-dga.jouy.inra.fr/svn/qtlmap/trunk qtlmap

Information sur CMake et les scripts CMakeLists.txt de QTLMap

Description des fichiers CMakeLists.txt

Compilation la suite GCC

le script env-gcc-4.8.2.sh et le chemin /bao/dev/lib/lapack/3.5.0 sont specifiques à l'environnement CTIG

en mode release:

source /bao/dev/env/env-gcc-4.8.2.sh
mkdir -p build/gcc;cd build/gcc
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_Fortran_COMPILER=gfortran -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc -DLAPACK_PATH=/bao/dev/lib/lapack/3.5.0 ../..
make -j 4

en mode debug :

source /bao/dev/env/env-gcc-4.8.2.sh
mkdir -p build/gcc;cd build/gcc
cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_Fortran_COMPILER=gfortran -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc -DLAPACK_PATH=/bao/dev/lib/lapack/3.5.0 ../..
make -j 4

avant d'executer qtlmap (dans un autre shell par exemple) il faudra faire source /bao/dev/env/env-gcc-4.8.2.sh systématiquement pour recharger l'environnement dans lequel qtlmap a été compilé.

Compilation ifort 14

le script env-ifort-2013-1.106.sh est specifique à l'infrastructure du CTIG

source /bao/dev/env/env-ifort-2013-1.106.sh
mkdir -p build/ifort;cd build/ifort
cmake -DCMAKE_Fortran_COMPILER=ifort -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc ../..
make -j 4

avant d'executer qtlmap (dans un autre shell par exemple) il faudra faire source /bao/dev/env/env-ifort-2013-1.106.sh systématiquement pour recharger l'environnement dans lequel qtlmap a été compilé.

Compilation avec CUDA (Utilisation des GPU)

Il faut dans un premier temps récuperer le kit de développement pour CUDA (sdk cuda) https://developer.nvidia.com/cuda-downloads et l'installer sur la machine ou le GPU est disponible.
Par défaut CUDA est installé dans /usr/local. Il faudra changer les chemin dans les descriptions qui suivent si vous changez le chemin d'installation.

Il ne faut pas oublier de charger l'environnement GCC (la compilation Intel/Cuda n'a jamais été testé).


export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64/:$LD_LIBRARY_PATH
mkdir -p build/release-cuda
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_Fortran_COMPILER=gfortran -DGENCODE_CUDA="arch=compute_20,code=sm_20" -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda -DCUDA_IMPL=true ../..

Tests de non régression

Depuis 2 ans, QTLMap est soumis à des tests de non régréssion. Ces tests peuvent être automatisés en utilisant Jenkins jenkins-ci.org(Execution d'un test lorsqu'il y a un commit dans le depot SVN).

Pour lancer les tests :
  • mettre dans la variable d'environnement PATH l'executable qtlmap à tester( ex: export PATH=/home/moi/qtlmap-dev/build/debug/src/:$PATH)
  • il faut se placer à la racine de QTLMap et executer le script :
    ./check
    

L'execution du script dure quelques minutes si celui-ci s'execute entierement. Si une erreur (anormale) intervient, le script s arrete en rendant compte de l'erreur.

Stats d'utilisations de QTLMap sur les serveurs du CTIG

Pour générer des stats d'utilisation il faut demander au CTIG d'intégrer le groupe baoadm

Lorsque qtlmap est executé au CTIG (dga12,dga11) des informations sont enregistrées dans le fichier /bao/qtlmap/log/qtlmap_log

Des rapports d'utilisation de QTLMap sont régulièrement générés pour obtenir des informations sur les besoins en ressources de l'outil (calcul, mémoire)
Ces rapports se trouvent dans le répertoire @/bao/qtlmap/log/*

Pour généré un nouveau rapport

cd /bao/qtlmap/log
./analyse_log.sh qtlmap_log > `date +%d%m%y`_RAPPORT.txt

Informations générées (depuis 26 Mars 2013) :

  • quantiles des temps d'execution en seconde
  • quantiles du nombre threads utilisé
  • nombre de jobs executés avec 1,2,4,8 ou 12 threads
  • nombre de jobs executés par version de qtlmap (depuis la 0.9.3)
  • nombre de jobs lancé par utilisateurs
  • nombre de jobs lancé sur DGA12
  • nombre de jobs lancé sur DGA11

QTLMap au CTIG

Pour installer une version de qtlmap dans /bao il faut demander au CTIG à etre intégrer au groupe baoadm

Les versions de qtlmap sont installé dans /bao/qtlmap. Pour plus de sécurité nous gardons une ancienne version en production et la version courante.

en Juin 2014, le ls du repertoire

0.9.7b  0.9.7c  log  qtlmap.sh  utils

  • le répertoire utils n'est plus utilisé (l'ensemble des librairies utilisées pour qtlmap se trouve dans /bao/dev/env)
  • le scrtip qtlmap.sh est un "wrapper" pour l'execution de qtlmap. Les utilisateurs qui lancent qtlmap dans un shell executent en fait ce script
[ofilangi@dga11 ~]$ which qtlmap
/usr/bin/qtlmap
[ofilangi@dga11 ~]$ ll /usr/bin/qtlmap
lrwxrwxrwx 1 root root 21 Jun 18  2012 /usr/bin/qtlmap -> /bao/bin/dga11/qtlmap
[ofilangi@dga11 ~]$ ll /bao/bin/dga11/qtlmap
lrwxrwxrwx 1 root baoadm 15 Sep 13  2012 /bao/bin/dga11/qtlmap -> ../dga12/qtlmap
[ofilangi@dga11 ~]$ ll /bao/bin/dga12/qtlmap
lrwxrwxrwx 1 root baoadm 22 Sep 13  2012 /bao/bin/dga12/qtlmap -> ../../qtlmap/qtlmap.sh
[ofilangi@dga11 ~]$ 
Ce script permet :
  • de modifier rapidement la version de qtlmap a executer
  • d'écrire les informations pour les stats d'utilisation dans /bao/qtlmap/log/qtlmap_log
  • de fixer par défaut le nombre de threads à 1

installation d'une version

Il faut recuperer une version du depot SVN et compiler cette version (dans l'exemple 0.9.6)

cd /bao/qtlmap
svn export https://forge-dga.jouy.inra.fr/svn/qtlmap/tags/0.9.6
cd 0.9.6/
mkdir -p build/release
cd build/release/
source /bao/dev/env/env-gcc-4.8.2.sh
cmake -DCMAKE_Fortran_COMPILER=gfortran -DCMAKE_CXX_COMPILER=g++ -DCMAKE_C_COMPILER=gcc -DLAPACK_PATH=/bao/dev/lib/lapack/3.5.0 ../..
make -j 4
make install

l'exécutable se trouve ici /bao/qtlmap/0.9.6/bin/qtlmap

Dans le script /bao/qtlmap/qtlmap.sh, il faut changer la version de qtlmap à executer en modifiant la variable d environnement VERSION

VERSION="0.9.6"