見出し画像

【W1】ChEMBLから化合物データを取得_03_ChEMBLデータ処理メタノード_Step1_前編

本パートの目的
ChEMBLからデータを抽出する方法の学習:
• ある特定の標的に対して評価済みのリガンドを見つける
• 取得可能な生理活性データでフィルタリング
• pIC50値の計算
• データフレームを結合し、取り出した分子を描画

(引用元) https://magattaca.hatenablog.com/entry/2020/04/11/150334

前回にKNIME workflow(WF)の入力部を説明しました。

今回はChEMBLからどのようにデータを取得してくるかを見ていきます。

【1.Data acquisition from ChEMBLメタノード】

今回は

画像1

上図のメタノードの中身を見ることにします。
右クリックし、Metanode>Openを選択します。
前回説明したコンポーネントとは異なり、ダブルクリックしても開くことができます。

画像5

そうすると、メタノードの内部が、別タブで開きます。
どうでしょう、中身の多さに驚かれた方もいるのではないでしょうか。

じつはこの子階層の下にさらに孫階層となるメタノードがあります。
下図のGet activities countメタノードとGet activitiesメタノードです。
こうやって、何階層かに分けて、まとめたり注釈をつけてくれるので、俯瞰的にWF全体を理解しやすくなるのが、メタノードの利用目的の一つです。

画像5

今回はこのStep1の前半、Get activities countメタノードだけを説明予定です。

以降のStep1後半と、Step 2~7はまた後日。これ、まだW1の最初なんですけど、WF全体だとW8まであるんですよね。
皆さんどこまでつきあって下さるんでしょうか?おそらく2022年まで掛けて淡々と続けますのでよろしければどうぞ!

画像3

【WFをわかりやすくする工夫の色々】

TeachOpenCADDのチームの方々は、ケモインフォマティクスの教材としてこのWFを提供してくれているので、WF概要について説明や注意書きを残し、各nodeもどんな機能かを下部にコメントしてくれています。

まさに、まっきーさんのいう

KNIME - ブラックボックスツールにしないためには? メモを残そう ~Annotation・Metanode・Node Description~

の実践といえます。この記事はとても勉強になるので一読をお勧めします。

【Step1の概要】

画像4

Get activities countメタノードとGet activitiesメタノードは2つセットで機能を発揮します。
Get activities countメタノードでは、入力されたターゲットのChEMBL IDで検索して、何件の活性値データがヒットするかを調査し、次のGet activitiesメタノードで何回ループを回して処理すべきかを算出しています。
Get activitiesメタノードでは1000データごとに分けてデータを取得し、必要な情報を抜き出して集計しています。


Column Resorterはカラムの表示順を設定しています。
Table Viewは結果を一覧表すなわちテーブル形式で表示するためのノードです。

【Get activities countメタノード】

Get activities countメタノードの中は下図のようになっています。

画像6

説明しだすときりがないのですが、Get activities countメタノードを左クリックして選択された状態にしたのち、Descriptionウィンドウを見ると、メタノードの中身に関しての概要が説明されています。

画像7


今回は概要理解までで、以降に進もうかと考えています。
詳しく設定や各ノード動作を理解し、活用するのは難易度が高いので目的に合わせて各自で深堀りするのが良いと思います。
各ノードについては、すさんやまっきーさんら先達が既に素晴らしいブログ記事を書いて下さっているので、リンクを貼って紹介しつつ説明を進めます。

Description:
Get activities count and calculate how many iterations are needed to get activity data in a loop of 1000 molecules per iteration.

すなわち活性値の総数を取ってきて、1回あたり1000化合物ずつ活性値を取るループを回すとして、何回繰り返し処理をするかを計算しています。

画像8

左から順に各ノードの働きの説明をします。

【String Manipulation】

活性値の総数を取ってくるためのリンク先の文字列を作成しています。

ノードの機能詳細はこちらを参照

結果、count_urlが新たに作られました。

画像9

デモデータではCHEMBL203(EGFR)について検索を掛けます
“https://www.ebi.ac.uk/chembl/api/data/activity.json?target_chembl_id=CHEMBL203&target_chembl_id=CHEMBL203&limit=1”

【Get Request】

ChEMBLデータベースのAPIから活性値の総数データを含むデータを取得しています。
JSON形式のデータは扱いなれた方でないと、一見して何が書かれているかわかりにくいでしょう。私もそうです。以降でデータ抽出する様子を見ていきましょう。

ノードの利用方法の詳細はこちらで。

画像10


【Row Filter】

いろんな機能があるけれど、今回はbodyの欄が空だったら行ごと削除
(bodyカラムがonly missing valueだとExcludeする設定)

RowFilter_空白除去

ノードの詳細はこちらで。

デモは空白値がないので実行後も変化なし。

【JSON Path】

bodyカラムのJSONデータから、total_countのデータを抜き取り、countカラムとする。画像12

ノードの利用例はこちらで。


実行結果は、Tableの末尾にcountすなわち活性値の総数データが入った。

画像13

【Math Formula】今回は2つ連結して利用

Math Formulaノードはとにかく計算に関して多機能です。初心者でもきっと使うので下記の記事はお勧めです。

デモデータでは、countカラムを見ると24402データがあるのが分かります。1000データずつなら25回で全てのデータを処理できますね。この何回に分けて処理したらいいかを算出しているのが、今回のMath Formulaの用途です。
① countを1000で割り、その値を1で割った余りつまり小数点以下の値を取得。カラム名をmodulus_countとする。

画像14

結果は

画像15


続いて、count/1000から小数部分を引けば整数部分だけが算出されるので、そこに1を足せば、目的の何回に分けて処理したらいいかが算出できます。

カラム名をrest_roopsとしています。

画像16


結果は

画像17


【Table Row to Variable】

rest_loopsが算出され、次の処理をGet activitiesメタノードで行う際、何回繰り返し処理したらいいかを変数rest_loopsとして出力します。

ちなみに他のカラムも同様に、カラム名と同じ名前の変数として出力されています。
メタノードの場合は、入力部からの変数と、内部で発生した変数を全て出力する初期設定になっています。ここはコンポーネントと異なるところです。

画像18


変数に関してのおさらいとノードの利用例はこちらで。


ようやくメタノード1つ目の説明が終わりました。ほんの一部なのに、駆け足で紹介しても長文になってしまいました。

W1の解説完了まで、まだまだかかります。後編へ続く。



記事を読んでいただきありがとうございます。 先人の智慧をお借りしつつ、みなさんに役立つ情報が届けられたらと願っています。 もしサポートいただけるなら、そのお金はKNIMEの無料勉強会の開催資金に充てようと思います。