gatk报错 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

 

001、问题  gatk标记重复报错

 

a、使用程序如下:

#!/bin/bash
#SBATCH   -J ERR2309122
#SBATCH   -p Cnode
#SBATCH   -o %j.ERR2309122.result
#SBATCH   -e %j.ERR2309122.error
#SBATCH   -t 10:00:00
#SBATCH   -N 1
#SBATCH   -n 4            ## 调用了4个核心,没有指定内存
#SBATCH --cpus-per-task=1
       ## 此处也没有指定初始java heap space 和 最大 java heap space 
gatk MarkDuplicates -I ERR2309122.sorted.bam -O ERR2309122.sorted.markdup.bam -M ERR2309122.sorted.markdup_metrics.txt  && echo "ERR2309122 markdup done" || echo "ERR2309122 markdup fail"

 

 

b、报错如下:

To get help, see http://broadinstitute.github.io/picard/index.html#GettingHelp
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space    ## java heap space java堆内存报错
        at java.base/java.lang.reflect.Array.newArray(Native Method)
        at java.base/java.lang.reflect.Array.newInstance(Array.java:78)
        at java.base/java.util.Arrays.parallelSort(Arrays.java:1182)
        at htsjdk.samtools.util.SortingCollection.spillToDisk(SortingCollection.java:247)
        at htsjdk.samtools.util.SortingCollection.add(SortingCollection.java:182)
        at picard.sam.markduplicates.MarkDuplicates.buildSortedReadEndLists(MarkDuplicates.java:553)
        at picard.sam.markduplicates.MarkDuplicates.doWork(MarkDuplicates.java:257)
        at picard.cmdline.CommandLineProgram.instanceMain(CommandLineProgram.java:301)
        at org.broadinstitute.hellbender.cmdline.PicardCommandLineProgramExecutor.instanceMain(PicardCommandLineProgramExecutor.java:37)
        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)

 

 

002、报错原因

推测可能是gatk的调用java的JVM的java heap space堆内存不足导致

 

 

003、解决方法,增加总的内存调用和堆内存测试

 

a、

修改后参数如下:

#!/bin/bash
#SBATCH   -J ERR2309122
#SBATCH   -p Cnode
#SBATCH   -o %j.ERR2309122.result
#SBATCH   -e %j.ERR2309122.error
#SBATCH   -t 10:00:00
#SBATCH   --mem 100G    ## 此处设置了申请的最大内存
#SBATCH   -N 1
#SBATCH   -n 4
#SBATCH --cpus-per-task=1
               ## 此处设置了java heap space的最大内存
gatk --java-options '-Xmx100G' MarkDuplicates -I ERR2309122.sorted.bam -O ERR2309122.sorted.markdup.bam -M ERR2309122.sorted.markdup_metrics.txt  && echo "ERR2309122 markdup done" || echo "ERR2309122 markdup fail"

 

b、测试结果

 正常生成文件,原来的报错消失。

 

posted @ 2024-01-24 10:14  小鲨鱼2018  阅读(26)  评论(0编辑  收藏  举报