biostar handbook(五)|序列从何而来和质量控制

2024-06-23 21:18

本文主要是介绍biostar handbook(五)|序列从何而来和质量控制,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

测序仪

2017年一篇发表在Nature的综述"DNA sequencing at 40: past, present and future"介绍了DNA测序这40年的发展历程。1976年,Sanger和Coulson同时发表了2种方法用于对上百个DNA碱基进行解码,这就是第一代测序技术。到了2005年,罗氏的454平台揭开了高通量测序的序幕,后面则是SOLiD,454和Illumina三方对抗。然而10年过去了,市面上的二代测序只有illumina一家独大。在三代测序技术或者4代测序技术上,目前则是PacBio和MinION占领了市场的大部分份额。

2013053-822ae81eeb388d2b.jpg
测序技术发展

测序仪的工作原理

高通量测序之所以能够能够达到如此高的通量的原因就是他把原来几十M,几百M,甚至几个G的基因组通过物理或化学的方式打算成几百bp的短序列,然后同时测序。

因为测序过程是边合成边测序(SBS),所以在建库的时候,短序列两段会加一些固定的碱基用于桥式PCR扩增,这些固定的碱基就是adapter(接头)。一般而言,还可以在接头加一些tag(index),用于标识这个read来自于哪个物种。目前的单细胞测序为了省钱,譬如10X genomic技术,都是在一个pool里面加多种接头。

以二代测序的无冕之王illumina测序仪建库为例,假设有如下的DNA片段

AAAATTTTGGGGCCCC
TTTTAAAACCCCGGGG

在建库准备时,单一设计的DNA接头长度通常超过30个碱基,会加在每条序列的两端

XXXXAAAATTTTGGGGCCCCYYYY
XXXXGGGGCCCCAAAATTTTYYYY

对于给定的片段,每条链都会被测序。测序仪通常会识别起始位点的XXXX,但不会被记录,测序方向:

---->
AAAAT
AAAATTTTGGGGCCCC
TTTTAAAACCCCGGGGCGGGG<----

由于片段长度不一,所以会出现read-through的情况,也就是读到了接头的序列。

由于测序的protocol和instrumentation不同,测序方向也可能不同,这会导致程序出现错误。因此请确保你的双端数据的方向是----> <----

在测序过程中,机器会对每次读取的结果赋予一个值,用于表明它有多大把握结果是对的。从理论上都是前面质量好,后面质量差。并且在某些GC比例高的区域,测序质量会大幅度降低。

目前,Illumina的错误率是1/1000,PacBio是1/10,而MinION是1/5。随着技术的更新,目前它们的错误率应该是得到很大的降低了,但是顺序不会变,于是三代和四代的测序结果一般都需要二代进行纠错。

测序仪详解

2011年有一篇文章Travis Glenn’s Field Guide to Next Generation DNA Sequencer对不同测序仪进行了测评。现在6年过去了,这篇文章的内容也得到了相应的更新,见2016: Updates to the NGS Field Guide

Ilumina

待补充

PacBio

待补充

Minion

待补充

样本准备

待补充

测序数据覆盖度

什么叫做测序数据的覆盖度(coverage),这是一个很好的问题。在书中,覆盖率简单定义为:

c = 测序的碱基数 / 基因组总大小

一开始我觉得这个公式其实是计算测序的平均深度。但是后面继续谈到覆盖度不是意味着所有基因组都被覆盖了,而是覆盖率越高,基因组未被检测到的基因越少。根据经验公式,碱基丢失率:P = exp(-C)。假设测序深度10x,基因组长度为20k,那么丢失exp(-10)*20000,差不多是一个碱基,如果是人类基因组会是136199个碱基。

当然理论覆盖度并不代表现实情况,由于基因组的复杂性,DNA可能也不是真的随机打断,甚至实验protocol还有一定的偏向性。

  • 尽可能增加测序深度
  • 尽管有一些基因组部分很难被测序,但是我们其实清楚这些区域难以测序的原因
  • 基因组的高度重复区域需要更长的读长才能被发现
  • 基因组不同区域可能会产生相同的read,你需要更长的读长。

科学家喜欢用“可进入(accessible)", "可比对(mappable)", "有效(effective)"的基因组来指明基因组哪些区域很容易被研究。

数据质量和质量控制

一般而言,拿到数据后最重要的一步就是看看数据的质量如何。之前已经提及过FASTQ的基本格式,这里就不具体展开,并且我们其实一般都是使用Babraham Institute开发的FastQC对质量进行可视化展示。

目前来看,FastQC基本上已经是数据质量展示的通用工具了。它使用Java进行开发,是跨平台工具,效率高,简单易用,出图也好看。但是记住一点,FastQC不做质量控制,它只是展示数据的质量而已。

使用FastQC展示数据质量

FastQC的工作原理是通过对总体数据的抽样来评估总体效果,这就是它快(fast)的愿意,毕竟其他一些质量展示软件是老老实实把所有数据都用于作图。

首先你需要准备数据和软件:

conda -c bioconda install fastqc
wget http://data.biostarhandbook.com/data/sequencing-platform-data.tar.gz
tar xzvf sequencing-platform-data.tar.gz

然后你需要稍微了解以下fastqc的参数:

fastqc seqfile1 seqfile2 .. seqfileN
常用参数:
-o: 输出路径
--extract: 输出文件是否需要自动解压 默认是--noextract
-t: 线程, 和电脑配置有关,每个线程需要250MB的内存
-c: 测序中可能会有污染, 比如说混入其他物种
-a: 接头
-q: 安静模式

最后使用FastQC进行数据质量可视化展示

fastqc *.fq

结果会得到每个FASTQ文件对应的zip压缩文件和HTML文件。数据汇总主要会用ZIP压缩文件,而对数据质量的直观感受则是看HTML文件,直接用网页打开。绿色表示通过,红色表示未通过,黄色表示不太好

2013053-849bdf93c613ca25.jpg
image

具体含义可以看这里: http://jingyan.baidu.com/article/49711c6149e27dfa441b7c34.html

一些注意事项:

  • 没必要太过在意“stoplinght",但是如果全部红灯,那么数据就要小心了。
  • 序列重复分为两类:天然重复(片段相同),人为重复(PCR扩增,检测)

检测重复有两种方法:序列相同,比对相同。读段重复最大的问题是在检测变异上,如果一个变异点重复两次,会产生与实际不符的效果。SNP calling和基因组变异检测需要移除重复,其他就不需要。

如果同一批测序有多个数据,比如说15个(5个样本,3个重复),在对每个数据做一个fastqc后,还可以用multiqc进行数据聚合展示

利用conda安装软件尤其简单,

conda install multiqc
multiqc --help

使用也很方便,

# 先获取QC结果ls *gz | while read id; do fastqc -t 4 $id; done
# multiqc
multiqc *fastqc.zip --pdf

会有一个html文件用来了解总体情况

2013053-5ae5c7fd54f849be.jpg
image

测序质量的质量控制

质控时机:比对前的原始数据和比对后的数据过滤
流程:

  1. 数据可视化评估
  2. 质量不错就停止QC
  3. 否则对数据进行修改,返回步骤1

QC工具的可信度

  1. 首先QC工具本身质量就不是很好,QC工具之间可能也不一致,不同工具使用相同的参数可能也会有不同的结果。
  2. QC的确可能会引入错误,所以如果尽量避免修改数据

QC工具集

比较好的是Trimmomatic, BBDuk ,flexbar and cutadapt

  • BBDuk part of the BBMap package
  • BioPieces a suite of programs for sequence preprocessing
  • CutAdapt application note in Embnet Journal, 2011
  • fastq-mcf published in The Open Bioinformatics Journal, 2013
  • Fastx Toolkit: collection of command line tools for Short-Reads FASTA/FASTQ files preprocessing - one of the first tools
  • FlexBar, Flexible barcode and adapter removal published in Biology, 2012
  • NGS Toolkit published in Plos One, 2012
  • PrinSeq application note in Bioinformatics, 2011
  • Scythe a bayesian adaptor trimmer
  • SeqPrep - a tool for stripping adaptors and/or merging paired reads with overlap into single reads.
  • Skewer: a fast and accurate adapter trimmer for next-generation sequencing paired-end reads.
  • TagCleaner published in BMC Bioinformatics, 2010
  • TagDust published in Bioinformatics, 2009
  • Trim Galore - a wrapper tool around Cutadapt and FastQC to consistently apply quality and adapter trimming to FastQ files, with some extra functionality for MspI-digested RRBS-type (Reduced Representation Bisufite-Seq) libraries
  • Trimmomatic application note in Nucleic Acid Research, 2012, web server issue

There also exist libraries via R (Bioconductor) for QC: PIQA, ShortRead

这篇关于biostar handbook(五)|序列从何而来和质量控制的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1088301

相关文章

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

uva 10131 最长子序列

题意: 给大象的体重和智商,求体重按从大到小,智商从高到低的最长子序列,并输出路径。 代码: #include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <cstring>#include <cmath>#include <stack>#include <vect

POJ1631最长单调递增子序列

最长单调递增子序列 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.util.StringTokenizer;publ

leetcode105 从前序与中序遍历序列构造二叉树

根据一棵树的前序遍历与中序遍历构造二叉树。 注意: 你可以假设树中没有重复的元素。 例如,给出 前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7] 返回如下的二叉树: 3/ \9 20/ \15 7   class Solution {public TreeNode buildTree(int[] pr

控制反转 的种类

之前对控制反转的定义和解释都不是很清晰。最近翻书发现在《Pro Spring 5》(免费电子版在文章最后)有一段非常不错的解释。记录一下,有道翻译贴出来方便查看。如有请直接跳过中文,看后面的原文。 控制反转的类型 控制反转的类型您可能想知道为什么有两种类型的IoC,以及为什么这些类型被进一步划分为不同的实现。这个问题似乎没有明确的答案;当然,不同的类型提供了一定程度的灵活性,但

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理

深入解析秒杀业务中的核心问题 —— 从并发控制到事务管理 秒杀系统是应对高并发、高压力下的典型业务场景,涉及到并发控制、库存管理、事务管理等多个关键技术点。本文将深入剖析秒杀商品业务中常见的几个核心问题,包括 AOP 事务管理、同步锁机制、乐观锁、CAS 操作,以及用户限购策略。通过这些技术的结合,确保秒杀系统在高并发场景下的稳定性和一致性。 1. AOP 代理对象与事务管理 在秒杀商品

PostgreSQL中的多版本并发控制(MVCC)深入解析

引言 PostgreSQL作为一款强大的开源关系数据库管理系统,以其高性能、高可靠性和丰富的功能特性而广受欢迎。在并发控制方面,PostgreSQL采用了多版本并发控制(MVCC)机制,该机制为数据库提供了高效的数据访问和更新能力,同时保证了数据的一致性和隔离性。本文将深入解析PostgreSQL中的MVCC功能,探讨其工作原理、使用场景,并通过具体SQL示例来展示其在实际应用中的表现。 一、

day-50 求出最长好子序列 I

思路 二维dp,dp[i][h]表示nums[i] 结尾,且有不超过 h 个下标满足条件的最长好子序列的长度(0<=h<=k),二维数组dp初始值全为1 解题过程 状态转换方程: 1.nums[i]==nums[j],dp[i,h]=Math.max(dp[i,h],dp[j,h]+1) 2.nums[i]!=nums[j],dp[i,h]=Math.max(dp[i,h],dp[j,h-1

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b

LeetCode:3177. 求出最长好子序列 II 哈希表+动态规划实现n*k时间复杂度

3177. 求出最长好子序列 II 题目链接 题目描述 给你一个整数数组 nums 和一个非负整数k 。如果一个整数序列 seq 满足在下标范围 [0, seq.length - 2] 中 最多只有 k 个下标i满足 seq[i] != seq[i + 1] ,那么我们称这个整数序列为好序列。请你返回 nums中好子序列的最长长度。 实例1: 输入:nums = [1,2,1,1,3],