いろいろ倉庫

KNIME、EXCEL、R、Pythonなどの備忘録

【KNIME】sdfファイルから化合物の情報を抜き出したい。

・先日、化合物をKNIMEで扱ってみた。

・化合物の構造ファイルとして、いろいろな記述法があり、中でもSMILESとSDFはよく見かける。

・SMILESの特徴は、1次元の文字列の配列であり、記述自体がシンプルであること。SDFの特徴は、化合物の構造以外の情報も盛り込めることだと思う。

・今回は、SDFから化合物名などを抽出する方法をメモしておく。

・SDFファイルの構成は以下の通り。

f:id:choron81:20220129181336p:plain

・思うに、"M END"までが構造情報で、"><chembl_id>"など"><>"で囲まれたところが項目名、そのあとの行がその内容で、分子同士の区切りが"$$$$"になっているのだろう(あっているかは知らない)。
・このSDFファイルには、構造情報以外に"chembl_id"と"chembl_pref_name"という情報が含まれ、それぞれ"CHEMBL32479"と"BROTIZOLAM"であるらしい。

・これらの情報を抽出するワークフローを組んでみた(下図)。

f:id:choron81:20220129182225p:plain

・工程は以下の通り。

①SDFファイルを読み込む。

上の出力ポートからは、ちゃんと読み込めた分子が出てくる。

下の出力ポートからは、ちゃんと読めなかった分子が出てくる。

②><chembl_id>でSDFファイルを読み込んだ文字列を切る(下図。Cell Splitterの設定画面と出力画面)。

f:id:choron81:20220129190844p:plain

f:id:choron81:20220129190920p:plain

③> <chembl_pref_name>でSDFファイルを読み込んだ文字列を切る(下図。Cell Splitterの出力画面)。

f:id:choron81:20220129191058p:plain

④String Manipulationで$$$$を削除した(下図)。

f:id:choron81:20220129191130p:plain

・これで、目的の情報の抽出はできる。あとは"Column Filter"で必要な列を抽出したり、"Column Rename"で列名を変更したり、"Column Resorter"で列の順番を変更したり、表示を切り替えたりすると、見やすい感じになった(下図)。

f:id:choron81:20220129192039p:plain

 

終わり。