😊

化合物のsmilesから、エナンチオマーsmilesを作成する方法

2022/12/02に公開

smilesでの不斉中心

smilesで不斉中心は、@もしくは@@で表記する
この@を@@にして、@@を@にすれば良い。
以下のコードでは、一旦、@をXに置き換えた後、XXを@としてXを@@に変換している。

def replace_chiral(smiles):
  new_smiles1 = smiles.replace('@', 'X')
  new_smiles2 = new_smiles1.replace('XX', '@')
  chiral_reverce_smiles = new_smiles2.replace('X', '@@')
  return chiral_reverce_smiles

グルコースの反転を試してみると、

smiles = "OC[C@@H](O1)[C@@H](O)[C@H](O)[C@@H](O)[C@@H](O)1"
replace_smiles = replace_chiral(smiles)
replace_smiles

以下のように立体が全て反転したsmilesが得られる。

この化合物を絵画すると以下の様になる。

google colabolatoryへのリンク

https://colab.research.google.com/drive/1UeNrRy8VIweqPJgPRWGzkomq4KuB0I_d?usp=sharing

補足説明

smiles記法について

https://ja.wikipedia.org/wiki/SMILES記法

Pythonで文字列を置換

https://note.nkmk.me/python-str-replace-translate-re-sub/

Discussion