課題別チュートリアル

重複確認の前に塩を含むSMILESを標準化する

提出されたSMILESを上書きせず、塩を含む記録に対して重複確認方針を明示した比較用の表現を作ります。

作るもの

元のSMILESを保持したまま、選択した重複確認方針に合う標準化結果をローカルで追加する小さなレポート。

手順

  1. 提出されたSMILESは元の記録として変更せずに残します。
  2. 確認方針に合う場合だけ、ローカルで解析しlargest_fragment_only=Trueを指定して標準化します。
  3. 比較用の表現を照合し、レポートには両方の値と方針を残します。
import chematic

inputs = ["CC(=O)[O-].[Na+]", "O=C(O)C"]
report = []
for smiles in inputs:
    mol = chematic.from_smiles(smiles)
    standardized = mol.standardize(largest_fragment_only=True)
    report.append({"input_smiles": smiles, "review_smiles": standardized.smiles})

for row in report:
    print(row)

期待する結果

酢酸ナトリウムのCC(=O)[O-].[Na+]と酢酸のO=C(O)Cは、どちらもreview_smilesとしてCC(O)=Oになります。元の入力文字列はレポートに残ります。

うまくいかないとき

標準化は意図的に表現を変えます。最大フラグメント選択では対イオンを除き、別の方針では電荷の中和や互変異性体の正規化も起こり得ます。比較用の値を、塩形・立体情報・由来・物質同一性の置き換えとして使わないでください。

次の行動

SMILES CSVの重複候補を確認する