2013-07-12 35 views
0

我正在构建一个将原始文件处理成二进制文件的数据管道。文件很大,并且有多个步骤,所以尽可能避免写入磁盘是有利的。将一个子进程的输出很容易地作为另一个子进程的输入,但是如何处理需要多个输入文件的子进程呢?特别是:如何将多个输入传递给python中的管段?

我有两个进程操作两个文件,A和B,它们输出文件A'和B'。下一个命令使用以下shell语法

bwa sampe referencefile A' B' A B 

需要五个文件。如果A'和B'写入磁盘,这可以通过shell=True轻松完成,但这是我想要避免的。我如何实现stdout - > stdin关系,避免写入磁盘,并保持正确的顺序?

+0

如果你对准配对末端读取使用BWA,你输入的共识FASTA两个索引文件,和两个FASTA文件,你的输出应该是一个.sam文件。为什么你不想要.sam文件?你想直接转换成.bam吗?你是否正在尝试从读取 - > .sam - > .bam - > sorted.bam而不写入磁盘? – wflynny

+0

编辑:所以你有两个进程索引你的fasta文件(A,B),产生A',B'。然后您想要与BWA对齐以生成.sam文件。为什么你不想保存索引到文件?你总是可以将它们存储在'tempfile.NamedTemporaryFile's中,该脚本在脚本退出时被清除。你打算将.sam文件存储到磁盘吗?另外,为什么不使用'bwa mem ref.fa in1.fa in2.fa> aln-pe.sam'?它删除索引步骤,在内存中创建它们,这实际上就是你在做什么。您可能需要更新您的BWA。 – wflynny

+0

非常感谢,我不知道tempfile和mem解决方法。我试了两次,他们的工作 – user2577129

回答

0

'命名管道':那个bash命令是否可以与python一起使用?

bwa sampe referencefile <(bwa aln ref fastq1) <(bwa aln ref fastq2) fastq1 fastq2 

你也可以问biostars.org

相关问题