RDKit로 수소를 추가할 때의 스티커

2051 단어 RDKit

개시하다


RDKit 등에서 3차원 구조를 생성할 때는 수소 원자를 부여하는 것을 추천한다.그러나 Chem#AddHs 방법을 사용하여 SDF에서 읽어들인 Mol 객체를 부여해도 수소 원자가 제대로 부여되지 않을 때가 있으므로 주의해야 한다

컨디션

  • RDKit 2018/9/1
  • Python 3.6
  • Jupyter Notebook
  • 불순한 방법


    먼저 읽고 표시합니다.
    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)
    

    아, 정확하게 나왔어요.잘 진행되고 있는 것 같습니다.

    좋은 웹페이지 즐겨찾기