SDファイルってなくて二癖
創薬化学者がKNIMEでSDF(SDファイル)を使うときの2つの問題を先日紹介しました。
今回は解決編と大きく出ましたが、うまく行ったこともあるよと言う話です。以下を試してもうまくいかないと言う方、ご連絡いただけたら一緒に悩みます。
【KNIME】SDファイル読み書きでの困りごと①:日本語使うと何かが起きる
- もらったSDファイルをSDF Readerで読み込んだら文字化けしていた
日本では自分で意識することなくSHIFT-JISなどの文字コードでSDFを作る方が多い一方で、KNIMEは海外製品のため明示的に指定してやらないと自動では正しく文字コードをSHIFT-JISと認識してくれません。デフォルトがUS-ASCIIなのだそうです。
- 文字セットの選択: SDFファイルを異なるエンコーディングで読み込むために、UTF-8、UTF-16などの文字セットを選択することができます。また、Java VMでサポートされている他のエンコーディングを指定することも可能です。
- デフォルトのエンコーディング: ノードはデフォルトでUS-ASCII(7ビットエンコーディング)を使用します。
日本語でカラム名をつけたり、文字列データに「♂」とか入れたい日本の研究者さんはある程度いますので、文字化けの問題は今後もきっと繰り返されると思います。
日本語ってプログラマー泣かせらしいですよ。
「ASCIIをUTF-8にして」それが『できない』ことを理解してもらえなかった話 #ポエム – Qiita
あのInfocomの大島さんでも言ってた。
インタビューの10分位から。
「日本語使うと何かが起きるかなっていう風なの、いつもなんか気にしながらコンピューター触ってる」
ちなみにある計算化学者は創薬研究をしていて未だに日本語でデータを扱っていることが心得違いだって言ってました。少々過激だと思いますけど、実際国内大手の製薬企業なら上司や同僚が日本語話さないのって普通ですよね?幻想!?
そうはいっても創薬研究者は忙しいと思います。
あんまりケモインフォマティクス(と英語?)の勉強に時間が割けなくて、ただ化合物リストを使って自分の研究業務(購入試薬リスト作成とか、計算化学者へのシミュレーション依頼とか)を遂行できればいいだけなのにってイラっとするでしょう。
そんなとき、KNIMEを嫌いになる前に以下を試してみてください。解決することもあります。
SDファイル読込み時の文字化け対策例
SDF(SDファイル)をKNIMEのSDF Readerで読み込んで文字化けが起こったら、文字コード設定を疑ってみましょう。
SDF Reader ノードにはEncodingタブと言う設定画面があります。
補足なんですが、新しめのKNIME Analytic Platform (KNIME AP)をつかったほうがいいみたいです。私はまだKNIME AP ver. 4.7.4を愛用しています。
昔は上記の設定ができなかったのかな。
【KNIME】SDファイル読み書きでの困りごと②:消せない!?幽霊カラム
前の記事でポルナレフも驚いた、消したはずのカラムがSDファイルに書き出される件は結構有名です。
stange behaviour of SDF writer – KNIME Analytics Platform – KNIME Community Forum
上記の記載をCopilotにまとめてもらいました。
「このページの主要なポイントは以下の通りです:
問題の概要: KNIMEを使用してSDファイルを結合する際に、フィルタリング後も削除したはずの列がSDファイルに残ってしまう問題が発生しています。
原因: SDファイルの「SDF molecule」セルには、構造データに続いて他のプロパティ/データフィールドが含まれているため、テーブルを処理して出力すると、これらの列が出力テーブルに再度追加されます。
解決策: ‘extract mol blocks’オプションをSDFリーダーでチェックすることで、「mol」というタイプの二番目の構造を含む列が得られます。その後、他の列を任意に処理し、SDFライターを使用する際には「sdf」列ではなく「mol」列を分子を含む列として選択します。
追加のツール: SDF Stripperノードが新たに導入され、SDF構造セル内に隠されたデータ列をクリアすることができます。これを使用した後にSDFライターを使用すると、予期せぬ追加列が表示されることはありません。」
私はSDF Stripperノードを利用した解決例をKNIMEHubに上げましたので、宜しければどうぞ。
コメント