BGI-flexlab / SOAPnuke

A Tool for integrated Quality Control and Preprocessing on FASTQ or BAM/CRAM files
GNU General Public License v3.0
100 stars 27 forks source link

疑问:关于SOAPnuke 2.0 -J参数 #42

Closed AmericanoAndAlcohol closed 5 years ago

AmericanoAndAlcohol commented 5 years ago

我的原始数据是2个样本,R1、R2分别15000条转录组重测序的Reads,物种:拟南芥。用普通的过滤条件,不加-J参数时,R1和R2的接头都能去除掉。参数如下:filter -f AGATCGGAAGAGC -r AATGATACGGCGA -l 10 -q 0.5 -n 0.05 -Q 2 -G 2。

但是加上-J后,参数如下:filter -f AGATCGGAAGAGC -r AATGATACGGCGA -l 10 -q 0.5 -n 0.05 -Q 2 -G 2 -J,发现R1的接头有去掉,但是R2的接头几乎没有减少(少了0.01%)。

当只取R1过滤,并加上-J后,参数如下:filter -f AGATCGGAAGAGC -l 10 -q 0.5 -n 0.05 -Q 2 -G 2 -J。R1的接头完全没有去除(根据Reads长度分布全部是150bp推测)。

请问一下是不是我对这个参数的使用方式有误?还是这个参数目前只支持双端数据? 谢谢!

AmericanoAndAlcohol commented 5 years ago

我把双端的-f接头换成了3'接头的前12nt,-r接头换成了5'端接头最后13nt的反向互补序列,参数如下:filter -f GATCGGAAGAGC -r AGATCGGAAGAGC -l 10 -q 0.5 -n 0.05 -Q 2 -G 2 -J。R1和R2的接头都能去除掉了。

可是单端去掉-r接头,参数如下:filter -f GATCGGAAGAGC -l 10 -q 0.5 -n 0.05 -Q 2 -G 2 -J。接头依然没有去除(Reads长度分布全部是150bp)。

youngchan919 commented 5 years ago

您好,能把PE数据截取一小部分发给我们吗?我们可以做个测试看看是什么原因。

AmericanoAndAlcohol commented 5 years ago

您好,能把PE数据截取一小部分发给我们吗?我们可以做个测试看看是什么原因。

已经发到您的邮箱了。谢谢。

youngchan919 commented 5 years ago

您好,能把PE数据截取一小部分发给我们吗?我们可以做个测试看看是什么原因。

已经发到您的邮箱了。谢谢。

是ychan919@gmail.com么,我这边没看到你的数据喔,抱歉能麻烦再发一次么?

youngchan919 commented 5 years ago

问题已解决并push,麻烦再测试下吧

AmericanoAndAlcohol commented 5 years ago

单端数据结果: R1数据,-f填写3'接头,能去除接头。 R2数据,-f填写5'接头,不能去除接头。 R2数据,-f填写5'接头的反向互补,能去除接头。

双端数据结果: -f填写3'接头,-r填写5'接头,R1能去除接头,R2没有去除接头。 -f填写3'接头,-r填写5'接头的反向互补,R1、R2都能去除接头。

这样是不是说明接头检测的时候只检测填写的接头序列本身,而不会同时检测它的反向互补?但1.x版本中-r参数直接填写5'接头是能去除它的反向互补序列的。

youngchan919 commented 5 years ago

单端数据结果: R1数据,-f填写3'接头,能去除接头。 R2数据,-f填写5'接头,不能去除接头。 R2数据,-f填写5'接头的反向互补,能去除接头。

双端数据结果: -f填写3'接头,-r填写5'接头,R1能去除接头,R2没有去除接头。 -f填写3'接头,-r填写5'接头的反向互补,R1、R2都能去除接头。

这样是不是说明接头检测的时候只检测填写的接头序列本身,而不会同时检测它的反向互补?但1.x版本中-r参数直接填写5'接头是能去除它的反向互补序列的。

是这样,在检测接头时,算法只会对正向的接头序列进行识别(不包括反向互补),这个在1.x, 2.x都是如此,所以输入接头序列时要确认无误。1.6.3及之前的版本,与1.6.4及之后的版本,在adapter trimming算法上的实现虽然存在差异,但基本逻辑是一样的。 所以在使用SOAPnuke及其他同类软件时,对于PE数据,都是-f填写3'接头,-r填写5'接头的反向互补,这样来处理的。

AmericanoAndAlcohol commented 5 years ago

单端数据结果: R1数据,-f填写3'接头,能去除接头。 R2数据,-f填写5'接头,不能去除接头。 R2数据,-f填写5'接头的反向互补,能去除接头。 双端数据结果: -f填写3'接头,-r填写5'接头,R1能去除接头,R2没有去除接头。 -f填写3'接头,-r填写5'接头的反向互补,R1、R2都能去除接头。 这样是不是说明接头检测的时候只检测填写的接头序列本身,而不会同时检测它的反向互补?但1.x版本中-r参数直接填写5'接头是能去除它的反向互补序列的。

是这样,在检测接头时,算法只会对正向的接头序列进行识别(不包括反向互补),这个在1.x, 2.x都是如此,所以输入接头序列时要确认无误。1.6.3及之前的版本,与1.6.4及之后的版本,在adapter trimming算法上的实现虽然存在差异,但基本逻辑是一样的。� 所以在使用SOAPnuke及其他同类软件时,对于PE数据,都是-f填写3'接头,-r填写5'接头的反向互补,这样来处理的。

好的,我明白了,已经没有其他问题了。十分感谢。