前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Pilon | 利用二代测序数据优化三代测序数据组装结果

Pilon | 利用二代测序数据优化三代测序数据组装结果

作者头像
生信real
发布2022-08-18 09:03:58
2.6K0
发布2022-08-18 09:03:58
举报
文章被收录于专栏:Linux基础入门

前言

三代测序错误率比较高,一般组装后需要进行纠错来提高准确度。本次介绍使用Pilon通过引入二代测序数据来对三代基因组进行纠错,此外Pilon还支持对二代测序数据拼接结果进行纠错。

Pilon官网

代码语言:javascript
复制
https://github.com/broadinstitute/pilon/wiki

Pilon软件安装

代码语言:javascript
复制
# conda安装pilon
conda install -y pilon
代码语言:javascript
复制
# 编译安装
wget https://github.com/broadinstitute/pilon/releases/download/v1.24/pilon-1.24.jar
chomd 755 pilon-1.24.jar

Tips:如果wget无法下载建议用浏览器下载后自行传入服务器

Pilon示例数据下载

代码语言:javascript
复制
# 下载二代测序数据用于纠错
wget \
-O illumina.sra \
https://sra-pub-run-odp.s3.amazonaws.com/sra/SRR8482586/SRR8482586

Tips: 本期需要纠错的基因组选择上期推文中Flye组装的nanopore数据进行演示,即下文中出现的assembly.fasta

Pilon示例数据处理

代码语言:javascript
复制
fastq-dump --split-files --gzip illumina.sra

Tips: fastq-dump会将sra格式转化成fastq格式,同时--gzip参数会对fastq进行压缩,示例illumina.sra最终会被转化为illumina_1.fastq.gz 和 illumina_2.fastq.gz

Pilon常用参数

代码语言:javascript
复制
# 输入参数
--genome : 输入基因组序列文件,即需要纠错的文件;
--frags : 输入Illumina小片段文库(FR方向)测序数据比对到参考基因上的BAM文件路径。该BAM文件是需要按coordinate排序,且具有.bai索引;
--jumps : 输入Illumina大片段文库(RF方向)测序数据比对到参考基因上的BAM文件路径。该BAM文件是需要按coordinate排序,且具有.bai索引;
--unpaired : 输入Illumina单端测序数据比对到参考基因上的BAM文件路径。该BAM文件是需要按coordinate排序,且具有.bai索引;
--bam : 输入未知类型的Illumina测序数据比对到参考基因上的BAM文件路径。该BAM文件是需要coordinate排序,且具有.bai索引。程序能自动识别测序文库类型。
# 输出参数
--output : 设置输出文件前缀;
--outdir : 设置输出文件夹路径;
--changes : 加入该参数会生成一个包含基因组序列改变信息的文本文件;
--vcf : 加入该参数后,会生成一个vcf格式文件;
# 运行参数
--fix : 该参数用于设定pilon对基因组进行指定类型的修正,该参数的值是用逗号分隔的多个单词。pilon可以对基因组进行多种类型的修正。
--threads : 设置线程数

Tips: --fix参数选择:snps,修正单碱基错误;indels,修正小的插入缺失错误;gaps,补洞处理;local,检测序列中的组装错误,并进行基因组局部再组装,从而对错误进行修正;all,修正以上4种错误;none,不进行错误修正,同时也不生成新的FASTA文件;amb,修正ambiguous碱基;breaks,在修正local错误时,会进行基因组局部再组装,此过程中允许插入gap;novel,允许利用未能比对到基因组序列上的小片段文库数据组装出新的基因组序列。

Pilon使用案例

Tips: 示例使用的是conda安装的Pilon

代码语言:javascript
复制
# 对拼接结果建立索引(如何获得assembly.fasta详见Flye三代基因组推文)
bwa index assembly.fasta
# illumina与assembly.fasta进行比对,生成assembly_illumina.sam结果文件
bwa mem -t 12 assembly.fasta  illumina_1.fastq.gz illumina_2.fastq.gz > assembly_illumina.sam
# 将assembly_illumina.sam进行排序,生成assembly_illumina.sorted.bam 文件
samtools sort -@ 12 -O bam -o assembly_illumina.sorted.bam assembly_illumina.sam
# 对排序后的文件建立索引,生成assembly_illumina.sorted.bam.bai文件
samtools index assembly_illumina.sorted.bam
# 运行Pilon
pilon --genome assembly.fasta \
--fix all  \
--changes  \
--frags assembly_illumina.sorted.bam  \
--output pilon  \
--outdir pilon_result \
--vcf

Tips:如果使用自行编译的Pilon,需要将其加入环境变量后使用或者使用Pilon的绝对路径,绝对路径根据自己安装的位置而定,示例中的安装地址是/opt/biosoft/GENOME/pilon/pilon-1.23.jar,用法如下:

代码语言:javascript
复制
java -jar  \
/opt/biosoft/GENOME/pilon/pilon-1.23.jar  \
--genome assembly.fasta  \
--fix all  \
--changes  \
--frags assembly_illumina.sorted.bam  \
--output pilon  \
--outdir pilon_result   \
--vcf

Tips: 软件运行过程中可能会遇到下面的报错信息,这是由于软件设定的内存不足造成的

代码语言:javascript
复制
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
 at org.broadinstitute.pilon.BaseSum.<init>(BaseSum.scala:24)
 at org.broadinstitute.pilon.PileUp.<init>(PileUp.scala:27)
 at org.broadinstitute.pilon.PileUpRegion.$anonfun$new$1(PileUpRegion.scala:30)
 at org.broadinstitute.pilon.PileUpRegion$$Lambda$52/0x0000000100178840.apply$mcVI$sp(Unknown Source)
 at scala.collection.immutable.Range.foreach$mVc$sp(Range.scala:190)
 at org.broadinstitute.pilon.PileUpRegion.<init>(PileUpRegion.scala:30)
 at org.broadinstitute.pilon.GenomeRegion.initializePileUps(GenomeRegion.scala:150)
 at org.broadinstitute.pilon.GenomeFile.$anonfun$processRegions$4(GenomeFile.scala:104)
 at org.broadinstitute.pilon.GenomeFile.$anonfun$processRegions$4$adapted(GenomeFile.scala:102)
 at org.broadinstitute.pilon.GenomeFile$$Lambda$51/0x0000000100169840.apply(Unknown Source)
 at scala.collection.immutable.List.foreach(List.scala:333)
 at org.broadinstitute.pilon.GenomeFile.processRegions(GenomeFile.scala:102)
 at org.broadinstitute.pilon.Pilon$.main(Pilon.scala:111)
 at org.broadinstitute.pilon.Pilon.main(Pilon.scala)

解决办法如下:

代码语言:javascript
复制
# 查询pilon路径
which pilon
# 修改pilon配置
vim /home/miniconda3/envs/NGS/bin/pilon

修改下图红色框,将 -Xmsg和-Xmx对应的数值调大,再次运行即可成功。

Pilon主要结果文件

代码语言:javascript
复制
pilon.changes  # 该文件列出了纠错的位点
pilon.fasta  # 最终纠错后文件

查看Pilon纠错效果

代码语言:javascript
复制
# 有多少行代表有多少错误被纠正
wc -l  pilon.changes
# 统计纠错前后文件信息
seqkit stats pilon.fasta assembly.fasta

Tips: 建议多次迭代运行Pilon进行纠错,尽可能修正更多的错误位点。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信百宝箱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • Pilon官网
      • Pilon软件安装
        • Pilon示例数据下载
          • Pilon示例数据处理
            • Pilon常用参数
              • Pilon使用案例
                • Pilon主要结果文件
                  • 查看Pilon纠错效果
                  相关产品与服务
                  云服务器
                  云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档