如何在python中编辑文本(.fastq)文件

2024-10-03 00:26:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个类似下面这个小例子的文件。每4行都与一个ID相关。每个ID的第二行以N开头。我想删除这些行开头的N,其他内容都将保持不变。 我想用python实现。你知道怎么做吗?在

示例:

@SRR2163140.1 HISEQ:148:C670LANXX:3:1101:1302:1947 length=50
NGCGACCTCAGATCAGACGTGGCGACC
+SRR2163140.1 HISEQ:148:C670LANXX:3:1101:1302:1947 length=50
#<<ABGGGGGGGGGGGGGGGGGGGGGG
@SRR2163140.3 HISEQ:148:C670LANXX:3:1101:1381:1997 length=50
NGCCGACATCGAAGGATCAA
+SRR2163140.3 HISEQ:148:C670LANXX:3:1101:1381:1997 length=50
#<<ABFGGGGGGGGGGGGGG
@SRR2163140.4 HISEQ:148:C670LANXX:3:1101:1705:1940 length=50
NACAAACCCTTGTGTCGAGGGC
+SRR2163140.4 HISEQ:148:C670LANXX:3:1101:1705:1940 length=50
#=ABBGGGGGGGGGGGGGGGGG
@SRR2163140.7 HISEQ:148:C670LANXX:3:1101:1704:1965 length=50
NGGGACATGACAGCCTGGACCATCG
+SRR2163140.7 HISEQ:148:C670LANXX:3:1101:1704:1965 length=50
#=ABBGGGGGGGGGGGGGGGGGGGG

输出:

^{pr2}$

Tags: 文件id示例内容length例子hiseqngcgacctcagatcagacgtggcgacc
1条回答
网友
1楼 · 发布于 2024-10-03 00:26:04

如果我完全按照您的要求(从每个序列中删除起始N),那么FASTQ file将处于不一致的状态。在

FASTQ文件的每四行保存前两行序列的质量值。因此,如果从序列中删除第一个字符,则还需要从具有质量值的行中删除第一个字符。在

你可以用纯Python做一些非常简单的事情

with open("example.fastq") as f:
    for idx, line in enumerate(f.read().splitlines()):
        if idx % 2:
            print(line[1:])
        else:
            print(line)

但是如果你打算定期处理生物数据,你真的应该开始使用生物信息学模块,比如BioPython。如果您试图做一些会使文件的形状不一致或没有意义的操作,它会警告您。在

解决方案如下:

^{pr2}$

哪些输出

@SRR2163140.1 HISEQ:148:C670LANXX:3:1101:1302:1947 length=50
GCGACCTCAGATCAGACGTGGCGACC
+
<<ABGGGGGGGGGGGGGGGGGGGGGG
@SRR2163140.3 HISEQ:148:C670LANXX:3:1101:1381:1997 length=50
GCCGACATCGAAGGATCAA
+
<<ABFGGGGGGGGGGGGGG
@SRR2163140.4 HISEQ:148:C670LANXX:3:1101:1705:1940 length=50
ACAAACCCTTGTGTCGAGGGC
+
=ABBGGGGGGGGGGGGGGGGG
@SRR2163140.7 HISEQ:148:C670LANXX:3:1101:1704:1965 length=50
GGGACATGACAGCCTGGACCATCG
+
=ABBGGGGGGGGGGGGGGGGGGGG

(每三行上的“+”字符是可选的,后跟前两行中相同的序列标识符和描述)

相关问题 更多 >