barcode(index)
在很多情况下,我们需要把多个样本混合在一起,在同一个通道(lane)里完成测序。像转录组测序、miRNA测序、lncRNA测序、ChIP测序等等,通常每个样本所需要的数据量都比较少,远少于HiSeq一个通道的产出能力,混合样本是普遍作法。以转录组测序为例,一个样本测序20 M片段(reads),就能够满足绝大部分研究所需。而HiSeq 2000的一条通道,使用v3试剂,数据产出>175 M片段(如果双端分别计算,则为350M)。为了充分利用测序仪产能,节约成本,需要把8个RNA样本混合起来。如果使用v4试剂,是220M以上(双端440M),可混合11个样本。
为了能够把测序数据按样本分离(de-multiplexing),在构建文库(library)的时候,需要用不同的标签序列(index, 也叫barcode)对文库进行标记。只有文库作了记号,数据才能区分。
Barcode的选择是一门技术活。如果barcode组合不佳,标签序列测序质量下降,部分或者全部标签碱基识别不正确,将导致部分数据无法归属到任何一个样本,成为undetermined数据,造成浪费。
一、如何判断barcode组合好坏?
1、碱基平衡。好的barcode组合必须是“4种碱基达到平衡”的,或者说碱基复杂度高。具体就是:a. 在一组barcode的每一个位置,同时存在A、G、C、T四种碱基,不缺少任何一种碱基;b. 这4种碱基的比例接近,最好各1/4,分别为25%左右,没有任何一种碱基特别多或者特别少。
2、激光平衡。受客观条件限制,主要是a.试剂盒提供的barcode种类有限,b.有些barcode已经被其他样本占用,导致可选的余地受限制,这就导致barcode组合经常无法达到理想的碱基平衡要求。退而求其次,要力保“红绿激光达到平衡”。在所有型号的Illumina测序仪中,A和C两种碱基共用一种激光,由波长660 nm的红激光激发;G和T共用一种激光,由波长532 nm的绿激光激发。对于一组barcode的每一个位置,如果A+C的总数与G+T的总数相接近,可以在一定程度上弥补碱基不平衡的负面作用。
3、激光平衡是次优选择,不得已而为之。它虽然可以在一定程度上提高barcode测序质量,减少de-multiplexing出问题的可能性,但是并不是说,只要激光平衡了,测序数据的分离就一定不受影响。
4、如果barcode组合碱基也不平衡,激光也不平衡,则de-multiplexing风险非常高。
二、Barcode组合举例
1、好的组合。
Illumina推荐的12个样本barcode组合如下。
编号 序列
01 ATC ACG
02 CGA TGT
03 TTA GGC
04 TGA CCA
05 ACA GTG
06 GCC AAT
07 CAG ATC
08 ACT TGA
09 GAT CAG
10 TAG CTT
11 GGC TAC
12 CTT GTA
位置
1st
2nd
3rd
4th
5th
6th
A
3
3
4
3
3
3
T
3
3
3
3
4
3
C
3
3
3
3
2
3
G
3
3
2
3
3
3
以第一个位置(纵列)为例,A:G:C:T=3:3:3:3=1:1:1:1。实际上,该barcode组合每个位置的碱基比例都接近1:1,碱基平衡度近乎完美。
2、不好的组合
下面的组合有缺陷。比如说,第1个位置只有A和C两种碱基,A、C都属于红激光,导致绿激光没有信号,碱基和激光都不平衡。
AGTTCC
ACTGAT
ACGAGC
ACTCCT
CAAAAG
CAACCA
CACCAG
三、Barcode碱基不平衡的后果
1、如果barcode组合的碱基组成不平衡,会导致测序进行到这些碱基时,软件对测序信号的处理出现障碍,不能准确地识别这些碱基(base-calling),表现为QV值降低,%Q30曲线波动。
2、在这种情况下,运用生物信息软件对测序数据进行数据分离(de-multiplexing)出现困难,部分数据不能准确分离,成为undetermined 数据的一部分,造成undetermined数据增多,可分离的数据减少。
3、如果测序数据的总量很多,远大于全部样本数据量期望值的总和,则问题有可能不那么严重,全部或者大部分样本仍然可能分离到足够的数据量。
4、万一样本性质特殊,反应效率低;或者混合样本之间竞争和抑制严重,导致测序数据总量在期望值附近,余量很少;或者其中个别样本数据量特别少,这时如果undetermined数据比例过高,就会导致部分或者全部样本的数据量不够用。
5、混合样本补数据是一个非常麻烦的问题,成本极高。如果一组样本中只有个别样本需要补数据,由于文库是混合在一起的,其他样本也不得不跟着重测一次。这是困难之一。困难之二,如果数据缺口比较小,本来可以与其他样本混合,搭个便车,可是,进行第二次混合的时候,经常会遇到barcode冲突或者碱基不平衡,拼lane非常困难,往往要等很长时间,才有合适的机会。
四、实验证明de-multiplexing成功,该barcode组合今后是否一定好用?
1、如果barcode组合碱基平衡,则无论样本怎么变,该组合一定好用。
2、如果barcode组合的碱基组成不理想,即使以前的实验证明好用,不等于今后一定好用。下一次测序效果可能好,也可能不好。
3、这是由于不同的项目样本不同,有可能导致两种后果:a. 数据总量在期望值附近,余地不够多,de-multiplexing后部分样本数据量不够;b. 如果新的样本本身也碱基不平衡,read 1测序质量很差,会影响到barcode和read 2的测序质量。当然,情况b责任不在barcode,即使barcode很好,数据还是不够。
五、补救措施
如果满足以下两个条件:
a. 混合样本的数据总量足够,只是由于barcode质量不好,导致de-multiplexing后部分或全部样本数据量不够;
b. 排除QV值低的barcode碱基后,其余质量好的barcode碱基仍然足够用来区分全部样本;
那么,可以通过改变de-multiplexing算法来为每个样本获得尽量多的数据。比如去掉信号识别模糊的碱基,或者增加mismatch碱基的数目,重新运行de-multiplexing程序。
六、样本少于4种,不可能碱基平衡,怎么办?
如果样本数少于4种,每一个位置的碱基最多只有3种,不可能碱基平衡,怎么办呢?这时一定要保证激光平衡。Illumina推荐了3种low-level pooling的barcode组合:
2个样本:
#6 GCCAAT
#12 CTTGTA
3个样本:
#4 TGACCA
#6 GCCAAT
#12 CTTGTA
6个样本:
#2 CGATGT
#4 TGACCA
#5 ACAGTG
#6 GCCAAT
#7 CAGATC
#12 CTTGTA
这3种组合包含一个共同内核:6号和12号。6号和12号组合是百分百激光平衡的,每一个位置的碱基(纵列,即GC、CT、CT、AG、AT和TA)都分别属于不同的激光。只要barcode组合中包含6号和12号,就能满足最基本的要求,不至于颗粒无收。6号和12号是barcode组合的核心,不可或缺。
barcode(index)的更多相关文章
- ORM框架示例及查询测试,上首页修改版(11种框架)
继上次ORM之殇,我们需要什么样的ORM框架? 整理了11个ORM框架测试示例,通过示例代码和结果,能很容易了解各种框架的特性,优缺点,排名不分先后 EF PDF XCODE CRL NHiberna ...
- git blame 查看某行代码提交记录
1. 在当前git项目目录下执行 git blame -L 38,38 <filename> 例子: git blame -L 38,38 src/component/BarCode/i ...
- 超短reads(primer、barcode、UMI、index等)比对方法
二代reads最短都有50bp,所以大家常用的比对工具都是不支持50bp以下的reads的比对的. 但是,在实际中,我们确实又有比对super short reads的需求. So,我找到了如下方法来 ...
- 如何用React, Webcam和JS Barcode SDK创建Web扫码App
这篇文章分享下如何结合React Webcam和Dynamsoft JavaScript Barcode SDK来创建Web扫码App. Web实时扫码 从GitHub上下载react-webcam. ...
- BarCode条形码生成库
一.Barcode生成条形码的类库 二.示例 新建mvc空项目,添加Nuget引用 主要代码 // // GET: /Home/ public FileContentResult Index() { ...
- 扩增子分析解读2提取barcode 质控及样品拆分 切除扩增引物
本节课程,需要完成扩增子分析解读1质控 实验设计 双端序列合并 先看一下扩增子分析的整体流程,从下向上逐层分析 分析前准备 # 进入工作目录 cd example_PE250 上一节回顾:我们拿到了双 ...
- thinkphp5 + barcode 生成条形码
1.去官网下载类库 “https://www.barcodebakery.com/en/download”,选择自己的版本下载 2.解压放到“E:\phpstudy\PHPTutorial\WWW\g ...
- MySQL 优化之 ICP (index condition pushdown:索引条件下推)
ICP技术是在MySQL5.6中引入的一种索引优化技术.它能减少在使用 二级索引 过滤where条件时的回表次数 和 减少MySQL server层和引擎层的交互次数.在索引组织表中,使用二级索引进行 ...
- 在v-for中利用index来对第一项添加class(vue2.0)
<li v-for="(el,index) in event" v-bind:class="{ 'm-swipe-active': !index}"> ...
随机推荐
- Spring启动异常: cvc-elt.1: Cannot find the declaration of element 'beans'(转)
Spring启动异常: cvc-elt.1: Cannot find the declaration of element 'beans' 2008-09-07 22:41 今天把在线聊天室代码改了下 ...
- python 进阶(转自http://python.jobbole.com/82633/)
网络 通用 urllib -网络库(stdlib). requests -网络库. grab – 网络库(基于pycurl). pycurl – 网络库(绑定libcurl). urllib3 – P ...
- day17 正则表达式 re模块和hashlib模块
今日内容 1. re&正则表达式(*****) 注:不要将自定义文件命名为re import re re.findall(正则表达式,被匹配的字符串) 拿着正则表达式去字符串中找,返回一个列表 ...
- 【C++】operator new/new operator/placement new之间的区别
new operator new operator即是c++中的关键字new.比如A* = new A; 中的new就是new operator. 它执行了三个步骤: 1. 分配内存空间 事实上,分配 ...
- 使用scaleBitmap类缩放和拉伸
使用scaleBitmap类缩放和拉伸 位图,画架,图形,小贴士我们一直在寻找在createJS中优化.简化或创建更好工作流的方法,scaleBitmap就是一个很好的例子.使用旧的flash方法,在 ...
- 2019年华南理工大学程序设计竞赛(春季赛)-C-六学家的困惑
题目链接:https://ac.nowcoder.com/acm/contest/625/C 题意:给定两个字符串,每次只能从两个字符串的两端取字符,求依次取字符后所构成的数字最大为多少. 思路:思路 ...
- codeforces 722D Generating Sets 【优先队列】
You are given a set Y of n distinct positive integers y1, y2, ..., yn. Set X of n distinct positive ...
- 51nod 1459 迷宫游戏 dijkstra模板
链接:迷宫游戏 问题 - 51Nod http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1459 1459 迷宫游戏 基准 ...
- 贪吃蛇Listener Java实现(二)
package cn.tcc.snake.listener; import cn.tcc.snake.antition.Sanke;//接口//处理用户按键事件public interface Sna ...
- 【转】自动化测试框架: pytest&allure ,提高自动化健壮性和稳定性
序 在之前,我写过一个系列“从零开始搭建一个简单的ui自动化测试框架(pytest+selenium+allure)”,在这个系列里,主要介绍了如何从零开始去搭建一个可用的自动化工程框架,但是还缺乏了 ...