查看原文
其他

冰糖 2018-06-06

导入标准修剪命令Read修饰Read过滤双末端Read修剪

导入

cutadapt,顾名思义,就是去除测序Read中所混杂的测序接头(adapter,二代测序中的测序接头)。

二代测序需要经过建库的步骤,然而建库时如果片段太短,那么在测序时,测序Read就会混入adapter序列,为了去除adapter的影响,就需要cutadapt进行数据修剪(trim)。

基础用法

cutadapt -a AACCGGTT -o output.fastq input.fastq

-a 代表在Read 3‘端进行adapter序列的搜索,如果有则减去(默认至少有3个碱基重复),后接相应的测序adapter序列;

-o 修剪后的输出文件为output.fastq;

input.fastq 输入文件(测序文件)。

支持的文件格式

  • fasta(.fasta.fa.fna

  • fastq(.fastq.fq

  • fasta或fastq的压缩形式(.gz.bz.xz

cutadapt会自动从相应的拓展名识别相应的文件格式,尤其值得说明的是,它同样支持压缩格式,gz格式是全python版本都支持的,但是bzxz则需要python3.3以后版本才支持。

标准输入输出

除了可以使用-o参数来设置输出文件外,也可以使用Linux下的标准输出流来完成,例如:


cutadapt -a AACCGGTT input.fastq > output.fastq

此命令就等同于基础用法里面的那一条命令(见上述)。

不使用-o的一个重要的区别就是完成adapter修剪后的报告文件会定向到标准错误流,此时可以将其重定向到一个文件中,例如:


cutadapt -a AACCGGTT input.fastq > output.fastq 2> report.txt

本条命令和上一条命令效果一样,会在Read的3'端进行序列为AACCGGT的adapter序列搜索并将其修剪,不同的是本次的修剪报告会导入到report.txt文件中。

cutadapt是支持管线命令|的。

标准修剪命令

cutadapt支持多种修剪方法,除下表所述语法外,还支持双端修剪(-b)以及联合接头修剪(-a adapter1...adapter2)。

3’、5‘的接头混杂示意如下:

其中anchored 3‘或5’的adapter修剪的anchored意义为仅出现在5‘开头或3’末尾的adapter。

几个例子

3‘adapter修剪

使用MYSEQUENCE代表测序的样品片段,ADAPTER代表接头片段。

输入Read为:


MYSEQUEN
MYSEQUENCEADAP
MYSEQUENCEADAPTER
MYSEQUENCEADAPTERSOMETHINGELSE

使用-a ADAPTER将会输出以下结果:


MYSEQUEN
MYSEQUENCE
MYSEQUENCE
MYSEQUENCE

默认至少3个碱基相同即代表存在adapter序列,也就是说,对于本例而言ADAPTER、ADAP、ADA都会被识别为adapter序列,都会被修剪。

5'adapter修剪

5'adapter修剪使用的场合较少,一般是由于adapter降解导致5’端混杂了adapter片段。


ADAPTERMYSEQUENCE
DAPTERMYSEQUENCE
TERMYSEQUENCE
SOMETHINGADAPTERMYSEQUENCE

使用 -g ADAPTER以上Read都将会输出以下结果:

MYSEQUENCE

anchored 5'修剪


ADAPTERMYSEQUENCE
MYSEQUENCEADAPTESOMETHING

使用-g ^adapter ,将会得出以下结果:


MYSEQUENCE
MYSEQUENCEADAPTESOMETHING

注意:第二个序列并没有被修剪为SOMETHING,因为ADAPTER出现在序列中间,而不是5‘端开头。

此外,BADAPTERMYSEQUENCE也会被修剪为MYSEQUENCE,原因是开头的B会被看做插入,这种情况叫做错误容许(error-tolerance),默认是1%的错误容许,可以使用-e来调整相应的错误容许大小。如果不需要错误容许机制生效,可以使用--no-indels来关闭它。

anchored 3’修剪


MYSEQUENCEADAP
MYSEQUENCEADAPTER
MYSEQUENCEADAPTERSOMETHINGELSE

使用-a ADAPTER$将会得到以下结果:


MYSEQUENCEADAP
MYSEQUENCE
MYSEQUENCEADAPTERSOMETHINGELSE

注意:第一个序列需要重点注意,在使用锚定3‘修剪时,ADAP并没有被认定为adapter序列。应该PTER、TER才会被识别为adapter序列。

单个Read多个adapter

如果一条Read中同时出现了多个adapter,那么不论是5’修剪还是3‘修剪,都以最左边出现的adapter为准。

Read修饰

cutadapt不只是可以进行Read的adapter修剪,它也可以对Read进行不同的修饰( modify):

切去特定数目碱基

使用--cut-u参数可以切去特定数目的碱基,例如:


cutadapt -u 5 -o trimmed.fastq reads.fastq

可以切去reads.fastq中最左边的5碱基,输出文件名为trimmed.fastq。

若要移除最右边的5个碱基,可以使用-u -5参数。

质量修剪

测序文件fastq是有每个碱基的测序质量分值的,cutadapt可以根据特定的质量cutoff值去除相应的碱基,比如:


cutadapt -q 10 -o output.fastq input.fastq

对3’端以10为cutoff值进行修剪。

如果需要对5‘端进行质量修剪,可以如下方式进行:


cutadapt -q 15,0 -o output.fastq input.fastq

代表对5’端以15为cutoff值进行修剪。

cutadapt使用的质量修剪算法和比对软件BWA是一样的。具体的质量修剪算法就不再叙述了,详细的可以看cutadapt的官方说明文档(http://cutadapt.readthedocs.org/en/stable/guide.html)里的“Modifying reads”中的“Quality trimming algorithm”部分。

裁短Read至特定长度

可以使用--length-l将Read裁短至特定长度,例如:


cutadapt -l 10 input.fastq > output.fastq

将所有Read从3‘开始裁短至10个碱基。

在一条cutadapt语句中,如果以上adapter修剪和Read修饰同时存在,它们操作的顺序为:

  1. 无条件切除(--cut)

  2. 质量修剪(-q)

  3. adapter修剪(-a,-g

  4. Read裁短(--length

Read过滤

默认情况下,cutadapt在做完adapter修剪和Read修饰之后,会将全部Read结果输出到输出文件或标准输出流。但是如果有特定的Read过滤(filter)的需要,那么cutadapt也是支持的,它的Read过滤选项如下:

  • -m N 丢弃少于N个碱基的Read;

    • -M N 丢弃多于N个碱基的Read;

    • --too-short-output FILE少于N个碱基的Read不再丢弃,而是输出文件FILE中;

    • --too-long-output FILE多于N个碱基的Read不再丢弃,而是输出文件FILE中;

    • --untrimmed-output FILE将没有adapter修剪的Read输出到文件FILE,而不再是正常的输出文件或标准输出流中;

    • --discard-trimmed将搜索到adapter的Read丢弃;

    • --discard-untrimmed将没有搜索到adapter的Read丢弃;

--too-short-output--too-long-output是首先进行处理的语法,也就是说假如同时存在--too-long-output FILE1--untrimmed-output FILE2,一个Read因为太长而被输出到FILE1中,那么不论它是否经过了adapter修剪,都不再会出现在FILE2。

双末端Read修剪

cutadapt同样可以双端测序的测序文件进行配对修剪,测序文件分别为reads.1.fastq和reads.2.fastq,而相应的adapter表示为ADAPTER_FWD (FWD:forward reads)与ADAPTER_REV(REV:reverse reads)。基础语法为:


cutadapt -a ADAPTER_FWD -A ADAPTER_REV -o out.1.fastq -p out.2.fastq reads.1.fastq reads.2.fastq

其中-a-o同单末端Read文件中的含义是一样的,分别是3’端adapter修剪与输出文件名。

-A-a的语义是一样,但是作用于第二链(reverse reads)。按照大小写区分forward reads和reverse reads的参数还有-b-g-u,语法意义保持不变,小写代表作用于forward reads,大写代表作用于reverse reads。

-p代后接reverse reads的输出文件名。

当使用-p参数时,cutadapt会测试相应的两个文件是不是合适的配对,假如两个文件的Read数目不相同或者两个文件的文件名不匹配,那么将会报错。在cutadapt中,/1/2将会被忽略,也即是说以下两个文件名并不匹配:


@my_read/1;1
@my_read/2;1

参考资料:

  1. cutadapt官方说明文档:http://cutadapt.readthedocs.org/en/stable/guide.html


还有更多文章,请移步公众号阅读

如果你生信基本技能已经入门,需要提高自己,请关注上面的生信技能树,看我们是如何完善生信技能,成为一个生信全栈工程师。

如果你是初学者,请关注下面的生信菜鸟团,了解生信基础名词,概念,扎实的打好基础,争取早日入门。



    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存