python - 在python中过滤一个奇怪的文本文件

标签 python bioinformatics fasta

我有一个文本文件,其中每个 ID 行都以 > 开头,下一行是一系列字符。字符序列之后的下一行是另一个 ID 行,以 > 开头。但在其中一些中,我没有序列,而是 “Sequence unavailable”。 ID 行之后的序列可以是一行或多行。 像这个例子:

>ENSG00000173153|ENST00000000442|64073050;64074640|64073208;64074651
AAGCAGCCGGCGGCGCCGCCGAGTGAGGGGACGCGGCGCGGTGGGGCGGCGCGGCCCGAGGAGGCGGCGGAGGAGGGGCCGCCCGCGGCCCCCGGCTCACTCCGGCACTCCGGGCCGCTC
>ENSG00000004139|ENST00000003834
Sequence unavailable

我想过滤掉那些带有“Sequence unavailable”的ID。输出应如下所示:

输出:

>ENSG00000173153|ENST00000000442|64073050;64074640|64073208;64074651
AAGCAGCCGGCGGCGCCGCCGAGTGAGGGGACGCGGCGCGGTGGGGCGGCGCGGCCCGAGGAGGCGGCGGAGGAGGGGCCGCCCGCGGCCCCCGGCTCACTCCGGCACTCCGGGCCGCTC

你知道如何在 python 中做到这一点吗?

最佳答案

与其他答案不同,我强烈建议不要手动解析 FASTA 格式。这不是太难,但陷阱,而且完全没有必要,因为存在高效、经过良好测试的实现:

使用Bio.SeqIO来自 BioPython;例如:

from Bio import SeqIO

for record in SeqIO.parse(filename, 'fasta'):
    if record.seq != 'Sequenceunavailable':
        SeqIO.write(record, outfile, 'fasta')

注意 'Sequenceunavailable' 中缺少的空格:读取 FASTA 格式的序列将省略空格。

关于python - 在python中过滤一个奇怪的文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44264127/

相关文章:

Python:使用父类的构造函数初始化对象的成员?

python - 让对象返回浮点值python

java - Python 等价于 "public static void main"

r - 遍历 FASTA 条目并重命名重复项

python - Pandas:删除带有某些日期的字符串

linux - 用于一次性 CLI 应用程序的 Docker

python - 如何加速400万组路口?

awk - 从另一个文件中删除与特定模式匹配的行

python - Biopython 从变量而不是文件解析