次世代シークエンシング(NGS)技術の急速な発展により、幅広い種類のショートリードDNAデータセットがもたらされた。シーケンスアライメントのマニュアル検査は、クオリティ管理の重要な側面である。大部分のNGS解析は一塩基多型(SNP)に焦点を当てているが、近年のバイオインフォマティクスの進歩により、小さな挿入や欠失(Montgomery et al、2013)、より大きな構造変異(Ye et al、 2009)、ショートタンデムリピート(Gymrek et al、2012; Highnam et al、2013)が含まれるようになった。さらに、CRISPR-Cas9システム(Cong et al、2013)などの広く使用されているゲノム工学技術は、しばしば広範囲の複雑な変異を産生することができる。これらの場合、挿入および欠失事象の視覚化は特に重要な分析ステップである。
UCSC Genome Browser(Kent et al、2002)やIntegrative Genomics Viewer(IGV)(Robinson et al、2011)などの現在のゲノムブラウザは、SAM / BAMファイルから複数のサンプルにわたるアライメントを視覚化し、ゲノミクスデータセットの多くのレイヤーを表示できる。しかし、既存のツールには2つの重要な制限がある。第1に、大部分は参照配列に対するギャップなしアライメントに基づいており、挿入部位の可視化が不適切になる。 SAMの仕様では、複数のシーケンスアラインメント情報をキャプチャし、ほとんどのブラウザで正確に挿入を表示できるpaddedリファレンスをサポートしている。ただし、ほとんどのBAMファイルは、ショートリードとリファレンスのペアワイズアラインメントで構成され、この機能は使用していない。その結果、挿入は、挿入されたヌクレオチドのサイズまたは配列に関する視覚的情報を提供しない垂直バーのようなアイコンによって表される。第2に、アラインメントブラウザの大部分は、特にNGS実験に典型的な大きなデータセットの視覚化に使用するとかさばって扱いにくい。ユーザーは、大きなデータファイルをリモートサーバーにアップロードするか、またはローカルで実行するために複雑なインストールと大きなリソース要件が必要になる。
Bambino(Edmonson et al、2011)、Consed(Gordon and Green、2013)、テキストベースのSAMtools(Li et al、2009)tviewのようないくつかのアライメントブラウザは、これらの制限を克服している。比較的低いシステム要件でローカルに実行される。ただし、tviewでは、複数のBAMファイルを一度に表示することはできない。これらのツールでは、アラインメントをスナップショットとしてエクスポートしたり、Webブラウザを介してリモートでアラインメントを共有することはできない。
ここでは、BAMファイルからアラインメントを表示するための軽量なWebアプリケーションPyBamViewを紹介する。 PyBamViewは正確にSNP、挿入および欠失イベントを表現できるアライメント可視化機能を提供し、publish readyなfigureの作成が簡単にできる。最小限のリソース要件でコマンドラインからローカルに実行され、Webブラウザでアラインメントが表示される。このインターフェースにより、ユーザーはローカルでのアラインメントをすばやく表示し、ローカルまたはリモートの共同作業者とアラインメントを簡単に共有できる。
PyBamViewは、コマンドラインから実行されるPythonベースのWebアプリケーションである。 ユーザは、PyBamViewにインデックス付きBAMファイルを含むディレクトリと、オプションのリファレンスゲノムをfasta形式で与える必要がある。
pybamview ––bamdir DIRECTORY/WITH/BAMS ––ref REF.fa
PyBamViewは、Webブラウザでローカルにアクセスできる小さなWebサーバを起動する。オプションの引数は、たとえば、リモートの共同作業者との、または公開リソースとしてのURLの共有のために、異なるアドレスでアプリケーションを提供できる。たとえば、オプション-ip 0.0.0.0 -port 5000を追加すると、http経由でポート5000を介してPyBamViewが提供される。補足テキストおよびプログラムWebサイトには、この機能の完全な説明が含まれている。
Webブラウザには、提供されたBAMファイルに含まれるすべてのサンプルのリストが表示される。ユーザーは、ゲノムブラウザのビューで開くサンプルを1つまたは複数選択できる。これは、リファレンストラックと、各サンプルリードを含む折りたたみ可能なアライメントトラックで構成されている。分析されるサンプルの数には理論的に制限はないが、PyBamViewは5つの低〜中程度のカバレッジサンプルを合理的に一度に表示できる。
ユーザは、ゲノム座標を検索バーに入力することによって、興味のあるゲノム領域に移動することができる(例えば、chr1:10000)。デフォルトのビューでは、リファレンスゲノムとの塩基対の違いが強調され、SNPと潜在的なシークエンシングエラーを容易に識別できる(論文 図1a)。欠失された塩基対は、アラインメントにおいて‘.’ で示され、挿入は ‘.’ として示される(論文 図1b)。(一部略)ユーザーは最大100倍までズームアウトして、数百または数千塩基に及ぶ大きな挿入または欠失を容易に視覚化することができる。その他の機能については Supplementary Textに記載されている。
PyBamViewに関するツイート
インストール
mac os10.12のpython2.7.10でテストした。
依存
- PyBamView requires Python2.6 or greater.
- rsvg-convert (required for exporting alignment snapshots to PDF)
pip install pybamview
> pybamview -h
$ pybamview -h
Usage: pybamview [options]
pybamview: An Python-based BAM alignment viewer.
Options:
-h, --help show this help message and exit
--bam=BAM Run Pybamview on this BAM file only. The file must be
indexed.
--bamdir=BAMDIR Directory to look for bam files. Bam files must be
indexed.
--ref=REF Path to reference fasta file. If no reference is
given, the reference track is displayed as "N"'s
--ip=IP Host IP. 127.0.0.1 for local host (default). 0.0.0.0
to have the server available externally.
--port=PORT The port of the webserver. Defaults to 5000.
--targets=TARGETS Bed file with chrom, start, end, and name. Allows you
to easily jump to these targets.
--buffer=BUFFER How many nucleotides to load into memory. Default:
200. Buffering more allows you to scroll farther.
Buffering less is faster.
--maxzoom=MAXZOOM Maximum number of times to be able to zoom out. E.g.
--maxzoom 10 allows zooming out up to 10x. Default:
100. Must be between one of 1-10, 50, or 100.
--downsample=DOWNSAMPLE
Downsample reads to this maximum coverage level.
Default: 50. Values over 100 not recommended since it
results in poor performance.
--no-browser Don't automatically open the web browser.
--debug Run PyBamView in Flask debug mode
——
実行方法
bamとリファレンスFASTAを指定する。
pybamview --bam input.bam --ref ref.fasta
デフォルトのhtmlブラウザが呼び出される。
上のボタンを使って操作を行う(*1)。
上のバー部分をドラッグして囲むことで瞬時に拡大する機能も備えている。
端末エミュレータでCtrl + Cで終了。
試せてませんが、ダイレクトにスナップショットを撮る機能もあるようです。GithubのREADME(マークダウン形式)を読んでみてください。
引用
PyBamView: a browser-based application for viewing short read alignments
Gymrek M
Bioinformatics. 2014 Dec 1;30(23):3405-7
*1
テスト時は移動に不具合があった。また、bamディレクトリを指定して複数bamを読み込む --bamが機能しなかった。