RDKit로 수소를 추가할 때의 스티커
2051 단어 RDKit
개시하다
RDKit 등에서 3차원 구조를 생성할 때는 수소 원자를 부여하는 것을 추천한다.그러나 Chem#AddHs 방법을 사용하여 SDF에서 읽어들인 Mol 객체를 부여해도 수소 원자가 제대로 부여되지 않을 때가 있으므로 주의해야 한다
컨디션
불순한 방법
먼저 읽고 표시합니다.
import rdkit.Chem
from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem import AllChem
molBlock = '''3-methylpentane
RDKit 2D
6 5 0 0 0 0 0 0 0 0999 V2000
0.2606 0.1503 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1.3000 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
2.6000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
2.6000 -1.2000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
3.9000 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
4.9394 0.1503 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0
2 3 1 0
3 4 1 0
3 5 1 0
5 6 1 0
M END'''
molFromSDF = Chem.MolFromMolBlock(molBlock)
Draw.MolToImage(molFromSDF)
이어 AddHs로 수소를 추가한다.
molFromSDFH = Chem.AddHs(molFromSDF)
Draw.MolToImage(molFromSDFH)
명백히 실패하다.
정확한 방법
MOL 객체를 SMILES화하면 SMILES에서 MOL 객체를 다시 작성합니다.
smiles = Chem.MolToSmiles(molFromSDF)
molFromSDFnorm = Chem.MolFromSmiles(smiles)
이어서 AddHs로 수소를 추가합니다.molFromSDFnormH = Chem.AddHs(molFromSDFnorm)
Draw.MolToImage(molFromSDFnormH)
아, 정확하게 나왔어요.잘 진행되고 있는 것 같습니다.
Reference
이 문제에 관하여(RDKit로 수소를 추가할 때의 스티커), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kimisyo/items/106fa1e3c2345f8ad1a4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)