Pilon | 基因组纠错

作者: 生信百宝箱 | 来源:发表于2022-07-12 16:09 被阅读0次

    前言

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

    Pilon官网

    https://github.com/broadinstitute/pilon/wiki
    

    Pilon软件安装

    #conda 安装pilon
    conda install -y pilon
    
    #编译安装
    wget https://github.com/broadinstitute/pilon/releases/download/v1.24/pilon-1.24.jar
    chomd 755 pilon-1.24.jar
    

    Pilon示例数据下载

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

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

    Pilon示例数据处理

    fastq-dump --split-files --gzip illumina.sra
    

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

    Pilon常用参数

    --genome : 设置需要纠错的基因组
    --fix : 参数可选snps、indels、gaps、local、all等(默认all)
    --changes : 列出纠错位点
    --frags : 输入paired-end比对文件(不同测序数据该选项不同,具体查看该软件帮助文档;若不知道,可直接使用--bam
    --output : 输入结果前缀
    --outdir : 输出文件
    --vcf : 生成vcf格式文件
    

    Pilon使用案例

    示例使用的是conda安装的Pilon

    #对拼接结果建立索引(如何获得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
    #运行Pilon
    pilon --genome assembly.fasta --fix all --changes --frags assembly_illumina.sorted.bam --output pilon --outdir pilon_result  --vcf
    

    可能会遇到下面的报错信息,这是由于软件设定的内存不足造成的

    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)
    

    解决办法如下:

    #查询pilon路径
    which pilon
    #修改pilon配置
    vim /home/xiaoli/miniconda3/envs/NGS/bin/pilon
    

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

    pilon debug.png

    Pilon主要结果文件

    pilon.changes  #该文件列出了纠错的位点
    pilon.fasta  #最终纠错后文件
    

    查看Pilon纠错效果

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

    PS.纠错可以进行多次,即:将第一次纠错结果作为第二次需要纠错的文件再次纠错

    相关文章

      网友评论

        本文标题:Pilon | 基因组纠错

        本文链接:https://www.haomeiwen.com/subject/epiybrtx.html