最近走我整理和搭建好的:最新版针对RNA-seq数据的GATK找变异流程, 如果样本样品是正常运行,会输出:

920M Nov 9 02:07 SRR2016956_gatk.gvcf

12M Nov 9 02:07 SRR2016956_gatk.gvcf.idx

5.5M Nov 9 00:25 SRR2016956_recal.bai

9.0G Nov 9 00:25 SRR2016956_recal.bam

840K Nov 9 00:09 SRR2016956_recal.table

6.2M Nov 8 23:48 SRR2016956_rmd_split.bai

因为我只想保留recal后的bam和call出来的gvcf文件,但是发现有些样本根本就走不通这个流程,就需要debug了。

6.6G Nov 15 08:33 SRR2016955_rmd.bam

6.5M Nov 15 08:33 SRR2016955_rmd.bam.bai

0 Nov 15 08:33 SRR2016955_rmd_split.bai

0 Nov 15 08:33 SRR2016955_rmd_split.bam

134 Nov 15 10:32 SRR2016955_rmd_split_add.bam

也就是说错在:

time $gatk SplitNCigarReads -R $GENOME \

-I ${sample}_rmd.bam \

-O ${sample}_rmd_split.bam

这个步骤非常耗费时间,需要至少100min,所以需要一些技巧来调试。首先需要查看日志,因为GATK的日志非常多,所以需要对比查看,然后我发现运行错误的样本,多了下面的信息:

htsjdk.samtools.util.RuntimeIOException: Attempt to add record to closed writer.

at htsjdk.samtools.util.AbstractAsyncWriter.write(AbstractAsyncWriter.java:57)

at htsjdk.samtools.AsyncSAMFileWriter.addAlignment(AsyncSAMFileWriter.java:53)

at org.broadinstitute.hellbender.utils.read.SAMFileGATKReadWriter.addRead(SAMFileGATKReadWriter.java:21)

at org.broadinstitute.hellbender.tools.walkers.rnaseq.OverhangFixingManager.writeReads(OverhangFixingManager.java:358)

at org.broadinstitute.hellbender.tools.walkers.rnaseq.OverhangFixingManager.flush(OverhangFixingManager.java:338)

at org.broadinstitute.hellbender.tools.walkers.rnaseq.SplitNCigarReads.closeTool(SplitNCigarReads.java:196)

at org.broadinstitute.hellbender.engine.GATKTool.doWork(GATKTool.java:1052)

at org.broadinstitute.hellbender.cmdline.CommandLineProgram.runTool(CommandLineProgram.java:139)

at org.broadinstitute.hellbender.cmdline.CommandLineProgram.instanceMainPostParseArgs(CommandLineProgram.java:191)

at org.broadinstitute.hellbender.cmdline.CommandLineProgram.instanceMain(CommandLineProgram.java:210)

at org.broadinstitute.hellbender.Main.runCommandLineProgram(Main.java:163)

at org.broadinstitute.hellbender.Main.mainEntry(Main.java:206)

at org.broadinstitute.hellbender.Main.main(Main.java:292)

非常感谢前辈们愿意花费十几至二十几分钟写自己的疑惑然后跟开发者公开讨论让我们后学者可以快速解决bug

原来是临时目录问题

I figured out the issue (at least for me). It stems from where SplitNCigarReads is writing the temporary files. For me, it's writing them to the cluster which has very limited disk space. When I redirected this using --TMP_DIR /my/scratch/space everything went smoothly.

The part that still confuses me is that I had already set export _JAVA_OPTIONS=-Djava.io.tmpdir=/my/scratch/space. This is not getting picked up by SplitNCigarReads in GATK4 as I would have expected. After much experimenting I started with a clean environment and simply set --TMP_DIR /my/scratch/space only which worked.

This seems a bit "buggy" to me and it would be great if the GATK development team could look into it and pass Djava.io.tmpdir to --TMP_DIR if possible.

这个时候,就必须回过头看看另外一个:虽然不知道为什么但是我可以解决这个bug,但它就是被解决了 因为那个时候不知道,所以就糊里糊涂的解决了问题而已,但是现在遇到了类似的问题,仍然是很头疼!

那个时候同样的也是 —TMP_DIR 捣鬼,所以我才会在运行GATK命令的时候设置这个 java.io.tmpdir ,通过下面的方式:

java -Djava.io.tmpdir=/path/to/tmpdir

但是现在就是进退两难了,因为加上这个参数,命令提交到服务器就被kill,如果不加上这个参数,我们的临时目录又没有空间让我运行这个gatk命令。

首先需要简单了解一些java

java -version:查看JDK版本

whereis java

which java (java执行路径)

echo $JAVA_HOME

echo $PATH

其中java可以操作的参数非常多,这次我们遇到的就是 java.io.tmpdir, 默认的临时文件路径!

java.version

Java运行时环境版本

java.vendor

Java运行时环境供应商

java.vendor.url

Java供应商的 URL

java.home

Java安装目录

java.vm.specification.version

Java虚拟机规范版本

java.vm.specification.vendor

Java虚拟机规范供应商

java.vm.specification.name

Java虚拟机规范名称

java.vm.version

Java虚拟机实现版本

java.vm.vendor

Java虚拟机实现供应商

java.vm.name

Java虚拟机实现名称

java.specification.version

Java运行时环境规范版本

java.specification.vendor

Java运行时环境规范供应商

java.specification.name

Java运行时环境规范名称

java.class.version

Java类格式版本号

java.class.path

Java类路径

java.library.path

加载库时搜索的路径列表

java.io.tmpdir

默认的临时文件路径

java.compiler

要使用的 JIT 编译器的名称

java.ext.dirs

一个或多个扩展目录的路径

os.name

操作系统的名称

os.arch

操作系统的架构

os.version

操作系统的版本

file.separator

文件分隔符(在 UNIX 系统中是“/”)

path.separator

路径分隔符(在 UNIX 系统中是“:”)

line.separator

行分隔符(在 UNIX 系统中是“/n”)

user.name

用户的账户名称

user.home

用户的主目录

user.dir

用户的当前工作目录

其实临时文件并不是一直报错

因为HPC是一百多人一起使用,虽然说临时文件夹有几百个G,但是也架不住人多。

过两天再运行同样的程序居然就ok了,让我也很郁闷。

最后友情宣传生信技能树

echo java.ext.dirs_找寻gvcf失败的原因相关推荐

  1. java ext.dirs_关于-Djava.ext.dirs使用及JAVA 命令参数详解System.setProperty

    大家在linux环境下使用命令行执行java程序时,经常要使用到大量外部的jar包或class文件,一般我们有哪些方式可以用呢? -classpath,命令格式:# java -classpath , ...

  2. java ext.dirs_关于-Djava.ext.dirs使用问题

    大家在linux环境下使用命令行执行java程序时,经常要使用到大量外部的jar包或class文件,一般我们有哪些方式可以用呢? -classpath,命令格式:# java -classpath , ...

  3. Java客户端上传文件失败(FastDFS)

    1.连接到服务失败(Connection timed out: connect) connect to server 192.168.168.139:22122 fail java.net.Conne ...

  4. Java - Java集合中的安全失败Fail Safe机制 (CopyOnWriteArrayList)

    文章目录 Pre 概述 fail-safe的容器-CopyOnWriteArrayList add remove函数 例子 缺陷 使用场景 Pre Java - Java集合中的快速失败Fail Fa ...

  5. Linux入门实践笔记(七)——云服务器中配置Java项目的JMX连接失败问题解决记录

    Linux入门实践笔记(七)--云服务器中配置Java项目的JMX连接失败问题解决记录 参考文章: (1)Linux入门实践笔记(七)--云服务器中配置Java项目的JMX连接失败问题解决记录 (2) ...

  6. java jdk安装失败_图文解答Java JDK9.0安装失败的原因,附带处理方法

    对于那些第一次接触Java JDK的小伙伴们来说,在安装软件时可能会遇到一些困扰,例如安装过程中断,这是为什么呢?下文就以安装Java JDK9.0为例,详细讲解软件安装失败的解决方法. Java J ...

  7. java的endorsed机制,java.endorsed.dirs 和 java.ext.dirs 系统属性说明 | 学步园

    JVM系统属性中有两个特殊的属性: {java.ext.dirs} 可选包扩展机制 {java.endorsed.dirs} 包升级替换机制 相关资料: JVM Endorsed Standards ...

  8. Java程序员面试为什么失败?面试挂掉的5大原因

    4月是程序员面试最为火热的时间阶段,我最近也是有很多小伙伴去大厂面试过了,但是通过的寥寥无几,那么Java程序员面试为什么失败?下面是Java程序员面试失败最有可能的5大原因,当然也许这5点原因适用于 ...

  9. java连接SQL Server数据库失败学习小结

    文章目录 TCP/IP未启用 SQL Server身份验证错误 用户sa被禁用 TCP/IP未启用 这几天在练习一个java项目在连接数据库时遇到了错误,如下: 于是对错误进行百度,发现是SQLsev ...

  10. Java连接阿里云Redis失败解决方案

    一.问题描述 使用Java连接自己阿里云服务器上的Redis失败,报错原因就是连接超时(Connect timed out),如下图所示: 二.解决方法 (1)首先查看自己redis.conf配置文件 ...

最新文章

  1. python中读取文件内容-Python读取文件内容的三种常用方式及效率比较
  2. 字符串的全排列(字典序排列)
  3. 特征值 模拟 第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛
  4. gSoap的“error LNK2001: 无法解析的外部符号 _namespaces”解决方法
  5. elasticsearch+kibana
  6. 即将到来的 Android N 将具备这些新特性
  7. mysql如何修改开启允许远程连接
  8. show一下自己的文档编写功底
  9. 阿里云容器服务DaemonSet实践
  10. 十进制小数==二进制小数
  11. python的django_真正搞明白Python中Django和Flask框架的区别
  12. banner图/轮播图----html
  13. 计算机大写改成拼音形式,拼音转换
  14. 闪耀超颖光栅的建模与设计
  15. co作为前缀的意思_co前缀是什么意思
  16. java整钱兑零美元换算成美分,人民币和美元大写格式在线工具,美元美金数字金额转换大写,外币大写金额...
  17. CVPR 2022|上海交大腾讯优图提出IFRNet:视频插帧新范式新SOTA
  18. python更复杂的输出格式
  19. 激光雷达的分类、主流激光雷达、原理是什么
  20. 要买车了,写的我的经历。

热门文章

  1. 掌财社乐学堂:一字线是什么?​一字线操作策略介绍
  2. IDEA中external libraries里没有maven包
  3. C语言 一维数组首尾对调
  4. arm-linux io端口的使用
  5. 统计门诊挂号数,接诊数,无医嘱数
  6. Chrome发大招! HTTP网站全部拉入黑名单
  7. Mean Shift详细介绍
  8. 探讨当前政策环境下GPS行业的机遇与发展
  9. UITextField ios键盘
  10. 经典讲解浅谈CSRF攻击方式