先看一下扩增子分析的整体流程,从下向上逐层分析

分析前准备
# 进入工作目录
cd example_PE250
上一节回顾:我们拿到了双端数据,进行了质控、并对实验设计进行了填写和检查、最后将双端数据合并为单个文件进行下游分析。
 
接下来我们将序列末端的barcode标签切下来,因为它们是人为添加的,不属于实验对象;再根据标签序列与实验设计文件比对,对每条序列属于哪个样品进行分类;最后我们切除掉扩增使用的引物,因为它们是人工合成的相似序列,并不是物种的真实序列。这样我们就获得了高质量的扩增区域数据,并且序列名称中包括了样品信息。
 
4. 提取barcode
为什么扩增子有barcode?
我以前做过sRNA-Seq, RNA-Seq, ChIP-Seq等等,都是一个文库对应一个样品,为什么没有用过barcode拆分。
原因是扩增子目前研究对象细菌、真菌多样性没有表达基因数量大,一般是几百到千的水平,对数据量要求最多10万条序列即可饱合。而Illumina测序仪的通量很高,采用Index来区分每个文库,每个文库的数据量达到千万的级别,加上建库测序的成本也不会低于千元。对于扩增子动辄成百上千的样品既太贵,又浪费。因此将扩增子样本添加上barcode(标签),通常将48/60个样品混合在一起,构建一个测序文库,达到高通量测序大量样品同时降低实验成本的目的。
 
通常的测序仪下机数据,只经过Index比对,拆分成来自不同文库的数据文件,分发给用户。而扩增子的一个文库包括几十个样品,还需要通过每个样品上标记的特异Barcode进一步区分,再进行下游分析。
 
注:如果你是自己构建测序文库,返回数据可以按下文拆分样品;如果是公司建库并测序,他们有样品的barcode信息,通常会返给用户样品拆分后的数据,无需本节中的操作。但原理还是要理解,对整体分析的把握非常重要。
 
Barcode在扩增子的位置和类型?

Barcode位于引物的外侧,比较典型的有三种,上图展示的为最常用的barcode位于左端(正向引物上游),此外还有右端和双端也比较常用。
本分析采用的数据类型为右端barcode。
 
extract_barcodes.py是QIIME中用于切除barcode的脚本,支持你想到的所有类型。
-f参数为输入文件,即上文中合并双端数据后的文件;
-m为实验设计文件;
-o为输出切下barcode的数据目录;
-c为barcode类型选择,目前的barcode_paired_stitched选项支持右端和双端类型,如果是左端类型,请改为barcode_single_end;
—bc1_len设置左端barcode的长度,按实验设计添写,本数据只有右端则为零;
—bc2_len设置右端barcode的长度,按实验设计添写,本数据右端长度为6bp,常用的还有8,10;
-a是使用实验设计中的引物来调整序列的方向,本实验的测序无方向,必须开此选项调整,有些公司的建库类型有方向,但开了总没错,顶多多花点计算时间;
—rev_comp_bc2是将右端barcode取反向互补再与左端相连,建议打开,这样你的实验设计中barcode一栏直接将添写原始barcode即可,不用再考虑方向了;如果是双端则将两个barcode直接连起来填在barcode列,不用考虑方向。
# 提取barcode
extract_barcodes.py -f temp/PE250_join/fastqjoin.join.fastq \
-m mappingfile.txt \
-o temp/PE250_barcode \
-c barcode_paired_stitched --bc1_len 0 --bc2_len 6 -a --rev_comp_bc2
这步任务会在输出目录temp/PE250_barcode中生成5个文件
barcodes.fastq # 切下来的barcode,用于后续拆分样品
barcodes_not_oriented.fastq # 方向不确定序列的barcode。连引物都不匹配,质量太差,建议不再使用
reads1_not_oriented.fastq # 方向不确定序列的序列,可能barcode切错方向。连引物都不匹配,质量太差,不建议使用
reads2_not_oriented.fastq # 空文件
reads.fastq # 序列文件,与barcode对应,用于下游分析
更多说明建议阅读帮助 http://qiime.org/scripts/extract_barcodes.html
 
5. 质控及样品拆分
上步对序列方向进行了调整全部为正向,并切开了barcode与扩增序列。下面使用split_libraries_fastq.py对混池根据barcode拆分样品,同时筛选质量大于20(即准确度99%)的序列进行下游分析。参数解释如下:
-i 输入序列文件,上步产生;
-b 输入barcode文件,上步产生;
-m 实验设计,依赖样品barcode列表将序列按样品重新命名
-q 测序质量阈值,20为99%准确率,30为99.9%准确
--max_bad_run_length 允许连续的低质量碱基调用的最大值,默认值为3
--min_per_read_length_fraction 最小高质量序列比例,0.75即最少有连序75%的碱基质量高于20
--max_barcode_errors barcode 允许的碱基错配个数,建议设置0为不允许,即使修改为1,2通常也不允许错配,不信你试试
barcode_type 调置barcode类型,默认为golay_12,并支持错配;我们通常设置为整数,对应barcode的长度总和,本实验中填0+6=6。
# 质控及样品拆分
split_libraries_fastq.py -i temp/PE250_barcode/reads.fastq \
-b temp/PE250_barcode/barcodes.fastq \
-m mappingfile.txt \
-o temp/PE250_split/ \
-q 20 --max_bad_run_length 3 --min_per_read_length_fraction 0.75 --max_barcode_errors 0 --barcode_type 6
运行结果会输出三个文件
histograms.txt # 所有序列长度分布数据,可知长度范围308-488,峰值为408
seqs.fna # 质控并拆分后的数据,序列按样品编号为SampleID_0/1/2/3
split_library_log.txt # 日志文件,有基本统计信息和每个样品的数据量;查看可知每个样品最大数据量为110454,最小值为10189
更多说明建议阅读帮助http://qiime.org/scripts/split_libraries_fastq.html
 
6. 切除引物序列
这里我们介绍一款高通量引物切除软件,cutadapt,2017-6-16最新版1.14;
https://pypi.python.org/pypi/cutadapt
此软件2011年发布至今一直在更新,Google Scholar截止17年8月8日引用2263次。
 
Cutadapt 1.14下载和安装
# 下载,请尽量检查主页下载最新版源码
wget https://pypi.python.org/packages/16/e3/06b45eea35359833e7c6fac824b604f1551c2fc7ba0f2bd318d8dd883eb9/cutadapt-1.14.tar.gz
# 解压
tar xvzf cutadapt-1.14.tar.gz
# 进入程序目录
cd cutadapt-1.14/
# 安装在当前用户目录,不需管理员权限
python setup.py install --user
cutadapt切除双端引物及长度控制,参数详解:
-g 5’端引物
-a 3’端引物,需要将引物取反向互补
-e 引物匹配允许错误率,我调置0.15,一般引物20bp长允许3个错配,为了尽量把引物切干净
-m 最小序列长度,根据情况设置,本实验扩增V5-V7区,长度主要位于350-400,故去除长度小于300bp的序列,无经验可不填此参数
--discard-untrimmed 引物未切掉的序列直接丢弃,防止出现假OTU
seqs.fna 为输入文件
PE250_P5.fa 为输出文件
cutadapt -g AACMGGATTAGATACCCKG -a GGAAGGTGGGGATGACGT -e 0.15 -m 300 --discard-untrimmed temp/PE250_split/seqs.fna -o temp/PE250_P5.fa
程序运行结果会在屏幕上输出结果统计报告,如去接头比例、去掉过短序列比例等;还有去除引物的长度分布,看看有没有异常。如3’端序列没有取反向互补会无法去除19bp序列,而是几bp的错误序列。
 
Cutadapt结果报告

This is cutadapt 1.14 with Python 3.6.1
Command line parameters: -g AACMGGATTAGATACCCKG -a GGAAGGTGGGGATGACGT -e 0.15 -m 300 --discard-untrimmed temp/PE250_split/seqs.fna -o temp/PE250_P5.fa
Trimming 2 adapters with at most 15.0% errors in single-end mode ...
Finished in 73.83 s (58 us/read; 1.04 M reads/minute).

=== Summary ===

Total reads processed: 1,277,436
Reads with adapters: 1,277,194 (100.0%)
Reads that were too short: 8,849 (0.7%)
Reads written (passing filters): 1,268,345 (99.3%)

Total basepairs processed: 522,379,897 bp
Total written (filtered): 495,607,409 bp (94.9%)

=== Adapter 1 ===

Sequence: GGAAGGTGGGGATGACGT; Type: regular 3'; Length: 18; Trimmed: 202757 times.

No. of allowed errors:
0-5 bp: 0; 6-12 bp: 1; 13-18 bp: 2

Bases preceding removed adapters:
A: 96.3%
C: 1.5%
G: 0.8%
T: 1.3%
none/other: 0.0%
WARNING:
The adapter is preceded by "A" extremely often.
The provided adapter sequence may be incomplete.
To fix the problem, add "A" to the beginning of the adapter sequence.

Overview of removed sequences
length count expect max.err error counts
3 3 19959.9 0 3
4 4 4990.0 0 4
6 2 311.9 0 2
8 1 19.5 1 1
11 1 0.3 1 1
13 1 0.0 1 1
15 9 0.0 2 9
17 42 0.0 2 42
18 202626 0.0 2 202626
19 56 0.0 2 56
20 1 0.0 2 1
21 1 0.0 2 1
32 1 0.0 2 1
38 1 0.0 2 1
39 1 0.0 2 1
41 1 0.0 2 1
309 2 0.0 2 2
310 1 0.0 2 1
311 3 0.0 2 3

=== Adapter 2 ===

Sequence: AACMGGATTAGATACCCKG; Type: regular 5'; Length: 19; Trimmed: 1074437 times.

No. of allowed errors:
0-5 bp: 0; 6-12 bp: 1; 13-19 bp: 2

Overview of removed sequences
length count expect max.err error counts
3 2 19959.9 0 2
7 1 78.0 1 0 1
8 2 19.5 1 1 1
10 6 1.2 1 4 2
11 1 0.3 1 1
12 3 0.1 1 2 1
13 5 0.0 1 3 2
14 24 0.0 2 17 7
15 51 0.0 2 32 14 5
16 71 0.0 2 56 12 3
17 134 0.0 2 92 30 12
18 327 0.0 2 189 117 21
19 1059175 0.0 2 1056863 2069 243
20 13846 0.0 2 1817 10955 1074
21 744 0.0 2 5 10 729
22 1 0.0 2 1
23 2 0.0 2 2
24 1 0.0 2 1
25 2 0.0 2 2
27 5 0.0 2 5
28 2 0.0 2 2
29 2 0.0 2 2
30 1 0.0 2 1
31 2 0.0 2 2
32 10 0.0 2 10
49 1 0.0 2 1
51 1 0.0 2 1
166 1 0.0 2 1
291 6 0.0 2 6
401 2 0.0 2 2
409 1 0.0 2 1
443 1 0.0 2 1
460 2 0.0 2 2
465 2 0.0 2 2

WARNING:
One or more of your adapter sequences may be incomplete.
Please see the detailed output above.

扩增子分析解读2提取barcode 质控及样品拆分 切除扩增引物的更多相关文章

  1. 扩增子分析解读5物种注释 OTU表操作

    本节课程,需要先完成<扩增子分析解读>系列之前的操作 1质控 实验设计 双端序列合并 2提取barcode 质控及样品拆分 切除扩增引物 3格式转换 去冗余 聚类 4去嵌合体 非细菌序列 ...

  2. 扩增子分析解读4去嵌合体 非细菌序列 生成代表性序列和OTU表

    本节课程,需要先完成 扩增子分析解读1质控 实验设计 双端序列合并 2提取barcode 质控及样品拆分 切除扩增引物 3格式转换 去冗余 聚类   先看一下扩增子分析的整体流程,从下向上逐层分析 分 ...

  3. 扩增子分析解读6进化树 Alpha Beta多样性

    分析前准备 # 进入工作目录 cd example_PE250 上一节回顾:我们的OTU获得了物种注释,并学习OTU表的各种操作————添加信息,格式转换,筛选信息.   接下来我们学习对OTU序列的 ...

  4. 扩增子分析QIIME2. 1简介和安装

    原网站:https://blog.csdn.net/woodcorpse/article/details/75103929 声明:本文为QIIME2官方帮助文档的中文版,由中科院遗传发育所刘永鑫博士翻 ...

  5. 扩增子图表解读1箱线图:Alpha多样性

    箱线图 箱形图(Box-plot)又称为盒须图.盒式图或箱线图,是一种用作显示一组数据分散情况资料的统计图.因形状如箱子而得名.在宏基因组领域,常用于展示样品组中各样品Alpha多样性的分布 第一种情 ...

  6. 扩增子图表解读3热图:差异菌、OTU及功能

    热图是使用颜色来展示数值矩阵的图形.通常还会结合行.列的聚类分析,以表达实验数据多方面的结果.  热图在生物学领域应用广泛,尤其在高通量测序的结果展示中很流行,如样品-基因表达,样品-OTU相对丰度矩 ...

  7. 如何分析解读systemstat dump产生的trc文件

    ORACLE数据库的systemstat dump生成trace文件虽然比较简单,但是怎么从trace文件中浩如烟海的信息中提炼有用信息,并作出分析诊断是一件技术活,下面收集.整理如何分析解读syst ...

  8. LIRe 源代码分析 5:提取特征向量[以颜色布局为例]

    ===================================================== LIRe源代码分析系列文章列表: LIRe 源代码分析 1:整体结构 LIRe 源代码分析 ...

  9. pyhanlp 共性分析与短语提取内容详解

    pyhanlp 共性分析与短语提取内容详解   简介 HanLP中的词语提取是基于互信息与信息熵.想要计算互信息与信息熵有限要做的是 文本分词进行共性分析.在作者的原文中,有几个问题,为了便于说明,这 ...

随机推荐

  1. Linux 内核开发 - 内存管理

    1.1什么是内存管理 内存管理是对计算机内存进行分配和使用的技术.内存管理主要存在于多任务的操作系统中,因为内存资源极其有限.须要在不同的任务之间共享内存,内存管理的存在就是要高效.高速的非配内存,并 ...

  2. 【Android】自己定义View、画家(画布)Canvas与画笔Paint的应用——绘图、涂鸦板app的实现

    利用一个简单的绘图app来说明安卓的图形处理类与自己定义View的应用. 例如以下图,有一个供用户自己随意绘图.涂鸦的app. 这里不做那么花俏了,仅提供黑白两色.但能够改变笔尖的粗细. 实质上这里的 ...

  3. MySQL-导入与导出

    CSV文件导入MySQL LOAD DATA INFILE语句允许您从文本文件读取数据,并将文件的数据快速导入数据库的表中. 导入文件操作之前,需要准备以下内容: 一.将要导入文件的数据对应的数据库表 ...

  4. Android Studio 使用 SVN 必然遇到问题:commit ** File out of data 问题解决方法

    转载请注明:http://blog.csdn.net/lrs123123/article/details/44829579 Android Studio 的使用已经越来越成为趋势.而结合版本号控制工具 ...

  5. javascript学习---BOM

    1.top是顶级的框架,也就是浏览器窗口. 2.window.close()只能关闭window.open()打开的窗口. 3.firefox不支持修改状态栏,firefox3后强制始终在弹出窗口中显 ...

  6. IDEA 单元测试

    下载所需的两个 jar 包,下载地址:Download and Install · junit-team/junit4 Wiki · GitHub junit-4.12.jar hamcrest-co ...

  7. luogu 3371 【模板】单源最短路径

    我太菜了 今天才学会堆优化的dij #include<iostream> #include<cstdio> #include<algorithm> #include ...

  8. 2018.09.08 DL24 Day1 总结

    补一下之前的总结…… T1.restaurant 这道题还是很简单的嘛,子恒dalao非常良心.我们把招牌菜和所需要的菜品绑定在一起就成了完全背包,然后直接跑一遍完全背包即可. #include< ...

  9. HTTP请求错误码大全(转)

    一些常见的状态码为: 200 - 服务器成功返回网页 404 - 请求的网页不存在 503 - 服务不可用 详细分解: 1xx(临时响应) 表示临时响应并需要请求者继续执行操作的状态代码. 代码 说明 ...

  10. POJ 2977 Box walking 长方体表面两点距离

    POJ2977 小学生的考试题,暴力得出O(1)的解法 #include<iostream> #include<cstdio> #include<cstdlib> ...