Erreur Java - GATK4

Bonjour,

j'ai tenté de relancer un script que j'utilisais au mois de janvier/février pour analyser des mutations entre un génome de référence et une souche d'intérêt. Pour cela, le script faisait appel à GATK4 (installé sur vos serveurs). Ce dernier arrivait à tourner complètement et sans retourner d'erreur.
Dernièrement, lorsque je lance ce script l'erreur suivante apparait : java.lang.NullPointerException.

Auriez-vous vu une idée de l'origine de celle-ci ?
J'ai tenté d'échanger les module load de place (comme cela avait fonctionné pour la commande gatk AnalyzeCovariates) mais rien n'y fait. La commande, les options et l'existence des fichiers ont également été vérifiés.

Merci par avance pour votre aide,

Aurélie

Script :

module load r/3.5.1
module load java-jdk/8.0.112
module load gatk4/4.0.10.0
srun gatk HaplotypeCaller -I /shared/projects/mbovis_diversity/Mbv-analyze/4_bam/Mbv-11325C1.sort.rg.md.fixmate.bam -O /shared/projects/mbovis_diversity/Mbv-analyze/5_vcf/recalls_gvcf/Mbv-11325C1_init.g.vcf -R /shared/projects/mbovis_diversity/data/reference/Mbv-L15762C1.fasta -ERC GVCF --min-base-quality-score 20 --minimum-mapping-quality 30 --sample-ploidy 1 --QUIET --verbosity ERROR

Erreur :

java.lang.NullPointerException
    at org.broadinstitute.hellbender.utils.SequenceDictionaryUtils.getContigNames(SequenceDictionaryUtils.java:463)
    at org.broadinstitute.hellbender.utils.SequenceDictionaryUtils.getCommonContigsByName(SequenceDictionaryUtils.java:457)
    at org.broadinstitute.hellbender.utils.SequenceDictionaryUtils.compareDictionaries(SequenceDictionaryUtils.java:234)
    at org.broadinstitute.hellbender.utils.SequenceDictionaryUtils.validateDictionaries(SequenceDictionaryUtils.java:150)
    at org.broadinstitute.hellbender.utils.SequenceDictionaryUtils.validateDictionaries(SequenceDictionaryUtils.java:98)
    at org.broadinstitute.hellbender.engine.GATKTool.validateSequenceDictionaries(GATKTool.java:701)
    at org.broadinstitute.hellbender.engine.GATKTool.onStartup(GATKTool.java:643)
    at org.broadinstitute.hellbender.engine.AssemblyRegionWalker.onStartup(AssemblyRegionWalker.java:156)
    at org.broadinstitute.hellbender.cmdline.CommandLineProgram.runTool(CommandLineProgram.java:137)
    at org.broadinstitute.hellbender.cmdline.CommandLineProgram.instanceMainPostParseArgs(CommandLineProgram.java:192)
    at org.broadinstitute.hellbender.cmdline.CommandLineProgram.instanceMain(CommandLineProgram.java:211)
    at org.broadinstitute.hellbender.Main.runCommandLineProgram(Main.java:160)
    at org.broadinstitute.hellbender.Main.mainEntry(Main.java:203)
    at org.broadinstitute.hellbender.Main.main(Main.java:289)
Using GATK jar /shared/mfs/data/software/miniconda/envs/gatk4-4.0.10.0/share/gatk4-4.0.10.0-0/gatk-package-4.0.10.0-local.jar
Running:
    java -Dsamjdk.use_async_io_read_samtools=false -Dsamjdk.use_async_io_write_samtools=true -Dsamjdk.use_async_io_write_tribble=false -Dsamjdk.compression_level=2 -jar /shared/mfs/data/software/miniconda/envs/gatk4-4.0.10.0/share/gatk4-4.0.10.0-0/gatk-package-4.0.10.0-local.jar HaplotypeCaller -I /shared/projects/mbovis_diversity/Mbv-analyze/4_bam/Mbv-11325C1.sort.rg.md.fixmate.bam -O /shared/projects/mbovis_diversity/Mbv-analyze/5_vcf/recalls_gvcf/Mbv-11325C1_init.g.vcf -R /shared/projects/mbovis_diversity/data/reference/Mbv-L15762C1.fasta -ERC GVCF --min-base-quality-score 20 --minimum-mapping-quality 30 --sample-ploidy 1 --QUIET --verbosity ERROR
srun: error: cpu-node-81: task 0: Exited with exit code 3

Bonjour,

L’environnement r/3.5.1 a changé, il a été mis à jour et entre autre java y a été mis à jour aussi. (A noter que r/3.6.3 est aussi disponible)

Du coup avec les 3 module load ca fait trois version de java disponible: un java dans r, un dans java-jdk et un dans gat4.

Pas toujours avec la même version:

./r-3.5.1/bin/java -version
openjdk version "1.8.0_192"
OpenJDK Runtime Environment (Zulu 8.33.0.1-linux64) (build 1.8.0_192-b01)
OpenJDK 64-Bit Server VM (Zulu 8.33.0.1-linux64) (build 25.192-b01, mixed mode)
./java-jdk-8.0.112/bin/java -version
openjdk version "1.8.0_112"
OpenJDK Runtime Environment (Zulu 8.19.0.1-linux64) (build 1.8.0_112-b16)
OpenJDK 64-Bit Server VM (Zulu 8.19.0.1-linux64) (build 25.112-b16, mixed mode)
./gatk4-4.0.10.0/bin/java -version
openjdk version "1.8.0_192"
OpenJDK Runtime Environment (Zulu 8.33.0.1-linux64) (build 1.8.0_192-b01)
OpenJDK 64-Bit Server VM (Zulu 8.33.0.1-linux64) (build 25.192-b01, mixed mode)

Pour commencer, vous pourriez donc peut-être tester sans charger java-jdk et peut-être même sans charger r si vous n'en avez pas besoin dans ce script.

Bonjour François,

Tout d'abord merci pour votre réponse !

Malheureusement R est nécessaire pour la commande AnalyzeCovariates de GATK qui arrive quelques lignes plus tard dans mon script. Celui que je vous ai transmis n'est en réalité qu'un extrait simplifié de la ligne où une erreur est rencontrée.
Je présume que la "solution" de rapidité serait donc de charger R juste avant AnalyzeCovariates et de le décharger après (car il m'est impossible d'isoler cette étape) ? :slight_smile:

Aurélie

Edit : Après un rapide test, il semblerait que même en ne chargeant que l'environnement de GATK4 ou java-jdk et GATK4 la même erreur se produit. :confused:

Aurélie

Je ne sais pas si cela peut vous aidez mais voici la totalité des packages chargés pour le script d'analyse :

module load fastqc/0.11.8
module load multiqc/1.7
module load sickle-trim/1.33 
module load trimmomatic/0.39
module load samtools/1.9
module load bwa/0.7.17
module load picard/2.18.9
module load r/3.6.3
module load java-jdk/8.0.112
module load gatk4/4.0.10.0
module load qualimap/2.2.2b
module load breseq/0.35.0
module load bcftools/1.9

Bonjour,

Est-ce que vous pouvez tester avec le chargement des packages dans cette ordre svp:

module load qualimap/2.2.2b
module load breseq/0.35.0
module load bcftools/1.9
module load fastqc/0.11.8
module load multiqc/1.7
module load sickle-trim/1.33 
module load trimmomatic/0.39
module load samtools/1.9
module load bwa/0.7.17
module load picard/2.18.9
module load r/3.6.3
module load java-jdk/8.0.112
module load gatk4/4.0.10.0

Bonjour,

je viens de lancer le test avec les modules que vous m'avez transmis (merci pour votre aide !).
Mais la même erreur se produit... Idem sans charger l'environnement R.

java.lang.NullPointerException
        at org.broadinstitute.hellbender.utils.SequenceDictionaryUtils.getContigNames(SequenceDictionaryUtils.java:463)
        at org.broadinstitute.hellbender.utils.SequenceDictionaryUtils.getCommonContigsByName(SequenceDictionaryUtils.java:457)
        at org.broadinstitute.hellbender.utils.SequenceDictionaryUtils.compareDictionaries(SequenceDictionaryUtils.java:234)
        at org.broadinstitute.hellbender.utils.SequenceDictionaryUtils.validateDictionaries(SequenceDictionaryUtils.java:150)
        at org.broadinstitute.hellbender.utils.SequenceDictionaryUtils.validateDictionaries(SequenceDictionaryUtils.java:98)
        at org.broadinstitute.hellbender.engine.GATKTool.validateSequenceDictionaries(GATKTool.java:701)
        at org.broadinstitute.hellbender.engine.GATKTool.onStartup(GATKTool.java:643)
        at org.broadinstitute.hellbender.engine.AssemblyRegionWalker.onStartup(AssemblyRegionWalker.java:156)
        at org.broadinstitute.hellbender.cmdline.CommandLineProgram.runTool(CommandLineProgram.java:137)
        at org.broadinstitute.hellbender.cmdline.CommandLineProgram.instanceMainPostParseArgs(CommandLineProgram.java:192)
        at org.broadinstitute.hellbender.cmdline.CommandLineProgram.instanceMain(CommandLineProgram.java:211)
        at org.broadinstitute.hellbender.Main.runCommandLineProgram(Main.java:160)
        at org.broadinstitute.hellbender.Main.mainEntry(Main.java:203)
        at org.broadinstitute.hellbender.Main.main(Main.java:289)
Using GATK jar /shared/mfs/data/software/miniconda/envs/gatk4-4.0.10.0/share/gatk4-4.0.10.0-0/gatk-package-4.0.10.0-local.jar
Running:
    java -Dsamjdk.use_async_io_read_samtools=false -Dsamjdk.use_async_io_write_samtools=true -Dsamjdk.use_async_io_write_tribble=false -Dsamjdk.compression_level=2 -jar /shared/mfs/data/software/miniconda/envs/gatk4-4.0.10.0/share/gatk4-4.0.10.0-0/gatk-package-4.0.10.0-local.jar HaplotypeCaller -I /shared/projects/mbovis_diversity/Mbv-analyze/4_bam/Mbv-11325C1.sort.rg.md.fixmate.bam -O /shared/projects/mbovis_diversity/Mbv-analyze/5_vcf/recalls_gvcf/Mbv-11325C1_init.g.vcf -R /shared/projects/mbovis_diversity/data/reference/Mbv-L15762C1.fasta -ERC GVCF --min-base-quality-score 20 --minimum-mapping-quality 30 --sample-ploidy 1 --QUIET --verbosity ERROR
srun: error: cpu-node-13: task 0: Exited with exit code 3

Aurélie

Vous avez l'erreur aussi quand vous faites ?

gatk --list

Vous pouvez donner un exemple de commande simple que je pourrais lancer pour reproduire l'erreur ?

Il ne semble pas y avoir d'erreur avec --list.
La liste des commandes de GATK apparait sur le terminal mais avec ce message de fin :

Using GATK jar /shared/mfs/data/software/miniconda/envs/gatk4-4.0.10.0/share/gatk4-4.0.10.0-0/gatk-package-4.0.10.0-local.jar
Running:
    java -Dsamjdk.use_async_io_read_samtools=false -Dsamjdk.use_async_io_write_samtools=true -Dsamjdk.use_async_io_write_tribble=false -Dsamjdk.compression_level=2 -jar /shared/mfs/data/software/miniconda/envs/gatk4-4.0.10.0/share/gatk4-4.0.10.0-0/gatk-package-4.0.10.0-local.jar --help

Bien-sûr ! Je peux vous proposer la commande suivante (si tenter que vous aillez accès à mes fichiers, sinon je peux vous les transmettre) qui devrait créer le fichier fichier_out_test.g.vcf à l'endroit où elle est lancée.
Remarque : elle demande plus d'espace mémoire que les commandes lancées directement dans le terminal :slight_smile:

module load java-jdk/8.0.112
module load gatk4/4.0.10.0
srun gatk HaplotypeCaller -I /shared/projects/mbovis_diversity/Mbv-analyze/4_bam/Mbv-11325C1.sort.rg.md.fixmate.bam -O fichier_out_test.g.vcf -R /shared/projects/mbovis_diversity/data/reference/Mbv-L15762C1.fasta -ERC GVCF --min-base-quality-score 20 --minimum-mapping-quality 30 --sample-ploidy 1 --QUIET --verbosity ERROR

Aurélie

Du coup je pense pas que le problème vienne de java.

Quand vous dites que ça marché avant, c’était avec le même jeu de données et exactement la même commande ?

Peut-être un lien avec ça:

Cela marchait avant oui avec le même jeu de données et la même commande, je n'ai pas changé le script depuis :slight_smile: (Janvier/Février 2020)

Merci pour votre aide, je vais tenter de refaire un alignement en rajoutant l'option -R décrit dans l'erreur du github. L'explication derrière tout cela m'échappe un peu, je l'avoue (Pourquoi cette erreur apparaît tout d'un coup ?).

Aurélie

Je vous prie de m'excuser mais il semblerait que le problème ne soit pas résolu.

L'erreur que j'ai ressemble plus à celle-ci : Java exception in GATK vcf call from bam file · Issue #6384 · broadinstitute/gatk · GitHub
(et non à celle que vous m'avez donné, désolée :confused: )
La solution semble d'utiliser java v8 et Gatk 4.1.4.1.

Il semblerait que le java utilisé par mon script (celui de GATK) ne convienne pas :
Using GATK jar /shared/mfs/data/software/miniconda/envs/gatk4-4.0.10.0/share/gatk4-4.0.10.0-0/gatk-package-4.0.10.0-local.jar
De souvenir il me semble bien que les sorties précédentes (Janvier) donnaient une adresse de java différente, celle relative au module java-jdk/8.0.112.

Je vous prie de m'excuser pour le dérangement, ces résultats sont très importants pour mon mémoire de stage que je dois rendre d'ici la fin du mois... Sans eux je risque d'être amputée d'une grosse partie de mes analyses.

Aurélie

La version de java utilisé dépend de l'ordre dans lequel les modules sont chargés (parce que plusieurs module inclus java avec des versions différentes)
C'est pour ca que je vous ai fait tester en changeant l'ordre.

On va rajouter les version 4.1.4.1 et 4.1.7.0 de gatk4 sur le cluster pour vous permettre de les tester:

Merci énormément !
J'espère que cela résoudra le problème ! :partying_face:

Aurélie

Bonjour @Thrylia,

Vous pouvez désormais tenter
module load gatk4/4.1.4.1 ou module load gatk4/4.1.7.0

Bonjour,

Merci infiniment. Je suis actuellement en train de tester la version gatk4/4.1.4.1.
L'erreur ne semble pas se reproduire pour le moment, mais j'attends de voir avec l'ensemble des commandes. Comme HaplotypeCaller produisait la première erreur et que ses sorties étaient nécessaires pour la suite, je ne sais pas si les autres commandes de GATK4 fonctionnaient correctement.

NB: GATK4 semble avoir modifié cette version pour vérifier l'entête des fasta, il n'accepte plus certains caractères spéciaux

Je vous remercie de nouveau pour tout,
Aurélie