課題別チュートリアル

PythonでSMILESからSDFレコードを書き出す

構造名と正確な元SMILESをSDデータとして残した、ローカルのSDF構造レコードを作ります。

作るもの

エタノール構造、自動生成した2D座標、レコード名、source_smilesフィールドを持つethanol.sdf。

手順

  1. 完全なSMILESを1つローカルで解析し、人が読めるレコード名を設定します。
  2. ファイルを書く前に、正確な元SMILESをSDプロパティとして保存します。
  3. 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座標であり、物質同一性、立体化学の意図、試料の由来、安全性、実験的妥当性の証明ではありません。一括変換では元ファイルを残してください。

次の行動

SDFやCSVをローカル解析する