练习_对fastq文件进行读写

  • Post author:
  • Post category:其他




练习_对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 版权协议,转载请附上原文出处链接和本声明。