21 09 2017 chemoinformatics RDKit Tweet
RDKitのMolオブジェクトにリストとかnumpyのアレイをプロパティとしてセットしたかったので、Gregさんにメソッド用意されていないのか、やり方がないのか聞いてみたら、C++じゃないと出来ないとのこと。
セット系だと
- SetBoolProp
- SetDoubleProp
- SetIntProp
- SetProp
- SetUnsignedProp
しか用意されていなくて、困ったなぁと途方にくれていたところ、 SetPropって文字列格納するからとりあえずシリアライズすればいけるんじゃないの ということでやってみた
>>> from rdkit import Chem >>> import numpy as np >>> import pickle >>> mol = Chem.MolFromSmiles("CC") >>> ar = np.array([[1,2,3],[4,5,6]]) >>> mol.SetProp("arraydata",pickle.dumps(ar)) >>> pickle.loads(mol.GetProp("arraydata")) array([[1, 2, 3], [4, 5, 6]])
というわけで無事にセットできましたとさ。pickle使っているのはnumpyだとファイルかファイルハンドルとるので面倒くさかったから。