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

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

1) на сайте PubChem найти все радикалы c азидом для Click Chemistry и скачать их SMILES нотации

2) Найти формулу ибупрофена и предложить способ изменения его SMILES для эмуляции продукта Click Chemistry

3) Заменить в найденых радикалах азидную группу на модифцированный ибупрофен.

4) Превратить новые SMILES в объекты-молекулы

5) Отобрать те молекулы, которые удовлетворяют правилу пяти Lepinsky

Импортируем модули RDkit

In [2]:
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit import RDConfig
from rdkit.Chem.Draw import IPythonConsole 
from rdkit.Chem import Draw
import numpy as np
from IPython.display import display,Image

Нарисуем ибупрофен и его производное для клик-химии (template)

In [4]:
ibu=Chem.MolFromSmiles('CC(C)CC1=CC=C(C=C1)C(C)C(=O)O')
AllChem.Compute2DCoords(ibu)
display(ibu)
#let's replace isopropyl to -C#C
modif_ibu = Chem.MolFromSmiles('C#CC1=CC=C(C=C1)C(C)C(=O)O')
AllChem.Compute2DCoords(modif_ibu)
display(modif_ibu)
#and now adding the ring
template = Chem.MolFromSmiles('N1C=C(N=N1)C1=CC=C(C=C1)C(C)C(=O)O')
AllChem.Compute2DCoords(template)
display(template)

Определим параметры Лепински для молекулы ибупрофена.

In [5]:
import rdkit.Chem.Lipinski as Lipinksy
print Lipinksy.NumHDonors(ibu)
print Lipinksy.NumHAcceptors(ibu)
print Lipinksy.rdMolDescriptors.CalcExactMolWt(ibu)
print Lipinksy.rdMolDescriptors.CalcCrippenDescriptors(ibu)[0]
1
1
206.130679816
3.0732

Узнаем подробнее, что такое последний параметр:

In [6]:
help(Lipinksy.rdMolDescriptors.CalcCrippenDescriptors)
Help on built-in function CalcCrippenDescriptors in module rdkit.Chem.rdMolDescriptors:

CalcCrippenDescriptors(...)
    CalcCrippenDescriptors( (Mol)mol [, (bool)includeHs=True [, (bool)force=False]]) -> tuple :
        returns a 2-tuple with the Wildman-Crippen logp,mr values
    
        C++ signature :
            boost::python::tuple CalcCrippenDescriptors(RDKit::ROMol [,bool=True [,bool=False]])

Это octanol-water partition coefficient log P, коэффициент, характеризующий гидрофобность молекулы. Вычисляется как логарифм отношения равновесных концентраций вещества в октаноле и в воде. По правилу Лепински, не должен превышать 5.

Теперь импортируем скачанные из PubChem SMILES азидов:

In [8]:
strings=np.genfromtxt('3994662975550459579.txt',dtype=np.str)
smiles = []
for line in strings:
    if len(line[1]) < 30 and not '.' in line[1]:
        smiles.append(line[1])

smiles
Out[8]:
['C1CCC(CC1)(CN=[N+]=[N-])C=N',
 'C1CC(CCC1CC=N)CN=[N+]=[N-]',
 'C1CC(CC(C1)C=N)CN=[N+]=[N-]',
 'CC1CCCC(C1)CN=[N+]=[N-]',
 'CC1=CC=CC=C1OCN=[N+]=[N-]',
 'CCC(N=[N+]=[N-])(F)F',
 'CC(=O)C(N=[N+]=[N-])(F)F',
 'C',
 'C',
 'COC(=O)C(CCCCN=[N+]=[N-])Br',
 'CCCSSCCN=[N+]=[N-]',
 'CC(C)(C)NCC(CCN=[N+]=[N-])O',
 'CC1C(CC(C(O1)O[C@H]2C',
 'CC1C(CC(C(O1)O[C@H]2C',
 'CC1C(CC(C(O1)O[C@H]2C',
 'CC1C(CC(C(O1)O[C@H]2C',
 'CC',
 'CC1C(CC(C(O1)O[C@H]2C',
 'CC',
 'CC1C(C(C(C(O1)O[C@H]2C',
 'CC1C(C(C(C(O1)O[C@H]2C',
 'CC1C(C(C(C(O1)O[C@H]2C',
 'CC',
 'C(C(O)(F)F)N=[N+]=[N-]',
 'C(CO)CS(=O)(=O)SN=[N+]=[N-]',
 'CC(C(CNC(=O)NC(=O)C(=C)C',
 'CCC1CCC2(N1CCC2)CN=[N+]=[N-]',
 'C1CCN(C(C1)O)N=[N+]=[N-]',
 'C1CCN(C(C1)N=[N+]=[N-])O',
 'CC(=O)N1CCOC(C1)N=[N+]=[N-]',
 'C',
 'C1CSSC1CCCCCN=[N+]=[N-]',
 'CC(C)(C)C(=O)CCCCN=[N+]=[N-]',
 'CCC1=CC=CC=C1OCN=[N+]=[N-]',
 'CCC(=O)CCCCN=[N+]=[N-]',
 'COC(=O)C1=C(C(=S)NC(=C1)C',
 'C1CCC2=C(C1)C(=C(C(=O)N2)C',
 'C(C(=O)/C=C\\N)N=[N+]=[N-]',
 'C1CC(CC=C1)OCN=[N+]=[N-]',
 'C1NOC(=N1)CCN=[N+]=[N-]',
 'C1CSC(=C1)CN=[N+]=[N-]',
 'C(COC(=O)C(CO)CO)N=[N+]=[N-]',
 'CC1CCC(C1)(CN=[N+]=[N-])O',
 'CCC(N=[N+]=[N-])S(=O)(=O)N',
 'CC1(N=N1)CCN=[N+]=[N-]',
 'CCCCCCC(=O)NCCSSCCC(=O)NCC',
 'C1C(C(OC1N2C=C(C(=O)NC2=O)C',
 'C1CC(CCC1C(CN=[N+]=[N-])C=N)O',
 'C1C[C@@H](CC(C1)N=[N+]=[N-])O',
 'C1CCC([C@H](C1)O)N=[N+]=[N-]',
 'CC1=CN=C(C=C1N=[N+]=[N-])Cl',
 'C/C=C(/NCC',
 'C(COCO)N=[N+]=[N-]',
 'C1C(C(OC1N2C=C(C(=O)NC2=O)C',
 'CN1C2=C(C=C(C=C2)C',
 'CC1CC=CC(=C1)C(CO)N=[N+]=[N-]',
 'CCCC',
 'CCCCCCCCCCN1C2=C(C=C(C=C2)C',
 'C1CC(C1CN=[N+]=[N-])O',
 'C/C(=C/N=[N+]=[N-])/SC=C',
 'CC(=C)S/C=C(/C)\\N=[N+]=[N-]',
 'C/C(=C(\\C)/SC=C)/N=[N+]=[N-]',
 'CC(=O)C1=CC=C(O1)N=[N+]=[N-]',
 'C(C(C(C(C(C(C(C(C[N-][N+]',
 'C',
 'C1(=N[N+]',
 '[C-]',
 '[C-]',
 '[C-]',
 'CC1=CC=C(C=C1)S(=O)(=O)OCCCC',
 'CS(CCOCCN=[N+]=[N-])(O)Cl',
 'CS(CCOCCOCCN=[N+]=[N-])(O)Cl',
 'C[N+](=C)N=[N+]=[N-]',
 '[C-]',
 'C',
 'CC(C)(CC(C)(C)C(=O)OCC',
 '[C-]',
 'CCOC(=O)C1CCC(C1)CN=[N+]=[N-]',
 '[C-]',
 'CS(C)(CCOCCOCCN=[N+]=[N-])O',
 'C',
 'C1NC=CN1S(=O)(=O)N=[N+]=[N-]',
 '[C-]',
 '[C-]',
 'CCC',
 'CC(C)(C1=CC(=C(C=C1)F)[N+]',
 'CS(C)(CCOCCN=[N+]=[N-])O',
 'C(COCC=O)N=[N+]=[N-]',
 'CC',
 'C',
 'C1=CC2=NC=CN2N=C1CN=[N+]=[N-]',
 '[C-]',
 'C=C1CCC(CC1)OCCN=[N+]=[N-]',
 'C1=NC=NC(=N1)OC(C([N-][N+]',
 'CC[N+](CC)(CC)CC',
 '[C-]',
 '[C-]',
 '[C-]',
 'CCC',
 'CC',
 'C1(=N[N+]',
 'CC',
 'C1(=C(C(=C(C(=NN=N)C1=N[N+]',
 'C1=CN(C(=N1)N[N+]',
 'C1=CN(C(=N[N+]',
 '[C-]',
 'C1=CC(=CN=C1)CCCN=[N+]=[N-]',
 'CC(=O)OC1CCCCC=CC1N=[N+]=[N-]',
 'COC(=O)C1CCCCC1CN=[N+]=[N-]',
 'CS(=O)(=O)NC1CCCC1N=[N+]=[N-]',
 'COC(=O)C1C(CCN1)N=[N+]=[N-]',
 'CCCC(=O)OC1CCCC1N=[N+]=[N-]',
 'C(C=CC(=O)O)N=[N+]=[N-]',
 'CC(CNC)N=[N+]=[N-]',
 'CC(=O)CCC(=O)C=CCN=[N+]=[N-]',
 'CC(C(N=[N+]=[N-])O)O',
 'C',
 'C(CO)COCCOCCOCCOCCN=[N+]=[N-]',
 'C1C=CC(CN1)N=[N+]=[N-]',
 'C1C=C[C@H](CN1)N=[N+]=[N-]',
 'CCCC(C)(CC)N=[N+]=[N-]',
 'CCCCC(C)(CC)N=[N+]=[N-]',
 'CCCCCCCCCC(C)(C)N=[N+]=[N-]',
 'C',
 'CC(=O)CCC(=O)ON=[N+]=[N-]',
 'C',
 'CC(NCC',
 'C/C=C(/NCC',
 'C1CN(CCC1C',
 'CC(CN=[N+]=[N-])OOC(OC)Cl',
 'CN1CCNC(C1)CN=[N+]=[N-]',
 'CCOCCOCN=[N+]=[N-]',
 'CC1C2CCC(C2)N1CCCN=[N+]=[N-]',
 'CC(=O)CCC1(N=N1)CCN=[N+]=[N-]',
 'C(COCN=[N+]=[N-])NN',
 'CC(NNCN)N=[N+]=[N-]',
 'C/C(=C\\C1=CC=C(C=C1)C',
 'C1=CC=C(C=C1)/C=C(\\C',
 'CN(C)C1=CC=C(C=C1)/C=C(\\C',
 '[2H]OCC(=O)N=[N+]=[N-]',
 'C/C=C(\\C=C)/N=[N+]=[N-]',
 'CC(=O)C(CCCCOC)N=[N+]=[N-]',
 'CC',
 'C=CCN1CCN(C1)N=[N+]=[N-]',
 'CC(=O)C(=C)NCCCCN=[N+]=[N-]',
 'C1=CC(=CC',
 'C',
 'CC1=CC=C(C=C1)C(C(=O)NCC',
 'CC(=O)N(CC',
 'C1=CC(=CC=C1C',
 'C1=CC(=CC=C1C',
 'C1=CC(=CC=C1C',
 'CS(=O)(=O)OCN=[N+]=[N-]',
 'C1=CC=C(C=C1)C[C@@H](C(=O)OCC',
 'C(/C=C/N=[N+]=[N-])P(=O)(O)O',
 'C=CC(N=[N+]=[N-])P(=O)(O)O',
 'C=CS(=O)(=O)CCOCCN=[N+]=[N-]',
 'CCCCCCC(CCCCCC)CN=[N+]=[N-]',
 'CCOCCOC(CN=[N+]=[N-])N',
 'C',
 'CCCNC(=O)CCCCN=[N+]=[N-]',
 'CC',
 'C',
 'C=CCO[C@@H](CN=[N+]=[N-])CO',
 'CC(=O)O[C@H](CN=[N+]=[N-])CO',
 'CCC(C)C(=O)OCC(CN=[N+]=[N-])O',
 'CC',
 'CC',
 'CCPN=[N+]=[N-]',
 'CCCC(CCC)CN=[N+]=[N-]',
 'CCOC(=O)/C(=C/C1=CC',
 'CC(CC(CC(=O)O)CN)CN=[N+]=[N-]',
 'COC1=C(C=CS1)N=[N+]=[N-]',
 'C',
 'C',
 'C(C(C(C(=O)O)N=[N+]=[N-])O)O',
 'C(CCN=[N+]=[N-])CC(=O)NCCN',
 'C(CC(=O)ON)CN=[N+]=[N-]',
 'CN(CN)N=[N+]=[N-]',
 'CC(CCN1C=CN=C1C=O)N=[N+]=[N-]',
 'CC1CCC(C(C1)C)CN=[N+]=[N-]',
 'C(CCCC',
 'CC(=O)[C@H](CN=[N+]=[N-])NC',
 'CN[C@@H](CN=[N+]=[N-])C(=O)NC',
 'CCC(N=[N+]=[N-])OCC1=CC=CC=C1',
 'CCC(C)(C)C(C)(C)CN=[N+]=[N-]',
 'C(C(=O)NS)N=[N+]=[N-]',
 'C1=CC=C(C(=C1)CN=[N+]=[N-])SO',
 'COC(=O)C',
 'C1=CN=C(C=C1CN=[N+]=[N-])N=O',
 'C1C=C(C=C(N1)N=O)CN=[N+]=[N-]',
 'CCOC(=O)C',
 'CC1C2C1C2(C)N=[N+]=[N-]',
 'CCC(=CN=[N+]=[N-])C',
 'CC1(CC(CCC1CN=[N+]=[N-])C=N)C',
 'CN1CCN=C1OCN=[N+]=[N-]',
 'CC(C)(C)NCCOCCOCCN=[N+]=[N-]',
 'CCCCCC=C(CN=[N+]=[N-])C(=O)OC',
 'CCCCC/C=C(/CN=[N+]=[N-])\\C',
 'C1=CC=C(C(=C1)/C=C(\\CC',
 'C1=CC=C(C(=C1)C=C(CC',
 'C1=CC=C(C(=C1)/C=C(\\CC',
 'C',
 'C',
 'C',
 'CNCCCCCCCCCN=[N+]=[N-]',
 'C(CCCCN)CCCCN=[N+]=[N-]',
 'CCCCOCCC(C)(CN=[N+]=[N-])O',
 'CCCCOCCC(C)(CO)N=[N+]=[N-]',
 'CCCCOCC(C(C)(C)O)N=[N+]=[N-]',
 'CCCCOCC(C(C)(C)N=[N+]=[N-])O',
 'C/C(=N/N=C(N)N)/N=[N+]=[N-]',
 'CC1COCC1N=[N+]=[N-]',
 'CCC(C)(CC)N=[N+]=[N-]',
 'C1=C(C(=O)NC1=O)N=[N+]=[N-]',
 'CCCCC/C=C/CN=[N+]=[N-]',
 'CCOC(=O)CC(=O)CCCN=[N+]=[N-]',
 'C',
 'C',
 'C',
 'C',
 'C1=CC=C(C=C1)[C@H](C[C@@H](CC',
 'CC(C)(C',
 'C',
 'C',
 'C[Si](C)(C)C',
 'C[Si](C)(C)C',
 'C',
 'C',
 'CN(C)CCNCCN=[N+]=[N-]',
 'CC(C)[Si](C',
 'CC[Si](CC)(CC)C',
 'CC[Si](CC)(CC)C',
 'CC[Si](CC)(CC)C',
 'CC(C)[Si](C',
 'CCCCOC(=O)C(=C)N=[N+]=[N-]',
 'C=COC1=CC=C(C=C1)N=[N+]=[N-]',
 'C',
 'C',
 'C',
 'C',
 'CC(C1=CN=NN1C)N=[N+]=[N-]',
 'CCC(C1=CC=CC=C1F)N=[N+]=[N-]',
 'CC1=C(C=CC(=C1)N=[N+]=[N-])Cl',
 'COC1=C(C=CC(=C1)N=[N+]=[N-])F',
 'CSC1=CC=CC(=C1)N=[N+]=[N-]',
 'CC1=C(C=CC(=C1)OC)N=[N+]=[N-]',
 'C1CCC(C1)N2CC(C2)N=[N+]=[N-]',
 'C1C(CN1CC(=O)N)N=[N+]=[N-]',
 'CCC(C1=CC=CC=N1)N=[N+]=[N-]',
 'COC1COCC1N=[N+]=[N-]',
 'CCOC1CCCCC1N=[N+]=[N-]',
 'C1CC1(C(F)F)N=[N+]=[N-]',
 'C1CC1(C(F)(F)F)N=[N+]=[N-]',
 'CC(CCN=[N+]=[N-])OC1CCCCO1',
 'CC(C)(CCCCCO)N=[N+]=[N-]',
 'CCCCC(CCCC(C)(C)N=[N+]=[N-])O',
 'CC1(CCCCCC1)N=[N+]=[N-]',
 'CC(=CCCC(C)(C)N=[N+]=[N-])C',
 'CCCCCCCCC(C)(C)N=[N+]=[N-]',
 'C/C=C\\C[C@@H](C)C',
 'C/C=C\\CC(C)C',
 'C1=CC(=CC=C1C',
 'C(CSCCN=[N+]=[N-])N=[N+]=[N-]',
 'C',
 'CONCCCN=[N+]=[N-]',
 'CC(C)(C)OC(=O)C(C',
 'C[C@@H](CC',
 'C1(=NN=C(N=N1)N=[N+]=[N-])N',
 'C(CCO)CCS(=O)(=O)N=[N+]=[N-]',
 'CN(CCN=[N+]=[N-])N[O-]',
 'CN(CCN=[N+]=[N-])[NH2+][O-]',
 'C1=CC=C(C=C1)C(C',
 'C=CC(COC(=O)CCCCN=[N+]=[N-])F',
 'C1=CC=C2C(=C1)C(=O)OI2C',
 'C[SiH](C)CCCN=[N+]=[N-]',
 'CCC(CCCCCBr)N=[N+]=[N-]',
 'CCC(CC1=CC=CC=C1)N=[N+]=[N-]',
 'CCCCCCCCC1(CCCC1)N=[N+]=[N-]',
 'CCCCCCCCC1(CCCCC1)N=[N+]=[N-]',
 'CCCCC(CC)(CCCC)N=[N+]=[N-]',
 'CCCCCCCCCCC(C)(C)N=[N+]=[N-]',
 'C',
 'C1=CNC(=O)NC1N=[N+]=[N-]',
 'C1=CN=CC=C1CCCCN=[N+]=[N-]',
 'CCC(C)(C(=O)OC)N=[N+]=[N-]',
 'CN1C(=C(C2=C(S1(=O)=O)SC=C2)C',
 'CC1=CC=C(C=C1)S(=O)(=O)NCCN(C',
 'COC(CN=[N+]=[N-])C1=CC=CC=C1',
 'C1=CC=C(C=C1)C',
 'CC(C1=CN=CC=C1)N=[N+]=[N-]',
 'CC(C)(CCC=C)N=[N+]=[N-]',
 'CC1(CC1)N=[N+]=[N-]',
 'COC1=CC(=C(C=C1)N=[N+]=[N-])F',
 'CC1=CN=CC(=N1)CCN=[N+]=[N-]',
 'CC(CN=[N+]=[N-])C1=CC=CC=N1',
 'C1C(C1(Cl)Cl)CCN=[N+]=[N-]',
 'CC(C)(C)OC1CC(C1)N=[N+]=[N-]',
 'CC1=C(C(=NN1)C)N=[N+]=[N-]',
 'C[C@H](C1=CN=NN1C)N=[N+]=[N-]',
 'C1CCC(C1)(CN=[N+]=[N-])C',
 'C1CCC(CC1)(CN=[N+]=[N-])C',
 'C(CN=[N+]=[N-])C(F)(F)Cl',
 'CN1C=C(N=N1)CCN=[N+]=[N-]',
 'C=CC1(CCCCC1N=[N+]=[N-])O',
 'CC1=C(C=CC=C1Br)N=[N+]=[N-]',
 'C1=C(C=C(C=C1F)Cl)N=[N+]=[N-]',
 'CC1CCC(C(C1)N=[N+]=[N-])O',
 'CC1(CCC(C1O)N=[N+]=[N-])C',
 'C1CC(CC(C1)O)N=[N+]=[N-]',
 'CC1C(SCCN1CCN=[N+]=[N-])C',
 'C[C@H](C1=CC=CO1)N=[N+]=[N-]',
 'CC[C@H](C1=CC=CS1)N=[N+]=[N-]',
 'C[C@H](C1=CC=CS1)N=[N+]=[N-]',
 'C[C@H](C1=CSC=C1)N=[N+]=[N-]',
 'C[C@@H](C1=CC=CS1)N=[N+]=[N-]',
 'C[C@@H](C1=CSC=C1)N=[N+]=[N-]',
 'C[C@@H](C1=CC=CO1)N=[N+]=[N-]',
 'C1CCC(CC1)C(CN=[N+]=[N-])O',
 'CC(CN=[N+]=[N-])C(=O)NN',
 'CCC(C(=O)NN)N=[N+]=[N-]',
 'CC(CC(=O)NN)N=[N+]=[N-]',
 'CC(C(=O)NN)N=[N+]=[N-]',
 'CN1C(=CN=N1)N=[N+]=[N-]',
 'CC1CCCCC1(C)N=[N+]=[N-]',
 'C1C(CN1)CN=[N+]=[N-]',
 'CCCCC',
 'CC(CC1=CC=CC=C1N=[N+]=[N-])O',
 'CC(CCCCCCN=[N+]=[N-])O',
 'C',
 'CN(CC=C)CN=[N+]=[N-]',
 'CC(C)NC(=O)C(CCN=[N+]=[N-])NC',
 'CC(CC(=O)CCCCN=[N+]=[N-])O',
 'C(C(CI)I)NN=[N+]=[N-]',
 'C(CNN=[N+]=[N-])C(CI)I',
 'C=CCCNN=[N+]=[N-]',
 'C(CCN=[N+]=[N-])CC(=O)NCCCl',
 'C(CCN=[N+]=[N-])CC(=O)OBr',
 'CNOCCOCCOCCN=[N+]=[N-]',
 'CNOCCN=[N+]=[N-]',
 'CC(C)(C',
 'CCCC(C(N=[N+]=[N-])(F)F)(F)F',
 'C1C2C1C(C(C2)N)N=[N+]=[N-]',
 'C1C2CC2(CC1N)N=[N+]=[N-]',
 'C1CC(C1)(N)N=[N+]=[N-]',
 'C1C(CC1N=[N+]=[N-])N',
 'C1CC(C1)(NC(=O)O)N=[N+]=[N-]',
 'C1COC(=N1)C/C=C/N=[N+]=[N-]',
 'C=CC(C1=NCCO1)N=[N+]=[N-]',
 'C1=COC(=N1)CCCCN=[N+]=[N-]',
 'C1COC(=N1)CCCCN=[N+]=[N-]',
 'CC(OCCN=[N+]=[N-])OCCF',
 'CC(OCCN=[N+]=[N-])OC(C)OCCF',
 'CC(CC(CN=[N+]=[N-])O)O',
 'CC(C)(C)N1CCCC(C1)N=[N+]=[N-]',
 'CCOC1CCCC1N=[N+]=[N-]',
 'CN1C(=CC(=N1)CN=[N+]=[N-])Cl',
 'CCC1=CC(=NC=C1)CN=[N+]=[N-]',
 'CC(C)OS(=O)(=O)CCCN=[N+]=[N-]',
 'C(CS(=O)(=O)[O-])N=[N+]=[N-]',
 'CCC1(CC(C1)N=[N+]=[N-])C',
 'C1=CC(=C(N=C1)N=[N+]=[N-])C=O',
 'CCOCC(=O)CN=[N+]=[N-]',
 'C',
 'CCCCCCC1(C2=C(C=CC(=C2)C',
 'CCCCCCCC/C=C\\CCCCN=[N+]=[N-]',
 'C(COP(=O)(O)ON=[N+]=[N-])N',
 'C',
 'C(COCCN=[N+]=[N-])C(=O)I',
 'C(CCN=[N+]=[N-])CC(=O)I',
 'C',
 'CC1(CCC1)CN=[N+]=[N-]',
 'C=CCC1=CC=C(C=C1)N=[N+]=[N-]',
 'CC1=C(C(=CC=C1)CN=[N+]=[N-])O',
 'CN1C[C@@H](C[C@H]1C',
 'CC(C)N1C[C@@H](C[C@H]1C',
 'COCC1=CC=CC(=N1)CN=[N+]=[N-]',
 'CCOC(=O)CN(C(=O)N)N=[N+]=[N-]',
 'C1C(=O)NC(=O)N1N=[N+]=[N-]',
 'C(=N\\O)(\\N)/N=[N+]=[N-]',
 'CC1(CCCCCCCCCCC1)N=[N+]=[N-]',
 'CC1(CCCCCCCCC1)N=[N+]=[N-]',
 'CC1(CCCCCCCCCC1)N=[N+]=[N-]',
 'CCCCCC(C)(CCC)N=[N+]=[N-]',
 'C1CCCCC(CCCC1)(N=[N+]=[N-])P',
 '[3H]SCCCN=[N+]=[N-]',
 'CCC(=O)CCN(C)CN=[N+]=[N-]',
 'C1=C(C=NC=N1)CN=[N+]=[N-]',
 'COC(=O)[C@H](CCN=[N+]=[N-])N',
 'C1CC1(CCCCCCN=[N+]=[N-])N=O',
 'C(CO)COOOON=[N+]=[N-]',
 'C1CNCC(C1=O)(CN=[N+]=[N-])C=N',
 'CCC1=C(C=C(C=C1)N=[N+]=[N-])O',
 'C(CN=[N+]=[N-])COF',
 'CC1=NC(=NN1CCO)N=[N+]=[N-]',
 'C(',
 'C(',
 'CN1C(=NC(=N1)N=[N+]=[N-])N',
 'C(',
 'CC(C)(C)OCCOCCOCCN=[N+]=[N-]',
 'CNCCCOCCCN=[N+]=[N-]',
 'C([C@@H](C(=O)N=[N+]=[N-])N)S',
 'C=C(C(=O)N)N=[N+]=[N-]',
 'C1CSS(=O)(=O)CC1N=[N+]=[N-]',
 'C1CS(=O)(=O)SCC1N=[N+]=[N-]',
 'CC(C)(C)C(=O)OCCCCN=[N+]=[N-]',
 'CCOC(C)(C)CCN=[N+]=[N-]',
 'C1C(C(OC1N2COOCC(=C2)C',
 'C(COCCOCCOO)N=[N+]=[N-]',
 'C',
 'C1=CN2C(=CC(=N2)C',
 'C',
 'C1CSCC2=C1NN=C2CCN=[N+]=[N-]',
 'C',
 'C1COCC2=C1NN=C2CCN=[N+]=[N-]',
 'C',
 'C',
 'C1CC2=C(C1)NN=C2CCN=[N+]=[N-]',
 'CC1=CC(=O)N(N1)CCN=[N+]=[N-]',
 'C1=CNN(C1=O)CCN=[N+]=[N-]',
 'CC1=NN(C(=C1)N)CCN=[N+]=[N-]',
 'C1=C(N(N=C1)CCN=[N+]=[N-])N',
 'C',
 'C',
 'C',
 'C1=C(C(=NN1CC',
 'CC(C)CC1=C(C=NN1)CN=[N+]=[N-]',
 'CCC1=C(C(=NN1)CC)CN=[N+]=[N-]',
 'CCC1=NNC(=C1CN=[N+]=[N-])C',
 'CC1=C(C(=NN1)C)CN=[N+]=[N-]',
 'C1CC1C2=C(C=NN2)CN=[N+]=[N-]',
 'CC(C)C1=C(C=NN1)CN=[N+]=[N-]',
 'CCC1=C(C=NN1)CN=[N+]=[N-]',
 'CC1=C(C=NN1)CN=[N+]=[N-]',
 'C1=C(C=NN1)CN=[N+]=[N-]',
 'C',
 'C',
 'C1=C(N(N=C1C(F)(F)F)CC',
 'C',
 'C=CCN1CCN(CC1)CCN=[N+]=[N-]',
 'CN(CCOC)C(=O)CN=[N+]=[N-]',
 'C1CN(CCC1C',
 'C1CN(CCC1C',
 'C=CCN(CCN=[N+]=[N-])CC=C',
 'COCCN(CCOC)C(=O)CN=[N+]=[N-]',
 'C1CC2COCCN(C2C1)CCN=[N+]=[N-]',
 'COCC1CC(CN1CCN=[N+]=[N-])(F)F',
 'CCOC1CN(CC1OCC)CCN=[N+]=[N-]',
 'CCOC1CN(CC1OC)CCN=[N+]=[N-]',
 'CCOC1CN(CC1O)CCN=[N+]=[N-]',
 'COC1CN(CC1O)C(=O)CN=[N+]=[N-]',
 'COC1CN(CC1O)CCN=[N+]=[N-]',
 'C1CC1N(CCN=[N+]=[N-])C2CCSC2',
 'CCN(C1CCSC1)C(=O)CN=[N+]=[N-]',
 'CCN(CCN=[N+]=[N-])C1CCSC1',
 'CN(C1CCSC1)C(=O)CN=[N+]=[N-]',
 'C1CC1N(CCN=[N+]=[N-])C2CCSCC2',
 'CCN(CCN=[N+]=[N-])C1CCSCC1',
 'CN(C1CCSCC1)C(=O)CN=[N+]=[N-]',
 'CN(CCN=[N+]=[N-])C1CCSCC1',
 'COCCN(CCN=[N+]=[N-])C1CCOCC1',
 'C1CC1N(CCN=[N+]=[N-])C2CCOCC2',
 'CCN(CCN=[N+]=[N-])C1CCOCC1',
 'CN(C1CCOCC1)C(=O)CN=[N+]=[N-]',
 'CC1(CCN(CC1)CCN=[N+]=[N-])CF',
 'CC1(CCN(CC1)CCN=[N+]=[N-])COC',
 'CC1(CCN(CC1)CCN=[N+]=[N-])CO',
 'C1CN(CC(C1O)CCF)CCN=[N+]=[N-]',
 'CCCC1CN(CCC1O)CCN=[N+]=[N-]',
 'CCC1CN(CCC1O)CCN=[N+]=[N-]',
 'CC1CN(CCC1O)C(=O)CN=[N+]=[N-]',
 'CC1(CN(CC1COC)CCN=[N+]=[N-])C',
 'CC1(CN(CC1CO)CCN=[N+]=[N-])C',
 'CCOCC1CN(CC1C)CCN=[N+]=[N-]',
 'CC1CN(CC1COC)CCN=[N+]=[N-]',
 'CC1CN(CC1CO)C(=O)CN=[N+]=[N-]',
 'CC1CN(CC1CO)CCN=[N+]=[N-]',
 'C1CN(CCC12COC2)CCN=[N+]=[N-]',
 'CCOC1C2CC1CN(C2)CCN=[N+]=[N-]',
 'COC1C2CC1CN(C2)CCN=[N+]=[N-]',
 'C1C2CN(CC1C2O)CCN=[N+]=[N-]',
 'C1CN(CC2C1COC2)CCN=[N+]=[N-]',
 'C1C2COCC2CN1C(=O)CN=[N+]=[N-]',
 'C1C2COCC2CN1CCN=[N+]=[N-]',
 'C1C2CN(C1CO2)CCN=[N+]=[N-]',
 'COCCN1CCN(CC1)CCN=[N+]=[N-]',
 'C1CN(CCN1CCN=[N+]=[N-])CCF',
 'CC(C1CCCCN1CCN=[N+]=[N-])O',
 'CC(C1CCCN1C(=O)CN=[N+]=[N-])O',
 'CC(C1CCCN1CCN=[N+]=[N-])O',
 'CC(C1CCCN(C1)CCN=[N+]=[N-])O',
 'C1C(CN1C(=O)CN=[N+]=[N-])CF',
 'C1C(CN1CCN=[N+]=[N-])CF',
 'COCCC1CCN(CC1)CCN=[N+]=[N-]',
 'CCOCC1CCCCN1C(=O)CN=[N+]=[N-]',
 'CCOCC1CCCCN1CCN=[N+]=[N-]',
 'COCC1CCCCN1C(=O)CN=[N+]=[N-]',
 'COCC1CCCCN1CCN=[N+]=[N-]',
 'CCOCC1CCCN1C(=O)CN=[N+]=[N-]',
 'CCOCC1CCCN1CCN=[N+]=[N-]',
 'COCC1CCCN1C(=O)CN=[N+]=[N-]',
 'COCC1CCCN1CCN=[N+]=[N-]',
 'CCOCC1CCN(C1)CCN=[N+]=[N-]',
 'COCC1CCN(C1)C(=O)CN=[N+]=[N-]',
 'CCOCC1CCCN(C1)CCN=[N+]=[N-]',
 'CCOCC1CCN(CC1)CCN=[N+]=[N-]',
 'COC1CN(C1)C(=O)CN=[N+]=[N-]',
 'COC1CN(C1)CCN=[N+]=[N-]',
 'COC1CCN(C1)C(=O)CN=[N+]=[N-]',
 'COC1CCCN(C1)C(=O)CN=[N+]=[N-]',
 'COC1CCN(CC1)C(=O)CN=[N+]=[N-]',
 'C1CN(CCC1CCO)CCN=[N+]=[N-]',
 'C1C(CN1C(=O)CN=[N+]=[N-])CO',
 'C1C(CN1CCN=[N+]=[N-])CO',
 'C1CN(CC1CO)C(=O)CN=[N+]=[N-]',
 'C1CN(CCC1CO)C(=O)CN=[N+]=[N-]',
 'C1C(CN1C(=O)CN=[N+]=[N-])O',
 'C1C(CN1CCN=[N+]=[N-])O',
 'C1CN(CC1O)C(=O)CN=[N+]=[N-]',
 'C1CN(CCC1O)C(=O)CN=[N+]=[N-]',
 'C1C2COCC1N2C(=O)CN=[N+]=[N-]',
 'C1C2COCC1N2CCN=[N+]=[N-]',
 'C1CC2CC1CN2C(=O)CN=[N+]=[N-]',
 'C1CN(CC1C(F)F)CCN=[N+]=[N-]',
 'C1CN(CCC1C(F)F)CCN=[N+]=[N-]',
 'C1CN(CCC1CCF)CCN=[N+]=[N-]',
 'C1CN(CC1CF)C(=O)CN=[N+]=[N-]',
 'C1CN(CC1CF)CCN=[N+]=[N-]',
 'C1CC(CN(C1)CCN=[N+]=[N-])CF',
 'C1CN(CCC1CF)C(=O)CN=[N+]=[N-]',
 'C1CN(CCC1CF)CCN=[N+]=[N-]',
 'C1CN(CC1F)C(=O)CN=[N+]=[N-]',
 'C1CN(CC1F)CCN=[N+]=[N-]',
 'C1CC(CN(C1)CCN=[N+]=[N-])F',
 'C1CN(CCC1F)C(=O)CN=[N+]=[N-]',
 'C1CN(CCC1F)CCN=[N+]=[N-]',
 'C1C(CN1C(=O)CN=[N+]=[N-])(F)F',
 'C1C(CN1CCN=[N+]=[N-])(F)F',
 'C1CN(CC1(F)F)CCN=[N+]=[N-]',
 'C1CC(CN(C1)CCN=[N+]=[N-])(F)F',
 'C1CN(CCC1(F)F)CCN=[N+]=[N-]',
 'CC(C)C(=O)N1CC(C1)N=[N+]=[N-]',
 'CCC(=O)N1CC(C1)N=[N+]=[N-]',
 'CC(=O)N1CC(C1)N=[N+]=[N-]',
 'CCOCC(=O)N1CC(C1)N=[N+]=[N-]',
 'COCC(=O)N1CC(C1)N=[N+]=[N-]',
 'C1C(CN1C(=O)C2=CC=C(C=C2)C',
 'C1C(CN1C(=O)CC',
 'C1C(CN1C(=O)C2=CC=CC(=C2)C',
 'C1CC1C(=O)N2CC(C2)N=[N+]=[N-]',
 'CCCCC(=O)N1CC(C1)N=[N+]=[N-]',
 'CCCC(=O)N1CC(C1)N=[N+]=[N-]',
 'CC1CC(CC(C1)(C)C)N=[N+]=[N-]',
 'C1CSCCC1N2CC(C2)N=[N+]=[N-]',
 'C1COCCC1N2CC(C2)N=[N+]=[N-]',
 'C1CC(C1)N2CC(C2)N=[N+]=[N-]',
 'C1CCC(CC1)N2CC(C2)N=[N+]=[N-]',
 'C1CSCC1N=[N+]=[N-]',
 'C1C(CN1CC2=CC=CS2)N=[N+]=[N-]',
 'CC(C)(C)CN1CC(C1)N=[N+]=[N-]',
 'CC1=C(SC=C1)CN=[N+]=[N-]',
 'C1C(CN1CC(F)(F)F)N=[N+]=[N-]',
 'CC(C)CN1CC(C1)N=[N+]=[N-]',
 'CCCCCCCN1CC(C1)N=[N+]=[N-]',
 'COCCCN1CC(C1)N=[N+]=[N-]',
 'CCCCCCCCN1CC(C1)N=[N+]=[N-]',
 'CCCCCCN1CC(C1)N=[N+]=[N-]',
 'CCCCCN1CC(C1)N=[N+]=[N-]',
 'CC(C)CCN1CC(C1)N=[N+]=[N-]',
 'CCCN1CC(C1)N=[N+]=[N-]',
 'C1CC1CN2CC(C2)N=[N+]=[N-]',
 'CCCNC(=O)CN1CC(C1)N=[N+]=[N-]',
 'C1C(CN1CC2=CC=C(C=C2)C',
 'CCOCCN1CC(C1)N=[N+]=[N-]',
 'COCCN1CC(C1)N=[N+]=[N-]',
 'C1CC(OC1)CN2CC(C2)N=[N+]=[N-]',
 'CCCCN1CC(C1)N=[N+]=[N-]',
 'C=CCN1CC(C1)N=[N+]=[N-]',
 'CCNC(=O)CN1CC(C1)N=[N+]=[N-]',
 'C1=CC=C(C(=C1)CCC',
 'C1=CC(=CC=C1C',
 'C1CSCCC1N=[N+]=[N-]',
 'C(CCC(=O)O)CC(=O)N=[N+]=[N-]',
 'CCC(C(=O)N=[N+]=[N-])C(=O)O',
 'C1COCCN1NC(=O)N=[N+]=[N-]',
 'CC(C(=O)N=[N+]=[N-])C(=O)O',
 'C(C(=O)N=[N+]=[N-])NC(=O)CCl',
 'C(C(=O)N=[N+]=[N-])NC(=O)CBr',
 'CCCNC(=O)N=[N+]=[N-]',
 'CC1=C(SC=N1)C(=O)N=[N+]=[N-]',
 'CC1=NC=C(S1)C(=O)N=[N+]=[N-]',
 'C1=CN=CN=C1C(=O)N=[N+]=[N-]',
 'C1=CNC=C1C(=O)N=[N+]=[N-]',
 'C',
 'C1CCC(C(C1)CN=[N+]=[N-])(F)F',
 'C1CC(C(C1)(F)F)CN=[N+]=[N-]',
 'COC1(CCC1)C(CO)N=[N+]=[N-]',
 'C[C@H](CN=[N+]=[N-])N',
 'C[C@H](CN)N=[N+]=[N-]',
 'CS(=O)(=O)NC(=O)CN=[N+]=[N-]',
 'CCC1=NC(=C(O1)CN=[N+]=[N-])C',
 'CCCC1=NC(=C(O1)CN=[N+]=[N-])C',
 'CO[C@@H]1COC[C@H]1N=[N+]=[N-]',
 'C1=C(SN=N1)CN=[N+]=[N-]',
 'C1=CN=C(N=C1N)CN=[N+]=[N-]',
 'CCOSN=[N+]=[N-]',
 'C(CCN=[N+]=[N-])CCBr',
 'C1C(C(=O)N(C1=O)O)N=[N+]=[N-]',
 'C1=CC(=CC=C1CNCCN=[N+]=[N-])I',
 'CC(CN=[N+]=[N-])S(=O)(=O)C',
 'C1CC1(CCCCCCCN=[N+]=[N-])OC=O',
 'C1CC1(CCCN=[N+]=[N-])N=O',
 'C1CC1(CCCCCCCN=[N+]=[N-])N=O',
 'C1CC1(CCCCCN=[N+]=[N-])N=O',
 'CC1(CCCC(O1)CN=[N+]=[N-])C',
 'CC(CNC(=O)C(C)(CCC',
 'C',
 'C(C=C=NN)OC(=O)CN=[N+]=[N-]',
 'C(CN=[N+]=[N-])NCC=N',
 'C(CN=[N+]=[N-])C(C=N)N=O',
 'C1=CC(=CC=C1CCN=[N+]=[N-])S',
 'CC(C1=CCCOC(=O)N1)N=[N+]=[N-]',
 'CC(=O)N1CCC(CC1)NN=[N+]=[N-]',
 'C1CN(CCC1O)CN=[N+]=[N-]',
 'CCC1CCN(CC1)CN=[N+]=[N-]',
 'CCCN(C)CN=[N+]=[N-]',
 'CC1=C(C=CC=C1OCN=[N+]=[N-])C',
 'CC1=C(C=CC(=C1)O)CN=[N+]=[N-]',
 'CC1=C(C(=CC=C1)O)CN=[N+]=[N-]',
 'CCC1=C(C=CN=C1CO)CN=[N+]=[N-]',
 'CC',
 'CCC',
 'C/C=C/CCCCCN=[N+]=[N-]',
 'CCCCOC[C@H](C)N=[N+]=[N-]',
 'C(CC',
 'C(CC/C=C/CBr)CCN=[N+]=[N-]',
 'CC(CCN=[N+]=[N-])CN',
 'CC(CCC',
 'CCN(CN)N=[N+]=[N-]',
 'CC[C@@H]1[C@H]([C@@](C(O1)CC',
 'CC[C@@H]1[C@H]([C@@](C(O1)(C',
 'C[C@]1([C@@H]([C@H](O[C@@]1(C',
 'CN(C)C(=[N+](C)C)N=[N+]=[N-]',
 'C(CN)C(N=[N+]=[N-])OCCO',
 'C(CNC(=O)O)C(N=[N+]=[N-])OCCO',
 'C1CC(CC1NC(=O)O)N=[N+]=[N-]',
 'CN(CC',
 'CN(CC',
 'C',
 'C',
 'C',
 'C',
 'C',
 'CC(=C)[C@H](CCSC)NN=[N+]=[N-]',
 'CSCC[C@@H](C(=C)N=[N+]=[N-])N',
 'C',
 'C',
 'C',
 'C[C@@H](C(=O)N[C@@H](CC',
 'CCCC[C@@H](C(=O)N[C@@H](CC',
 'C1=CC(=CC=C1C[C@@H](C(=O)NCC',
 'C1=CC=C(C=C1)C[C@@H](C(=O)NCC',
 'CC(C)C[C@@H](C(=O)NCC',
 'C1=CC(=CC=C1CC[C@@H](C(=O)NCC',
 'C1=CC(=CC=C1C[C@@H](C(=O)NCC',
 'C1=CC=C(C=C1)C[C@@H](C(=O)NCC',
 'CCCC[C@@H](C(=O)NCC',
 'CC(C)C[C@@H](C(=O)NCC',
 'CC(=O)NCC',
 'C',
 'C1CC(OC1CCCN=[N+]=[N-])C[18F]',
 'C(CCOCC[18F])CN=[N+]=[N-]',
 'C',
 'C',
 'C=CN(CCF)CN=[N+]=[N-]',
 'CCC(N=[N+]=[N-])OCCOC(=O)C',
 'CC1=CN(N=N1)CN=[N+]=[N-]',
 'C[C@H](CN=[N+]=[N-])COCC(=C)C',
 'CC(C)C(CCC(C)CN=[N+]=[N-])O',
 'C[C@H](CN=[N+]=[N-])COC(=O)C',
 'CCCC1(COC1)CN=[N+]=[N-]',
 'CC1=C(C=CC(=C1)N=[N+]=[N-])CO',
 'CN1C(=CN=C1N=[N+]=[N-])C(=O)O',
 'C1=CC(=C(C(=C1C',
 'CC1=C(C=CC(=C1CN=[N+]=[N-])C',
 'COC1CCNCC1N=[N+]=[N-]',
 'CCOC(=O)CCCC(C)(C)N=[N+]=[N-]',
 'CS(=O)(=O)OSN=[N+]=[N-]',
 'C=CCCCCCCN=[N+]=[N-]',
 'CC(CCC1CCCCC1)N=[N+]=[N-]',
 'C[C@H](CCCC=C)N=[N+]=[N-]',
 'CC(=O)CCCC(C)(C)N=[N+]=[N-]',
 'CCCCOC[C@@H](CN=[N+]=[N-])O',
 'CC(C)(CC(C)(C)OC)N=[N+]=[N-]',
 'C(CN)COC(=O)CN=[N+]=[N-]',
 'CC/C=C(/C)\\CCN=[N+]=[N-]',
 'CC(COC(=O)CCCC',
 'CC(CN=[N+]=[N-])(COC(=O)CCCC',
 'C',
 'C',
 'CCC(CC',
 'CC(C)OCN=[N+]=[N-]',
 'CC(C)OC(=O)OCN=[N+]=[N-]',
 'CC(C)(C)OC(=O)N(CC',
 'C1=CC(=C(C=C1S)N)CN=[N+]=[N-]',
 'CC1=CC(=C(C=C1)CN=[N+]=[N-])N',
 'C(CC(CN=[N+]=[N-])F)C',
 'C1C(C(CN1CC2=CC=CC=C2)N(CC',
 'C1C(C(CN1CC2=CC=CC=C2)N(CC',
 'C1=CN=C(N=C1N=[N+]=[N-])Cl',
 'C1=CC(=C(C=C1F)O)N=[N+]=[N-]',
 'CC(=O)C(CCCCCCCCCC',
 'C1CN(CCC1NN)C(N=[N+]=[N-])I',
 'C1CN(CCN1)C(CN=[N+]=[N-])C=N',
 'CCOP(=C)(CCN=[N+]=[N-])OCC',
 'C(CCCN=[N+]=[N-])CCCON',
 'C1=C(C(=CO1)Br)N=[N+]=[N-]',
 'COC1CCCC(C1OCN=[N+]=[N-])Br',
 'CC(N=[N+]=[N-])OCCOCCOC',
 'C1C(CC1OC(=O)N)N=[N+]=[N-]',
 'CCCC',
 'C1C(CO1)(CN=[N+]=[N-])COS',
 'CC',
 'CCCC',
 'CSCCOCCOCCOCCN=[N+]=[N-]',
 'CSCCOCCOCCN=[N+]=[N-]',
 'CSCCOCCN=[N+]=[N-]',
 'C=C(CCN=[N+]=[N-])C=O',
 'C1=CC(=O)N(C1=O)CCN=[N+]=[N-]',
 'C(CN=[N+]=[N-])CS(=O)(=O)F',
 'C(CN=[N+]=N)NCCN=[N+]=[N-]',
 'CC(CCS(=O)(=O)F)N=[N+]=[N-]',
 'C',
 'CC(CN=[N+]=[N-])N=NN',
 'CN(C(CN=[N+]=[N-])C=N)N',
 'CNC(CN=[N+]=[N-])C=N',
 'CCC(CN=[N+]=[N-])CN=[N+]=[N-]',
 'CC(CN=[N+]=[N-])(C=N)N=O',
 'CC1=CCCC(N1)CN=[N+]=[N-]',
 'CC(CN=[N+]=[N-])(C=N)C=N',
 'CNC(CN=[N+]=[N-])CN=[N+]=[N-]',
 'CC(CN=[N+]=[N-])N=O',
 'CC(CN=[N+]=[N-])NC',
 'CC1=CC=CC(N1)CN=[N+]=[N-]',
 'CN(CCN=[N+]=[N-])N',
 'C=NC1=CC=C(C=C1)N=[N+]=[N-]',
 'CC(C)(C)OC(=O)NOCCN=[N+]=[N-]',
 'C',
 'CCCOCCOCCON=[N+]=[N-]',
 'C(COCCOCCF)N=[N+]=[N-]',
 'CCC(CN=[N+]=[N-])C1N=C=N1',
 'CCOC(=O)COCCOCCN=[N+]=[N-]',
 'C1=CN=C(N1)C(CN=[N+]=[N-])O',
 'C(CCCCCN=[N+]=[N-])CCCCCOC=O',
 'CCCCCCCCCCC(N=[N+]=[N-])OC=O',
 'CNC(=O)[C@H](CN=[N+]=[N-])N',
 'CC(=O)CC(=O)OCN=[N+]=[N-]',
 'C1=C(OC(=C1)C=N)CN=[N+]=[N-]',
 'C(C(COC=N)ON)N=[N+]=[N-]',
 'C(CN=O)COCN=[N+]=[N-]',
 'C[C@H](C(=C(C)C)F)N=[N+]=[N-]',
 'CC(C)(CN=[N+]=[N-])C',
 'CC(COC)OC(COCN=[N+]=[N-])C',
 'CC(COC)OC(C)COCN=[N+]=[N-]',
 'CC(COC)OC(CCCN=[N+]=[N-])COC',
 'CCC(C)C(C)CN=[N+]=[N-]',
 'COC1=CC(=C(C=C1)C(=O)OCC',
 'COC1=CC(=C(C=C1)C(=O)OCC',
 'CC(=O)NCC',
 'CCOCC(=O)NCC',
 'C(/C=C/NN)N=[N+]=[N-]',
 'C=CC(NN)N=[N+]=[N-]',
 'CC(=C(C',
 'C(COCCOS(=O)O)N=[N+]=[N-]',
 'C(COCCOS(=O)[O-])N=[N+]=[N-]',
 'CCC1=CN=C(O1)CN=[N+]=[N-]',
 'C=COC(=O)CN=[N+]=[N-]',
 'C=NN/C=C\\N=[N+]=[N-]',
 'C1=C(NC(=O)N=C1)N=[N+]=[N-]',
 'C(CO)N(CCO)CN=[N+]=[N-]',
 'C1=CN=CN=C1CN=[N+]=[N-]',
 'CCOC(=O)C1=CN=C(N=C1NCCCCC',
 'COCC1(COC1)CCN=[N+]=[N-]',
 'CC1C(O1)(C)CN=[N+]=[N-]',
 'C1CCC(C1)(N=[N+]=[N-])F',
 'C(C(=C=NN)CN=[N+]=[N-])N',
 'CNC(CN=[N+]=[N-])O',
 'CC(C)CC(C)(C)N=[N+]=[N-]',
 'CNC1=CC=CC=C1CN=[N+]=[N-]',
 'C(C(N=[N+]=[N-])O)F',
 'C1CN2C=CN=C2C1N=[N+]=[N-]',
 'C1=CSC=C1CCCN=[N+]=[N-]',
 'C1=CSC(=C1)CCCN=[N+]=[N-]',
 'C1CC1C2COCC(O2)CN=[N+]=[N-]',
 'CC1=CC(=NC=C1)CN=[N+]=[N-]',
 'CCCCC(=O)NCCCCCN=[N+]=[N-]',
 'CN(CCN=[N+]=[N-])Cl',
 'COPN=[N+]=[N-]',
 'C1=CC=C(C=C1)COC(=O)NC(CC',
 'C1C(C(OC1N2C=C(C(=O)N2)C',
 'C(COCCOCC(N)N=[N+]=[N-])O',
 'CNC(=O)OCCOCCOCCN=[N+]=[N-]',
 'COC1COC2C1OCC2N=[N+]=[N-]',
 'C1=CC=C(C=C1)CN(C(CC',
 'CC1=NNN=C1CN=[N+]=[N-]',
 'C(CN=[N+]=[N-])NI',
 'CCCOCCOCN=[N+]=[N-]',
 'CCCCCCCOCN=[N+]=[N-]',
 'CC(C)C1=C(SC=N1)CN=[N+]=[N-]',
 'C1=NC(=C(S1)CN=[N+]=[N-])Cl',
 'CC(C)C1=NC=C(S1)CN=[N+]=[N-]',
 'CCC1=NC=C(S1)CN=[N+]=[N-]',
 'CCC1=C(SC=N1)CN=[N+]=[N-]',
 'C([C@@H](C(CO)O)O)N=[N+]=[N-]',
 'C1=CC(=NC=C1CON)OCN=[N+]=[N-]',
 'C1CN(CCC1N)S(=O)CN=[N+]=[N-]',
 'C=CCC(=O)N=[N+]=[N-]',
 'C1C(C1CO)CN=[N+]=[N-]',
 'CCSSCN=[N+]=[N-]',
 'CCCSCC(C)CSCCN=[N+]=[N-]',
 'CCCC1=CC=C(C=C1)CCN=[N+]=[N-]',
 'C1CNC[C@@]1(CN=[N+]=[N-])CO',
 'COCOC[C@]1(CCNC1)CN=[N+]=[N-]',
 'CC(C)(CC(=O)OC)N=[N+]=[N-]',
 'CC1CC(CC1C=N)CN=[N+]=[N-]',
 'CC(=O)OCCCCN=[N+]=[N-]',
 'CC(CCCCC(=O)O)N=[N+]=[N-]',
 'CC(CCCOC(=O)C)N=[N+]=[N-]',
 'CC(CCCO)N=[N+]=[N-]',
 'C(COCCOCC[18F])N=[N+]=[N-]',
 'CC(C(=O)OCCCN=[N+]=[N-])S',
 'CC1CCCC1(C)N=[N+]=[N-]',
 'C(C(N)N=[N+]=[N-])N=[N+]=[N-]',
 'C(C(COOO)O)N=[N+]=[N-]',
 'C',
 'C',
 'CC(CCCN=[N+]=[N-])(C(=O)O)Br',
 'C(CCN=[N+]=[N-])CC(C(=O)O)Br',
 'CCC(CC(C(=O)O)Br)N=[N+]=[N-]',
 'C',
 'C',
 'COC(=O)C1=CC(=C(C=C1)OCC',
 'C',
 'C',
 'C',
 'C',
 'C',
 'C',
 'C',
 'C(CN=[N+]=[N-])C(CCF)(CO)O',
 'CCOC(CCF)CN=[N+]=[N-]',
 'CP(CN=[N+]=[N-])C',
 'CP(CN=[N+]=[N-])N=[N+]=[N-]',
 'CCC(=O)C(C)(C)C(C)N=[N+]=[N-]',
 'C(COCCOC(=O)NN)N=[N+]=[N-]',
 'CCOP(=O)(C)CCN=[N+]=[N-]',
 'CC(C)C(C(=O)O)NN=[N+]=[N-]',
 'CCC1(OCC(CO1)(C(=O)NCC',
 'C',
 'CC(CCC1=NC2=C(C=C(C=C2C(=C1)C',
 'CC(CCC1=NC2=CC(=C(C=C2C(=C1)C',
 'C(CCN)CC(C(=O)O)N=[N+]=[N-]',
 'CC1(CNC(=O)O1)CN=[N+]=[N-]',
 'C1CC=CC(C1)CN=[N+]=[N-]',
 'C1COC(CN1C(=O)O)CN=[N+]=[N-]',
 'CC(C(CN=[N+]=[N-])O)NC(=O)O',
 'CC1(CNC(O1)O)CN=[N+]=[N-]',
 'CC1C(OC(=O)N1)CN=[N+]=[N-]',
 'C1C(OC(=O)N1)CCN=[N+]=[N-]',
 'CC(C1CNC(=O)O1)N=[N+]=[N-]',
 'C1CC12C(OC(=O)N2)CN=[N+]=[N-]',
 'CC(C)(C(N=[N+]=[N-])Cl)O',
 'CC(CN=[N+]=[N-])(CCl)O',
 'C/C(=C\\C=C/N=C)/N=[N+]=[N-]',
 'CC(C(F)(F)F)(N=[N+]=[N-])OC',
 'CCC(C)(N=[N+]=[N-])O',
 'C(C(N=[N+]=[N-])(F)F)OC(=O)N',
 'CCOC(=O)CC(N=[N+]=[N-])(F)F',
 'C(C(=O)O)C(N=[N+]=[N-])(F)F',
 'C(=O)(C(N=[N+]=[N-])(F)F)N',
 'COC(=O)C1=CC=C(O1)N=[N+]=[N-]',
 'CC(CCN)CN=[N+]=[N-]',
 'CC(CN)C(C)CN=[N+]=[N-]',
 'CNC1(SS1)N=[N+]=[N-]',
 'C(C(=O)P)N=[N+]=[N-]',
 'C1(SS1)(N)N=[N+]=[N-]',
 'C',
 'C([C@@H](CO)N=NN)N=[N+]=[N-]',
 'C1CN(CCN1)CCOCCN=[N+]=[N-]',
 'COC1=C(C=C2C(=C1)C(=C(C=N2)C',
 'COC1=C(C=C2C(=C1)C(=C(C=N2)C',
 'CC(C1=C(C=CC(=C1)Br)C',
 'C1=C(C(=NC=C1Br)C',
 'C(CCC(C(=O)O)N)CCN=[N+]=[N-]',
 'C(CCCN=[N+]=[N-])CCC(C(=O)O)N',
 'CC1(C(CN1)N=[N+]=[N-])C',
 'C1CN(CCC1C',
 'C(C(CO)OCN=[N+]=[N-])O',
 'C(N=[N+]=[N-])OC(=O)NN',
 'C(CON=N)N=[N+]=[N-]',
 'CC1CCC(CN1)N=[N+]=[N-]',
 'C1=CC(=C(N=C1)CN=[N+]=[N-])F',
 'CC(C)(CCN=[N+]=[N-])C(=O)[O-]',
 'CC(C)(CCN=[N+]=[N-])C(=O)O',
 'CC(C(C)(C)C(=O)O)N=[N+]=[N-]',
 'C1=C(C=NC=C1Cl)N=[N+]=[N-]',
 'C1C2C(C2CN=[N+]=[N-])CN1',
 'COCCCN1CC2C(C1)C2CN=[N+]=[N-]',
 'CCC(C)(C)CC(C)N=[N+]=[N-]',
 'CCC(C)(CC(C)(C)C)N=[N+]=[N-]',
 'CC(C)CC(C)N=[N+]=[N-]',
 'CCC(C)(C)CC(C)(C)N=[N+]=[N-]',
 'CCC(C)(C)CC(C)(CC)N=[N+]=[N-]',
 'C(C(=O)N=N)N=[N+]=[N-]',
 'C1C(C(OC1N2C=C(C(=O)NC2=O)C',
 'C1C2CC1(C2)N=[N+]=[N-]',
 'C(COCCOCCOC(=O)Cl)N=[N+]=[N-]',
 'CC(=C)C(=O)NCCCCN=[N+]=[N-]',
 'CC1=CN=C(C=C1)CCCN=[N+]=[N-]',
 'CN(C)CCN(CCN(C)C)N=[N+]=[N-]',
 'CC(C)C[C@@H](C',
 'COCCOCCOCN=[N+]=[N-]',
 'COC1=NC(=NC(=C1C',
 'C',
 'C1=CC=C(C=C1)C',
 'CNC1=NC(=NC(=C1C',
 'CC1CCC2(N1CCC2)CN=[N+]=[N-]',
 'C1CC2(CC(CN2C1)F)CN=[N+]=[N-]',
 'C=C1CC2(CCCN2C1)CN=[N+]=[N-]',
 'C1CCN2CCCC2(C1)CN=[N+]=[N-]',
 'C1=CC(=C(C=C1CN=[N+]=[N-])O)O',
 'CCCC(C(C)O)N=[N+]=[N-]',
 'COCCON=[N+]=[N-]',
 'C1CCCCC(CCC1)N=[N+]=[N-]',
 'CC1=C(C2=C(N1C3=CC=C(C=C3)C',
 'CC1=C(C2=C(N1C3=CC=C(C=C3)C',
 'C1=CC(=C(C=C1N=[N+]=[N-])C',
 'C1[C@H](C(CN1)N=[N+]=[N-])F',
 'C1=CC=C2C(=C1)C(=C(C',
 'C1=CC=C(C=C1)CC(C(=O)OCC',
 'C1C(C(CN1)F)N=[N+]=[N-]',
 'CC',
 'CCC(C)(CC(CC(C)(C)C(=O)OCC',
 'CC(=C)C(=O)NCCN=[N+]=[N-]',
 'C1=CC(=O)C(C1=O)NCN=[N+]=[N-]',
 'CC(CCC(C)CN=[N+]=[N-])CC',
 'C=C(CN=[N+]=[N-])C(=O)Cl',
 'C1CNC[C@H]1N=[N+]=[N-]',
 'C1C(C1N=[N+]=[N-])C(=O)O',
 'COC(=O)CCC(CN=[N+]=[N-])C=N',
 'CN1CCCC(C1=O)(CC',
 'COC1=CC(=C(C=C1)C(=O)OCC',
 'COC1=CC(=C(C=C1)C(=O)OCC',
 'C1CNC(CN1)C(=O)CN=[N+]=[N-]',
 'CCCCCC[N+](C)(C)CCN=[N+]=[N-]',
 'C[N+](C)(CCN=[N+]=[N-])C',
 'CCCCCCCCCCCCNCCN=[N+]=[N-]',
 'C=CN/C=C\\N=[N+]=[N-]',
 'C(CNC(=O)CCS)CN=[N+]=[N-]',
 'CCCC/C=C/C=C/CN=[N+]=[N-]',
 'C(CCN=[N+]=[N-])CCS(=O)Cl',
 'CC(=O)SCCCCCN=[N+]=[N-]',
 'C1[C@@H]2C[C@@H]2N([C@@H]1C',
 'C1[C@@H]2C[C@@H]2C([C@@H]1C',
 'CCCCCCC/C=C/C=C/CN=[N+]=[N-]',
 'CS(=O)(=O)OC1COCC1N=[N+]=[N-]',
 'CC(CCOS(=O)(=O)C)N=[N+]=[N-]',
 'CCCCC/C=C/C=C/CN=[N+]=[N-]',
 'C[S@@](=O)CCOCCN=[N+]=[N-]',
 'CS(=O)CCOCCN=[N+]=[N-]',
 'C[C@@H](CN=[N+]=[N-])NC(=O)O',
 'CC1CC([C@H](O1)CN=[N+]=[N-])O',
 'C=CCCCCCCCCN=[N+]=[N-]',
 'CCCC(C)(N=[N+]=[N-])I',
 'CCCC(N=[N+]=[N-])I',
 'C1CC(CC(C1N=[N+]=[N-])O)(F)F',
 'CCC1CCC(CC1)CN=[N+]=[N-]',
 'C(CCN=[N+]=[N-])CNO',
 'CN(CCCO)CN=[N+]=[N-]',
 'CN(CCCCN=[N+]=[N-])CCO',
 'C(CCN=[N+]=[N-])CNC(CO)C(=O)O',
 'C(CNCCO)CN=[N+]=[N-]',
 'CCCNCCCN=[N+]=[N-]',
 'CCCNCCN=[N+]=[N-]',
 'CCCC[N+](C)(C)CN=[N+]=[N-]',
 'CCC(C(=O)O)NCCCCN=[N+]=[N-]',
 'C[N+](C)(CCO)CN=[N+]=[N-]',
 'CCC[N+](C)(C)CCCN=[N+]=[N-]',
 'C[N+](C)(CCN=[N+]=[N-])CCO',
 'CCC[N+](C)(C)CCCCN=[N+]=[N-]',
 'CCCNCCCCN=[N+]=[N-]',
 'CC(C)(C',
 'CC(C)SSC(CC[C@@H](C(=O)OCC',
 'CC',
 'CC(C)C(CCC',
 'CC(C)C(CCC',
 'CCC',
 'C1CCNC(C1)CN=[N+]=[N-]',
 'C',
 'CC1=CN=C(C=C1)CN=[N+]=[N-]',
 ...]

Далее заменим азидный фрагмент в скачанных SMILES на template. Полученные молекулы отсеиваем по правилам Лепински. Я хочу, чтобы модифицированный ибупрофен был более водорастворимый, чем ибупрофен. Также поищем самую водорастворимую молекулу и нарисуем ее в конце. Здесь показан результат для первых 100 молекул SMILES - можно сделать и для всех, но очень уж страницу распирает.

In [13]:
#for smi in smiles[:1500]:
good_new_smiles=[] 
N=0
#all_mol = len(smiles)
all_mol = 100
min = Lipinksy.rdMolDescriptors.CalcCrippenDescriptors(ibu)[0]
min_index = 0
#Новую молекулу лучше создавать в try из-за возможных битых Smiles
for smi in smiles[:all_mol]:    
    if 'N=[N+]=[N-]' in smi:
        newsmi=smi.replace('N=[N+]=[N-]','N1C=C(N=N1)C1=CC=C(C=C1)C(C)C(=O)O') #replace with template
    else:
        continue

    try:
        newmol=Chem.MolFromSmiles(newsmi)        
        if Lipinksy.NumHDonors(newmol) <= 5 and Lipinksy.NumHAcceptors(newmol) <= 10 and Lipinksy.rdMolDescriptors.CalcExactMolWt(newmol) <=500 and Lipinksy.rdMolDescriptors.CalcCrippenDescriptors(newmol)[0] <= Lipinksy.rdMolDescriptors.CalcCrippenDescriptors(ibu)[0]:
            good_new_smiles.append(newmol)
            AllChem.Compute2DCoords(newmol)
            display(newmol)
            
            print N
            N=N+1
            if Lipinksy.rdMolDescriptors.CalcCrippenDescriptors(newmol)[0] < min: 
                min = Lipinksy.rdMolDescriptors.CalcCrippenDescriptors(newmol)[0]
                min_index = N-1

    except:
        pass
print 'good molecules: ', float(N)/float(all_mol)*100,'%'   
print 'molecule with minimal log P: %i with number %i' %(min,min_index)
display(good_new_smiles[min_index])
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
good molecules:  25.0 %
molecule with minimal log P: 0 with number 9

Можно сделать 3D модель этой или любой другой молекулы. При сохранении страницы в HTML изображение пропадает.

In [14]:
m3d=Chem.AddHs(good_new_smiles[9])
Chem.AllChem.EmbedMolecule(m3d)
AllChem.MMFFOptimizeMolecule(m3d,maxIters=500,nonBondedThresh=200 )
Out[14]:
0
In [15]:
import nglview as nv
nv.show_rdkit(m3d)