【KNIME】化合物のDescriptorをたくさん計算してみたい
・先日、化合物の記述子をRDKitを使って算出した。この方法で、記述子を100個強得ることができたが、もっと得たい。
・Pythonも含めて調べてみると、mordredというライブラリを利用するのが良さそうだった。mordredに関しては、以下を参照。
・まずはPythonの設定を行い、仮想環境中でmordredをインストールする。ちなみに、rdkitが入っていないとダメなので、もし入っていないようであれば一緒にインストールする。
・SMILESを用意して、Python Scriptノードに渡す(下図。ウィンドウはそれぞれのノードの出力)。1600個強のDescriptorが算出された。
・Python Scriptノードの中のコードは以下。私はプログラミングに暗いので、何かおかしいかもしれないが、ご容赦いただきたい。入力ポートから入ったデータはPandasのDataFrameとして扱われる。また、出力形式はPandasのDataFrameでないと受け付けられない。算出したdescriptorsを文字列に変換してからPandasのDataFrameに変換するところがミソ。
from rdkit import Chem
from mordred import Calculator, descriptors
import pandas as pd
#dfを定義して、MOLオブジェクトを作成
df = input_table_1
df['MOL'] = df['SMILES'].apply(Chem.MolFromSmiles)
#mordredのDescriptorを計算
calc = Calculator(descriptors, ignore_3D=True)
descriptors = calc.pandas(df['MOL'])
#descriptorsをPandasのDataFrameに変換
descriptors = pd.DataFrame(descriptors.astype(str))
#元の表にDescriptorの表をくっつけて出力
output_table_1 = input_table_1.join(descriptors)
・何かに使えるかも。
終わり。