![見出し画像](https://assets.st-note.com/production/uploads/images/86044028/rectangle_large_type_2_6a5c229598a0f3e7c66c67fb209affe4.png?width=1200)
【W8】タンパク質データの取得_08_Step2_05_リガンドデータを分解
【W8の目的】
(i) PDBデータベースからEGFRの全てのPDB IDを取得し、
(ii) X線結晶構造解析による構造で、最も質の良い4つのタンパク質ーリガンド複合体構造を取得して保存します。
Python版はより発展的です。
【JSON Pathの出力まで再確認】
デモデータを使ってW8のStep2を学んでいます。上記の(ii)を実行中。
![](https://assets.st-note.com/img/1662127329425-rQJImfl7Ir.png?width=1200)
Step2ではPDB IDをキーにPDBから必要なデータを取得するため、GET Requestノードで得たJSON形式の出力を処理します。Process JSONメタノードの中身を見始めたところです。
![](https://assets.st-note.com/img/1662127354389-vuUSofo2EK.png)
![](https://assets.st-note.com/img/1662127362589-vsQqZNONUA.png?width=1200)
上図左端のJSON Path一つ目で2つのデータ(群)を抽出しました。
nonpolymer_entitiesカラムには各entry_idのリガンド群データがリスト形式で入っています。
![](https://assets.st-note.com/img/1662127411414-o1XZrNhnAI.png?width=1200)
【Split Collection Column】
![](https://assets.st-note.com/img/1662127442350-MSSWcdxxwG.png)
リガンド情報はまださらにリガンドごとにデータを分けていって、欲しい部分だけを抜き出す必要があるので、まずは下記の設定で分けます。
![](https://assets.st-note.com/img/1662127472700-afmanxioZ0.png?width=1200)
結果:Split Value 1~5の5つのカラムが新たにできました。
![](https://assets.st-note.com/img/1662127500734-Tg6NhPcC3x.png?width=1200)
また余談ですが5つもリガンドを持つデータはどんなんだろうと思ってみてみたら
![](https://assets.st-note.com/img/1662127539541-gNBfuZLNrt.png?width=1200)
ナトリウムイオン、塩化物イオンに硫酸イオン、有機化合物として
の5種なんてのもありました。
【Unpivoting】
![](https://assets.st-note.com/img/1662127633901-hkXZ8MuBVi.png)
リガンドのデータ処理を効率よくやるためにSplit Value 1~5の5つのカラムを縦に並べ替えます。
設定:
![](https://assets.st-note.com/img/1662127661497-9R5KFp0kiF.png?width=1200)
ちゃんとリガンド数が今後違うデータ種でも正しく動作するようにColumnの指定方法が設定されている心遣いに感謝です。
結果:
![](https://assets.st-note.com/img/1662127699000-wP3Bhp9EnM.png?width=1200)
全てのentry_idごとに5行にUnpivotされています。
【JSON Path】二つ目
![](https://assets.st-note.com/img/1662127743834-LAKyWTZNGC.png)
このノードについては前回で詳しく紹介しました。
今回は単純なクエリ(確定JSONPathとも呼ばれる)を用いて、単一の値を2種取ってきます。
設定:
![](https://assets.st-note.com/img/1662127874492-d4hHPDVLXp.png?width=1200)
結果:
![](https://assets.st-note.com/img/1662127902903-mdvRy2SSfn.png?width=1200)
これで欲しかった3種のデータを取り出してデータテーブル形式にはなりました。
ただ、無駄に空白データの部分があったり、formula_weightは分子量1000を1とする小数表示だったりで率直に言って見にくいです。
ここまではETLのEすなわちデータ抽出(Extract)をしてきたと思います。
次回からはETLのTすなわちデータ変換(Transform)です。もっと見やすいデータテーブルにしていきます。
おまけ:
【KNIMEとETL】
まっきーさんが上記の記事でも書いていた通り、
「無料 ETL Tool としてのKNIME」
は強力で、KNIME社も記事を公開しています。
ところが大人の事情もあるとは思いますが、日本国内ではKNIMEは他のETLツールに埋もれています。
無料のツール群の中ではコミュニティが強くていろんな支援が受けられるところはKNIMEの特長だと思います。
日本語での宣伝活動がもっと進んだら、日本でも普及が進むのかなぁ。
私の知り合いだとデータベースからのデータ抽出とETLの自動化はKNIMEでやって、専門的で高度なプログラム処理はPythonかRって人もいます。
創薬研究などライフサイエンス系はもともとKNIMEが強い領域だからユーザーが多めなのかもしれません。
一方で、最近はいきなりすべてPythonの方がいいって方が増えてきているようにも感じています。明日はどっちだ。
なんて思っていたところで最近界隈で話題になっているノブさんの「現場的にどうでしょう」を読みました。以下紹介しつつKNIMEを私が推している理由も書きます。
【KNIMEは「現場的にどうでしょう」】
創薬研究の現場的にどうなのかを共感できる優れた記事だと思うのでお勧めします。
様々な立場の方のそれぞれの実情を掬い取ってくれていると思いました。私は創薬研究のためのITサービスを提供する立場になったので、下記の文に特に共感しています。
導入時は「すごく良い!」と思ったシステムも、社内(または部署内、チーム内)で認知され、使ってくれる人が増えなければ意味がありません。導入されたシステムやツールが、いつの間にか誰にも使われなくなり放置されているといったことは、どこ会社でも少なからずあるでしょう。
「このシステムを使うからPythonを勉強してください」なんて言われたら、一部の興味がある人以外は誰も見向きはしないでしょう。「使いたい項目を選んでOKボタンをクリックするだけ!」くらい簡単なシステムでないと、浸透させるのはなかなか難しいのです。
現場の研究者たちが与えられたシステムやツールに全て満足することはまずありません。簡単な操作性を実現しても、自分はこういう機能を追加してほしいと願うことが多々あります。
そんな時、システムやツールをKNIMEで提供してあると、各自でのカスタマイズもできるよと答えられるのが魅力的です。
加えて、TeachOpenCADDをはじめ玄人さんたちが多くの利用例を公開して下さっていますのでユーザーへの利用支援がしやすいです。
例えばですが、PDBからデータ群を取ってきて解析したいと言う人にW8のメタノードを渡す。
![](https://assets.st-note.com/img/1662178684728-3Bc1qbLVwX.png)
top 4に絞られちゃうのは困るとか、リガンド群の構造をまとめてみたいとおっしゃる方がいたら下記の記事を紹介
などできますよね。
あるいはきっと何人かのユーザーさんはメタノードの中身を知りたがりますので、その時はよくぞ聞いてくれましたと私の記事を紹介(笑)。
社外コミュニティだけでなく、社内のユーザー同士の口コミや協力が大切なんですが、共通のシステムツールとしてKNIMEなら使ってみようと言う非プログラマーの方はPythonよりは多いでしょう。
ユーザーさんと一緒により良い仕組みをつくって行こうと思った時、KNIMEって最初の一歩に有用です。
ノブさんは、
仕組みをつくるだけで生産性の向上や効率化が進むとは思っていません。何より大切なことは、仕組みをしっかり浸透させられるだけの意識や文化を作ることだと考えます。
と書かれています。
仕組みを作ってユーザーと改良する試みこそが、「仕組みをしっかり浸透させられるだけの意識や文化を作ること」につながると思うのです。
皆さんの「現場的にどうでしょう」?
記事を読んでいただきありがとうございます。 先人の智慧をお借りしつつ、みなさんに役立つ情報が届けられたらと願っています。 もしサポートいただけるなら、そのお金はKNIMEの無料勉強会の開催資金に充てようと思います。