macでインフォマティクス

macでインフォマティクス

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

webブウラザを使ったゲノムブラウザ PyBamView

 

 次世代シークエンシング(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)

Github

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ブラウザが呼び出される。

f:id:kazumaxneo:20180926224548j:plain

上のボタンを使って操作を行う(*1)。

f:id:kazumaxneo:20180926224620j:plain

上のバー部分をドラッグして囲むことで瞬時に拡大する機能も備えている。

f:id:kazumaxneo:20180926224739j:plain

端末エミュレータで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が機能しなかった。