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分子进行序列读取,在提供丰富的遗传学信息的同时,还可大大降低测序费用.缩短测序时间的测序技 ...
随机推荐
- PHP通过__call实现简单的AOP(主事务后的其他操作)比如前置通知,后置通知
/** * person class */ class Person { /** * person class -> function say */ public static function ...
- servlet中 getRealPath deprecated(被废弃)
servlet中, HttpRequestServlent req; req.getRealPath 被废弃,使用this.getServletContext().getRealPath()替代:
- sparkSQL1.1入门之四:深入了解sparkSQL执行计划
前面两章花了不少篇幅介绍了SparkSQL的执行过程,非常多读者还是认为当中的概念非常抽象.比方Unresolved LogicPlan.LogicPlan.PhysicalPlan是长得什么样子,没 ...
- I/O Completion Ports
http://weblogs.asp.net/kennykerr/parallel-programming-with-c-part-4-i-o-completion-ports http://webl ...
- 【Util】之——cookie
拿走即用 使用前引入文件:http://files.cnblogs.com/ccto/util-cookie.js 使用方法: //设置cookie CookieUtil.set("name ...
- C#修改GIF大小同时保持GIF仍然可动和背景透明
/// <summary> /// 设置GIF大小 /// </summary> /// <param name="path">图片路径< ...
- redis性能提升
1.redis请求执行原理redis客户端与redis服务器之间使用TCP协议进行连接,一个科幻可以通过一个socket连接发送多个请求命令,但每个请求命令发出后client通常会阻塞并等待redis ...
- 命令运行带参数的jar
一.打包(此处用的是eclipse) 代码如下,此如引用了某博主的代码,因忘记地址,如博主发现此文,可私信我 package com.example.Open; import java.io.File ...
- CEdit 控制键盘操作
写在前面的话:在工作中要实现这样一个功能,在一个树形控件中选择要发送消息的客户,添加到一个列表控件中,点击确定跳到一个信息发送页面如下图,在发送人编辑框中显示选择的客户,要实现的就是即允许用户删除用户 ...
- vim添加复制(crtl+c),粘贴(ctrl+v)ctrl+A 等快捷键
1 在 /usr/share/vim/vimrc文件中添加 source $VIMRUNTIME/mswin.vim 2 mswin.vim位置在 /usr/share/vim/vim72/ ...