【问题标题】:How to pass multiple inputs to a pipe segment in python?如何将多个输入传递给python中的管道段?
【发布时间】:2013-07-12 16:36:24
【问题描述】:

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

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

bwa sampe referencefile A' B' A B

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

【问题讨论】:

  • 如果您使用 BWA 对齐配对末端读取,您的输入是一致的 fasta、两个索引文件和两个 fasta 文件,您的输出应该是一个 .sam 文件。为什么不想要 .sam 文件?您希望它直接转换为 .bam 吗?您是否尝试从 reads -> .sam -> .bam -> sorted.bam 不写入磁盘?
  • 编辑:所以你有两个进程索引你的fasta文件(A,B),它们产生A',B'。然后您想与 BWA 对齐以生成 .sam 文件。为什么不想将索引保存到文件中?您始终可以将它们存储在 tempfile.NamedTemporaryFiles 中,这些在脚本退出时会被清理。您是否要将 .sam 文件存储到磁盘?另外,为什么不使用bwa mem ref.fa in1.fa in2.fa > aln-pe.sam?它删除了索引步骤,在内存中创建它们,这实际上就是你正在做的事情。您可能需要更新 BWA。
  • 非常感谢,我不知道 tempfile 和 mem 解决方法。我都试过了,它们都有效

标签: python subprocess pipe bioinformatics


【解决方案1】:

“命名管道”:该 bash 命令是否适用于 python?

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

您也可以咨询 biostars.org

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    相关资源
    最近更新 更多