生信 | 基因组组装实战(四):组装软件mecat2、flye、wtdbg2、Canu、Falcon

写在前面

  • 以下内容均来自我在菲沙基因(Frasergen)暑期生信培训班上记录的课堂笔记

1.基因组概念

  • 基因组应该指单倍体细胞中包括编码序列和非编码序列在内的全部DNA分子。即核基因组是单倍体细胞核内的全部DNA分子;线粒体基因组则是一个线粒体所包含的全部DNA分子 ;叶绿体基因组则是一个叶绿体所包含的全部DNA分子。

2.三代PacBio数据准备

2.1 数据格式
  • Pacbio平台测序出来的reads,由接头序列, 条码序列, 插入序列间隔线性分布,即ABIB-ABIB—ABIB-ABIB—(A: adapter, B: barcode, I: insert)
├── Sample
│ └── Library(不分文库时文库名为 all)
│ └── Cell
│ ├── *.subreads.bam 用于下游分析的有效数据(相当于clean data)
│ ├── *.subreads.bam.pbi subreads.bam文件的索引文件
│ └── *.xml 测序信息记录文件
2.2 数据格式转换(bam转fq/fa)
conda install -c yuxiang bam2fastq -y
  • bam 转 fastq/ fasta(后缀自动补充为.fastq/ fasta)
bam2fastq *subreads.bam –o *subreads.bam -u
bam2fasta *subreads.bam –o *subreads.bam -u

-u:输出文件不压缩。去掉则输出压缩文件,由于后续需要用到非压缩文件,所以这里加上-u参数,且节省时间

  • 数据量统计(小工具:GNX)
#安装与编译
git clone https://github.com/mh11/gnx-tools.git
mkdir bin
javac -d bin/ src/uk/ac/ebi/gnx/*
ant -f package.xml
java -jar gnx.jar
#使用
java -jar gnx.jar all_subreads.bam.fasta > N50
cat N50

3.基因组组装

3.1 使用Mecat2进行基因组组装
  • 软件介绍
Mecat2软件介绍
  • 使用git安装并编译
git clone https://github.com/xiaochuanle/MECAT2.git 
cd MECAT2 
make 
  • 新建配置文件config_file.txt
vi config_file.txt
  • 填写内容如下:
PROJECT=test
RAWREADS= /local_data1/all_subreads.bam.fasta #从bam转过来的fasta文件
GENOME_SIZE= 12251230  #根据《生信 | 基因组组装实战(三):Kmer评估基因组》来确定
THREADS=15   #线程数
MIN_READ_LENGTH=2000 
CNS_OVLP_OPTIONS="-kmer_size 13" 
CNS_PCAN_OPTIONS="-p 100000 -k 100" CNS_OPTIONS="" 
CNS_OUTPUT_COVERAGE=30  #根据菲沙基因老师的经验,30-45范围较好,可以多次调整
TRIM_OVLP_OPTIONS="-skip_overhang" 
TRIM_PM4_OPTIONS="-p 100000 -k 100" 
TRIM_LCR_OPTIONS="" 
TRIM_SR_OPTIONS="" 
ASM_OVLP_OPTIONS="" 
FSA_OL_FILTER_OPTIONS="--max_overhang=-1 --min_identity=-1" 
FSA_ASSEMBLE_OPTIONS="" 
CLEANUP=0

\color{red}{注}:以上\color{red}{\#}前面的内容根据自己的需求修改,其他默认即可

  • 保存配置后,运行程序\color{green}{mecat.pl}
MECAT2/Linux-amd64/bin/mecat.pl correct config_file.txt
MECAT2/Linux-amd64/bin/mecat.pl assemble config_file.txt
  • MECAT2运行结果
    【4-fsa】目录下的【contigs.fasta】为结果文件


    MECAT2运行结果
3.2 使用Flye进行基因组组装
  • 软件简介
Flye软件简介
  • 使用git安装并编译
git clone https://github.com/fenderglass/Flye
cd Flye
make
  • 使用方法
Flye/bin/flye \
--pacbio-raw 
/local_data1/all_subreads.bam.fasta \
--out-dir test \
--genome-size 12251230 \  #根据需要请修改
--threads 10
  • 结果文件
Flye结果文件
3.3 使用wtdbg2进行基因组组装
  • 软件简介
wtdbg2软件简介
  • 使用git安装并编译
git clone https://github.com/ruanjue/wtdbg2 
cd wtdbg2
make
  • 软件使用
#quick start with wtdbg2.pl 
./wtdbg2.pl -t 16 -x rs -g 12m -o dbg reads.fa 
# Step by step commandlines # assemble long reads 
./wtdbg2 -x rs -g 4.6m -i reads.fa.gz -t 16 -fo dbg 
# derive consensus 
./wtpoa-cns -t 16 -i dbg.ctg.lay.gz -fo dbg.raw.fa 
# polish consensus, not necessary if you want to polish the assemblies using other tools 
minimap2 -t16 -ax map-pb -r2k dbg.raw.fa reads.fa.gz | samtools sort -@4 >dbg.bam 
samtools view -F0x900 dbg.bam | ./wtpoa-cns -t 16 -d dbg.raw.fa -i - -fodbg.cns.fa 
# Addtional polishment using short reads 
bwa index dbg.cns.fa 
bwa mem -t 16 dbg.cns.fa sr.1.fa sr.2.fa | samtools sort -O SAM | ./wtpoa-cns -t 16 -x 
sam-sr -d dbg.cns.fa -i - -fo dbg.srp.fa
  • 结果文件
wtdbg2结果文件
3.4 使用Canu进行基因组组装
Canu运行流程
  • 使用conda安装
conda install -c bioconda canu -y
  • 软件使用,来源不同的数据使用不同代码
#For PacBio:
canu -p ecoli -d ecoli-pacbio genomeSize=4.8m -pacbio-raw pacbio.fastq
#For Nanopore:
canu -p ecoli -d ecoli-oxford genomeSize=4.8m -nanopore-raw oxford.fasta
#Assembling PacBio HiFi with HiCanu:
canu -p asm -d ecoli_hifi genomeSize=4.8m -pacbio-hifi ecoli.fastq
#Trio Binning Assembly:
canu -p asm -d ecoliTrio genomeSize=5m \
 -haplotype K12 K12.parental.fasta \
 -haplotype O157 O157.parental.fasta \
 -pacbio-raw F1.fasta

-p 指定输出前缀
-d 指定输出结果目录
genomeSize 设置一个预估的基因组大小,便于让Canu估计测序深度,单位是K,M,G
maxThreads 设置最大线程数
-pacbio-raw 直接测序得到的原始pacbio数据
-pacbio-corrected 经过纠正的pacbio数据
-nanopore-raw 原始的nanopore数据
-nanopore-corrected 结果纠正的nanopore数据
rawErrorRate 设置两个未纠错read之间最大期望差异碱基数
correctedErrorRate 设置纠错后read之间最大期望差异碱基数
minReadLength 设置最小使用的reads长度
minOverlapLength 设置Overlap的最小长度

3.5 使用Falcon进行基因组组装
falcon软件组装原理
  • 使用conda安装软件
conda install -c conda-forge falcon -y
  • 软件使用,和mecat2一样,关键就是弄好配置文件。比较好的做法是去官网下载合适的配置文件,然后将其中的某些参数稍加修改即可。如我下载植物的fc_run_plant.cfg
wget https://pb-falcon.readthedocs.io/en/latest/_downloads/fc_run_plant.cfg
cat fc_run_plant.cfg
[General]
input_fofn = input.fofn
input_type = raw
stop_all_jobs_on_failure = False
length_cutoff = 5000
genome_size = 1400000000
seed_coverage = 30
length_cutoff_pr = 4000
sge_option_da = -pe smp 5 -q bigmem
sge_option_la = -pe smp 20 -q bigmem
sge_option_pda = -pe smp 6 -q bigmem 
sge_option_pla = -pe smp 16 -q bigmem
sge_option_fc = -pe smp 24 -q bigmem
sge_option_cns = -pe smp 12 -q bigmem
pa_concurrent_jobs = 96
cns_concurrent_jobs = 96
ovlp_concurrent_jobs = 96
pa_HPCdaligner_option =  -v -B128 -M32 -e.70 -l4800 -s100 -k18 -h480 -w8 
ovlp_HPCdaligner_option = -v -B128 -M32 -h1024 -e.96 -l2400 -s100 -k18
#下面两行其中的参数在下面介绍
pa_DBsplit_option = -a -x500 -s400
ovlp_DBsplit_option = -s400
falcon_sense_option = --output_multi --min_idt 0.70 --min_cov 2 --max_n_read 200 --n_core 8 
falcon_sense_skip_contained = True
overlap_filtering_setting = --max_diff 100 --max_cov 100 --min_cov 2 --n_core 12

常规参数:
input_fofn = input.fofn 指出所有输入数据,路径+文件名
input_type = raw ( 或preads ) 标明序列类型,即是否已经完成了错误修正
length_cutoff = 10000 用于错误修正的种子序列的最低长度
length_cutoff_pr = 10000 用于构建重叠的预组装种子序列的最低长度
b 如果基因组组分有偏好性(例如65% AT rich)应该设置b参数。
M 参数控制内存, l默认是1000,低于这个长度的序列丌用比对
S 默认是100,输出点也可以设置成500提高速度,也有1000
E 准确性默认是0.7一般的设置成0.75
B 参数决定一个job中包含的block之间比对的数目
T 参数是控制在一个block里一个kmer出现的最多次数,这个参数有的设置8,12,16.这个值
越小速度越快。
k(kmer) 要小于32,线程数目T默认是4.

  • 保存配置文件后,直接执行fc_run.py脚本即可
fc_run.py fc_run.cfg
  • 结果文件较多,具体在官网查看,组装的结果文件在下面
falcon_job/
    ├── 0-rawreads/     # Raw read error correction directory
组装报告   └── report/   # pre-assembly stats
    ├── 1-preads_ovl/   # Corrected read overlap detection
    ├── 2-asm-falcon/   # String Graph Assembly
结果文件   └── a_ctg_all.fa   # all associated contigs, including duplicates
结果文件   └── a_ctg.fa    # De-duplicated associated fasta file
    ├── mypwatcher/     # Job scheduler logs
    ├── scripts/
    └── sge_log/        # deprecated

写在最后

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

推荐阅读更多精彩内容