欢迎关注”生信修炼手册”!
对于NGS数据分析而言,第一步都是进行质量控制,质量控制包括去除adapter序列,去除低质量序列等内容。在文库构建阶段,为了能够上机测序,会在插入片段两端添加adapter序列。当测序读长超过了插入片段长度时,就会读取到adapter序列。
adapter序列是人为引入的序列,而我们之关心插入片段的测序结果,所以首先要做的就是去除adapter序列。在去除adapter序列时,需要考虑以下两个因素
- 由于测序错误率的原因,测序得到的adapter序列会和原本的adapter序列存在几个碱基的误差,所以去除adapter序列时必须允许碱基的错配
- 由于插入片段的长度在一定范围内变化,而adpter序列出现在两端的位置,所以测序读到的adapter序列可能只是原本adapter的部分序列
cutadapt 是一款对NGS数据进行质量过滤的软件,无论是5’端adapter,还是3’端adapter, 都可以有效的去除,同时也可以过滤低质量,去除长度太短的序列。
这个软件采用python开发,安装方便,代码如下
代码语言:javascript复制pip install cutadapt
1. 去除3’端引物序列
对于3’端序列,可能存在以下情况
绿色部分为adapter序列,灰色部分为软件会去除掉的序列,可以看到,无论是只读取到部分adapter序列还是完整的adapter序列,软件都能够有效的去除3’端adapter序列。
用法如下
代码语言:javascript复制cutadapt -a AACCGGTT -o output.fastq input.fastq
针对目前主流的双端测序数据,adapter序列都是出现在3’端,R1序列的3’端可能出现3’adapter 序列,R2端序列的3’端会出现5’端adpter的反向互补序列,示意如下
需要注意的是,无论是R1端还是R2端,其5’端都不会出现adapter,因为测序反应是直接从插入片段开始的。对于双端数据,只需要分别对R1和R2序列去除3’端adapter序列就可以了。
2. 去除5’端adapter序列
cutadapt 软件也支持去除5’端adapter序列,虽然测序反应中不会出现5’adapter, 但是这里adapter的概念可以延伸一下,比如PCR引物序列。在某些测序策略中,首选需要用PCR反应扩增出目的片段,然后在建库。如果想要去除插入片段5’端的PCR引物,这个用法就派上了用场。
对于5’端序列,可能存在以下情况
绿色部分为adapter序列,灰色部分为软件会去除掉的序列,前两种格式和,无论是只读取到部分adapter序列还是完整的adapter序列,软件都能够有效的去除5’端adapter序列。
用法如下
代码语言:javascript复制cutadapt -g AACCGGTT -o output.fastq input.fastq
在查找adapter序列时,cutadapt还提供了Anchored
模式,在该模式下,必须查找到完整的adapter序列后,才会进行切除工作。
3’端Anchored模式写法如下
代码语言:javascript复制cutadapt -a AACCGGTT$ -o output.fastq input.fastq
5’端Anchored模式写法如下
代码语言:javascript复制cutadapt -g ^AACCGGTT -o output.fastq input.fastq
cutadapt在查找adapter时, 有以下两种默认行为
1. 默认允许错配和插入缺失
假设adapter 序列是ADAPTER, 此时对于以下3种情况
代码语言:javascript复制ADABTER 有一个错配,
ADAPTR 有一个缺失
ADAPPTER 有一个插入
cutadapt 都认为是adapter序列,然后进行去除。可以采用-e
参数 指定错配的比例, 默认-e 为0.1, 比如adapter序列长度为21,允许的错配数为 21 * 0.1 = 2.1, 然后直接向下取整后为2, 所以允许的错配数为2;可以采用-no-indels
参数来禁止插入和缺失。
2. 默认允许部分匹配
cutadapt默认允许部分匹配,比如 adapter 序列为ADAPTER
, 测序得到的序列为ATCGATGCTADCGAGCGC
,在序列中间位置的AD
是adapter 序列的一部分, 此时会把AD以及之后的序列全部剪切掉,这种情况属于错误的判别。为了防止此类错误判别的出现,cutadapt 默认必须至少有3个碱基匹配时才会认为是adapter 序列,然后进行切除, 这个阈值可以通过 --overlap
参数来指定。
cutdadapt还支持根据质量进行过滤,用法如下
代码语言:javascript复制cutadapt -q 10 -o output.fastq input.fastq
低质量序列通常出现在reads的3’端,上述写法表示对3’端低质量碱基进行过滤,质量的阈值为10,具体计算过程如下,假设一段序列质量编码为
代码语言:javascript复制42, 40, 26, 27, 8, 7, 11, 4, 2, 3
质量过滤的阈值-q
为10,则首先减去10
32, 30, 16, 17, -2, -3, 1, -6, -8, -7
然后从从末端开始累加,得到如下数值
代码语言:javascript复制(70), (38), 8, -8, -25, -23, -20, -21, -15, -7
-25 最小,所以保留-25 之前的碱基, 即保留前4位碱基,后续碱基认为是低质量碱基,直接切除掉。
cutadapt 也可以根据长度对序列进行过滤,-m
参数指定序列的最小长度,低于该长度的序列会被过滤掉,-M
参数指定序列的最大长度,大于该长度的序列会被过滤掉。
更多的用法可以参考官方的文档。
·end·
—如果喜欢,快分享给你的朋友们吧—