三代测序组装工具Canu学习笔记

Canu简介

Canu是Celera的继任者,能用于组装PacBio和Nanopore两家公司得到的测序结果。

Canu分为三个步骤:纠错,修整和组装。

下载测试数据

# 下载 pacbio 测试数据
wget -c http://gembox.cbcb.umd.edu/mhap/raw/ecoli_p6_25x.filtered.fastq -O pacbio.fastq

# 下载 nanopare 测试数据
wget -c http://nanopore.s3.climb.ac.uk/MAP006-PCR-1_2D_pass.fasta -O oxford.fasta

环境准备

为了测试方便,这里没有从 Canu 的源码编译,而是直接使用的 Docker 容器来测试。

注册 quay.io 账号

为了从 quay.io 获取 Canu 镜像,需要先注册一个账号,注册比较简单,就是填个表格就行了。

下载 Docker 镜像

sudo docker login quay.io

sudo docker pull quay.io/biocontainers/canu:1.7.1--pl526h470a237_0

运行容器

在上面下载的数据文件同级目录下运行下面命令来启动一个容器

sudo docker run -it --rm -v `pwd`:/canu quay.io/biocontainers/canu:1.7.1--pl526h470a237_0 bash

测试

参数说明

  • genomeSize:设置预估的基因组大小,这用于让Canu估计测序深度;
  • maxThreads:设置运行的最大线程数;
  • rawErrorRate:用来设置两个未纠错read之间最大期望差异碱基数;
  • correctedErrorRate:则是设置纠错后read之间最大期望差异碱基数,这个参数需要在 组装 时多次调整;
  • minReadLength表示只使用大于阈值的序列,minOverlapLength表示Overlap的最小长度。提高minReadLength可以提高运行速度,增加minOverlapLength可以降低假阳性的overlap。
  • corOutCoverage: 用于控制多少数据用于纠错;
  • correctedErrorRate:设置序列的错误率;

使用 PacBio 数据测试

纠错

canu -correct \
    -p ecoli -d ecoli-pacbio \
    corThreads=32 corOutCoverage=120 corMinCoverage=2 \
    gnuplotTested=true \
    genomeSize=120m minReadLength=2000 minOverlapLength=500 \
    maxMemory=500g maxThreads=32 \
    ovsMemory=1-32G ovsThreads=16 ovsConcurrency=16 \
    ovbMemory=1g ovbConcurrency=16 oeaThreads=16 \
    -pacbio-raw pacbio.fastq

修整

canu -trim \
    -p ecoli -d ecoli-pacbio \
    gnuplotTested=true \
    genomeSize=120m minReadLength=2000 minOverlapLength=500 \
    maxMemory=500g maxThreads=32 \
    ovsMemory=1-32G ovsThreads=16 ovsConcurrency=16 \
    ovbMemory=1g ovbConcurrency=16 oeaThreads=16 \
    -pacbio-corrected ecoli-pacbio/ecoli.correctedReads.fasta.gz

组装

canu -assemble \
    -p ecoli -d ecoli-pacbio \
    gnuplotTested=true \
    genomeSize=120m minReadLength=2000 minOverlapLength=500 \
    maxMemory=500g maxThreads=32 \
    ovsMemory=1-32G ovsThreads=16 ovsConcurrency=16 \
    ovbMemory=1g ovbConcurrency=16 oeaThreads=16 \
    correctedErrorRate=0.050 \
    -pacbio-corrected ecoli-pacbio/ecoli.trimmedReads.fasta.gz

使用 Oxford Nanopore 数据测试

纠错

canu -correct \
    -p ecoli -d ecoli-oxford \
    corThreads=32 corOutCoverage=120 corMinCoverage=2 \
    gnuplotTested=true \
    genomeSize=120m minReadLength=2000 minOverlapLength=500 \
    maxMemory=500g maxThreads=32 \
    ovsMemory=1-32G ovsThreads=16 ovsConcurrency=16 \
    ovbMemory=1g ovbConcurrency=16 oeaThreads=16 \
    -nanopore-raw oxford.fasta

修整

canu -trim \
    -p ecoli -d ecoli-oxford \
    gnuplotTested=true \
    genomeSize=120m minReadLength=2000 minOverlapLength=500 \
    maxMemory=500g maxThreads=32 \
    ovsMemory=1-32G ovsThreads=16 ovsConcurrency=16 \
    ovbMemory=1g ovbConcurrency=16 oeaThreads=16 \
    -nanopore-corrected ecoli-oxford/ecoli.correctedReads.fasta.gz

组装

canu -assemble \
    -p ecoli -d ecoli-oxford \
    gnuplotTested=true \
    genomeSize=120m minReadLength=2000 minOverlapLength=500 \
    maxMemory=500g maxThreads=32 \
    ovsMemory=1-32G ovsThreads=16 ovsConcurrency=16 \
    ovbMemory=1g ovbConcurrency=16 oeaThreads=16 \
    correctedErrorRate=0.050 \
    -nanopore-corrected ecoli-oxford/ecoli.trimmedReads.fasta.gz

使用 spec 定义参数

spec 文件

创建一个 spec 文件,比如:myspec.txt,内容如下:

useGrid=1
gridOptions=-S /bin/bash -q all.q -l mem_free=32g
gridEngineThreadsOption=-pe mpi THREADS
gridEngineMemoryOption=-l mem_total=MEMORY
ovbMemory=8g
maxMemory=64g
maxThreads=32
ovsMemory=8-64g
ovsThreads=4
oeaThreads=4

使用 spec 文件测试

# 使用 PacBio 数据测试
canu -s myspec.txt -p ecoli -d ecoli-pacbio gnuplotTested=true genomeSize=120m -pacbio-raw pacbio.fastq

# 使用 Oxford Nanopore 数据测试
canu -s myspec.txt -p ecoli -d ecoli-oxford gnuplotTested=true genomeSize=120m -nanopore-raw oxford.fasta

你可能感兴趣的:(Docker)