Fastqc 能够识别的碱基编码格式
Fastqc 能够自动识别序列的碱基编码格式,我查看一下源代码,发现是碱基编码格式一共分为
1)sanger/illumina 1.9
2) illumina 1.3
3) illumina 1.5
其核心的代码为
public static PhredEncoding getFastQEncodingOffset(final char lowestChar) {
if (lowestChar < '!') {
throw new IllegalArgumentException("No known encodings with chars < 33 (Yours was " + lowestChar + ")");
}
if (lowestChar < '@') {
return new PhredEncoding("Sanger / Illumina 1.9", 33);
}
if (lowestChar == 'A') {
return new PhredEncoding("Illumina 1.3", 64);
}
if (lowestChar <= '~') {
return new PhredEncoding("Illumina 1.5", 64);
}
throw new IllegalArgumentException("No known encodings with chars > 126 (Yours was " + lowestChar + ")");
}
通过找到对应的ASCII值最小的碱基质量值来判断对应的编码格式,
在ASCII码表中, ! 代表33, @ 代表64,A 代表65,~ 代表 126
在维基百科关于fastq格式的描述中介绍了碱基编码的各种格式
在sange format 中采用 33到126 表示0到93, 所以sange 格式的偏移量为33
从illumina 1.3 开始,使用 64和126 来表示0到62, 所以illumina 1.3 格式的偏移量为64
从illumina 1.5 开始,0和1不在使用,最低的质量值为66,
从illumina 1.9 开始,又采用和sange 一样的编码格式
所以如果碱基质量的最低值如果小于64,一定是sange/illumian 1.9格式, 不可能是illumina 1.3 和illumina 1.5 的格式,因为这两种格式中最低的质量值都大于64;
为什么碱基最低的等于65就是illumina 1.3呢, 因为在illumina 的文件中,质量值P = -l0 * log10(rate)
rate 表示错误率,然而对于log10这个函数来说,rate 值不可能为0,因为没有10的指数永远不可能为0,肯定是大于0的,所以0对应的64并不会出现,
最小可能出现的也就是65了,而且illumina 1.5 的最小可能出现的值为66,所以最小值为65说明就是illumina 1.3 格式
排除了前面两种可能,这时候就只剩下illumina 1.5了,只要其质量值不出处正常范围,即<= 126 就说明是illumina 1.5
小于33或者大于126都是未知的编码格式
Fastqc 能够识别的碱基编码格式的更多相关文章
- chardet库:识别文件的编码格式
chardet库文档 http://chardet.readthedocs.io/en/latest/usage.html 小文件的编码判断 detect函数只需要一个 非unicode字符串参数,返 ...
- TCP/IP 协议介绍
转自http://blog.jobbole.com/104886/ 一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是分层的,从底层至应 ...
- 【转】 HTTP 协议简介
一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是分层的,从底层至应用层分别为:物理层.链路层.网络层.传输层和应用层,如下图所示: 从 ...
- Eclipse插件CheckStyle的安装和使用
转载自:http://www.cnblogs.com/lanxuezaipiao/p/3202169.html CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员 ...
- CodePage------Encoding 类支持的编码以及与这些编码关联的代码页(CodePage)
Encoding 类 .NET Framework 4 表示字符编码. 继承层次结构 System.Object System.Text.Encoding System.Text.ASCII ...
- HTTP 协议简介
HTTP 协议简介 博客分类: acl开发--HTTP协议篇 网络协议http协议 一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是 ...
- 提高Java代码质量的Eclipse插件之Checkstyle的使用详解
提高Java代码质量的Eclipse插件之Checkstyle的使用详解 CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具.它能够自动化代 ...
- 【开发技术】java中代码检查checkStyle结果分析
编写Javadoc代码在Java代码的类.函数.数据成员前中输入/**回车,Eclipse能够自动生成相应的Javadoc代码.可以在后面添加相关的文字说明. Type is missing a ja ...
- NGS概念大科普(转)
NGS又称为下一代测序技术,高通量测序技术 以高输出量和高解析度为主要特色,能一次并行对几十万到几百万条DNA分子进行序列读取,在提供丰富的遗传学信息的同时,还可大大降低测序费用.缩短测序时间的测序技 ...
随机推荐
- Python shell对比
对Python.shell的一些思考 如果使用python去写脚本来处理日常事务的话,相对于shell是一件比较麻烦的事情,因为我可以使用shell在花费更少的时间内,比较熟练地使用awk.sed和g ...
- Python并发编程实例教程
有关Python中的并发编程实例,主要是对Threading模块的应用,文中自定义了一个Threading类库. 一.简介 我们将一个正在运行的程序称为进程.每个进程都有它自己的系统状态,包含内存状态 ...
- [Linux] 一次SSH认证失败引发的关于通过日志查错误的思考
一.缘由: 早上在用SSH公钥认证打通所有的机器,有一台机器在完成一些列操作后密钥登陆失败,其他机器一切正常. 错误如下:Public-key authentication with the serv ...
- pause和resume
CCSet *m_pPausedTargets;类的成员变量 void CCNode::schedule(SEL_SCHEDULE selector, float interval, unsigned ...
- nyoj123 士兵杀敌(四)树状数组 插线问点
士兵杀敌(四) 时间限制:2000 ms | 内存限制:65535 KB 难度:5 描述 南将军麾下有百万精兵,现已知共有M个士兵,编号为1~M,每次有任务的时候,总会有一批编号连在一起人请战(编 ...
- c++派生类的访问控制权限
派生类必须通过使用类派生列表, 明确指出它是从哪个(哪些)基类继承而来的.类派生列表的形式是:首先是一个冒号,后面紧跟以逗号分隔的基类列表(可以多继承,但一般不使用多继承),其中每个基类前面可以有以下 ...
- python学习笔记(22)--漫画生成html最终版
说明(2017.3.14): 1. 在主文件夹生成一个main.html作为目录 2. 在每个子文件夹生成一个index.html作为看图网页 3. 通过python批量生成html网页,js配合进行 ...
- .Net应该学什么怎么学(一)
更新时间:2012年06月05日18时21分 来源:传智播客.Net 上篇<学了.Net做什么开发>中我讲到了目前.Net开发主要方向是Web开发,因此在本篇中我将主要讲解做Web开发要学 ...
- html5和css3打造一款创意404页面
之前和网友分享一款HTML5可爱的404页面动画 很逗的机器人.今天要爱编程小编要再给大家带来一款html5和css3打造的创意404页面.一起看下效果图吧: 在线预览 源码下载 实现的代码. h ...
- Ubuntu14.04使用DEB安装Mysql5.7
下载deb-bundle包 1.mysql下载页面 2.解压 安装(注意安装顺序) 安装顺序如下: 1.mysql-common_5.7.10-1ubuntu14 ...