課題別チュートリアル
PythonでSMILESからSDFレコードを書き出す
構造名と正確な元SMILESをSDデータとして残した、ローカルのSDF構造レコードを作ります。
作るもの
エタノール構造、自動生成した2D座標、レコード名、source_smilesフィールドを持つethanol.sdf。
手順
- 完全なSMILESを1つローカルで解析し、人が読めるレコード名を設定します。
- ファイルを書く前に、正確な元SMILESをSDプロパティとして保存します。
- SDWriterでSDFレコードを1つ書き出し、ヘッダー、プロパティブロック、レコード終端を確認します。
import chematic
smiles = "CCO"
mol = chematic.from_smiles(smiles)
mol.SetProp("_Name", "ethanol")
mol.SetProp("source_smiles", smiles)
with chematic.SDWriter("ethanol.sdf") as writer:
writer.write(mol)
print({"input_smiles": smiles, "file": "ethanol.sdf"})期待する結果
ethanol.sdfはethanolという名前のV2000 SDFレコードとして開けます。SDデータにCCOを値とするsource_smilesが入り、レコードは$$$$で終わります。
うまくいかないとき
解析エラーはファイルを書き出す前に修正します。このwriterが作るのは構造レコードと2D座標であり、物質同一性、立体化学の意図、試料の由来、安全性、実験的妥当性の証明ではありません。一括変換では元ファイルを残してください。