La boîte d'outils [https://bio.tools/gatk Genome Analysis Toolkit (GATK)] est conçue pour l'analyse bioinformatique des données de séquençage haut débit (HTS) et du format Variant Call (VCF). Elle est beaucoup employée pour la découverte des variantes courtes des lignées germinales à partir de données de séquençage du génome entier et de l'exome. GATK est à l'avant-plan de la recherche génomique en termes de [https://gatk.broadinstitute.org/hc/en-us/sections/360007226651-Best-Practices-Workflows meilleures pratiques]. ==Charger un module == Plusieurs versions sont disponibles sur nos grappes. Pour obtenir l'information sur la version, [[Utiliser des modules|lancez la commande]] {{Commands |module spider gatk }} Vous obtiendrez de l'information sur GATK et les versions
gatk/3.7
gatk/3.8
gatk/4.0.0.0
gatk/4.0.8.1
gatk/4.0.12.0
gatk/4.1.0.0
gatk/4.1.2.0
gatk/4.1.7.0
gatk/4.1.8.0
gatk/4.1.8.1
gatk/4.2.2.0
gatk/4.2.4.0
gatk/4.2.5.0
Pour plus d'information sur une version particulière, utilisez {{Commands |module spider gatk/4.1.8.1 }} Comme vous pouvez voir, seul le module StdEnv/2020 est prérequis; chargez-le avec {{Commands |module load StdEnv/2020 gatk/4.1.8.1 }} Ou, puisque StdEnv/2020 est chargé par défaut, simplement {{Commands |module load gatk/4.1.8.1 }} ==Utilisation == Les versions plus récentes (>=4.0.0.0) offrent un enveloppeur (wrapper) pour les exécutables Java (.jar). En chargeant les modules GATK, vous obtiendrez la plupart des variables d'environnement nécessaires. La commande module spider fournit des renseignements sur l'utilisation ainsi que des exemples.
      Usage
      =====
      gatk [--java-options "-Xmx4G"] ToolName [GATK args]
      
      
      Examples
      ========
      gatk --java-options "-Xmx8G" HaplotypeCaller -R reference.fasta -I input.bam -O output.vcf
Dans cet exemple, vous avez probablement remarqué que certains arguments sont directement passés à Java avec les --java-options, comme la mémoire maximale du tas (heap memory) de -Xmx8G réservée pour l'instance. Nous recommandons de toujours utiliser -DGATK_STACKTRACE_ON_USER_EXCEPTION=true puisque vous obtiendrez plus d'information pour le débogage en cas d'échec du programme. Assurez-vous que toutes les options passées par --java-options sont entre guillemets ("). === Utilisation sur nos grappes === Pour les tâches sbatch, nous recommandons l'option --tmp-dir avec la configuration ${SLURM_TMPDIR}; les fichiers temporaires sont alors redirigés vers le stockage local. Si vous utilisez GenomicsDBImport, assurez-vous que l'option --genomicsdb-shared-posixfs-optimizations est activée; ceci peut optimiser l'utilisation et la performance avec des systèmes de fichiers partagés Posix comme NFS et Lustre. Si ce n'est pas possible ou si vous utilisez GNU Parallel pour exécuter plusieurs intervalles simultanément, copiez votre base de données dans ${SLURM_TMPDIR} et lancez-y l'exécution afin d'éviter que les opérations d'entrée-sortie perturbent le système de fichiers; comme ${SLURM_TMPDIR} est un espace de stockage local, il est plus rapide et les opérations d'entrées-sortie n'affectent pas les autres utilisateurs et utilisatrices. ===Versions antérieures à GATK 4 === Les versions antérieures n'offrent pas la commande gatk; invoquez plutôt le fichier jar.
java -jar GenomeAnalysisTK.jar PROGRAM OPTIONS
GenomeAnalysisTK.jar doit se trouver dans PATH. Sur nos grappes, les variables d'environnement $EBROOTPICARD pour Picard (dans GATK >= 4) et $EBROOTGATK pour GATK contiennent le chemin vers le fichier jar. Ainsi, pour appeler GATK <= 3, lancez
module load nixpkgs/16.09 gatk/3.8
java -jar "${EBROOTGATK}"/GenomeAnalysisTK.jar PROGRAM OPTIONS
Pour les particularités de GATK <= 3 voyez [https://github.com/broadinstitute/gatk-docs/tree/master/gatk3-tooldocs le guide GATK3]. ===Utilisation avec plusieurs cœurs === La plupart des outils GATK (>=4) ne peuvent pas utiliser plusieurs cœurs par défaut; vous devriez donc demander un seul cœur quand vous faites appel à ce type d'outil. Pour certains calculs, quelques outils utilisent des fils (par exemple Mutect2 avec --native-pair-hmm-threads) et donc vous pouvez demander plus de CPU, dans certains cas jusqu'à 4 fils. Quelques commandes Spark sont cependant disponibles avec GATK4https://gatk.broadinstitute.org/hc/en-us/articles/360035890591-
[traduction libre]
Spark n'est pas utilisé par tous les outils GATK. Les outils qui utilisent GATK le mentionnent dans leur documentation respective. * Certains outils GATK ont des versions qui supportent Spark et d'autres non. Les noms des versions pouvant travailler avec Spark ont le suffixe spark. Plusieurs de ces versions sont encore au stade expérimental, mais nous prévoyons éventuellement n'offrir qu'une version par outil. * Certains outils GATX n'ont qu'une version qui supporte Spark; leurs noms n'ont pas le suffixe spark.
Avec les commandes qui utilisent Spark, vous pouvez demander plusieurs CPU. Veuillez indiquer le nombre exact de CPU dans la commande Spark; par exemple, si vous demandez 10 CPU, utilisez --spark-master local[10] plutôt que --spark-master local[*]. Pour travailler en multinœuds, vous devez d'abord [[Apache_Spark/fr| déployer une grappe Spark]] puis configurer les variables appropriées dans la commande GATK. ==Travailler avec Apptainer== Si vous obtenez des erreurs comme [https://gatk.broadinstitute.org/hc/en-us/community/posts/360067054832-GATK-4-1-7-0-error-java-lang-IllegalArgumentException-malformed-input-off-17635906-length-1 IllegalArgumentException] dans votre utilisation des modules installés sur nos grappes, nous vous recommandons d'essayer de travailler autrement en passant par [[Apptainer]]. Vous pouvez trouver [https://hub.docker.com/r/broadinstitute/gatk une image Docker ici] ainsi que [https://hub.docker.com/r/broadinstitute/gatk/tags d'autres versions sur cette page]. Vous devez d'abord construire une image Apptainer à partir d'une image Docker. Pour obtenir les plus récentes versions, lancez les commandes suivantes sur la grappe :
module load apptainer
apptainer build gatk.sif docker://broadinstitute/gatk
ou, pour une [https://hub.docker.com/r/broadinstitute/gatk/tags version spécifique]
module load apptainer
apptainer build gatk_VERSION.sif docker://broadinstitute/gatk:VERSION
Dans votre [[Running jobs/fr|script SBATCH]], vous devriez utiliser quelque chose comme
module load apptainer
apptainer exec -B /home -B /project -B /scratch -B /localscratch \
    /gatk.sif gatk [--java-options "-Xmx4G"] ToolName [GATK args]
Pour plus d'information sur Apptainer, visionnez ce [https://www.youtube.com/watch?v=bpmrfVqBowY séminaire web]. ==Foire aux questions == ===Ajouter une étiquette RG (read group) dans un fichier bam === Pour ajouter une étiquette (nommée ici tag) au fichier input.bam, vous pouvez utiliser la commande GATK/PICARD [https://gatk.broadinstitute.org/hc/en-us/articles/360037226472-AddOrReplaceReadGroups-Picard- AddOrReplaceReadGroups]:
gatk  AddOrReplaceReadGroups \
    -I input.bam \
    -O output.bam \
    --RGLB tag \
    --RGPL ILLUMINA 
    --RGPU tag \
    --RGSM tag \
    --SORT_ORDER 'coordinate' \
    --CREATE_INDEX true
Ceci suppose que votre fichier en entrée est trié selon les coordonnées et qu'un index est généré avec le résultat annoté (--CREATE_INDEX true). ===Message java.lang.OutOfMemoryError: Java heap space === Les sous-programmes GATK nécessitent souvent plus de mémoire pour traiter vos fichiers. Si vous n'utilisiez pas la commande -Xms, ajoutez-la à --java-options. Par exemple, vous lanceriez
gatk MarkDuplicates \
    -I input.bam \
    -O marked_duplicates.bam \
    -M marked_dup_metrics.txt 
Si vous obtenez l'erreur java.lang.OutOfMemoryError: Java heap space, essayez ceci
gatk MarkDuplicates \
    --java-options "-Xmx8G DGATK_STACKTRACE_ON_USER_EXCEPTION=true"
    -I input.bam \
    -O marked_duplicates.bam \
    -M marked_dup_metrics.txt 
Si ça ne fonctionne toujours pas, essayez d'augmenter la mémoire jusqu'à ce que vous trouviez la capacité nécessaire à votre ensemble de données. N'oubliez pas de demander suffisamment de mémoire quand vous travaillez dans nos systèmes. Pour en apprendre davantage au sujet du tas avec Java, [https://plumbr.io/outofmemoryerror/java-heap-space lisez ceci]. ===Augmenter la mémoire pour le tas donne toujours l'erreur java.lang.OutOfMemoryError: Java heap space === Dans certains cas, le fait d'augmenter la mémoire ne résout pas le problème. Ceci se produit souvent avec des organismes qui ne sont pas des modèles et quand vos références sont trop échafaudées. Nous vous recommandons alors de supprimer les niveaux moins importants et de créer des sous-ensembles pour vos références. Par conséquent, vous devrez effectuer plusieurs MAPS et exécuter les pipelines dans chacun des sous-ensembles. Cette approche ne fonctionne pas pour tous les pipelines, donc révisez bien les résultats obtenus. La boîte à outils GATK est conçue en fonction du génome humain; plusieurs paramètres et pipelines doivent être adaptés pour d'autres organismes. ===Utiliser plus de ressources que ce qui a été demandé === Les applications GATK/JAVA utilisent souvent plus de mémoire ou de CPU et de fils que ce qui a été demandé. Ceci est souvent dû au processus de Garbage Collection de Java. Pour contourner ceci, vous pouvez ajouter -XX:ConcGCThreads=1 à l'argument --java-options. === Foire aux questions de GATK === Voir [https://gatk.broadinstitute.org/hc/en-us/sections/360007226791-Troubleshooting-GATK4-Issues Troubleshooting GATK4 Issues]. =Références = [https://gatk.broadinstitute.org/hc/en-us Site web GATK] [https://gatk.broadinstitute.org/hc/en-us/articles/360035532012-Parallelism-Multithreading-Scatter-Gather GATK et SPARK] [https://gatk.broadinstitute.org/hc/en-us/articles/360035889611-How-can-I-make-GATK-tools-run-faster- Make GATK tools run faster] [[Category:Bioinformatics]] [[Category:Software]]