LoginSignup
4
8

More than 3 years have passed since last update.

Kipoiでゲノミクスの深層学習をやってみる

Last updated at Posted at 2020-05-14

ゲノミクスの分野でも深層学習を活用したモデルがいくつかあります。
例えば、塩基配列からDNA・RNA結合タンパク質への結合能を予測するDeepBindや、塩基配列からエピジェネティックな修飾を予測するDeepSEAなどです。

Kipoiは、ゲノミクスの深層学習の様々なモデルを利用することができるプラットフォーム(論文ではレポジトリとされてる)です。
KerasやTensorFlow、PyTorch、Scikit-learnで書かれたモデルに対応しています。
トレーニングされたモデルをロードして、簡単に自分の配列データで試して予測値を出すことが出来ます。

ホームページ:http://kipoi.org/
論文:https://www.nature.com/articles/s41587-019-0140-0

実際に使ってみる

環境は
Ubuntu 16.04
Anaconda
Python 3.6
です。

インストール

pip install kipoi

これでインストールできました。バージョンは0.6.25でした。

エラー情報

この後動かしてみた時にAttributeError: 'Table' object has no attribute 'purge'というエラーが出ることがあります。
これはtinydbが新しいバージョンであるからのようです。
その場合は下記のようにして古いバージョンを入れなおすと直ります。

pip uninstall tinydb
pip install tinydb==3.13.0

Kipoiを動かしてみる

チュートリアルがgithubで公開されていて試すことができます。(https://github.com/kipoi/examples )
今回はチュートリアルの最初のところをやってみます。

まずはチュートリアルのセットをダウンロードします。

git clone https://github.com/kipoi/examples.git
cd examples

kipoiのモデルリストを読み込みます。

kipoi ls

これで使えるようになりました。ホームフォルダにモデルの入るフォルダ(.kipoi/models/)が作成されました。
次に新しい仮想環境を作ります。

kipoi env create shared/envs/kipoi-py3-keras2

これでcondaの中に「kipoi-shared_envs_kipoi-py3-keras2」という仮想環境が作られました。
その仮想環境に移動します。

conda activate kipoi-shared__envs__kipoi-py3-keras2

*マニュアルでは上記コマンドがsource activateとなっていましたがそれでは動かず、conda activateに変更したら動作しました。

いくつかのテストコードを試してみます。

kipoi test Basset --source=kipoi
kipoi test DeepSEA/predict --source=kipoi
kipoi test DeepBind/Homo_sapiens/TF/D00328.018_ChIP-seq_CTCF/ --source=kipoi

動作することが確認できました。

example1

example1の予測をやってみます。

cd 1-predict

inputフォルダにサンプルデータがあるので、解凍します。

zcat input/hg19.chr22.fa.gz > input/hg19.chr22.fa

予測を行います。
今回使うDeepBindのモデルでは100塩基ずつを入力としてCTCFとの結合能の予測を出力します。
fasta_fileには塩基配列の情報が入っていて、
intervals_fileは取り出す塩基配列の場所(startとend)の情報が入っています。

kipoi predict DeepBind/Homo_sapiens/TF/D00328.018_ChIP-seq_CTCF \
   --dataloader_args='{"intervals_file": "input/enhancer-regions.hg19.chr22.bed.gz",
                       "fasta_file": "input/hg19.chr22.fa"}' \
  -o preds.tsv

予測ができました。

出力(preds.tsv)の中身を見てみます。

$ less preds.tsv
metadata/ranges/chr     metadata/ranges/end     metadata/ranges/id      metadata/ranges/start   metadata/ranges/strand  preds
chr22   17274293        0       17274192        *       -4.108346
chr22   17274548        1       17274447        *       -2.6903393
chr22   17275618        2       17275517        *       -5.2259955
chr22   17275863        3       17275762        *       -5.2259955
chr22   17287134        4       17287033        *       -4.2063684
chr22   17288718        5       17288617        *       -5.2259955
chr22   17570303        6       17570202        *       -4.93376
chr22   17597591        7       17597490        *       -4.4880404
chr22   17597800        8       17597699        *       -4.825454
chr22   17598104        9       17598003        *       -5.190316
・・・・・

一番右の列が予測値です。

チュートリアルの続きにはSnakefileが使われていて、これを動かすにはsnakemakeをインストールする必要があるようです。(snakemakeは便利なワークフローの自動化ツールです。こちらを参照)

Pythonでの実行方法

これまでは全てをCLIで行いましたが、PythonやRのAPIもあります。
仮想環境に入った後は、Pythonで以下のようにして実行していくようです。(マニュアルからの抜粋)

import kipoi

kipoi.list_models() # list available models
model = kipoi.get_model("Basset") # load the model
model = kipoi.get_model(  # load the model from a past commit
    "https://github.com/kipoi/models/tree/<commit>/<model>",
    source='github-permalink'
)

# main attributes
model.model # wrapped model (say keras.models.Model)
model.default_dataloader # dataloader
model.info # description, authors, paper link, ...

# main methods
model.predict_on_batch(x) # implemented by all the models regardless of the framework
model.pipeline.predict(dict(fasta_file="hg19.fa", intervals_file="intervals.bed"))
# runs: raw files -[dataloader]-> numpy arrays -[model]-> predictions 

感想など

ゲノミクス解析のプラットフォームとして非常に興味深いと思いました。
kipoiで作った仮想環境はAnacondaの仮想環境と同じような扱いになります。
モデルをダウンロードして使うだけでなく、自分でトレーニングしたモデルをアップロードして共有することも出来るようです。
これからも使っていきたいです。

4
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
8