ABySS
ABySS is a de novo sequence assembler intended for short paired-end reads and large genomes.

Please cite our papers.

News
3 May 2019

Looking for a fun & worthy challenge? Think you can contribute code to this project? Join our team of developers! We are currently looking for C++ bioinformatics programmers. Inquire for staff, graduate student, and postdoctoral positions. Contact the project lead (Inanc Birol)

Contents
Quick Start
Install ABySS on Debian or Ubuntu
Install ABySS on Mac OS X
Dependencies
Compiling ABySS from GitHub
Compiling ABySS from source
Assembling a paired-end library
Assembling multiple libraries
Scaffolding
Scaffolding with linked reads
Rescaffolding with long sequences
Assembling using a Bloom filter de Bruijn graph
Assembling using a paired de Bruijn graph
Assembling a strand-specific RNA-Seq library
Optimizing the parameter k
Parallel processing
Running ABySS on a cluster
Using the DIDA alignment framework
Assembly Parameters
ABySS programs
Export to SQLite Database
Citation
Related Publications
Support
Authors
Quick Start
Install ABySS on Linux
Install Linuxbrew, and run the command

brew install abyss
Install ABySS on macOS
Install Homebrew, and run the command

brew install abyss
Install ABySS on Windows
Install Windows Subsystem for Linux and Linuxbrew, and run the command

brew install abyss
Install ABySS on Debian or Ubuntu
Run the command

sudo apt-get install abyss
Assemble a small synthetic data set
wget http://www.bcgsc.ca/platform/bioinfo/software/abyss/releases/1.3.4/test-data.tar.gz
tar xzvf test-data.tar.gz
abyss-pe k=25 name=test
in=‘test-data/reads1.fastq test-data/reads2.fastq’
Calculate assembly contiguity statistics
abyss-fac test-unitigs.fa
Dependencies
Dependencies may be installed using the package manager Homebrew on macOS and Linxubrew on Linux and Windows, using Windows Subsystem for Linux.

ABySS requires a C++ compiler that supports OpenMP such as GCC.

ABySS requires the following libraries:

Boost

Open MPI

sparsehash

brew install boost open-mpi google-sparsehash

ABySS will receive an error when compiling with Boost 1.51.0 or 1.52.0 since they contain a bug. Later versions of Boost compile without error.

Dependencies for linked reads
ARCS to scaffold

Tigmint to correct assembly errors

brew install brewsci/bio/arcs brewsci/bio/links-scaffolder

Optional dependencies
pigz for parallel gzip

samtools for reading BAM files

zsh for reporting time and memory usage

brew install pigz samtools zsh

Compiling ABySS from GitHub
When installing ABySS from GitHub source the following tools are required:

Autoconf
Automake
To generate the configure script and make files:

./autogen.sh
See “Compiling ABySS from source” for further steps.

Compiling ABySS from source
To compile and install ABySS in /usr/local:

./configure
make
sudo make install
To install ABySS in a specified directory:

./configure --prefix=/opt/abyss
make
sudo make install
ABySS uses OpenMP for parallelization, which requires a modern compiler such as GCC 4.2 or greater. If you have an older compiler, it is best to upgrade your compiler if possible. If you have multiple versions of GCC installed, you can specify a different compiler:

./configure CC=gcc-4.6 CXX=g+±4.6
ABySS requires the Boost C++ libraries. Many systems come with Boost installed. If yours does not, you can download Boost. It is not necessary to compile Boost before installing it. The Boost header file directory should be found at /usr/include/boost, in the ABySS source directory, or its location specified to configure:

./configure --with-boost=/usr/local/include
If you wish to build the parallel assembler with MPI support, MPI should be found in /usr/include and /usr/lib or its location specified to configure:

./configure --with-mpi=/usr/lib/openmpi
While OpenMPI is assumed by default you can switch to LAM/MPI or MPICH using: ./configure --enable-mpich use MPICH (default is to use Open MPI) ./configure --enable-lammpi use LAM/MPI (default is to use Open MPI)

ABySS should be built using the sparsehash library to reduce memory usage, although it will build without. sparsehash should be found in /usr/include or its location specified to configure:

./configure CPPFLAGS=-I/usr/local/include
If the optional dependency SQLite is installed in non-default directories, its location can be specified to configure:

./configure --with-sqlite=/opt/sqlite3
The default maximum k-mer size is 128 and may be decreased to reduce memory usage or increased at compile time. This value must be a multiple of 32 (i.e. 32, 64, 96, 128, etc):

./configure --enable-maxk=160
If you encounter compiler warnings, you may ignore them like so:

make AM_CXXFLAGS=-Wall
To run ABySS, its executables should be found in your PATH. If you installed ABySS in /opt/abyss, add /opt/abyss/bin to your PATH:

PATH=/opt/abyss/bin:$PATH
Before starting an assembly
ABySS stores temporary files in TMPDIR, which is /tmp by default on most systems. If your default temporary disk volume is too small, set TMPDIR to a larger volume, such as /var/tmp or your home directory.

export TMPDIR=/var/tmp
Assembling a paired-end library
To assemble paired reads in two files named reads1.fa and reads2.fa into contigs in a file named ecoli-contigs.fa, run the command:

abyss-pe name=ecoli k=96 in=‘reads1.fa reads2.fa’
The parameter in specifies the input files to read, which may be in FASTA, FASTQ, qseq, export, SRA, SAM or BAM format and compressed with gz, bz2 or xz and may be tarred. The assembled contigs will be stored in ${name}-contigs.fa.

A pair of reads must be named with the suffixes /1 and /2 to identify the first and second read, or the reads may be named identically. The paired reads may be in separate files or interleaved in a single file.

Reads without mates should be placed in a file specified by the parameter se (single-end). Reads without mates in the paired-end files will slow down the paired-end assembler considerably during the abyss-fixmate stage.

Assembling multiple libraries
The distribution of fragment sizes of each library is calculated empirically by aligning paired reads to the contigs produced by the single-end assembler, and the distribution is stored in a file with the extension .hist, such as ecoli-3.hist. The N50 of the single-end assembly must be well over the fragment-size to obtain an accurate empirical distribution.

Here’s an example scenario of assembling a data set with two different fragment libraries and single-end reads. Note that the names of the libraries (pea and peb) are arbitrary.

Library pea has reads in two files, pea_1.fa and pea_2.fa.
Library peb has reads in two files, peb_1.fa and peb_2.fa.
Single-end reads are stored in two files, se1.fa and se2.fa.
The command line to assemble this example data set is:

abyss-pe k=96 name=ecoli lib=‘pea peb’
pea=‘pea_1.fa pea_2.fa’ peb=‘peb_1.fa peb_2.fa’
se=‘se1.fa se2.fa’
The empirical distribution of fragment sizes will be stored in two files named pea-3.hist and peb-3.hist. These files may be plotted to check that the empirical distribution agrees with the expected distribution. The assembled contigs will be stored in ${name}-contigs.fa.

Scaffolding
Long-distance mate-pair libraries may be used to scaffold an assembly. Specify the names of the mate-pair libraries using the parameter mp. The scaffolds will be stored in the file ${name}-scaffolds.fa. Here’s an example of assembling a data set with two paired-end libraries and two mate-pair libraries. Note that the names of the libraries (pea, peb, mpa, mpb) are arbitrary.

abyss-pe k=96 name=ecoli lib=‘pea peb’ mp=‘mpc mpd’
pea=‘pea_1.fa pea_2.fa’ peb=‘peb_1.fa peb_2.fa’
mpc=‘mpc_1.fa mpc_2.fa’ mpd=‘mpd_1.fa mpd_2.fa’
The mate-pair libraries are used only for scaffolding and do not contribute towards the consensus sequence.

Scaffolding with linked reads
ABySS can scaffold using linked reads from 10x Genomics Chromium. The barcodes must first be extracted from the read sequences and added to the BX:Z tag of the FASTQ header, typically using the longranger basic command of Long Ranger or EMA preproc. The linked reads are used to correct assembly errors, which requires that Tigmint. The linked reads are also used for scaffolding, which requires ARCS. See Dependencies for installation instructions.

ABySS can combine paired-end, mate-pair, and linked-read libraries. The pe and lr libraries will be used to build the de Bruijn graph. The mp libraries will be used for paired-end/mate-pair scaffolding. The lr libraries will be used for misassembly correction using Tigmint and scaffolding using ARCS.

abyss-pe k=96 name=hsapiens
pe=‘pea’ pea=‘lra.fastq.gz’
mp=‘mpa’ mpa=‘lra.fastq.gz’
lr=‘lra’ lra=‘lra.fastq.gz’
ABySS performs better with a mixture of paired-end, mate-pair, and linked reads, but it is possible to assemble only linked reads using ABySS, though this mode of operation is experimental.

abyss-pe k=96 name=hsapiens lr=‘lra’ lra=‘lra.fastq.gz’
Rescaffolding with long sequences
Long sequences such as RNA-Seq contigs can be used to rescaffold an assembly. Sequences are aligned using BWA-MEM to the assembled scaffolds. Additional scaffolds are then formed between scaffolds that can be linked unambiguously when considering all BWA-MEM alignments.

Similar to scaffolding, the names of the datasets can be specified with the long parameter. These scaffolds will be stored in the file ${name}-long-scaffs.fa. The following is an example of an assembly with PET, MPET and an RNA-Seq assembly. Note that the names of the libraries are arbitrary.

abyss-pe k=96 name=ecoli lib=‘pe1 pe2’ mp=‘mp1 mp2’ long=‘longa’
pe1=‘pe1_1.fa pe1_2.fa’ pe2=‘pe2_1.fa pe2_2.fa’
mp1=‘mp1_1.fa mp1_2.fa’ mp2=‘mp2_1.fa mp2_2.fa’
longa=‘longa.fa’
Assembling using a Bloom filter de Bruijn graph
Assemblies may be performed using a Bloom filter de Bruijn graph, which typically reduces memory requirements by an order of magnitude. To assemble in Bloom filter mode, the user must specify 3 additional parameters: B (Bloom filter size in bytes), H (number of Bloom filter hash functions), and kc (minimum k-mer count threshold). B is the overall memory budget for the Bloom filter assembler, and may be specified with unit suffixes ‘k’ (kilobytes), ‘M’ (megabytes), ‘G’ (gigabytes). If no units are specified bytes are assumed. For example, the following will run a E. coli assembly with an overall memory budget of 100 megabytes, 3 hash functions, a minimum k-mer count threshold of 3, with verbose logging enabled:

abyss-pe name=ecoli k=96 in=‘reads1.fa reads2.fa’ B=100M H=3 kc=3 v=-v
At the current time, the user must calculate suitable values for B and H on their own, and finding the best value for kc may require experimentation (optimal values are typically in the range of 2-4). Internally, the Bloom filter assembler allocates the entire memory budget (B) to a Counting Bloom filter, and an additional (B/8) memory to another Bloom filter that is used to track k-mers that have previously been included in contigs. Users are recommended to target a Bloom filter false positive rate (FPR) that is less than 5%, as reported by the assembly log when using the v=-v option (verbose level 1).

Assembling using a paired de Bruijn graph
Assemblies may be performed using a paired de Bruijn graph instead of a standard de Bruijn graph. In paired de Bruijn graph mode, ABySS uses k-mer pairs in place of k-mers, where each k-mer pair consists of two equal-size k-mers separated by a fixed distance. A k-mer pair is functionally similar to a large k-mer spanning the breadth of the k-mer pair, but uses less memory because the sequence in the gap is not stored. To assemble using paired de Bruijn graph mode, specify both individual k-mer size (K) and k-mer pair span (k). For example, to assemble E. coli with a individual k-mer size of 16 and a k-mer pair span of 96:

abyss-pe name=ecoli K=16 k=96 in=‘reads1.fa reads2.fa’
In this example, the size of the intervening gap between k-mer pairs is 64 bp (96 - 2*16). Note that the k parameter takes on a new meaning in paired de Bruijn graph mode. k indicates kmer pair span in paired de Bruijn graph mode (when K is set), whereas k indicates k-mer size in standard de Bruijn graph mode (when K is not set).

Assembling a strand-specific RNA-Seq library
Strand-specific RNA-Seq libraries can be assembled such that the resulting unitigs, contigs and scaffolds are oriented correctly with respect to the original transcripts that were sequenced. In order to run ABySS in strand-specific mode, the SS parameter must be used as in the following example:

abyss-pe name=SS-RNA k=96 in=‘reads1.fa reads2.fa’ SS=–SS
The expected orientation for the read sequences with respect to the original RNA is RF. i.e. the first read in a read pair is always in reverse orientation.

Optimizing the parameter k
To find the optimal value of k, run multiple assemblies and inspect the assembly contiguity statistics. The following shell snippet will assemble for every eighth value of k from 50 to 90.

for k in seq 50 8 90; do
mkdir kkabyss−pe−Ckk abyss-pe -C kkabyss−pe−Ckk name=ecoli k=$k in=…/reads.fa
done
abyss-fac k*/ecoli-contigs.fa
The default maximum value for k is 96. This limit may be changed at compile time using the --enable-maxk option of configure. It may be decreased to 32 to decrease memory usage or increased to larger values.

Parallel processing
The np option of abyss-pe specifies the number of processes to use for the parallel MPI job. Without any MPI configuration, this will allow you to use multiple cores on a single machine. To use multiple machines for assembly, you must create a hostfile for mpirun, which is described in the mpirun man page.

Do not run mpirun -np 8 abyss-pe. To run ABySS with 8 threads, use abyss-pe np=8. The abyss-pe driver script will start the MPI process, like so: mpirun -np 8 ABYSS-P.

The paired-end assembly stage is multithreaded, but must run on a single machine. The number of threads to use may be specified with the parameter j. The default value for j is the value of np.

Running ABySS on a cluster
ABySS integrates well with cluster job schedulers, such as:

SGE (Sun Grid Engine)
Portable Batch System (PBS)
Load Sharing Facility (LSF)
IBM LoadLeveler
For example, to submit an array of jobs to assemble every eighth value of k between 50 and 90 using 64 processes for each job:

qsub -N ecoli -pe openmpi 64 -t 50-90:8
<<<‘mkdir kKaTeX parse error: Expected 'EOF', got '&' at position 13: SGE_TASK_ID &̲& abyss-pe -C kSGE_TASK_ID in=/data/reads.fa’
Using the DIDA alignment framework
ABySS supports the use of DIDA (Distributed Indexing Dispatched Alignment), an MPI-based framework for computing sequence alignments in parallel across multiple machines. The DIDA software must be separately downloaded and installed from http://www.bcgsc.ca/platform/bioinfo/software/dida. In comparison to the standard ABySS alignment stages which are constrained to a single machine, DIDA offers improved performance and the ability to scale to larger targets. Please see the DIDA section of the abyss-pe man page (in the doc subdirectory) for details on usage.

Assembly Parameters
Parameters of the driver script, abyss-pe

a: maximum number of branches of a bubble [2]
b: maximum length of a bubble (bp) [""]
B: Bloom filter size (e.g. “100M”)
c: minimum mean k-mer coverage of a unitig [sqrt(median)]
d: allowable error of a distance estimate (bp) [6]
e: minimum erosion k-mer coverage [round(sqrt(median))]
E: minimum erosion k-mer coverage per strand [1 if sqrt(median) > 2 else 0]
G: genome size, used to calculate NG50
H: number of Bloom filter hash functions [1]
j: number of threads [2]
k: size of k-mer (when K is not set) or the span of a k-mer pair (when K is set)
kc: minimum k-mer count threshold for Bloom filter assembly [2]
K: the length of a single k-mer in a k-mer pair (bp)
l: minimum alignment length of a read (bp) [40]
m: minimum overlap of two unitigs (bp) [k-1]
n: minimum number of pairs required for building contigs [10]
N: minimum number of pairs required for building scaffolds [n]
np: number of MPI processes [1]
p: minimum sequence identity of a bubble [0.9]
q: minimum base quality [3]
s: minimum unitig size required for building contigs (bp) [1000]
S: minimum contig size required for building scaffolds (bp) [1000-10000]
t: maximum length of blunt contigs to trim [k]
v: use v=-v for verbose logging, v=-vv for extra verbose
x: spaced seed (Bloom filter assembly only)
lr_s: minimum contig size required for building scaffolds with linked reads (bp) [S]
lr_n: minimum number of barcodes required for building scaffolds with linked reads [10]
Please see the abyss-pe manual page for more information on assembly parameters.

Environment variables
abyss-pe configuration variables may be set on the command line or from the environment, for example with export k=96. It can happen that abyss-pe picks up such variables from your environment that you had not intended, and that can cause trouble. To troubleshoot that situation, use the abyss-pe env command to print the values of all the abyss-pe configuration variables:

abyss-pe env [options]
ABySS programs
abyss-pe is a driver script implemented as a Makefile. Any option of make may be used with abyss-pe. Particularly useful options are:

-C dir, --directory=dir Change to the directory dir and store the results there.
-n, --dry-run Print the commands that would be executed, but do not execute them.
abyss-pe uses the following programs, which must be found in your PATH:

ABYSS: de Bruijn graph assembler
ABYSS-P: parallel (MPI) de Bruijn graph assembler
AdjList: find overlapping sequences
DistanceEst: estimate the distance between sequences
MergeContigs: merge sequences
MergePaths: merge overlapping paths
Overlap: find overlapping sequences using paired-end reads
PathConsensus: find a consensus sequence of ambiguous paths
PathOverlap: find overlapping paths
PopBubbles: remove bubbles from the sequence overlap graph
SimpleGraph: find paths through the overlap graph
abyss-fac: calculate assembly contiguity statistics
abyss-filtergraph: remove shim contigs from the overlap graph
abyss-fixmate: fill the paired-end fields of SAM alignments
abyss-map: map reads to a reference sequence
abyss-scaffold: scaffold contigs using distance estimates
abyss-todot: convert graph formats and merge graphs
This flowchart shows the ABySS assembly pipeline its intermediate files.

Export to SQLite Database
ABySS has a built-in support for SQLite database to export log values into a SQLite file and/or .csv files at runtime.

Database parameters
Of abyss-pe:

db: path to SQLite repository file [$(name).sqlite]
species: name of species to archive [ ]
strain: name of strain to archive [ ]
library: name of library to archive [ ]
For example, to export data of species ‘Ecoli’, strain ‘O121’ and library ‘pea’ into your SQLite database repository named ‘/abyss/test.sqlite’:

abyss-pe db=/abyss/test.sqlite species=Ecoli strain=O121 library=pea [other options]
Helper programs
Found in your path:

abyss-db-txt: create a flat file showing entire repository at a glance
abyss-db-csv: create .csv table(s) from the repository
Usage:

abyss-db-txt /your/repository
abyss-db-csv /your/repository program(s)
For example,

abyss-db-txt repo.sqlite
abyss-db-csv repo.sqlite DistanceEst
abyss-db-csv repo.sqlite DistanceEst abyss-scaffold
abyss-db-csv repo.sqlite --all
Citation
ABySS 2.0
Shaun D Jackman, Benjamin P Vandervalk, Hamid Mohamadi, Justin Chu, Sarah Yeo, S Austin Hammond, Golnaz Jahesh, Hamza Khan, Lauren Coombe, René L Warren, and Inanc Birol (2017). ABySS 2.0: Resource-efficient assembly of large genomes using a Bloom filter. Genome research, 27(5), 768-777. doi:10.1101/gr.214346.116

ABySS
Simpson, Jared T., Kim Wong, Shaun D. Jackman, Jacqueline E. Schein, Steven JM Jones, and Inanc Birol (2009). ABySS: a parallel assembler for short read sequence data. Genome research, 19(6), 1117-1123. doi:10.1101/gr.089532.108

Related Publications
Trans-ABySS
Robertson, Gordon, Jacqueline Schein, Readman Chiu, Richard Corbett, Matthew Field, Shaun D. Jackman, Karen Mungall, et al (2010). De novo assembly and analysis of RNA-seq data. Nature methods, 7(11), 909-912. doi:10.1038/10.1038/nmeth.1517

ABySS-Explorer
Nielsen, Cydney B., Shaun D. Jackman, Inanc Birol, and Steven JM Jones (2009). ABySS-Explorer: visualizing genome sequence assemblies. IEEE Transactions on Visualization and Computer Graphics, 15(6), 881-888. doi:10.1109/TVCG.2009.116

ABYSS genome assemble 详细用法相关推荐

  1. Android命令行工具logcat详细用法!

    logcat是Android中一个命令行工具,可以用于得到程序的log信息. 见板凳详细说明!      本贴内容来自网络,引用网址为:http://hi.baidu.com/%C9%C1%D2%AB ...

  2. __declspec关键字详细用法

    __declspec关键字详细用法 2009-01-21 16:23 __declspec用于指定所给定类型的实例的与Microsoft相关的存储方式.其它的有关存储方式的修饰符如static与ext ...

  3. mysql left/right join算法效率分析_mysql left join,right join,inner join超详细用法分析

    MySQL left join,right join,inner join超详细用法分析 下面是例子分析 表A记录如下: aID        aNum 1           a20050111 2 ...

  4. python sort怎么用,Linux Sort命令详细用法(有实例)

    Linux Sort命令详细用法(有实例) sort是在Linux里非常常用的一个命令,管排序的,集中精力,五分钟搞定sort,现在开始! Linux sort命令进阶: 1 sort的工作原理 so ...

  5. vue性能优化-------vendor优化详细用法(瘦身),减小体积,引入cdn

    vue性能优化-------vendor优化详细用法(瘦身),减小体积,引入cdn 原创ChrisWang_ 最后发布于2019-05-24 10:25:58 阅读数 1332  收藏 展开 vue性 ...

  6. oracle rtrim(),Oracle ltrim() rtrim() 函数详细用法

    嘿嘿,今天在论坛里看了一篇帖子,讨论ltrim() 函数的详细用法,下面我借几个高手的回答总结一下: 先看几个实例: SQL> select ltrim('109224323','109') f ...

  7. pythonrange函数用法_python range()函数详细用法

    python range()函数详细用法 函数原型:range(start, end, scan): 参数含义:start:计数从start开始.默认是从0开始.例如range(5)等价于range( ...

  8. python中3 and not 5_python中not、and和or的优先级与详细用法介绍

    前言 (小白专用)本次所分享的是Python中的not.and.or的执行时的优先级,以及他们的具体用法.本文比较详细,不喜勿喷. 一.not.and.or的含义以及优先级 对象 返回结果 优先顺序 ...

  9. Word查找替换详细用法及通配符一览表

    转载自:https://www.cnblogs.com/whchensir/p/5768030.html Word查找替换详细用法及通配符一览表 使用通配符 要查找"?"或者&qu ...

  10. 批处理命令之Start的详细用法-P处理打开IE窗口最大化

          批处理命令之Start的详细用法 (hxzon:运行"start 文件路径"打开新的命令行窗口,加上"""",即 "s ...

最新文章

  1. java为窗体添加滚动条
  2. 疫情过后,2020年各省市GDP排行榜top10新鲜出炉,你的家乡排在第几?
  3. 爱创课堂每日一题第四十天- 说说你对语义化的理解?
  4. 二分图之匈牙利算法模版
  5. hidl 原理分析_一个 health service 不生效问题引出的一点知识
  6. CMFCButton使用简介
  7. 全新Wijmo5中文学习指南正式上线
  8. 带sex的net域名_sex.com(性)域名争夺再升级 色情能抵千万美金?
  9. 欧拉定理以及欧拉降幂
  10. Win32写一个极简定时关机软件的全部过程讲解
  11. tcp 握手失败_TCP三次握手四次挥手总结(流程、常见问题、会发生的攻击、防范方法)...
  12. CAS 单点登录/登出 系统
  13. 面料ERP_面料企业ERP管理系统_面料软件
  14. 用dos2unix批量转换文件
  15. AutoMapper 9.0的使用
  16. 推动外部董事高效履职,提高国资国企治理能力
  17. 拼多多商品详情采集上传京东店铺(拼多多商品详情接口,京东商品详情接口,拼多多整店宝贝采集接口,一键采集拼多多宝贝详情接口,无货源商品详情采集接口)代码对接教程
  18. NGS 数据过滤之 Trimmomatic
  19. Java项目:SSM网上外卖订餐管理系统
  20. 科学道德与学风-2021雨课堂答案-第6章

热门文章

  1. 逻辑回归算法——乳腺癌检测
  2. Spring Cloud 微服务架构图
  3. 计算机网络知识之交换机、路由器、网关、MAC地址
  4. PA AE PR AI 2019注册机
  5. JDK源代码中最重要的4646个英语单词
  6. 详解 http-server的安装和使用
  7. RC积分器充放电过程
  8. xcode打包IPA(完整详细图文)
  9. 学习笔记(六):C++串口连接
  10. 【Java】用类描述计算机中CPU的速度和硬盘的容量,要求Java应用程序由4个类,名字分别是PC、CPU、HardDisk、和Test,其中Test是主类。