Kodomo

Пользователь

Учебная страница курса биоинформатики,
год поступления 2017

Хемоинформатика

lecture : http://kodomo.fbb.msu.ru/~golovin/l2.pdf

Цель занятия используя пакет моудлей RDkit предложить аналог ибупрофена :

Подсказки:

   1 source /mnt/scratch/mm-course/miniconda3/etc/profile.d/conda.sh
   2 conda activate molsim
   3 python3 -m ipykernel install --user --name molsim --display-name "Python 3 molsim"

   1 from rdkit import Chem
   2 from rdkit.Chem import AllChem
   3 from rdkit import RDConfig
   4 from rdkit.Chem.Draw import IPythonConsole 
   5 from rdkit.Chem import Draw
   6 import numpy as np
   7 from IPython.display import display,Image

   1 ibu=Chem.MolFromSmiles('CC(C)CC1=CC=C(C=C1)C(C)C(=O)O')
   2 AllChem.Compute2DCoords(ibu)
   3 display(ibu)

   1 import rdkit.Chem.Lipinski as Lipinksi
   2 print Lipinksi.NumHDonors(ibu)
   3 print Lipinksi.NumHAcceptors(ibu)
   4 print Lipinksi.rdMolDescriptors.CalcExactMolWt(ibu)
   5 print Lipinksi.rdMolDescriptors.CalcCrippenDescriptors(ibu)[0]

   1 import pubchempy

compounds = []
per_page = 10**5
for smiles in ["N=N=N", "NN#N",]:
    for i in range(200):
        try:
            a = pcp.get_properties(
              properties="CanonicalSMILES", 
              identifier=smi...., namespace="...les", 
              searchtype="substructure",
              RingsNotEmbedded=....,
              listkey_count=per_page, listkey_start=i*per_page
            )
        except:
            ..........
        print("Retrieved page {} of {} search".format(i+1, smiles))
        compounds.extend(a)

   1 #Если качали с pubchempy то это не надо
   2 strings=np.genfromtxt('2515324818764782706.txt',dtype=np.str)
   3 
   4 for line in strings:
   5     if len(line[1]) < 30 and not '.' in line[1]:
   6         smiles  append line[1]

   1 for smi in smiles[:1500]:
   2     
   3     if азид  in smi:
   4         newsmi=smi.replace('N=[N+]=[N-]',template)
   5     else:
   6         continue
   7    
   8 # Новую молекулу лучше создавать в try из-за битых  Smiles
   9     try:
  10         newmol=Chem.MolFromSmiles
  11 
  12         
  13         if новая молекулу удолтворяет правилу 5
  14             сохраним в массив
  15             и покажем
  16     except:
  17         pass

Надо сделать большую картинку с Draw.MolsToGridImage

   1 from IPython.display import SVG
   2 SVG(Draw.MolsToGridImage([m1,m2],useSVG=True, molsPerRow=3, subImgSize=(200, 200)))

   1 from rdkit.Chem.Draw import SimilarityMaps
   2 
   3 fp = SimilarityMaps.GetMorganFingerprint(somemol, fpType='bv')
   4 
   5 fig, maxweight = SimilarityMaps.GetSimilarityMapForFingerprint(refmol, somemol, SimilarityMaps.GetMorganFingerprint)

   1 m3d=Chem.AddHs(m2d)
   2 Chem.AllChem.EmbedMolecule(m3d)
   3 AllChem.MMFFOptimizeMolecule(m3d,maxIters=500,nonBondedThresh=200 )

загрузим NGL viewer ( для установки conda install -c omnia nglview  )

   1 import nglview as nv

и покажем первую конформацию

   1 nv.show_rdkit(m3d)