導入
Nature Methods に GIGGLE というツールの論文を見つけたので、記事を書きました。
https://www.nature.com/articles/nmeth.4556 (Biorxivのpreprint http://www.biorxiv.org/content/early/2017/06/29/157735 )
GitHubページはこちら https://github.com/ryanlayer/giggle
ゲノム区間とは
ゲノム区間 (Genome interval, Genomic interval)は、ゲノム上の特徴 (feature) やゲノムアノテーションの位置を記述する方法です。ゲノムは塩基配列ですが、各塩基に座標が定義されています。「どの染色体のどこからのどこの区間か」によって、転写因子結合部位、DNA変異の位置、遺伝子領域などを統一的に記述することができます。
GIGGLEについて
GIGGLEはいわば「ゲノム上に定義された区間集合」の検索エンジンであり、ターゲットとなる区間集合のファイル(数千ファイル)に対してクエリの区間集合との重なりの有意性をランキングするものです。B+ tree をベースにしており、論文では、BEDToolsやTABIXといった既存手法よりも速いことが示されています。
GIGGLEを使うことで、例えば、手持ちのBEDファイルやVCFファイルがあるときに、ENCODE projectやRoadmap Epigenome project、FANTOM5といったコンソーシアムやChIP-Atlasのような二次データベースのデータセットとの重なりを一気に調べられます。また、UCSCが提供するような種々のゲノムアノテーションに対して重なりをみることもできます。
ダウンロード・インストール
こちらからダウンロードできます。GitHubのページで丁寧に説明されています。
https://github.com/ryanlayer/giggle
使い方
詳しくはGitHubのページ https://github.com/ryanlayer/giggle を参照してください。使用例の説明だけでなく、データセットの作り方も詳しかったです。
インデックス構築
まずインデックスを構築します。入力とするターゲットのファイル(群)は、BEDまたはVCFをbgzip
で圧縮したファイルです。ソートしておくと -s
オプションでインデックス構築が(たぶん)早く終わります。
giggle, v0.6.3
usage: giggle index -i <input files> -o <output dir> -f
options:
-s Files are sorted
-i Files to index (e.g. data/*.gz) (BED, VCF, またはそれらのbgzipされたファイル)
-o Index output directory
-f For reindex if output directory exists
検索
構築したインデックスに対して検索をかけます。クエリの入力はゲノム区間のテキスト表記 (-r
オプション) またはファイル (-q
オプション)です。クエリのファイルはBEDまたはVCFをbgzip
で圧縮したファイルです。
giggle, v0.6.3
usage: giggle search -i <index directory> [options]
options:
-i giggle index directory
-r <regions (CSV)>
-q <query file> (BED, VCF, またはそれらのgzipされたファイル)
-o give results per record in the query file (omits empty results)
-c give counts by indexed file
-s give significance by indexed file (requires query file)
-v give full record results
-f print results for files that match a pattern (regex CSV)
-g genome size for significance testing (default 3095677412)
-l list the files in the index
以下のこともできます。
- デフォルトでは、インデックス構築に使ったファイルごとに重なった区間の数を出力する
-
-r
オプションで[染色体名]:開始座標-終了座標
とテキスト形式でゲノム区間を指定できる -
-f
オプションで検索対象のファイルを絞ることができる -
-v
オプションで重なった区間のオリジナルのレコードを出力できる -
-s
オプションでオッズ比、Fisher's exact testのp-value, オッズ比とp-valueを統合したスコアを出力できる -
-v -o
でオリジナルのレコードをクエリのレコードごとに出力できる
逆に以下のことはできなそうです。
- 区間のstrandを考慮した検索
APIなど
GitHubページでの説明をみると、ウェブサーバーとして提供することができる他、C、Python、GoのAPIも用意されてるようです。
https://github.com/ryanlayer/giggle