Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python中向管段传递多个输入?_Python_Subprocess_Pipe_Bioinformatics - Fatal编程技术网

如何在python中向管段传递多个输入?

如何在python中向管段传递多个输入?,python,subprocess,pipe,bioinformatics,Python,Subprocess,Pipe,Bioinformatics,我正在构建一个数据管道,将原始文件处理成二进制文件。文件很大,而且有多个步骤,因此尽可能避免写入磁盘是有利的。获取一个子流程的输出并将其作为另一个子流程的输入很容易,但是如何处理需要多个输入文件的子流程呢?特别是: 我有两个进程对两个文件A和B执行操作,它们输出文件A'和B'。下一个命令使用以下shell语法 bwa sampe referencefile A' B' A B 需要五个文件。如果将A'和B'写入磁盘,则可以使用shell=True轻松完成此操作,但这正是我想要避免的。如何实现s

我正在构建一个数据管道,将原始文件处理成二进制文件。文件很大,而且有多个步骤,因此尽可能避免写入磁盘是有利的。获取一个子流程的输出并将其作为另一个子流程的输入很容易,但是如何处理需要多个输入文件的子流程呢?特别是:

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

bwa sampe referencefile A' B' A B

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

'namedpipe':bash命令是否适用于python

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

bwa-sampe-referencefile如果使用bwa对齐成对的末端读取,则输入是一致的fasta、两个索引文件和两个fasta文件,输出应该是一个.sam文件。你为什么不想要.sam文件?是否要将其直接转换为.bam?您是否试图在不写入磁盘的情况下从reads->.sam->.bam->sorted.bam执行操作?编辑:因此您有两个进程为fasta文件(A,B)编制索引,它们生成A',B'。然后您希望与BWA对齐以生成一个.sam文件。为什么不想将索引保存到文件中?您可以始终将它们存储在
tempfile.NamedTemporaryFile
s中,在脚本退出时将其清除。是否要将.sam文件存储到磁盘?另外,为什么不使用
bwa mem ref.fain1.fain2.fa>aln pe.sam
?它删除了索引步骤,在内存中创建它们,这实际上就是您正在做的。您可能需要更新您的BWA。非常感谢,我不知道tempfile和mem解决方案。我两个都试过了,效果都很好