こんにちは、@PKです.
創薬 Advent Calendar 2018の5日目の記事です.
複数の創薬のターゲット分子がどのような因子と相互作用しているか調査をしたいと思い,BioGRIDというデータベースを使って,タンパク質相互作用の情報をまとめて取得することをKNIMEを使って行ってみましたので,紹介しようと思います.
KNIMEの説明部分はともかく,BioGRIDという相互作用に関するデータベースは非常に便利なので様々な場面で活用できると思います.
目的は,自分が興味のあるターゲット分子が,他の因子とどのように相互作用(Protein-Protein interaction)しているかをまとめることです.
相互作用情報を知りたいターゲット分子のリストを投げると,BioGRIDのデータベースから相互作用する因子をまとめて取得するというということを行います.
BioGRIDのサイトのURLを以下に示します. BioGRID | Database of Protein, Chemical, and Genetic Interactions
BioGRID は、interaction (相互作用)のデータベースで,論文の情報からキュレーションされた相互作用情報が登録されています.
おもに protein-protein interaction のデータ(physical interaction)がまとめてあります. 以下に「CSF1R」という分子を検索した時の結果を示しています. 各タンパクの右側に表示された数字は報告された論文数です.
「Detail」をクリックすると,どのような実験による相互作用なのか,参考にしている文献情報などを確認することができます.
これだけでも本当に,本当に便利なデータベースなのですが,例えば複数のターゲット分子に関して相互作用因子をまとめて取得したりしたい時に,KNIMEを使えばより簡単にデータを取得することができます.
このBioGRIDのデータはWeb browser以外でも,ダウンロードして自身のPCで解析することができます. 今回は,「BIOGRID-ALL-3.5.166.tab2.zip」をダウンロードしました.
BIOGRID-ALL-3.5.166.tab2.zip
This zip archive contains a single file formatted in BioGRID Tab 2.0 Delimited Text file format containing all interaction and associated annotation data from the BIOGRID for all species and experimental systems.
このファイルをエクセルで開くと,以下の赤枠部分のように相互作用因子(interactor A or B)の情報が載っています.
interactor Aとinteractor Bには同一遺伝子が含まれているので,KNIMEでまとめる際に苦戦しました.
少し煩雑なように見えますが(たいしたことはしていません),とりあえず目的のリストを作ることができたので紹介しようと思います.
(これが最善だとは思わないので,今後より簡単にできる方法があれば修追記します…)
主な流れとしては
- BioGRIDのリストから,目的のターゲット分子の情報だけを抽出する
- Rule Engineの準備
- Rule Engineを使ってターゲット分子と,相互作用している分子を別々のカラムに分離する
- 要らないカラムを除いてCSV形式で出力
という感じで進めていきました.
まずは以下の赤囲いの部分を説明します. ここではBioGRIDのデータ(interactor A / B)から,ターゲットリストに含まれる遺伝子を抽出する,という操作を行っています.
まず,Reference Row Filterを使ってターゲットリストをリファレンスにしinteractor Aとinteractor Bにターゲットが含まれているカラムを抽出し,その後concatenateノードを使ってまとめます.
得られた結果を見てみると,ターゲットリストに含まれていた分子と相互作用する分子のリストを取得することができました.
しかし,上述の通りinteractor AカラムとinteractorBカラムには同一の遺伝子が入っています.
このままだと,結果が見づらいので,
- ターゲット分子リストのカラム
- 相互作用因子のカラム
というように別々のカラムで整理をしようと思います.
上記目的のためにRule Engineというノードを使います.
Rule Engineノードは,ルールを示したルールテーブルをデータテーブルに適応することができます.
特に,Rule Engine(dictionary)ノードは,データテーブルを入力するポートとは別の第2入力ポートからルールのリストを取得し、入力テーブルの各行に一致させようとします.
ルールが一致すると、その結果が新しい列に追加されます.
以下のようなイメージです.
このルールテーブルの作成を以下で行っています.
String manipulationノードを使って,4つの新しいカラムを作成します.
new_column_1 : join("$Official Symbol Interactor A$", "=","\"",$target_symbol$,"\"") new_column_2 : join("$Official Symbol Interactor B$", "=","\"",$target_symbol$,"\"") new_column_3 : string("$Official Symbol Interactor B$") new_column_4 : string("$Official Symbol Interactor A$")
4つのString Manipulation処理を実行するとルールテーブルが作成されました.
続いて,Rule Engineを使ってカラムの整理を行います.
上図赤枠で囲んだRule EngineのDialogを確認すると,ルールカラム(左下の入力ポート)において,どのカラムのルールを参照するのかと,ルールに一致した場合の処理はどうするのかを指定します.
この場合ですと,「Official Symbol Interactor A」というカラムにターゲットリストで指定した分子が入力されているならば(new column_1のルール),「Official Symbol Interactor B」に記入されているターゲット分子(new column_3のルール)をinteraction_targert_Aという新しいカラムに追加してください,という処理ができます.
この操作で,ターゲット分子と相互作用している分子の情報を抽出できました.
同じことを青枠のRule Engineでも行っています. ここでは,「Official Symbol Interactor B」というカラムにターゲットリストで指定した分子が入力されているならば(new column_2のルール),「Official Symbol Interactor A」に記入されているターゲット分子(new column_4のルール)をinteraction_targert_Bという新しいカラムに追加してください,という処理を行っています.
そうすると「interaction_target_A」と「interaction_target_B」というカラムができるので,それらをcolumn mergerで繋くことで,相互作用分子のリストを取得することができました(下図紫枠囲いカラム).
続いてRule Engineを以下のように使用することでターゲットリストの分子を一つのカラムにまとめます.
これでターゲット分子のカラムと,その分子と相互作用する分子のカラムをそれぞれ作成することができました.
最後にRule Engineを使ってターゲットリスト分子と相互作用分子の生物種をカラムにまとめて(割愛します),余計なカラムを除いて出力したら完成です.
このように,複数のターゲット分子の情報から相互作用因子と,関連する文献情報を抽出することができました. 複数のターゲット分子がどのような因子と相互作用しているのか,文献網羅的に収集してそれらのターゲット分子の薬効への作用メカニズムを深堀する際に便利かもしれません.