使用Pilon对基因组进行polish

简介: 软件安装官方提供了编译好的jar包,方便使用wget https://github.com/broadinstitute/pilon/releases/download/v1.22/pilon-1.22.jarjava -Xmx16G -jar pilon-1.22.jar如果要顺利运行程序,要求JAVA > 1.7, 以及根据基因组大小而定的内存,一般而言是1M大小的基因对应1GB的内存。

软件安装

官方提供了编译好的jar包,方便使用

wget https://github.com/broadinstitute/pilon/releases/download/v1.22/pilon-1.22.jar
java -Xmx16G -jar pilon-1.22.jar

如果要顺利运行程序,要求JAVA > 1.7, 以及根据基因组大小而定的内存,一般而言是1M大小的基因对应1GB的内存。

总览

Pilon有如下作用

  1. 对初步组装进行polish
  2. 寻找同一物种不同株系间的变异,包括结构变异检测

他以FASTA和BAM文件作为输入,根据比对结果对输入的参考基因组进行提高,包括

  • 单碱基差异
  • 小的插入缺失(indels)
  • 较大的插入缺失或者block替换时间
  • 填充参考序列中的N
  • 找到局部的错误组装

最后它输出polish后的FASTA文件, 以及包含变异信息的VCF文件(可选)

分析流程

推荐使用PCR-free建库测序得到的Illumina paired-end数据,这样子避免了PCR-duplication,有效数据更多,也不需要在分析过程中标记重复。

下面步骤,假设你的组装文件为draft.fa, 质量控制后的illumina双端测序数据分别为read_1.fq.gzread_2.fq.gz

第一步:比对

bwa index -p index/draft draft.fa
bwa mem -t 20 index/draft read_1.fq.gz read_2.fq.gz | samtools sort -@ 10 -O bam -o align.bam
samtools index -@ 10 align.bam

第二步:标记重复(非PCR-free建库)

sambamba markdup -t 10 align.bam align_markdup.bam

第三步:过滤高质量比对的read

samtools view -@ 10 -q 30 align_markdup.bam > align_filter.bam
samtools index -@ 10 align_filter.bam

第三步:使用Pilon进行polish

MEMORY= #根据基因组大小而定
java -Xmx${MEMORY}G -jar pilon-1.22.jar --genome draft.fa --frags align_filer.bam \
    --fix snps,indels \
    --output pilon_polished --vcf &> pilon.log

一般Pilon迭代个2到3次就够了,所谓事不过三,过犹不及。

关于Pilon的一些参数说明:

  • --frags表示输入的是1kb以内的paired-end文库,--jumps表示 大于1k以上的mate pair文库, --bam则是让软件自己猜测
  • -vcf: 输出一个vcf文件,包含每个碱基的信息
  • --fix: Pilon将会处理的内容,基本上选snpsindels就够了
  • --variant: 启发式的变异检测,等价于--vcf --fix all,breaks, 如果是polish不要使用该选项
  • minmq: 用于Pilon堆叠的read最低比对质量,默认是0。

阅读日志输出

这个日志文件是标准输出而不是标准错误输出,不过保险起见用&>

最开始,Pilon会输出他的版本信息(如下示例),以及将会对基因组做的调整,

Pilon version 1.14 Sat Oct 31 14:30:00 2015 -0400
Genome: genome.fasta
Fixing snps, indels

其中Fixing后面的含义为:

  • "snps": 单碱基差异
  • "indels":小的indel的差异
  • "amb": 替换原有的N
  • "gaps": 填充基因组的gap
  • "local": 检测和修改错误组装
  • "all": 上述所有
  • "none": 不是上述的任何一种

接着Pilon会分染色体对BAM文件进行处理,根据BAM文件进行堆叠(pileup), 这个时候它会输出有效reads的深度,这里的有效reads包括未成对的read和正确成对的read。

Processing ctg1:1-5414473
frags align_mkdup.bam: coverage 19
Total Reads: 808985, Coverage: 19, minDepth: 5

从Pilon v1.4开始,Pilon还会输出基因组得到确认的碱基比例。

Confirmed 5403864 of 5414473 bases (99.80%)

后续是Pilon将会对原参考基因组做的一些调整的总体情况,如下表示纠正2个snp, 2个小的插入,4个缺失。

Corrected 2 snps; 0 ambiguous bases; corrected 2 small insertions totaling 12 bases, 4 small deletions totaling 6 bases

最后声明当前部分处理结束

Finished processing ctg1:1-5414473

如果,在--fix中选了gaps, 那么输出的内容还有如下内容。其中82048 -0 +276解释为在坐标82428处移除0个碱基,插入276个碱基。

# Attempting to fill gaps
fix gap: scaffold00001:82428-93547 82428 -0 +276 ClosedGap

参考资料

目录
相关文章
|
11月前
|
人工智能 自然语言处理 安全
新浪微博AIGC业务应用探索-AIGC应用平台助力业务提效实践
本次分享围绕AIGC技术在新浪微博的应用展开,涵盖四个部分。首先分析AIGC为微博带来的机遇与挑战,特别是在内容安全和模型幻觉等问题上的应对策略;其次介绍通过工程架构快速实现AIGC技术落地的方法,包括统一部署模型和服务编排;接着展示AIGC在微博的具体应用场景,如评论互动、视频总结和智能客服等;最后展望未来,探讨大模型的发展趋势及其在多模态和特定业务场景中的应用前景。
|
10月前
|
安全 数据安全/隐私保护 Android开发
【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
【05】2025年1月首发完整版-篇幅较长-苹果app如何上架到app store完整流程·不借助第三方上架工具的情况下无需花钱但需仔细学习-优雅草央千澈详解关于APP签名以及分发-们最关心的一篇来了-IOS上架app
1651 75
|
人工智能 算法 新能源
【2023高教社杯】A题 定日镜场的优化设计 问题分析及数学模型
本文介绍了2023年高教社杯数学建模竞赛A题的定日镜场优化设计问题,涉及问题分析和数学模型构建,旨在提高太阳能光热发电效率并实现电力系统的新能源转型。
386 1
【2023高教社杯】A题 定日镜场的优化设计 问题分析及数学模型
|
11月前
|
缓存 NoSQL Java
高并发场景秒杀抢购超卖Bug实战重现
在电商平台的秒杀活动中,高并发场景下的抢购超卖Bug是一个常见且棘手的问题。一旦处理不当,不仅会引发用户投诉,还会对商家的信誉和利益造成严重损害。本文将详细介绍秒杀抢购超卖Bug的背景历史、业务场景、底层原理以及Java代码实现,旨在帮助开发者更好地理解和解决这一问题。
365 12
|
智能硬件 计算机视觉 网络协议
基于树莓派4B的智能家居系统设计-2
基于树莓派4B的智能家居系统设计
基于树莓派4B的智能家居系统设计-2
|
域名解析 负载均衡 网络协议
linux 网络设置
linux 网络设置
|
Linux 编译器 C语言
CentOS 快速安装Python3和pip3
CentOS是经常使用的Linux系统之一,特别是作为服务器使用,其只自带了Python2,但是现在使用更广泛的是Python3,因此需要自行安装,同时为了更方便地安装第三方库,还需要安装pip3。
|
异构计算 Windows
使用MATLAB连接USRP
使用MATLAB连接USRP
578 2
|
Kubernetes Java Apache
Flink问题之托管Kubernetes报错如何解决
Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。本合集提供有关Apache Flink相关技术、使用技巧和最佳实践的资源。
226 1
|
人工智能 自然语言处理 API
【LangChain系列】第三篇:Agent代理简介及实践
【5月更文挑战第17天】LangChain代理利用大型语言模型(LLM)作为推理引擎,结合各种工具和数据库,处理复杂任务和决策。这些代理能理解和生成人类语言,访问外部信息,并结合LLM进行推理。文章介绍了如何通过LangChain构建代理,包括集成DuckDuckGo搜索和维基百科,以及创建Python REPL工具执行编程任务。此外,还展示了如何构建自定义工具,如获取当前日期的示例,强调了LangChain的灵活性和可扩展性,为LLM的应用开辟了新途径。
1128 0