细菌基因组拼接工具比较(二)

2021.3.18
持续更新中。。。
目的:比较下目前常用的四款拼接软件:Velvet、SPAdes、SOAPdenovo、ABySS


1. FastQC —— 质量评估

    FastQC是一款基于Java的软件,它可以快速地对测序数据进行质量评估,并生成网页版的报告。

1.1 使用

fastqc <sequence_1.fastq.gz> <sequence_2.fastq.gz> -o <目录名> -t 线程数

重要参数
1. -o:输出文件目录
2. -t:选择程序运行的线程数

1.2 输出文件

    每个原始数据文件会生成两个文件,一个为html网页文件,一个为.zip*文。打开.html可以查看序列的测序质量情况,分为三个等级:合格项为绿色√,警告是黄色的!,不合格为红色的×。(绿色越多越好)

fastqc质量报告




2. Cutadapt —— 过滤

    Cutadapt是一款用python写的去接头软件,可以去除任意指定的接头和序列,同时也可以用于质量过滤。(实际上原始数据过滤会过滤两种序列:去接头引物、低质量序列)

公司返回的rawdata不含有引物序列,可能含有接头序列,需要进行过滤后进行分析

2.1 下载

conda install cutadapt -y

注意cutadapt(v3.3)的安装环境python版本不能高于3.9

2. 2 使用

cutadapt -a AGATCGGAAGAGCACACGTCTGAACTCCAGTCA -A AGATCGGAAGAGCACACGTCTGAACTCCAGTCA -o sequence_filtered_1.fastq.gz -p sequence_filtered_2.fastq.gz 
-q 20,20 --max-n 0.1 -m 75 sequence_1.fastq.gz sequence_2.fastq.gz

重要参数
1. -a:paired-end测序文件中正向序列文件接头序列(文件1)
2. -A:paired-end测序文件中反向序列文件接头序列(文件2)
3. -o:文件1去接头后的结果文件
4. -p:文件2去接头后的结果文件
5. -q:序列两端碱基质量低于某一数值时被切除,用,隔开,例如:-q 20,20
6. -m:reads1和reads2中切除接头后的序列长度最小值,低于这个数值则去除,例如:-m 75
7. --max-n:N碱基占比一定比例时被去除,例如--max-n 0.1,表示N碱基占read比例到10%时会被去除。
8:最后是两个原始序列文件。

可选参数
1. -- pair-filter=(any|both):any表示read1 和 read2任何一个检测到接头均舍弃;both表示 read1 和 read2 全部检测到接头才舍弃read1 和 read2。(默认any)
2. -O :默认为3,即至少三个碱基配才认为是adapter序列。
3. -e:最大错配比例,默认是0.1。(解释:cutadapt在一条read中检测到20bp的接头序列,那么允许该20bp的接头序列有2个碱基的错配)




3. Kmergenie预测最佳kmer值

    给定一组输入,KmerGenie首先计算多个K值的k-mer丰度直方图。然后,对每个K值,它预测数据集中不同基因组k-mer的数量,并返回这个数字最大化的k-mer长度。

3.1 安装

conda create -n kmer python=2.7 -y
conda install kmergenie 

3.2 使用

kmergenie <fq.list> -o <result> -s 10 -t 10

重要参数:
1. fq.list:包含需要查询的文件,一行一个文件名(文件所在的绝对路径)
2. -o:结果输出的前缀名
3. -l:系统考虑的最小k值(默认:15)
4. -k:系统考虑的最大k值(默认:121)
5. -s:从最小k值到最大k值,每次增加的值(默认:10)
6. -t:线程数

3.3 输出文件

    输出文件中主要看*report.html网页文件,会推算出最合适的kmer值与基因组大小。在这里,我的基因组得出的kmer=111。

话说,kmer值是越大越好还是越小越好呢?




4. 拼接 —— contigs

4.1 ⭐Velvet⭐

    Velvet,基于kmer的序列拼接工具,用于基因组的de novo组装,支持多种格式,局部拼接效果好,不善于连接成scaffold。

4.1.1 安装

conda install velvet -y

如果是编译安装可以选择先修改以下配置文件参数后进行安装:
1. CATEGORIES:根据原始数据相应增减该值的小(一般设置为10)。
2. MAXKMERLENGTH:最大的kmer长度(一般设置为127)。

4.1.2 使用

分为两步执行:

步骤一:利用velveth对数据构建一个hash表

velveth <output> 111 -shortPaired -fastq -separate <sequence_filtered_1.fastq.gz> <sequence_filtered_2.fastq.gz>

重要参数:
1. output:输出文件目录
2. 111:即hash_lenghth,用来设置k-mer的大小。也可以是31,97,2的形式,指分别拼接kmer从31到97,依次增加2的序列(默认:31)
3. -shortPaired:reads的类型。
4. -fastq:输入文件的格式(默认是fasta)。
5. -separate:分开两个文件读入。

步骤二:velvetg进行序列拼接

 velvetg <output> -exp_cov auto -cov_cutoff auto

重要参数:
1. <output>:velveth生成的结果目录
2. -exp_cov:期望的kmer覆盖度,设置成auto用于标准的基因组测序。该参数设置成auto后,-cov_cutoff也许设置成auto。

4.2 ⭐SPAdes⭐

    SPAdes是常用的序列拼接软件之一,支持illumina、PacBio、Nanopore、Sanger、Ion Torrent等测序数据的拼接,同样适合用于混合组装来改善拼接效果(尤其适用于Ion Torrent数据的拼接)

4.2.1 安装

conda install spades -y

4.2.2 使用

spades.py --pe1-1 <sequence_filtered_1.fastq.gz> --pe1-2 <sequence_filtered_2.fastq.gz> -o <spades_out>
-k 111 -t 20 --careful 

重要参数:
1. --pe<#>-1:指定输入文库,其中#表示第几个文库。例如,第一个pairend文库就可以写成--pe1-1,之后接reads1文件。
2. --pe<#>-2:和上面类似,如果是大片段的matepair文库,就使用--mp1-1等。
3. -t:线程数(默认:16)。
4. --careful:减少错误和插入确实,添加此项会消耗更多的时间。
5. -o:输出目录

可选参数:
1. -k:k-mer值列表,数字必须是小于128的奇数。注:若小片段文库(150bp×2)数据量足够(50×+),则推荐使用-k 21,33,55,77(默认:auto)
2. --pacbio:指定pacbio数据输入。
3. --nanopore:指定nanopore数据输入。
4. -m:用于内存限制(默认:250)
5. --phred-offset:碱基质量体系,在数据纠错中会用到,现在illumina数据一般采用phred 33质量体系(默认:auto-detect)。

4.3 ⭐SOAPdenovo⭐

    SOAPdenovo是华大基因开发的SOAP软件包的一部分,主要用于短序列reads拼接,尤其是illumina测序数据。从小的细菌基因组到大的动植物基因组,人基因组都适用。特点是使用起来比较简单,但是却拥有很好的拼接效果,尤其在基因组构建Scaffold方面,效果很好。

4.3.1 安装

conda install soapdenovo2 -y

4.3.2 使用

SOAPdenovo-127mer all -s config_file -K 111 -o soap -d 1 -p 20 

soapdenovo里面有两个执行程序:SOAPdenovo-63merSOAPdenovo-127mer,根据kmer值的大小进行选择。

配置文件config_file的设置

#soapdenovo configure file  
max_rd_len=150 #使用reads的最大长度,一般设置为reads的长度。
[LIB] #文库信息以此开头,如有多个文库,每个文库都需要有一个单独的[LIB]标识符
avg_ins=439 #文库平均插入长度,即测序文库大小,一般取插入文库大小的均值。
reverse_seq=0 #序列是否需要反转。如果是大片段文库,需要设置为1。
asm_flags=3 #组装的标志。1用于构建contig,2用于构建scaffold,3同时用于构建contig和scaffold,4只用于补洞,不用于拼接。(一般小片段文库设置为3,大片段设置为2)
rank=1 #文库使用的优先级。
pair_num_cutoff=3 #可选参数,确定了reads连接成contig或scaffold的阈值。
map_len=32 #可选参数,规定了在map过程中 reads和contig的比对长度必须达到该值(短片断默认:32)
q1=./reads.1.fq.gz #用于连接的数据,支持fasta和fastq格式文件,也支持压缩格式。(结尾不能有空格)
q2=./reads.2.fq.gz

重要参数:
1. -s:接配置文件
2. -o:输出文件的文件名前缀
3. -K:输入kmer的大小
4. -p:线程数(默认:8)
5. -d:去除频数不大于该值的kmer(默认:0)
6. -D: 去除频数不大于该值的由k-mer连接的边(默认:1)
7. -F:利用read对scaffold中的gap进行填补(默认:不执行)

4.4 ⭐ABySS⭐

    ABySS用于从头拼接双端测序短序列或较大基因组序列。

4.4.1 安装

conda install abyss -y

4.4.2 使用

  • 拼接一个paired-end文库
abyss-pe k=111 name=abyss in='sequence_filtered_1.fastq.gz sequence_filtered_2.fastq.gz'

重要参数:
1. k:kmer值
2. name:输出文件名
3. in:两个paired-end文库

  • 拼接多个paired-end文库
abyss-pe k=111 name=ecoli lib='pea peb' pea='pea_1.fa pea_2.fa' peb='peb_1.fa peb_2.fa'



5. 四种拼接软件的比较

5.1 QUAST的安装和使用

conda install quast -y
quast -o <result> <velvet_contig.fa> <abyss_contig.fa> <soapdenovo_contig.fa> <spades_contig.fa> -t 15

重要参数:
1. -o:输出文件目录
2. -t:选择程序运行的线程数
3. -f:指定输入文件格式

5.2 比较结果(contigs)

综合contigs数量、总长度、N50 来看,velvet拼接contig效果最好

4种软件的contigs结果比较

5.2 比较结果(scaffolds)

    除了Velvet软件之外,其他三款软件在拼接contigs的同时也可以拼接成scaffolds。同样综合scaffolds数量、总长度、N50 来看,从paired-end reads数据一次性拼接成scaffolds效果最好的是ABySS。但是在使用abyss的过程中没有找到调整线程数的参数,用时较长。


3种软件的scaffolds结果比较

6. 总结

    Velvet拼接出的159个contigs已经很接近公司反馈的最终结果了,后面再用报告中提到的两款软件试试。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容