我在两个不同的文件夹和两个不同的终端中执行此命令:
for i in *_RG.bam; do k=`echo $i | sed "s/.bam/_Reordered.bam/"` java -jar /home/Programas/picard-tools-1.107/ReorderSam.jar R=/local/Referencias/Homo_sapiens/UCSC/hg19/Sequence/Bowtie2Index/genome.fa I= $i O= "$k" ; done
在一个终端中它可以正常工作,但在另一个终端上,代码根本不起作用。它给出了下一个错误。
Runtime.totalMemory()=1517289472
To get help, see http://picard.sourceforge.net/index.shtml#GettingHelp
Exception in thread "main" net.sf.samtools.util.RuntimeIOException: File not found:
at net.sf.samtools.util.BinaryCodec.<init>(BinaryCodec.java:102)
at net.sf.samtools.util.BlockCompressedOutputStream.<init>(BlockCompressedOutputStream.java:127)
at net.sf.samtools.BAMFileWriter.<init>(BAMFileWriter.java:50)
at net.sf.samtools.SAMFileWriterFactory.makeBAMWriter(SAMFileWriterFactory.java:154)
at net.sf.samtools.SAMFileWriterFactory.makeBAMWriter(SAMFileWriterFactory.java:136)
at net.sf.samtools.SAMFileWriterFactory.makeSAMOrBAMWriter(SAMFileWriterFactory.java:246)
at net.sf.picard.sam.ReorderSam.doWork(ReorderSam.java:118)
at net.sf.picard.cmdline.CommandLineProgram.instanceMain(CommandLineProgram.java:179)
at net.sf.picard.cmdline.CommandLineProgram.instanceMainWithExit(CommandLineProgram.java:120)
at net.sf.picard.sam.ReorderSam.main(ReorderSam.java:77)
Caused by: java.io.FileNotFoundException: (No such file or directory)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:221)
at java.io.FileOutputStream.<init>(FileOutputStream.java:171)
at net.sf.samtools.util.BinaryCodec.<init>(BinaryCodec.java:95)
... 9 more
当我在新终端中将程序称为java -jar /home/ktroule/Programas/picard-tools-1.107/ReorderSam.jar -h
时,它会按照我的预期打印帮助。
在此之后我停止使用ctrl+c
正常工作的终端,我交换终端以证明问题是与文件有关还是与终端有关。同样的事情发生了,只有一个终端工作(与之前的工作相同)。
我关闭了无法正常工作的终端并打开了一个新终端,但只在原始代码上运行。
我还通过usinf diff
比较了有效的终端和没有输出printenv的终端,并且两者都是WINDOWID
行的相同例外。
对这个问题的任何猜测?
我没有关闭运行代码的终端,因为我需要它而且我害怕无法运行代码。
答案 0 :(得分:0)
我能想到的唯一可能导致问题的是,您引用的命令行在I =和O =之后在相应的文件名之前有空格。
您运行的命令行是否可能略有不同,并且此空间存在于一个而不是另一个?
通常,文件名将打印在&#34; java.io.FileNotFoundException:&#34;之间的错误日志中。和#34;(没有这样的文件或目录)&#34;。
在您的情况下,您有两个空格,这意味着它有一个空文件名。这很可能是由于I =和O =之后的空间造成的。