RDKit로 분자 중의 등효(대칭) 원자를 검출하다

4564 단어 RDKit

개시하다


분자 중의 원자가 기계 학습 등을 통해 데이터 처리를 할 때 분자 중의 등효 원자는 불필요하기 때문에 각각 다른 데이터가 아니라 하나의 데이터로 처리하기를 바란다.이를 위해 우리는 분자 중등효 원자를 검출하는 방법을 조사해 저장했다.

컨디션

  • OS Windows10
  • Python 3.7
  • RDKit 2018/9/2
  • Jupyter Notebook
  • 방법


    먼저 샘플의 원자로 읽어서 표시한다.
    from rdkit.Chem import AllChem, Draw, rdmolops
    from rdkit.Chem.Draw import IPythonConsole
    mols = AllChem.SDMolSupplier("../som/17.mequitazine.mol")
    mol = mols[0]
    Draw.MolToImage(mol)
    
    이런 느낌을 나타내는 분자를 가정해 보자.
    여기에는 세 개의 연속 고리 양측의 벤젠 고리의 원자가 완전히 등가이다.

    CannoniccalRankAtoms는 이와 같은 원자를 감지하기 위해 다음과 같이 사용합니다.이렇게 하면 rankAtoms에서 원자의 색인 순서에 따라 등급을 얻는다.이 등급은 같은 번호가 같은 원자다.
    rankAtoms = list(rdkit.Chem.rdmolfiles.CanonicalRankAtoms(mol, breakTies=False))
    print(rankAtoms)
    [13, 20, 12, 21, 10, 8, 19, 8, 10, 22, 17, 6, 2, 0, 4, 15, 14, 15, 4, 0, 2, 6, 17]
    
    그럼 번호만 보면 이해하기 어려우니 분자의 각 원자에 위의 등급을 표시합시다.
    for atom in mol.GetAtoms():
        atom.SetProp('molAtomMapNumber',str(rankAtoms[atom.GetIdx()]))
    mol
    
    그래서 이런 느낌으로 표현했다.

    문자가 변형된 후 똑똑히 보기 어려워서 두 벤젠 고리에 대응하는 원자가 같은 등급(번호)이라는 것을 확실히 알 수 있다.

    참고 자료

  • RDKit 문서 - rdkit.Chem.rdmolfiles module
  • 좋은 웹페이지 즐겨찾기