在许多情况下,从 Unix 管道读取数据比从文件读取数据更可取。一个例子是从压缩文件读取序列,这通常比解压缩文件然后读取数据更可取。
您也可以在 Windows 命令行中使用管道,但这不像在 Unix 环境下那么灵活。
此示例脚本使用 Bio.SeqIO
从 stdin
读取 Solexa/Illumina FASTQ,将数据转换为 Sanger FASTQ(使用 PHRED 评分)并将其写入 stdout
。有关一些背景信息,请参阅此有关 转换序列文件 的更通用页面。
import sys
from Bio import SeqIO
SeqIO.convert(sys.stdin, "fastq-solexa", sys.stdout, "fastq")
管道是命令行的功能,它使程序或命令的 stdout
输出能够定向到另一个命令或程序的 stdin
输入。例如,以下 shell 命令可用于提取压缩的序列并将其传递给脚本(solexa2sanger_fq.py
)。
gunzip -c some_solexa.fastq.gz | python solexa2sanger_fq.py
这将以 Sanger FASTQ 格式将序列写入 stdout
- 在这种情况下是屏幕。
重定向类似于使用管道,但不是将一个程序的输出定向到另一个程序的输入,而是将文件的内容重定向到程序的 stdin
,以及/或将程序的 stdout
输出重定向到文件。在此示例中,Python 脚本从输入文件重定向获得其数据,而原本要打印到屏幕的输出则被重定向到输出文件。
python solexa2sanger_fq.py < some_solexa.fastq > some_phred.fastq
重定向也可以用于将程序或命令的 stderr
重定向到文件。有关使用重定向的更多示例,请参见 此处。