首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

生物信息-python 编程小练习(3)

我们用python处理小的文本文件时一般使用文件对象的read()、readline()和readlines()方法就可以了,但是,NGS测序质量文件一般都比较大,一个文件可能几G,几十G,上面的方法是把文件内容一次性全部读入内存,对内存的消耗是很大的,甚至会造成内存溢出,那样处理就不适合了。

我们可以把文件当作迭代器,用可迭代对象的next()方法,减轻对内存的消耗。

当迭代完最后⼀项数据之后,再次调⽤next()函数会抛出StopIteration的异常,说明所有数据都已迭代完,不能再执⾏next()方法了,我们捕捉异常,从而完成操作,解决了读取和处理大文件的问题。

FASTQ文件格式简要说明:

每四行一个单位,

1.第一行以’@’开头,表示序列标识以及相关的描述信息;

2.第二行是序列信息;

3.第三行以‘+’开头,后面是序列标示符、描述信息,或者留空;

4.第四行,是质量评分,和第二行的序列相对应,每一个序列都有一个质量评分。字符数与第二行相同,每个字符代表对应第二行碱基的质量。

如果我们要解析双端测序文件,可以根据其特点进行构造解析函数:

代码要点注释:

第2行定义函数, 第一和第二个参数分别为read1、read2的两个文件对象,

5-8行表示每次循环将read1和read2的每4行内容分别放入列表第0项和第1项,

第9行表示对数据进行的处理方式,我们以打印出来为例,实际环境中可以根据需要进行各种操作,如统计测序信息、质控、去N和去接头等。

第10和第11行表示,遇到异常终止循环 !

这样设计,就解决了大文件对内存消耗过大的问题 !

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180401G0SIR800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券