使用PANDAseq连接重叠的Paired-End Illumina数据

PANDAseq(https://github.com/neufeld/pandaseq)用于将Paired-End测序且有重叠的双末端reads连接成一条较长的read。该软件2021年发表于BMC Bioinformatics,并在2017年3月更新到2.11版本。PANDseq软件先检测双端reads重叠再连接,使用时默认使用simple_bayesian算法,也还可以选择FastqJoin in ea-utils, FLASH (Fast Length Adjustment of SHort reads)PEAR (Paired-End AssembleR)算法。此外,PANDAseq将双末端数据连接时,能根据重叠结果,修正不匹配碱基(选择碱基质量高的碱基)和未知碱基。

1. 软件下载和安装

wget https://github.com/neufeld/pandaseq/archive/refs/tags/v2.11.tar.gz -O pandaseq-2.11.tar.gz
tar zxf pandaseq-2.11.tar.gz
cd pandaseq-2.11/
./autogen.sh
./configure --prefix=/opt/biosoft/pandaseq-2.11
make -j 4 && make install 
cd .. && rm -rf pandaseq-2.11
echo 'PATH=$PATH:/opt/biosoft/pandaseq-2.11/bin/' >> ~/.bashrc
source ~/.bashrc

2. 软件的使用

常用示例:

pandaseq -f illumina.1.fastq -r illumina.2.fastq -k 5 -o 5 -F  > out.fastq 2> out.tab

常用参数:

-6    default: None
	添加该参数,表示输入数据是Phred64碱基质量格式。程序默认识别Phred33碱基质量格式。
-A <string>    default: simple_bayesian
	设置软件的算法。simple_bayesian[:error_estimation],默认使用PANDAseq软件发表文章中的算法,可以输入错误率;ea_util,使用FastqJoin算法;flash,使用FLASH算法;pear[:random_base],使用PEAR算法,可以输入一个随机碱基的概率;rdp_mle,使用RDP算法;stitch,使用Sitch算法;uparse[:error_estimation],使用UPARSE/USEARCH算法,可以输入错误率。
-f <string>    default: None
	输入reads1的FASTQ文件,支持gzip或bzip2格式的文件。
-r <string>    default: None
	输入reads2的FASTQ文件,支持gzip或bzip2格式的文件。
-F    default: None
	程序默认输出FASTA的结果。若添加该参数则输出Phred33碱基质量格式的FASTQ格式文件。即使输入的FASTQ文件是Phred64碱基质量格式,也输出Phred33格式的结果;重叠区域输出两条reads的平均碱基质量,非重叠区域输出各自原本的碱基质量。
-k <int>    default: 2
	设置k-mer序列记录的位置个数。程序通过k-mer序列进行比对,记录k-mer序列出现在reads序列的位置信息。若reads有重复,则k-mer可能出现在一条read的多个地方,程序默认仅记录2个位置信息。该参数设置不能超过10,该值越大越消耗内存和计算,但是应该结果也更准确。最好推荐提高该值,直到FML的错误提示变少。
-o <int>    default: 1
	设置首尾reads最小的重叠碱基长度。作者在软件说明中表示:默认最少有1个碱基重叠,但后续回根据打分能去除重叠较少的结果。实际测试结果中则保留最少有3个碱基重叠的数据。个人推荐根据数据的平均重叠长度设置为5或更高。
-O <int>    default: read length
	设置首尾reads最长的重叠碱基长度。
-t <float>    default: 0.6
	设置最低得分阈值,该参数值在0~1之间。具体的计分方法软件说明书中没有。
-T <int>    default: max
	设置线程数,默认为计算机的最大CPU线程数。若编译PANDAseq软件时使用了pthreads,则支持该参数设置更大的值。由于计算速度可能受到I/O瓶颈,即使设置了很高的参数值,真实可能仅能利用8~16个CPU线程。
-l <int>    default: None
	设置最短序列长度。去除连接后长度低于该值的序列,默认保留所有序列。
-L <int>    default: None
	设置最长序列长度。去除连接后长度高于该值的序列,默认保留所有序列。
-N    default: None
添加该参数,则表示去除连接后含有碱基N的序列。

程序默认在标准输出中给出FASTA或FASTQ的结果数据,在标准错误输出中给出各reads对的重叠信息和统计信息。

统计信息显示每个计算的CPU线程结果,若仅用1个CPU线程,则能直接看到所有数据的统计结果,示例如下,可以看到消耗的时间(ELAPSED)、重叠碱基长度及数量(OVERLAPS,按顺序表示重叠长度为1,2,3…bp的reads对个数)和各reads对数量:输入(READS)、未能找到重叠(NOALGN)、重叠得分低(LOWQ)、多长或过短(BADR)、计算较费时(SLOW)和输出(OK)。

0x1471a80:0     STAT    TIME    Mon Nov 15 09:40:09 2021
0x1471a80:0     STAT    ELAPSED 277
0x1471a80:0     STAT    READS   10220063
0x1471a80:0     STAT    NOALGN  455052
0x1471a80:0     STAT    LOWQ    754593
0x1471a80:0     STAT    BADR    0
0x1471a80:0     STAT    SLOW    2077539
0x1471a80:0     STAT    OK      9010418
0x1471a80:0     STAT    OVERLAPS        0 0 0 0 0 143771 155071 166920 167346 211873 218965 219605 224772 224272 229920 231389 232102 …

常见reads的重叠信息中第三列:

INFO    BESTOLP最优重叠参数。
ERR       LOWQ得分低设定的最低阈值。
DBG       FMLk-mer出现在read中的次数超过了指定的阈值,表示找的重叠可能不准确。