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

如果我完全按照您的要求进行操作(从每个序列中删除起始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.它会警告您,如果您尝试做的事情会导致文件的形状不一致或不起作用感.

解决方案如下:

from Bio import SeqIO

from Bio import Seq

new_records = []

for record in SeqIO.parse("example.fastq", "fastq"):

sequence = str(record.seq)

letter_annotations = record.letter_annotations

# You first need to empty the existing letter annotations

record.letter_annotations = {}

new_sequence = sequence[1:]

record.seq = Seq.Seq(new_sequence)

new_letter_annotations = {'phred_quality': letter_annotations['phred_quality'][1:]}

record.letter_annotations = new_letter_annotations

new_records.append(record)

with open('without_starting_N.fastq', 'w') as output_handle:

SeqIO.write(new_records, output_handle, "fastq")

哪个输出

@SRR2163140.1 HISEQ:148:C670LANXX:3:1101:1302:1947 length=50

GCGACCTCAGATCAGACGTGGCGACC

+

<(每三行的”字符后面可以有相同的序列标识符和前两行的描述)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值