見出し画像

【JKI】012_Obtaining_a_List_of_Human_Genes_via_REST_01_課題の理解

【JKI_012】課題を確認

Just KNIME It! (JKI)

今回の挑戦はこちら

DeepL翻訳がすごかった。

課題12:RESTによるヒト遺伝子の一覧の取得

レベル 中級

説明 あなたはライフサイエンス企業でデータラングラーとして働き始めて1ヶ月が経ちます。生物学部の数人の同僚が、特定のホルモンに関連するヒト遺伝子のリストを取得したいと考えていますが、REST サービスや GET リクエストなどの使い方を知りません。あなたの仕事は、MyGene.info が提供する REST サービスを使用して、同僚から提供されたホルモンのリストに関連するヒト遺伝子のリストを取得することです。次に、JSON レスポンスを解析して、読みやすいテーブルにする必要があります。

例えば、「http://mygene.info/v3/query?q=summary:」を使い、「insulin」を追加すると、リクエストは10件のヒット--それぞれ以下のフィールドを持つJSON構造を返すことになる。それぞれ、"_id", "_score", "entrezgene", "name", "symbol", "taxid "のフィールドを持つ。

そして、このJSONをパースして、"_id", "_score", "entrezgene", "name", "symbol", "taxid "のカラムを持つテーブルを作成しなければなりません。もし同僚から提供されたリストに複数のホルモンが含まれている場合、パースされたすべての情報を1つのテーブルに集約する必要があります。また、リクエストがJSONではなくXMLで応答を返すこともあります。XMLレスポンスもパースする方法を含めるにはどうしたらよいでしょうか?

ヒントが必要ですか?REST APIに関するYoutubeのビデオをご覧ください。

www.DeepL.com/Translator(無料版)で翻訳しました。

もう機械翻訳の性能が高すぎて人が修正を加えたかどうかわからないですね。強いて言えば企業には「生物学部」はないので生物系の部署とか、バイオロジー関連部署とか訳すかなぁ。

一方で、この問題文を読んで自分はかなり不安がありました。非プログラマーの私には日本語で書かれてもわからない技術用語が多々あったためです。以下いくつか抜粋してコメントします。

【データラングラー】

データ忍者、かっこええ。

奈良に住んでいるので(?)忍者の隠れ里にも比較的近くて親しみがあるのですが、データ忍者との表現は初めて聞きました。

あと、ライフサイエンス系の研究所でデータベース管理のお仕事もさせていただいているので、じゃあ私もデータ忍者なんだろうかと嬉しくなりました。ところがです。私は公共データをRESTfulサービス経由で取ってきた実務経験は皆無です。
これ、解けなかったらカッコ悪いのに私には難易度高くないですか。


【RESTとJSON】

いや聞いたことはあるんですよ、REST。
あと、仕事以外ではこのnoteではTeachOpenCADD-KNIMEで体験まではしてますので全く知らないわけではないです。

ただ、人さまへ説明できるほどは分からないので下記記事を引用しておきます。

そしてJSON。
困ったときのまっきーさん頼みです。

まっきーさんは大変丁寧に実例で説明して下さっているのでおすすめ記事なのですが、それでもまっきーさんは読者に

郵便番号検索APIはGet Request形式で、ResponseはJSON形式のデータを返してきます。
この文章の意味分かりましたか、、?

って確認しています。

日本の非プログラマーの初心者にとって、2つの言語のハードルがあると思っています。それが英語と技術用語です。

KNIMEの情報はコミュニティが発達しているので英語であれば本当に豊富にあります。

In the meantime, feel free to discuss your work on the KNIME forum or on social media using the hashtag #justknimeit.

なんて言ってくれてもいます。ただ英語での質疑は勇気が要るんですよね。

加えて上記のような技術用語もわからないため、何を訊いたらいいかから分からなかったりします。ある時に「私はJSONとか苦手意識あるんですよねー」て言ったときに、「何が難しいですかねー?」と聞き返されて返しに詰まってしまったことを想い出しています。

あらためて今回の課題は初見にはなかなかの難易度だと思いました。

【MyGene.info】

今回は一般のKNIMEユーザがなかなか訪れないであろう下記サイトが取り上げられています。

私も初めて閲覧したのですが、とても親切な作りになっているんですね。

上記サイトの真ん中あたりにあるTRY ITコーナーが素敵です。

下図でマークしたボタンを押すと、右のウィンドウに検索結果がJSONで出力されます。

https://mygene.info/

「http://mygene.info/v3/query?q=summary:」を使い、「insulin」を追加すると、リクエストは10件のヒット--それぞれ以下のフィールドを持つJSON構造を返すことになる。

の実例を見ることができます。なるほどJSON形式の出力とはこういったものかと知ることもできますし、各種Queryのお作法が理解できるので本当に親切です。

このサイトがあるからこそ、Just KNIME It!の課題に採用されたのではないかと思いました。いつも良い教材を探し出してくださって感謝です。

【JSONをパース】

一方で、「JSONをパース」って出題は一見何をするのかわかりにくくないですか?私は50年程生きてきてますが、「よし、今からパースするわ」って思ったことがないのです。仕事をパスしたりはあります。どうでもいいな。

そこで「JSON パース」で検索してみたら下記のサイトが見つかりました。

パースするとはどういった処理なのかについてですが、パースはデータを解析し必要なデータを取り出すことを意味します。

なるほど。
「JSON パース KNIME」でも検索してみました。

なるほどなるほど。やっと何をすればいいかが実感できた気がします。

しかしながら今回の課題の

リクエストがJSONではなくXMLで応答を返すこともあります。XMLレスポンスもパースする方法を含めるにはどうしたらよいでしょうか?

は私ではどう解答したら正しいのかわかりませんでした。上記サイトでXMLで応答が返ることはあるのでしょうか。

下記はおそらく参考になりうるKNIME workflow(WF)です。

Infocomの皆さま、WF日本語化の推進誠にありがとうございます。


【いよいよ解答へ挑む】

実は課題の理解に手間取ってしまって、私が分からないと思ったことの紹介だけで2000字を超えたので続きは次回に。寄り道が多いとの自覚はあります。

WFはKNIME Hubに上げました。(2022/4/18 修正あり)



おまけ:

おまけを書く暇があったら内容を充実させろとのご意見の方。あなたが正しいです。

すみませんが毎回何をおまけで書こうかなと楽しみにしていたりします。
前回の記事など丸ごとおまけの内容ですよね。


【Web経由でデータを取ってくるKNIME記事】

日本語縛りにしても、KNIMEを利用してWebからデータを取ってくる技術の紹介記事がかなりの数あります。用途も広いですね。

私はテーブル型に整形されたデータ群の処理ばかり普段しているのですが、一般的には公共データがAPIで提供されていたらほとんどがJSONやXML形式でデータ入手することになるのでしょうね。

以下は上述のまっきーさんの記事以外のリンク先の列挙です。

えっあの記事紹介しないのって重大な漏れがあったらごめんなさい。それぞれいつかじっくり勉強してみたいと思ったものを並べました。

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