如果给你一个fq文件,如何确定它是哪个质量体系的? |
生信下机数据基础知识(1)中提到了fq下机数据的质量体系有好多种:
ASCII码值(10进制)范围 | 质量体系 | 测序平台 |
33-93 | 33体系 | Sanger/Illumina1.8 |
64-104 | 64体系 | Illumina1.3/Illumina1.5 |
59-104 | 64体系 | Solexa |
如果,我们在网上下载了一批fq原始数据,且不知道他是什么平台的下机数据,那么,我们如何最快的知道这个数据是什么质量体系的呢?
这里,小编写了一个小脚本,你只需要使用该脚本测试运行一下你的fq文件,即可快速知道你的数据是什么质量体系了,文件script.py:
#!/bin/usr/python -w
import sys
import time #计算程序消耗s回见
import gzip #打开gzip压缩格式文件
from datetime import datetime #记录程序开始结束时间
#定义判断质量体系子函数Guess_33_64
def Guess_33_64(quality_str):
#ranges are 33-93 (Sanger/Illumina1.8), 64-104 (Illumina1.3 or Illumina1.5) and 59-104 (Solexa). Similarly FastQC assumes that anything with some scores in the 33-63 range is Sanger and that the rest is Illumina1.3-1.5 (it doesn't know about Solexa scores).
#In brief,if in 33-58 and not in 94-104,33;elif 64;elif in 33-58 and in 94-104,bad file.
uniq_qual_numbers = []
for s in quality_str:
s_n = ord(s)
if s_n not in uniq_qual_numbers:
uniq_qual_numbers.append(s_n)
q_33 = 0
q_64 = 0
for qual in uniq_qual_numbers:
if qual >= 33 and qual <= 58:
q_33 = 1
elif qual >= 94 and qual<= 104:
q_64 = 1
elif qual > 104 or qual < 33:
return("UnSure")
ret = ""
if q_33 == 0 and q_64 == 1:
ret = 64
elif q_33 == 1 and q_64 == 0:
ret = 33
else:
ret = "UnSure"
return(ret)
#主题函数,判断输入参数是否满足需求
if __name__ == '__main__':
if len(sys.argv) <3:
print("Usage: %s <InPutfq no gzip compressed><Output result>(random lines)" % sys.argv[0])
sys.exit(1)
#这里读取的是压缩的fastq.gz文件
threshold=int(sys.argv[3]) #将输入的str类型数值转换成int数值
Qphred='' #定义一个str变量
file_out=open(sys.argv[2],'w')
start_time = time.perf_counter() #开始计算时间
print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),file=file_out) #记录开始时间日期 年-月-日 时-分-秒
Qphred = os.popen("less %s | head -%s | sed -n '4~4p'" % (sys.argv[1],threshold)).read()
Qphred = Qphred.replace('\n','').replace('\r','')
#截取fq文件前特定行数的质量值行
m=Guess_33_64(Qphred)
print("Qphred quality is %s" % m,file=file_out)
end_time = time.perf_counter() 计算结束时间
print("Calculation time(sec): %.3f" % (end_time-start_time),file=file_out)
#记录总共消耗时间
print(datetime.now().strftime('%Y-%m-%d %H:%M:%S'),file=file_out)
#记录结束时间
复制
使用方法:
python3 script.py fastq.gz file_out 200
#运行时间:
#2020-06-29 19:43:16
#2020-06-29 19:43:58
#Calculation time(sec): 41.954
#运行结果:
#Qphred quality is 33
复制
测试截取某个fastq文件的前200行,判断该fastq数据是什么质量体系,用时:41秒;
我这里读取的fastq.gz文件非常大,有3.6G,因为使用了截取数据功能,运行判断速度也很快,耗时41秒。
梁小勇的专场
编辑:校对:Vickymemo
往期回顾:
R包,python包,perl包,无root权限脱网,如何安装?
文章转载自R和SVG的较量,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1633次阅读
2025-04-09 15:33:27
2025年3月国产数据库大事记
墨天轮编辑部
812次阅读
2025-04-03 15:21:16
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
577次阅读
2025-04-10 15:35:48
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
486次阅读
2025-04-01 20:42:12
数据库,没有关税却有壁垒
多明戈教你玩狼人杀
461次阅读
2025-04-11 09:38:42
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
443次阅读
2025-04-14 09:40:20
最近我为什么不写评论国产数据库的文章了
白鳝的洞穴
367次阅读
2025-04-07 09:44:54
天津市政府数据库框采结果公布!
通讯员
346次阅读
2025-04-10 12:32:35
优炫数据库成功入围新疆维吾尔自治区行政事业单位数据库2025年框架协议采购!
优炫软件
323次阅读
2025-04-18 10:01:22
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
315次阅读
2025-04-17 17:02:24