いろいろ倉庫

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

【KNIME】化合物のDescriptorをたくさん計算してみたい

・先日、化合物の記述子をRDKitを使って算出した。この方法で、記述子を100個強得ることができたが、もっと得たい。

Pythonも含めて調べてみると、mordredというライブラリを利用するのが良さそうだった。mordredに関しては、以下を参照。

github.com

・まずはPythonの設定を行い、仮想環境中でmordredをインストールする。ちなみに、rdkitが入っていないとダメなので、もし入っていないようであれば一緒にインストールする。

・SMILESを用意して、Python Scriptノードに渡す(下図。ウィンドウはそれぞれのノードの出力)。1600個強のDescriptorが算出された。

f:id:choron81:20220403114019p:plain

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)

 

・何かに使えるかも。

 

終わり。