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

 

 

解决方案1

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、测试结果

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

 

 

 

解决方案2:

对g.vcf文件进行压缩

step1:bgzip  xx.g.vcf

step2: tabix xx.g.vcf.gz

.

 

posted @   小鲨鱼2018  阅读(83)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
历史上的今天:
2023-01-24 物理机 debian linux 安装过程
2023-01-24 物理机 kali linux 安装全过程
2021-01-24 R语言绘制地图
2021-01-24 R语言中如何获取城市的经纬度
点击右上角即可分享
微信分享提示