【W8】タンパク質データの取得_06_Step2_03_GET_Request
【W8の目的】
Python版はより発展的です。
ただし、Python版のT8は、TeachOpenCADD-KNIMEのW8とは異なりRESTful APIを使用しています。つまり、GraphQLでのPDBデータ取得の基礎を学習するためにもW8は有用と考えられます。
デモデータを使ってW8のStep2を学んでいます。
Step1で得られたEGFRに関する156のPDB IDを用いて、
Step2ではまずPDB IDをキーにPDBから必要なデータを取得するため、Column Expressionsノードを2つ使ってGraphQL形式のクエリデータを含むURLを作成しました。今回はその次のGET Requestノードの働きを学びます。
【GET Request】
TOCのW1でも使われているノードです。
日本語化されたディスクリプションより
日本語での本ノードの利用例紹介もかなりの数あります。
利用上の注意点などもちゃんと書いて下さっているまっきーさんの記事は何度読んでも良いと思います。
ただ日本語で書かれた記事群はRESTが対象の記事で、GraphQLをKNIMEのGET Requestノードで扱っている日本語情報を見つけられていません。
URL形式でクエリを投げてJSON形式で出力を受け取る機能であることは共通です。ただ、今回の場合はGraphQLなので欲しいデータだけを効率よく出力させることができています。デモデータで追体験していけたらと思います。
設定:
デフォルトから変えてあるのは一か所だけでした。URL columnカラムで接続先を定義します。
本当はDelayは2000msとか長めに設定した方がいいらしいです。詳しくは上述のまっきーさんの記事を読んでください。
結果:重要なのはbodyカラム
1レコード目のbodyセルを以下に抜き出すと
前回で説明したとおり、1レコード目では
entry_id: が”2EB3"の{PDB_resolution}と{comp_id}と{formula_weight}を問い合わています。
その結果、問い合わせた項目だけがbodyとして返ってきていますね。
それをInputされた行すべてについて実行したわけです。
このノードの紹介は以上で次回は得られたデータの抽出と整形を見ていきます。
おまけ:こちらの方が本編より内容が多いですが
【GraphiQL】
今回はデモデータに従い、{PDB_resolution}と{comp_id}と{formula_weight}のみデータ取得しました。より発展的には、他の項目はどうしたらとれるかなと思われるのではないかと思います。GraphQL形式でクエリを書く必要があって初心者には敷居は高いです。その勉強のためになりそうなサイトがあります。
Google翻訳して表示したら上記のように結構読めます。凄いな。
ここまで数回に分けて紹介してきた内容もここに説明がありますのでよろしければどうぞ。そして右下の「エディターで開く」ボタンを押すと、インタラクティブに試行もできる下記サイト(GraphiQL)にとびます。
黄緑色でマークした再生ボタンみたいなのを押すと、クエリが「実行」され、
さっきデモデータのbodyで見たような形で要するに「4HHBのmethodはX線回折」との検索結果が表示されています。
左側のウィンドウには入力ができるので、今回のデモデータからgraphqlカラムの内容をコピペして、また「実行」してみてください。
右ウィンドウには先ほどのbodyと同じ内容がすぐさま表示されます。
どうでしょうか、GET Requestノードで” https://data.rcsb.org/graphql/”にGraphQLのクエリを投げているんだなと実感していただけたでしょうか?
このサイト(GraphiQL)を活用すると、自分で適切なクエリを書けるまで試行錯誤も可能です、原理的には。
あるいは、上記サイトのトップ画面に説明が書いてあるので、一部Google翻訳しておきます。
(以下略)とのこと。
との記載はその通りですね。ただ私にはスキーマの理解はちょっとハードルが高過ぎました。Docs(上図では黄緑色でマークした右上のボタン)も見たのですが、正直歯が立たなかったです。
【もうひとつのGraphQL実行例紹介】
もうちょっと具体例とかあると嬉しいんだけどと探したら、くろたんくさんのブログ記事がありました。
「PDB IDからのLigand情報の取得」を目的として
といいつつもPDB IDをもとに化学記述子(SMILES & InChI)など取ってきて、SMILESなど欲しい情報を抽出するところをPythonで書かれていました。さすがです。
記事を読んでいただきありがとうございます。 先人の智慧をお借りしつつ、みなさんに役立つ情報が届けられたらと願っています。 もしサポートいただけるなら、そのお金はKNIMEの無料勉強会の開催資金に充てようと思います。