宏基因组SOAPdenovo组装

SOAPdenovo特点

宏基因组denovo组装软件中SOAPdenovo(http://soap.genomics.org.cn/soapdenovo)的使用较为广泛,其具有组装速度快,N50值较好的优点。John Vollmers等人总结了8款宏基因组组装软件的相关信息和特点(DOI:10.1371/journal.pone.0169662),如下表。

宏基因组SOAPdenovo组装-图片1

SOAPdenovo组装原理

DOI: 10.1101/gr.097261.109

宏基因组SOAPdenovo组装-图片2

A)基因组总DNA被随机打断,采用双端测序。可考虑建150-500bp的小片段文库和2-10kb的大片段文库;

B)Reads读入后,reads都被切割成某一固定Kmer长度的序列(21bp~127bp),基于Kmer采用de Bruijn数据结构构建Reads间的重叠关系;

C) de Bruijn数据结构图中会产生tips (翼尖)、bubbles (气泡)、low coverage links (低覆盖率链接)、tiny repeat (微小重复)等问题

a.删去tips的短末端

b.删去低覆盖率链接

c.调整read路径解决微小重复

d.删去由重复或者二倍体染色体组的混杂造成bubbles结构;

D)在简化后de Bruijn数据结构图的重复节点打断,输出contigs序列;

E)配对的双端reads比对contigs,基于插入片段长度将单一contigs连成scaffolds;

F)通过配对的双端reads来填补scaffolds中的gaps。

故,SOAPdenovo包含6个工具:pregraph、sparse_pregraph、contig、map、scaffold和all,其中all包括前5个工具。

组装过程

准备测序原始数据。

  1. mkdir 0.raw_data
  2. cd 0.raw_data
  3. gzip -dc ../0.initial_data/A_1.fq.gz > A.1.fastq
  4. gzip -dc ../0.initial_data/A_2.fq.gz > A.2.fastq
  5. gzip -dc ../0.initial_data/B_1.fq.gz > B.1.fastq
  6. gzip -dc ../0.initial_data/B_2.fq.gz > B.2.fastq
  7.  
  8. for i in `ls *.1.fastq`
  9. do
  10. i=${i/.1.fastq/}
  11. echo $i
  12. done > ../samples.txt
  13. cd ..

NGSQCToolkit

使用NGSQCToolkit(http://www.nipgr.res.in/ngsqctoolkit.html)去除低质量序列得到Clean Data

1) 去除接头序列;
2) 去除所含低质量碱基(质量值≤13)超过40%的 reads;
3) 去除 N 碱基达到5%的 reads。

NGSQCToolkit包括三部分:QC,Triming,Statistics。使用QC中IlluQC.pl去除低质量序列,使用Triming中AmbiguityFiltering.pl去除N碱基较多序列。

  1. mkdir 1.sequencing_data_quality_control
  2. cd 1.sequencing_data_quality_control
  3.  
  4. # prepare adaptor cluster
  5. echo "AATGATACGGCGACCACCGAGATCTACACTCTTTCCCTACACGACGCTCTTCCGATCT
  6. CAAGCAGAAGACGGCATACGAGATCGGTCTCGGCATTCCTGCTGAACCGCTCTTCCGATCT
  7. AATGATACGGCGACCACCGAGATCTACACTCTTTCCCTACACGACGCTCTTCCGATCT
  8. AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTAGATCTCGGTGGTCGCCGTATCATT
  9. CAAGCAGAAGACGGCATACGAGATCGGTCTCGGCATTCCTGCTGAACCGCTCTTCCGATCT
  10. AGATCGGAAGAGCGGTTCAGCAGGAATGCCGAGACCGATCTCGTATGCCGTCTTCTGCTTG
  11. TTTTTTTTTTAATGATACGGCGACCACCGAGATCTACAC
  12. TTTTTTTTTTCAAGCAGAAGACGGCATACGA
  13. TACACTCTTTCCCTACACGACGCTCTTCCGATCT
  14. GTGACTGGAGTTCAGACGTGTGCTCTTCCGATCT
  15. TACACTCTTTCCCTACACGACGCTCTTCCGATCT
  16. AGATCGGAAGAGCGTCGTGTAGGGAAAGAGTGTA
  17. GTGACTGGAGTTCAGACGTGTGCTCTTCCGATCT
  18. AGATCGGAAGAGCACACGTCTGAACTCCAGTCAC" > primer_adaptor.txt
  19.  
  20. # remove low quality reads
  21. for i in `cat ../samples.txt`
  22. do
  23. echo "/opt/biosoft/NGSQCToolkit_v2.3.3/QC/IlluQC_PRLL.pl -pe ../0.raw_data/$i.1.fastq ../0.raw_data/$i.2.fastq primer_adaptor.txt 1 -l 60 -s 13 -c 8 -o $i"
  24. done > command.remove_low_quality_reads.list
  25. ParaFly -c command.remove_low_quality_reads.list -CPU 4
  26.  
  27. # remove non-ATCG reads
  28. for i in `cat ../samples.txt`
  29. do
  30. echo "/opt/biosoft/NGSQCToolkit_v2.3.3/Trimming/AmbiguityFiltering.pl -i ./$i/$i.1.fastq_filtered -irev ./$i/$i.2.fastq_filtered -p 5"
  31. done > command.remove_non-ATCG_reads.list
  32. ParaFly -c command.remove_non-ATCG_reads.list -CPU 4
  33. cd ..

使用SOAPdenovo对样品单独组装

1)对于单个样品,组装时选取 Kmer=55,81,101 等不同值进行组装,比较 N50 的优劣,选取最优结果。通常建议Kmer值为reads长度的55%~85%。

2)将组装得到的 Scaffolds 从 N 连接处打断,得到不含 N 的 Scaftigs序列(continuous sequences within scaffolds);

3)采用 SoapAligner 软件将质控后的 Clean Data 比对至各样品组装后的 Scaftigs 上,获取未被利用上的 reads用于后续混合组装;

4)过滤掉单样品的 Scaftigs 中 500bp 以下的片段用于后续分析。

  1. mkdir 2.genome_assembling/SOAPdenovo -p
  2. cd 2.genome_assembling/SOAPdenovo
  3. for i in `cat ../../samples.txt`
  4. do
  5. echo "ln -s ../../1.sequencing_data_quality_control/$i/$i.1.fastq_filtered_trimmed $i.1.fastq"
  6. echo "ln -s ../../1.sequencing_data_quality_control/$i/$i.2.fastq_filtered_trimmed $i.2.fastq"
  7. done > command.copy_data.list
  8. sh command.copy_data.list
  9.  
  10. echo "max_rd_len=150
  11. [LIB]
  12. avg_ins=300
  13. reverse_seq=0
  14. asm_flags=3
  15. rd_len_cutoff=150
  16. rank=1
  17. pair_num_cutoff=3
  18. map_len=32
  19. q1=$HOME/2.genome_assembling/SOAPdenovo/A.1.fastq
  20. q2=$HOME/2.genome_assembling/SOAPdenovo/A.2.fastq" > A_config.txt
  21.  
  22. mkdir A
  23. SOAPdenovo-127mer all -s A_config.txt -o ./A/A -K 81 -d 1 -M 3 -p 8 -R -u -F &> A_soapdenovo.log
  24.  
  25. cd A
  26. fasta_no_blank.pl A.scafSeq > A.scafSeq.noblank && cp A.scafSeq.noblank A.Scaftigs && perl -p -i -e "s/N+/\r\n>\r\n/g" A.Scaftigs
  27. rename_fasta_identifiers.pl A.Scaftigs > A.Scaftigs.rename
  28. genome_seq_clear.pl --seq_prefix A_Scaftigs_500 --min_length 500 A.Scaftigs.rename > A_Scaftigs_500.fasta
  29.  
  30. cd ..
  31.  
  32. #mapping to get unpaired reads
  33. /opt/biosoft/SOAPaligner/soap2.21release/2bwt-builder A.Scaftigs.rename
  34. /opt/biosoft/SOAPaligner/soap2.21release/soap -a ../../../2.genome_assembling/SOAPdenovo/A.1.fastq -b ../../../2.genome_assembling/SOAPdenovo/A.2.fastq -D A.Scaftigs.rename.index -o A_PE_output -u A_unmap_output -2 A_SE_output -m 200 -p 20
  35.  
  36. echo "max_rd_len=150
  37. [LIB]
  38. avg_ins=300
  39. reverse_seq=0
  40. asm_flags=3
  41. rd_len_cutoff=150
  42. rank=1
  43. pair_num_cutoff=3
  44. map_len=32
  45. q1=$HOME/2.genome_assembling/SOAPdenovo/B.1.fastq
  46. q2=$HOME/2.genome_assembling/SOAPdenovo/B.2.fastq" > B_config.txt
  47.  
  48. mkdir B
  49. SOAPdenovo-127mer all -s B_config.txt -o ./B/B -K 81 -d 1 -M 3 -p 8 -R -u -F &> B_soapdenovo.log
  50.  
  51. cd N
  52. fasta_no_blank.pl B.scafSeq > B.scafSeq.noblank && cp B.scafSeq.noblank B.Scaftigs && perl -p -i -e "s/N+/\r\n>\r\n/g" B.Scaftigs
  53. rename_fasta_identifiers.pl B.Scaftigs > B.Scaftigs.rename
  54. genome_seq_clear.pl --seq_prefix B_Scaftigs_500 --min_length 500 B.Scaftigs.rename > B_Scaftigs_500.fasta
  55.  
  56. #mapping to get unpaired reads
  57. /opt/biosoft/SOAPaligner/soap2.21release/2bwt-builder B.Scaftigs.rename
  58. /opt/biosoft/SOAPaligner/soap2.21release/soap -a ../../../2.genome_assembling/SOAPdenovo/B.1.fastq -b ../../../2.genome_assembling/SOAPdenovo/B.2.fastq -D B.Scaftigs.rename.index -o B_PE_output -u B_unmap_output -2 B_SE_output -m 200 -p 20
  59.  
  60. cd ..

Unmapped Reads混合组装

没有参与组装的测序数据被称为unmapping reads,一般不会参与后续分析。unmapping reads的舍弃直接导致宏基因组数据利用的不完整性。因此,Qin J等提出混合组装。其可以充分利用测序数据,同时有助于挖掘低丰度物种信息。

1)单个样品中未被利用上的reads用于后续混合组装,参数同单个样品组装;

2)将混合组装的 Scaffolds 从 N 连接处打断,得到不含 N 的 Scaftigs 序列;

3)过滤掉混合组装的 Scaftigs 中 500bp 以下的片段用于后续分析。

  1. mkdir Mix
  2. cd Mix
  3. cat $HOME/2.genome_assembling/SOAPdenovo/A/A_unmap_output $HOME/2.genome_assembling/SOAPdenovo/B/B_unmap_output > Mix_seq
  4. echo "max_rd_len=150
  5. [LIB]
  6. avg_ins=300
  7. reverse_seq=0
  8. asm_flags=3
  9. rd_len_cutoff=150
  10. rank=1
  11. pair_num_cutoff=3
  12. map_len=32
  13. p=$HOME/2.genome_assembling/SOAPdenovo/Mix_seq" > Mix_config.txt
  14.  
  15. SOAPdenovo-127mer all -s Mix_config.txt -o ./Mix -K 81 -d 1 -M 3 -p 8 -R -u -F &> Mix_soapdenovo.log
  16.  
  17. fasta_no_blank.pl Mix.scafSeq > Mix.scafSeq.noblank && cp Mix.scafSeq.noblank Mix.Scaftigs && perl -p -i -e "s/N+/\r\n>\r\n/g" Mix.Scaftigs
  18. rename_fasta_identifiers.pl Mix.Scaftigs > Mix.Scaftigs.rename
  19. genome_seq_clear.pl --seq_prefix Mix_Scaftigs_500 --min_length 500 Mix.Scaftigs.rename > Mix_Scaftigs_500.fasta

参数说明

  1. -s string 配置文件
  2. -p int 程序运行时设定的cpu线程数,默认值[8]
  3. -o string 输出的文件名前缀
  4. -K int 输入的K-mer值大小,K-mer值必须是奇数,默认值[23]
  5. -a int 假设初始化内存,为了避免进一步的再分配,默认[0G]
  6. -d int 为了减少错误测序的影响,去除kmers频数不大于该值(kmerFreqCutoff)的k-mer,默认值[0]
  7. -R (optional) 利用read鉴别短的重复序列,默认值[NO]
  8. -D int 为了减少错误测序的影响,去除频数不大于该值的由k-mer连接的边,默认值[1]
  9. -M int contiging时,合并相似序列的强度,最小值0,最大值3,默认值为[1]
  10. -e int 两边缘之间的弧的权重大于该值,将被线性化,默认值[0]
  11. -m int 最大的kmer sizemax 127)用于multi-kmer,默认[NO]
  12. -E (optional) iterate迭代之前,合并clean bubble功能,仅在当使用multi-kmer时且设置-M参数,默认[NO]
  13. -F (optional) 利用readscaffold中的gap进行填补,默认[NO]
  14. -u (optional) 构建scaffolding前不屏蔽高/低覆盖度的contigs,高频率覆盖度指平均contig覆盖深度的2倍。默认[屏蔽]
  15. -w (optional) scaffold中,保持contigs弱连接于其他contigs,默认[NO]
  16. -G int 估计gap的大小和实际补gap的大小的差异值,默认值[50bp]
  17. -L int 用于构建scaffoldcontig的最短长度(minContigLen),默认为:[Kmer参数值+2]
  18. -c float scaffolding之前,contigs小于100bp,且覆盖率小于该最小contig覆盖率(c*avgCvg),将被屏蔽,除非参数-u已设定,默认值[0.1]
  19. -C float scaffolding之前,contigs覆盖率大于该最大contigs覆盖率(C*avgCvg),或者contigs小于100bp且覆盖率大于0.8*(C*avgCvg),将被屏蔽,除非参数-u已设定,默认值[2]
  20. -b float 当处理contigs间的pair-end连接时,如果参数>1,该插入片段的上限值(b*avg_ins)将被用来作为大的插入片段(>1000)的上限,默认值[1.5]
  21. -B float 如果两个contigs的覆盖率都小于bubble覆盖率(bubbleCoverage)乘以contigs平均覆盖率(bubbleCoverage*avgCvg),则去除在bubble结构中的低覆盖率contig,默认值[0.6]
  22. -N int 统计基因组大小,默认值[0]
  23. -V (optional) 输出相关信息(Hawkeye)为了可视化组装,默认[NO]

配置文件

  1. max_rd_len=150 #read的最大长度
  2. [LIB] #文库信息以此开头
  3. avg_ins=300 #文库平均插入长度
  4. reverse_seq=0 #序列是否需要被反转,插入片段大于等于2k的采用了环化,所以对于插入长度大于等于2k文库,序列需要反转,reverse_seq=1,小片段设为0
  5. asm_flags=3 #设为1:reads只用于只构建contig;设为2:reads只用于构建scaffold;设为3:reads同时用于构建contig和scaffold;设为4:reads只用于补洞gap
  6. rank=1 #rank该值取整数,值越低,reads越优先用于构建scaffold
  7. pair_num_cutoff=3 #该参数规定了连接两个contig或者是pre-scaffold 的可信连接的阈值,即,当连接数大于该值,连接才算有效。小片段文库(<2k)默认值[3],大片段文库默认值[5]。
  8. map_len=32 #该参数规定了在map过程中reads和contig的比对长度必须达到该值才能作为一个可信的比对。小片段文库一般设32,大片段文库一般设35,默认值[K+2]。
  9. q1=$DATA_PATH/read_1.fq
  10. q2=$DATA_PATH/read_2.fq #双端fastq序列,写绝对路径
  11. f1=./pathfasta_read_1.fa
  12. f2=./pathfasta_read_2.fa #双端fasta序列,写绝对路径
  13. q=./pathfastq_read_single.fq #单向fastq
  14. f=./pathfasta_read_single.fa #单向fasta
  15. p=./pathpairs_in_one_file.fa #双向测序得到的一个fasta格式的序列文件

输出文件

SOAPdenovo中四部分别对应的输出文件:

pregraph  *.kmerFreq *.edge *.preArc *.markOnEdge *.path *.vertex *.preGraphBasic

contig   *.contig *.ContigIndex *.updated.edge *.Arc

map     *.readOnContig *.peGrads *.readInGap

scaff    *.newContigIndex *.links *.scaf *.scaf_gap *.scafSeq *.gapSeq

关键文件如下:

*.contig            #没有使用连Scaffold的contig序列

*.scafSeq          #SOAPdenovo软件最终的组装序列结果

*.scafStatistics      #contigs和scaffolds的最终统计信息

*.Scaftigs          #打断N后的Scaftigs序列

*.Scaftigs_500.fasta  #长度大于500bp的Scaftigs序列

发表评论

匿名网友

拖动滑块以完成验证
加载失败