ゲノミクスの分野でも深層学習を活用したモデルがいくつかあります。
例えば、塩基配列から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の仮想環境と同じような扱いになります。
モデルをダウンロードして使うだけでなく、自分でトレーニングしたモデルをアップロードして共有することも出来るようです。
これからも使っていきたいです。