macでインフォマティクス

macでインフォマティクス

HTS (NGS) 関連のインフォマティクス情報についてまとめています。

BAMインデックス(bam.bai)ファイルを細かく切り刻む chopBAI

 

 シーケンサーの性能向上により、かつてないほど大量のゲノムデータが生成されるようになった。このようなデータの処理では、例えば、多数のサンプルにわたって小さなゲノム領域を解析する場合、しばしばI/Oボトルネックが発生する。しかし、最も大きなI/O負荷は、解析に必要なデータ量ではなく、データ検索を支援するインデックスファイルによってもたらされることが多い。BAMインデックス(BAI)ファイルを細かく切り刻むことができるプログラム、chopBAIを開発した。このプログラムは、指定されたゲノム区間のインデックスを持つBAIファイルのリストを出力する。このプログラムにより、出力ファイルのサイズが大幅に縮小されたが、既存のソフトウェアツールとの互換性は維持されている。BAIファイルの前処理をchopBAIで行うことにより、10kbのゲノム領域の解析において95%以上のI/O削減を実現し、最終的には1万個体以上の共同解析が可能になることを示す。本ソフトウェアはC++で実装され、GPLライセンスが付与されており、http://github.com/DecodeGenetics/chopBAI で入手できる。

 

BAMファイルは、aligned readsをまとまりで格納する。圧縮されたaligned readsセットは、圧縮されていない情報があらかじめ定義された量のメモリに収まるように、セットのサイズが決定される。 BAMインデックスはBAMファイルの形式を使用し、aligned readsのチャンクへの効率的なナビゲーションを可能にする。その結果、BAMファイル全体ではなく少数のチャンクを解凍してアライメントされたリードを処理でき、チャンクの先頭のみから反復処理することができる。

BAMインデックスファイル(http://samtools.github.io/hts-specs/SAMv1.pdf)は、チャンクの開始点と終了点のファイルオフセットを格納する。索引ファイルは、一般的に、すべての参照配列(染色体)のリストを含むメタデータ、すべての参照配列のビン・インデックス(Kent et al、2002)、およびすべての参照配列の線形インデックスの3つのセクションから構成される。

bin indicesはビンのリストであり、各ビンは、一連のチャンクのファイルオフセットを格納する。ビンは、予め規定された数の大きさの連続したゲノム間隔を表す。いずれの2つのビンも部分的に重ならない。それらが互いに素であるか、または一方が他方に完全に含まれているかのいずれかである。各チャンクのファイルオフセットは、チャンク内のすべてのアラインメントを完全に含む最小のビンに格納される。 binインデックスに加えて、BAIファイルには線形インデックスが含まれている。線形インデックスは、参照シーケンスをタイリングするすべての16KBウィンドウ内の整列した読み込みの最小ファイルオフセットを格納する(以下略)。

 

インストール

ubuntu18でテストした。

GIthub

git clone https://github.com/seqan/seqan.git
git clone https://github.com/DecodeGenetics/chopBAI.git
cd chopBAI/
cp -r ../seqan/include/seqan/ .
make

> ./chopBAI -h

./chopBAI - chops a bam index file into pieces

==============================================

 

SYNOPSIS

    ./chopBAI [OPTIONS] BAM-FILE REGION1 [... REGIONn]

    ./chopBAI [OPTIONS] BAM-FILE REGION-FILE

 

DESCRIPTION

    Writes small index files for the specified regions based on an existing bai or csi file for the input bamfile. The

    regions have to be specified in the formats 'chr:begin-end', 'chr:begin' and 'chr' where 'begin' and 'end' are

    1-based and both endpoints are included. The regions can be listed directly on the command line separated by

    spaces or in a file listing one region per line. The program writes a smaller index file for each region to the

    directory '<output prefix>/<region>/<bamfile>.[bai|csi]'. The output directories are created if they do not exist.

 

REQUIRED ARGUMENTS

    BAM-FILE INPUT_FILE

    REGIONS List of INPUT_FILE's

 

OPTIONS

    -h, --help

          Display the help message.

    --version-check BOOL

          Turn this option off to disable version update notifications of the application. One of 1, ON, TRUE, T, YES,

          0, OFF, FALSE, F, and NO. Default: 1.

    --version

          Display version information.

 

  Output options:

    -p, --prefix STRING

          Output prefix. Default: current directory.

    -l, --linear

          Include linear index of BAI in the output.

    -s, --symlink

          Create a symbolic link to the bam file in the output directory.

 

VERSION

    Last update: on 2016-03-30 21:34:10

    ./chopBAI version: 0.1 beta

    SeqAn version: 2.4.0

 

 

 

テストラン

bamファイルと領域を指定する(baiか.csiファイルも存在している必要がある)。領域はCHR:BEGIN-ENDのフォーマットで指定するか、1行に1つの領域を書いたリストファイルを指定する必要がある。

chopBAI tests/test.sorted.bam chrB:1-10000

baiファイルが出力される。

 

引用
chopBAI: BAM index reduction solves I/O bottlenecks in the joint analysis of large sequencing cohorts
Kehr B, Melsted P

Bioinformatics. 2016 Jul 15;32(14):2202-4.