练习_对fastq文件进行读写
利用python脚本对fastq文件进行处理
- 首先读取fastq文件,由于该文件为压缩的二进制文件,调用gzip模块打开
- 其次,根据fastq文件格式特点,对文件进行分离处理,第一行为序列id信息,紧接着的三行与第一行为对应关系,即采用字典的键值对应
- 定义函数,对fastq文件进行读写
- 后续增加文件处理函数,并进行调整
import gzip
# 定义函数读取fastq文件
def read_fastq(seq):
with gzip.open(r'*.fastq.gz','rb') as input_file:
NR = 0 # NR 读取数据的行数数值,初始化值为0
for line in input_file:
if NR %4 == 0: # 根据行数进行判断
seq_id = line.decode() # 对二进制文件解码
seq[seq_id] = "" # 将该id对应的初始值设为空
else:
seq[seq_id] += line.decode() # 将对应的序列+以及质量值信息添加到该id键对应的值
NR += 1
input_file.close()
# 定义函数写入fastq
def write_fastq(seq):
with gzip.open(r'*.fastq.gz','wb') as output_file:
for key, value in seq.items(): # 遍历上一步得到的字典,并将其写入到新的文件中
# print(key,value)
output_file.write(key.encode()) # 将str转换为二进制文件
output_file.write(value.encode())
output_file.close()
if __name__ == "__main__":
seq = {} # 建立空字典键存储序列id信息,值存储剩下三行信息(包括“序列”、“+”、“质量值”)
read_fastq(seq)
write_fastq(seq)
记录一下,后续继续根据需求继续增删
版权声明:本文为sinat_40038704原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。