[RDKit] 파이톤을 사용하여 분자 묘사(기본편)

개시하다


RDKit 분자를 그리는 방법을 소개한다.
  • RDKit를 처음 사용하는 사람
  • 파이톤으로 분자를 그리고 싶은데 방법을 잘 모르는 사람
  • 참고가 됐으면 좋겠습니다.
    ※ 다른 것도 소재 정보에 대한 내용 투고가 있으니 가능하면여기. 일람표에 다른 투고가 나와 있으면 좋겠어요.

    RDKit


    RDKit는 화합물을 처리하는 데 사용되는 프로그램 라이브러리다.지원자문서의 일본어 번역 페이지도 있다.여기.의 홈페이지에도 RDKit의 개요가 쓰여 있으니 꼭 참고하시기 바랍니다.

    컨디션

  • windows10
  • conda 4.9.2
  • python 3.7.1
  • rdkit 2020.03.2.0
  • 제도 분자


    분자 그리기


    실천 재료 정보의 제1장을 참고하다.데이터는 지원 페이지에서 읽습니다.문헌은 CoLab 환경에서 수행되었지만 Jupytree Notebook에서 데이터를 잘 읽지 못해 참고여기. 사이트에서 csv 파일을 읽었다.
    # データの読み込みを行い、読み込んだデータをデータフレームとして表示
    import requests
    import io
    import pandas as pd
    
    url = 'https://raw.githubusercontent.com/funatsu-lab/support-page/master/data/delaney-solubility/delaney-processed.csv'
    res = requests.get(url).content
    df = pd.read_csv(io.StringIO(res.decode('utf-8')), header=0, index_col=0)
    df.head()
    

    데이터 프레임 시작 행의 Amigdalin(Amigdarin)을 그립니다.
    from rdkit import Chem
    smiles = df.iloc[0,-1]
    m = Chem.MolFromSmiles(smiles)
    m
    

    Amigdalin을 표시할 수 있습니다.Amigdalin의 smiles 표기는'OCC3OC(OC#N) c1ccc1) C(O) C(O) C2O) C(O) C(O) C(O) C3O'이며, smiles 표기를 코드에 직접 넣어 그릴 수도 있다.
    m = Chem.MolFromSmiles('OCC3OC(OCC2OC(OC(C#N)c1ccccc1)C(O)C(O)C2O)C(O)C(O)C3O ')
    m
    
    그림% 1개의 캡션을 편집했습니다.
    from rdkit.Chem import Draw
    Draw.MolToFile(m, 'Amigdalin.png')
    

    여러 분자 그리기


    RDKit의 GiitHub 페이지에서 가져온'5ht3ligs.sdf'의 데이터를 읽고 그립니다.
    #複数データの読み込み(全4分子が含まれている)
    suppl = Chem.SDMolSupplier('5ht3ligs.sdf')
    #構造を可視化
    Draw.MolsToGridImage(suppl, molsPerRow=len(suppl)) 
    

    그림% 1개의 캡션을 편집했습니다.
    img = Draw.MolsToGridImage(suppl,molsPerRow=len(suppl),subImgSize=(200,200))
    img.save("5ht3ligs.png")
    
    또한 다음 코드가 읽는 분자의 원자수와 smiles를 표시할 수 있습니다.읽은 데이터의 내용을 자세히 알고 싶을 때 효과적으로 활용할 수 있을 것 같습니다.
    #複数データの読み込み(全4分子が含まれている)
    suppl = Chem.SDMolSupplier('5ht3ligs.sdf')
    # smilesを格納するための空のリストを作成
    smiles = []
    
    for mol in suppl:
        #各分子の原子数の表示
        print(mol.GetNumAtoms())
        #mol→smilesへ変換してデータとして格納
        smiles.append(Chem.MolToSmiles(mol))
        print(Chem.MolToSmiles(mol))
    
    결과 내보내기
    20
    CN1CCCCC1COC(=O)c1c[nH]c2ccccc12
    24
    COCCOc1cc(N)c(Cl)cc1C(=O)NC1CN2CCC1CC2
    24
    C#CCn1c2c(c3ccccc31)C(=O)C(Cc1nc[nH]c1C)CC2
    26
    Cc1csc2c1-n1cccc1/C2=N/OC(CCN(C)C)c1ccccc1
    

    총결산


    RDKit를 사용하면 다음과 같은 두 가지 방법이 설명되어 있습니다.
  • 분자 읽기 및 그리기
  • 여러 분자 읽기 및 그리기
  • 참고 자료

  • RDKit
  • RDKit 일본어 문서
  • 화학의 새로운 형식
  • 실습 자료 정보 지원 페이지
  • CSV의 직접 URL에서 데이터 읽기
  • 좋은 웹페이지 즐겨찾기