当前位置: 首页 > news >正文

日拱一卒 | RNA-seq数据质控(1)

拿到测序得到的RNA-seq的fastq数据之后,首先需要对测序数据进行质控,检查一下数据的质量。那么如何进行质控呢?
之前我对这个的理解总是云里雾里的,现在想对此认真地理一理。也希望我的学习结果可以分享给更多的人。

一、碱基质量表征

我们拿到fastq数据之后,需要评估每一个位点测出来的碱基是这个碱基的可靠性。而在这里,测序平台在返还的fastq的数据中就已经包含了这部分信息。我们要做的就是利用这些信息,对序列进行过滤和修剪,保留高质量的测序读段,便于下游的比对等环节。

1.经典的fastq序列的结构

经典的fastq序列由以下四部分组成:@开头的序列名;我们测到的碱基序列;+;一些近似于乱码的符号。
这里有用的部分就是第二行和第四行的信息。第二行是测序平台测到的序列,而第四行则每一个符号和第二行的碱基一一对应,表示的是碱基的测序质量。为什么这些乱码的符号可以表示碱基的测序质量呢?这里存在有一个转换。

@LH00308:393:22TCC7LT4:1:1101:41256:1028 2:N:0:CTCCGTTA+TNGGAACC
NATACCGTGGCATTGACTGCCTTGCTGTGGCCTATGGCGTAGCTGTTAACAAGCTCACACTGCCCATCCCATCCACCTGCCCCGAGCCCTTCGCACAGCTTATGGCCGACTGCTGGGCGCAGGACCCCCACCGCANGNNNGACTTCGCNT
+
#IIIIIIIIII9IIIIIIIIIIIIIIIIIII*IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII#I###IIIIIIII#I
2.碱基的测序质量表征

公式如下,其中p为测序出错率,比如可以为0.01,即该碱基测错的可能性为1/100。p越小,说明碱基的质量越高;相应地,经过下面的公式转换后,计算得到q为20。上述转换即把测序质量进行更加直观的表示,q越大,说明测序质量越高;q的取值范围在0-40之间;并且这样转换的另一个好处是,可以将q的数值和ASCII的字符编码一一对应起来(为了对应方便会加一个33,ASCII的可见字符分布在33-126之间),从而实现单个碱基和表征测序质量的单个字符一一对应,方便计算机存储。这个转换可以说非常的巧妙。

q = − 10 ∗ l o g 10 ( p ) q=-10*log_{10}(p) q=10log10(p)

下图表示的是ASCII码和数值的对应关系。
在这里插入图片描述
那么借此,我们就可以对fastq文件中序列的测序质量进行查看和分析。

二、碱基质量在质控结果中的体现

我们一般常用fastQC来对fastq文件进行质量检查(代码实现环节此不赘述),其输出了许多的指标,其中有关碱基质量的有如下:

1. 读段每一个碱基位置的碱基质量分布

通常以下图的形式进行展示(下面这张图算是质量比较好的)。其中行,为读段的位置,我的数据是经典的150bp。列为碱基的质量,即前面提到的q(在0-40之间)。这张图表示的是,对于这个文件中的读段,分别统计每一个位置的碱基质量,然后绘制boxplot。每一个位点有一个boxplot。那么可以得知测序的过程中,测到的碱基质量是否具有位置的偏好性(其中一种常见的情况是,在读段的后半部分,碱基质量会降低,这提示我们可能需要根据位置进行修剪)。
在这里插入图片描述

2. 所有读段的平均碱基质量

我们还可以统计每一个读段的平均碱基质量,绘制碱基质量的分布曲线,从而可以对质量较差的读段进行整个的过滤。下图显示大部分的读段的平均质量在39附近。
在这里插入图片描述

三、针对于碱基质量的处理

主要有两个思路,第一,对于整体质量较低的读段,直接按照质量的阈值进行过滤。第二,对于可能具有位置偏好性的读段(比如前面或者后面的测序质量很差),则可以针对位置对读段进行修剪,保留高质量的读段片段。
这里需要注意的一点是,对于双端测序的读段序列,可能存在一对中的其中一个不符合质控条件而被剔除。由于后续的比对环节通常要求双端测序的文件在序列顺序上是一致的,因此需要使用在处理的时候考虑将双端测序文件在处理后依然保持一致的工具,比如trimmomatic。

http://www.xdnf.cn/news/342577.html

相关文章:

  • ERC-20与ERC-721:区块链代币标准的双星解析
  • Spring MVC 中Model, ModelMap, ModelAndView 之间有什么关系和区别?
  • Spring AI Alibaba-04- Spring AI + RAG + ToolCalling 智能对话应用开发全流程
  • # 如何使用 PyQt5 创建一个简单的警报器控制界面
  • Linux基础(最常用基本命令)
  • 用kompose将docker-compose文件转换为K8S资源清单
  • WHAT - ahooks vs swr 请求
  • Qt获取CPU使用率及内存占用大小
  • 基于STM32、HAL库的CP2104 USB转UART收发器 驱动程序设计
  • Node.js 技术原理分析系列9——Node.js addon一文通
  • 【嵌入式面试高频知识点】-wifi相关
  • 钯铂贵金属分离回收树脂
  • 【写作格式】写论文时常见格式问题
  • sherpa-ncnn:Endpointing(断句规则)
  • 05_项目集成飞书预警
  • 浙大与哈佛联合开源图像编辑模型IC-Edit,实现高效、精准、快速的指令编辑~
  • 淘宝九宫格验证码识别
  • 【UltralyticsYolo11图像分类完整项目-02】onnx模型转engine格式+TensorRT版Gpu预测C++实现
  • 动态规划之两个数组的dp问题(最长公共子序列)
  • Unity图集系统(Sprite Atlas)
  • Vue实现不同网站之间的Cookie共享功能
  • 信息系统项目管理工程师备考计算类真题讲解十四
  • 【软件设计师:软件工程】9.软件开发模型与方法
  • Java三大基本特征之多态
  • auto_ptr和unique_ptr
  • 统一授权与加密防护,CodeMeter 护航机器视觉创新全链路
  • kafka logs storage
  • 日语学习-日语知识点小记-构建基础-JLPT-N4阶段(16):单词与句子
  • Element-ui Table tree 结构使用(解决无展开箭头)
  • (14)Element Plus项目综合案例