KNIMEでChemdrawファイルを読みたい 〜 Chemical Structures File Reader〜
以前にsdfの読み方を紹介しました。
『構造式の入ったファイルありますか?』
→『cdxなら有るんだけど…。』
みたいなことを言われるパターンもあるんですよね。該当ファイルが1つ2つなら、手動で開いてsdfとして保存し直す。これでいいんですが、もっと沢山あるとやる気が失せます。複数ファイルを一括で読む方法は置いておいて、
【なんとかchemdrawファイルは読めないのかね?】ということです。
はい、読めます。
Erlwood nodeのChemical Structures File Readerを使うと読めるんです。難しい設定はありませんが、1つのcdxに複数の構造が含まれる場合、それぞれを単一の化合物として扱うには、4つくらいノードを繋げる必要があります。今回はこれを紹介します。
Chemical Structures File Reader
読みたいファイルを指定します。今回の場合はcdxです(もちろんsdfも読めますよ)。
apply-OKして実行するとこんな感じになります↓
今回の例の場合、4分子がまとまって1つの化合物として認識されています。そこでこの4分子をバラバラに分割します。
Componet Separator
どこのカラムの構造をバラすの?という設定がMolecule columnです。今回はSDFの方にしてください。apply-OKして実行すると次のようになります。
個々の分子に分割できました。これで、もう1つにまとまってるやつらは不要なので除きます。
Column Filter
以前に紹介したRow Filterに似ています。
【超入門(2/3)】KNIMEの使い方 〜欲しい行だけ抽出しよう(Row filter, splitter)〜
設定画面は下の通りです。
捨ててしまう情報をもつカラムを赤枠側、残すカラムを緑枠側に指定します。今回のフローの場合、読み込むcdxの内容が変わっても捨てるのは必ずMoleculeとSDF StringなのでEnforce exclusionにチェックを入れているのがポイントとなります(componet #nは増減する可能性がある)。それでは実行してみます。
欲しい部分だけになったのが確認できました。それでは最後に縦横を変えてみましょう。これは前回紹介したTransposeの復習です。
【KNIME】ノード紹介:Transpose, Pivoting 〜表(table)の縦と横(行と列)を入れ替えたい〜
特に設定は不要です。実行すると次のようになります。
完成です。あとはカラムの名前を変えたいですね。それは次回紹介します。
sdfを読むときに困った場合、Chemical Structures File Readerが役に立つことがあります。たまに日本語が入ってるsdfがあって、文字コードのせいで化けることがあるんです(例えばUTF-8のsdfをwindows環境でKNIMEに読み込む場合など)。
色々試したのですが、sdf readerでは文字コードの指定はできないっぽいので、元のファイルの文字コードを何かしらの手段で変えるしかない(前述のケースだと、例えばメモ帳で開き、別名保存することでANSIに変える)。面倒臭い。そんな時はErlwood nodeのChemical Structures File Readerを試してみてください。何もしなくても意外と読めます。
近いうちに、構造検索の方法でも紹介してみようかと思います。