在很多情况下,我们需要把多个样本混合在一起,在同一个通道(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)的更多相关文章

  1. ORM框架示例及查询测试,上首页修改版(11种框架)

    继上次ORM之殇,我们需要什么样的ORM框架? 整理了11个ORM框架测试示例,通过示例代码和结果,能很容易了解各种框架的特性,优缺点,排名不分先后 EF PDF XCODE CRL NHiberna ...

  2. git blame 查看某行代码提交记录

    1. 在当前git项目目录下执行 git blame -L 38,38 <filename> 例子:  git blame -L 38,38 src/component/BarCode/i ...

  3. 超短reads(primer、barcode、UMI、index等)比对方法

    二代reads最短都有50bp,所以大家常用的比对工具都是不支持50bp以下的reads的比对的. 但是,在实际中,我们确实又有比对super short reads的需求. So,我找到了如下方法来 ...

  4. 如何用React, Webcam和JS Barcode SDK创建Web扫码App

    这篇文章分享下如何结合React Webcam和Dynamsoft JavaScript Barcode SDK来创建Web扫码App. Web实时扫码 从GitHub上下载react-webcam. ...

  5. BarCode条形码生成库

    一.Barcode生成条形码的类库 二.示例 新建mvc空项目,添加Nuget引用 主要代码 // // GET: /Home/ public FileContentResult Index() { ...

  6. 扩增子分析解读2提取barcode 质控及样品拆分 切除扩增引物

    本节课程,需要完成扩增子分析解读1质控 实验设计 双端序列合并 先看一下扩增子分析的整体流程,从下向上逐层分析 分析前准备 # 进入工作目录 cd example_PE250 上一节回顾:我们拿到了双 ...

  7. thinkphp5 + barcode 生成条形码

    1.去官网下载类库 “https://www.barcodebakery.com/en/download”,选择自己的版本下载 2.解压放到“E:\phpstudy\PHPTutorial\WWW\g ...

  8. MySQL 优化之 ICP (index condition pushdown:索引条件下推)

    ICP技术是在MySQL5.6中引入的一种索引优化技术.它能减少在使用 二级索引 过滤where条件时的回表次数 和 减少MySQL server层和引擎层的交互次数.在索引组织表中,使用二级索引进行 ...

  9. 在v-for中利用index来对第一项添加class(vue2.0)

    <li v-for="(el,index) in event" v-bind:class="{ 'm-swipe-active': !index}"> ...

随机推荐

  1. 命令行执行jenkins,构建job(可传递参数)

    背景| 组内做UI测试,需要每天晚上执行一遍jenkins任务,jenkins任务本身是参数化构建的.但是因为jenkins本身的定时执行没有办法指定特殊的参数,所以考虑使用命令行方式启动jenkin ...

  2. pyinstaller linux系统下打包python源文件

    将python程序放在其他linux服务器中执行,通常linux服务器中默认安装python2.6,很多情况下需要升级为2.7  且要安装程序中需要的第三方模块,配置较为麻烦,所以通过在本地linux ...

  3. BGRA与BGR的相互转换

    BGRA转BGR void BgraToBgr(BYTE *bgraData,int *bgraSize) { ,j=; j<*bgraSize; i+=,j+=) { *(bgraData+i ...

  4. Ant 之 Task

    Ant提供了大量的核心task和可选task,除此之外,Ant还允许用户定义自己的task,这大大扩展了Ant的功能.本书由于篇幅关系,所以不可能详细介绍Ant所有的核心task和可选task,本书将 ...

  5. Unity性能优化 – 脚本篇

    https://wuzhiwei.net/unity_script_optimization/

  6. python函数传入参数(默认参数、可变长度参数、关键字参数)

    1.python中默认缺省参数----定义默认参数要牢记一点:默认参数必须指向不变对象! 1 def foo(a,b=1): 2 print a,b 3 4 foo(2) #2 1 5 foo(3,1 ...

  7. shell中颜色的设置

    linux启动后环境变量加载的顺序为:etc/profile → /etc/profile.d/*.sh → ~/.bash_profile → ~/.bashrc → [/etc/bashrc] 想 ...

  8. utils.js和vue-loader.conf.js

    var utils = require('./utils')var config = require('../config')var isProduction = process.env.NODE_E ...

  9. 已经卸载了hyper-v 仍然提示 vmware 与 hyper-v 不兼容;天天模拟器,提示VT模式没有开启,BIOS里面已经设置过了

    环境win10,vm的失败和模拟器的失败都是hyper-v冲突导致的...网上看了很多千篇一律的都只是提到了卸载hyper-v,实际上我电脑仅仅卸载hyper-v是不够的. 解决办法: 卸载 hype ...

  10. centos7更换镜像源

    更换软件源 由于国外的软件源在yum 安装时比较慢,更换为国内的源,以阿里的源的更换方式 下载wgetyum install wget -y echo 备份当前的yum源mv /etc/yum.rep ...