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 能够识别的碱基编码格式的更多相关文章

  1. chardet库:识别文件的编码格式

    chardet库文档 http://chardet.readthedocs.io/en/latest/usage.html 小文件的编码判断 detect函数只需要一个 非unicode字符串参数,返 ...

  2. TCP/IP 协议介绍

    转自http://blog.jobbole.com/104886/ 一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是分层的,从底层至应 ...

  3. 【转】 HTTP 协议简介

    一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是分层的,从底层至应用层分别为:物理层.链路层.网络层.传输层和应用层,如下图所示: 从 ...

  4. Eclipse插件CheckStyle的安装和使用

    转载自:http://www.cnblogs.com/lanxuezaipiao/p/3202169.html CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员 ...

  5. CodePage------Encoding 类支持的编码以及与这些编码关联的代码页(CodePage)

    Encoding 类 .NET Framework 4  表示字符编码. 继承层次结构 System.Object  System.Text.Encoding    System.Text.ASCII ...

  6. HTTP 协议简介

    HTTP 协议简介 博客分类: acl开发--HTTP协议篇 网络协议http协议  一.TCP/IP 协议介绍 在介绍 HTTP 协议之前,先简单说一下TCP/IP协议的相关内容.TCP/IP协议是 ...

  7. 提高Java代码质量的Eclipse插件之Checkstyle的使用详解

    提高Java代码质量的Eclipse插件之Checkstyle的使用详解 CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具.它能够自动化代 ...

  8. 【开发技术】java中代码检查checkStyle结果分析

    编写Javadoc代码在Java代码的类.函数.数据成员前中输入/**回车,Eclipse能够自动生成相应的Javadoc代码.可以在后面添加相关的文字说明. Type is missing a ja ...

  9. NGS概念大科普(转)

    NGS又称为下一代测序技术,高通量测序技术 以高输出量和高解析度为主要特色,能一次并行对几十万到几百万条DNA分子进行序列读取,在提供丰富的遗传学信息的同时,还可大大降低测序费用.缩短测序时间的测序技 ...

随机推荐

  1. Android --------------------ActionBar 与 ViewPager 和 ActionTab 切换 的源代码实现

    參考网址: 点击打开链接 源代码实现: package com.example.actionbardemo2; import android.app.ActionBar; import android ...

  2. 2014年百度之星资格赛第四题Labyrinth

    Problem Description 度度熊是一仅仅喜欢探险的熊.一次偶然落进了一个m*n矩阵的迷宫.该迷宫仅仅能从矩阵左上角第一个方格開始走.仅仅有走到右上角的第一个格子才算走出迷宫,每一次仅仅能 ...

  3. 新手MySQL工程师必备命令速查手册

    MySQL的基本操作可以包括两个方面:MySQL常用语句如高频率使用的增删改查(CRUD)语句和MySQL高级功能,如存储过程.触发器.事务处理等.而这两个方面又可以细分如下: 1.MySQL常用语句 ...

  4. 移动开发UI库

    参考链接:http://www.cnblogs.com/edobnet/archive/2012/08/17/2643573.html 自己总结: jquery 的移动开发UI库  http://jq ...

  5. qt中 中文乱码问题

    qt是跨平台的开发平台.他的编译器是要手动配置的,在window下一般我们用virtual stuido中cl,或者Mingw中的g++ 在linux中一般采用Linux下的g++ 而  微软VS的中 ...

  6. iOS导航栏背景,标题和返回按钮文字颜色

    在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Col ...

  7. java质量提升相关

    http://blog.sina.com.cn/s/blog_6814a1510102v2rp.html

  8. Winform中导入exicel文件

    Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application(); ...

  9. 用SNMP实现对大型网络的轻松管理!

     原文来自:http://guojiping.blog.51cto.com/5635432/985885 一.原理介绍: SNMP简介   目前网络中用得最广泛的网络管理协议是SNMP(Simple ...

  10. android 相机拍照后选择照片编辑,相片编辑界面直线形状会显示锯齿状

    因为 decode 出来的图片太小,小于屏幕.所以,显示的时候 会把图片略微放大,导致直线形状会显示锯齿状.   能够改动getScreenImageSize 方法中的size 的大小,比方能够把13 ...