Think about Structure Kinetics Relationship

Here is a deep analysis about SKR from Merck.

Recently it is becoming important factor for understanding ligand target binding kinetics. You know there are tools such as SPR, ITC and in silico method like a MD.

The author analyzed Kinetic data about Hsp90. They analyzed relation ship between R-group of some scaffolds and Kon with two type of compounds set called “cavity-varying” and “entrance-varying”.
The “cavity” is hydrophobic region of Hsp90 and “entrance” is hydrophilic.
It is interesting that substituents of “cavity-varying” shows strong relation ships between lipophilicity and Kon . On the other hand, substituents of “entrance-varying” shows week correlation.

Also they performed MD simulations to confirm a polar desolvation barrier. Unfortunately I am not familiar for Molecular Dynamics but it reveal the effect of desolvation step of molecular binding.

In the article the author provides lots of data. It is worth to check and learn I think.


Make MMP network and send to cytoscape #chemoinfo

Recently I use cytoscape in my laboratory. You know Cytoscape is nice tool for network visualization.
I often make data with python and import data from cytoscape. The work flow is not so bad but I am thinking that it will be nice if python can communicate with cytoscape.
Fortunately cytocape has REST plugin called cyREST and also python has py2cytoscape to do it!
It sounds nice. I tried to use these libraries.
At first I installed cyREST to my cytoscape (v3.5.1). appmanager => cyREST >
And also I installed chemviz for drawing chemical structure in cytoscape.
Then install py2cytoscape via pip. 😉
You can access localhost:1234/v1 from web blowser when cytoscape launched if cyREST is successfully installed.

I drew simple MMP network. Code is below.
First, I made MMP from SMILES file by using RDKit MMP script.

$ cat testdata.smi
Oc1ccccc1 phenol
Oc1ccccc1O catechol
Oc1ccccc1N 2-aminophenol
Oc1ccccc1Cl 2-chlorophenol
Nc1ccccc1N o-phenylenediamine
Nc1cc(O)ccc1N amidol
Oc1cc(O)ccc1O hydroxyquinol
Nc1ccccc1 phenylamine
C1CCCC1N cyclopentanol
$ python < testdata.smi> testdata.frag
$ python < testdata.frag > testmmp.txt -r 0.2
$ cat testmmp.txt

Now I got MMP data I used the data to make edge of my network and testdata.smi is used to make node data.

Next code is example for communication between python and cytoscape.
At first, import CyRestClient and make connection. Default URL is localhost and port is 1234. But if user would like to use another IP and Port, user can modify from cytoscape.
Edit => Preferences => add => rest.url xxxxx, rest.port xxxx

I used python-igraph for making graph but py2cytoscape handle data generated by networkx, geohi and something.

import igraph
from import CyRestClient
import py2cytoscape

cy = CyRestClient()
G = igraph.Graph()

with open('testdata.smi', 'r') as vertexis:
    for v in vertexis:
        G.add_vertex(v.split(' ')[0], molname=v.split(' ')[1])

with open("testmmp.txt", "r") as edges:
    for edge in edges:
        G.add_edge(edge.split(",")[0], edge.split(",")[1], transform=edge.split(",")[4])

After making network, go to next step.
network_create_from_igraph method receives data from igraph and send to cytoscape.
Then I set network layout ‘force-directed’.
Finally I set some view style and update the graph settings.

g_cy =
cy.layout.apply(name='force-directed', network=g_cy)

mystyle ='mystyle')

defaults = {
    'NODE_HIGHT': 100,
    'NODE_WIDTH': 100,
    'NODE_LABEL_COLOR': '#555555',
    'EDGE_WIDTH': 20,

mystyle.update_defaults(defaults), network=g_cy)

View screenshots.
Before run the code, there is no network in cytoscape.

After run the code I could see MMP network without chemical structure.

Finally I set chemviz setting and run paint structure from menu, I could see structure on each node.

And also each node and edge has their own attribute that is set by igraph.
It interesting and useful because all work is done by using only python!

This example is one way python => cytoscape. But the library can send data in both directions.
There are nice documents written in Japanese such like a following URL.







inter and intra reaction handling in RDKit #RDKit

RDKit can handle reaction. Enumeration of many molecules with template reaction and building blocks are useful for library generation.
Recently I have a question about how to handle intramolecular reactions with RDKit such as micro cyclization etc.
In the case of amidation reaction that is often used for drug synthesis SMARTS query is below.
The query is inter molecular reaction in RDKit. A + B => C. So this query can not apply to intramolecular reaction such like a “OC(=O)CCCCN => C(=O)1CCCCN1”
In the RDKit, intramolecular reaction query is represented by including reactants in parentheses.
You can found in the document.

By the way how to distinguish between intra and inter reaction in my code?🤔

I propose simple solution, multiple SMILES is handled as one mol object and perform reaction and then separate it.
OK my english is difficult to understand, let’s go to code.

In the blog post, I wrote an example for amidation.

from rdkit import Chem
from rdkit.Chem import rdChemReactions
from rdkit.Chem import AllChem
from rdkit.Chem.Draw import IPythonConsole
from rdkit.Chem import Draw

# define intra and inter molecular reaction
intra_rxn = AllChem.ReactionFromSmarts('([C:1][C:2](=[O:6])[O:3].[N:4][C:5])>>[C:1][C:2](=[O:6])[N:4][C:5]')
inter_rxn = AllChem.ReactionFromSmarts('[C:1][C:2](=[O:6])[O:3].[N:4][C:5]>>[C:1][C:2](=[O:6])[N:4][C:5]')

# basic acid / amine
acid = Chem.MolFromSmiles('CC(=O)O')
amine = Chem.MolFromSmiles('NC')
# intramolecular
aminoacid =  Chem.MolFromSmiles('N(C)CCC(O)CC(=O)O')

# two molecules in one mol object!
combmol = Chem.MolFromSmiles("CC(=O)O.N1CCC(C)1")

In the case of A + B => C is below

inter_rxn.RunReactants([acid, amine])[0][0]

In this case reaction seems good. By the way, in case of intra reaction is below.

# Intra reaction can not represent with inter molecular reactoin query

But intra SMIRKS query works fine.

#inra moleclar query works fine

Next run the reaction with one mol object in two molecules and intra molecular reaction object.

# paired molecular object also works but reactant two molecules is handled as one object

Finally combined molecules are separated with Sep_mol function. The function convert molecule to SMILES and split by ‘.’ then transforms SMILES to molecules.

def sepMol(mol):
    smi_list = Chem.MolToSmiles(mol).split('.')
    mols = [ Chem.MolFromSmiles(smi) for smi in smi_list]
    return mols
ms = sepMol(combmol)
# out

I tried the function only amidation and do not know whether the method is efficient or not.
Any comment or advice is appreciated.

All my code can check from following URL.

Similar but not similar compounds….

Some months ago I wrote a blog post about biased ligand. It is still exciting area for me.

BYW, the post is about Rexulti developed by Otuka Pharmaceutical.
And the drug approved 19th Jan. 2018 in Japan for schizophrenia. Just by looking, Rexulit has very similar structure to Abilify.
I interested the patent strategy and got some U.S. patent from google patent.


U.S. patent number of Abilify is 5,006,528 filed in oct. 20, 1989 “CARBOSTYRIL DERIVERTIVES”.
Common structure is below.

R in the formula is limited substituted benzene.
In this patent, there are many in vivo data but no in vitro data.

Let’s move to next patent, rexulti.
I found following U.S. patent.
The claimed structure is below.

In the figure, Q is calbostyril moiety. Main difference is monocyclic benzene and benzothiophene.
In this patent, inventor differentiate competitors patents from pharmaceutical or structural side.
Let’s see background art!
WO2004/026864A1 discloses that acarbostyril derivative represented by the general formula.

It seems too similar I think. But they differentiate from biological activity.
However, there is no description in WO2004/026864A150 that carbostyril derivatives described in the document have D receptor partial agonist activity,5-HT2 receptor antagonist activity, a receptor antagonist activity and serotonin uptake inhibitory activity together and have a wide treatment spectrum.
Hmm. OK CNS area is very complex. It will be difficulty point for drug discovery but also will be chance.

Next patent WO 2005/019215A1 disclose the following formula.

The claimed structure is also similar. But the patent does not disclose the structure of rexuti.
However, WO 2005/019215 A1 does not specifically disclose the compounds of the present invention

There are lots of patents about Abilify and Rexulti. In this industry patent strategy is very important because finding new drug is needed long time and efforts.

This post shows only very easy part these drugs but I feel very difficult and interesting point of CNS area drug discovery.

An article about strategy for extending half life in vivo

In compound optimization stage, “reduce lipophilicity” is mantra for chemists. High lipophilicity compound tend to be metabolically unstable, promiscuous and binding many off targets. To reduce lipophilicity is important strategy for drug discovery process but it is not always suitable strategy.
Researchers from Genentech report their useful experience in JMC lett.
You can find the article in ASAP, url is below.

They analyzed in house in vivo PK data and lipophilicity and summarized that “Decreasing lipophilicity without addressing a metabolic soft-spot will often lead to both lower clearance and volume of distribution without extending half-life”.

You know, reducing lipohilicity is decreasing permeability it is not good for PK. And also Fig2 shows clear cut of their opinion.
In rat PK-IV, it found weak correlation between volume of distribution of unbound fraction (VDss-u) and LogD, clearance of unbound fraction(CLu) and LogD. It means that VDss-u and CLu highly correlates as same as LogD.
And in one component model, half-time is defined as following equation.
T1/2 = VDss,u/CL,u * ln2
From the equation and relation ship between VDss and CL, simple reduction of lipophilicity decreases not only CL,u but also VDss,u and no effect for T1/2!
In the article, the authors analyzed in-house data with MMPA and showed some transformations for improve half-life.
I think it worth to read the article.

MMPA is performed with Knime vernalis node. This tool kit is open source, it can use everybody without fee.
MedChem x Chemoinformatics = exciting! 😉

RDKit 2018.03.01 release! #rdkit

Dear RDKitter,
It’s good news that new version of rdkit is released!
You can find details in original repository.
There are many improvement and bug fixes in the release. I appreciate developers work!
Recent version of RDKit has lots of 3D descriptors. PMI/NPR.
And new version of rdkit has new function “ComputePrincipalAxesAndMoments” that computes principal axes and moments of inertia for a conformer.
I tried to use the function. 😉
At first I installed new version of rdkit via conda command.

iwatobipen$ conda install -c rdkit rdkit=

Then wrote code.

from pprint import pprint
from rdkit import Chem
from rdkit import rdBase
from rdkit.Chem import Draw
from rdkit.Chem.Draw import IPythonConsole
from rdkit.Chem import AllChem
# 2018.03.1
mol = Chem.AddHs(mol)
#generate 3d conf
AllChem.EmbedMolecule(mol, useExpTorsionAnglePrefs=True, useBasicKnowledge=True)
#calc PMI and NPR with default function
npr1 = AllChem.CalcNPR1(mol)
npr2 = AllChem.CalcNPR2(mol)
pprint([pmi1, pmi2, pmi3,"##",npr1, npr2])

# Next use new function
from rdkit.Chem import rdMolTransforms as rdmt
(array([[ 0.98500524,  0.17113466,  0.02185434],
        [-0.1185898 ,  0.57961538,  0.8062149 ],
        [-0.1253042 ,  0.7967176 , -0.59121901]]),
 array([ 30.83932592, 203.65737152, 218.01591889]))

There are differences in both function. Why ??? I checked source code but I can not understand the reason.
Most difference is scale, but not equal.

print([484.9333356244745/30.83932592, 2954.3752956989097/203.65737152, 3158.6098121028335/218.01591889])
[15.724511517613434, 14.506596415582127, 14.487977887965654]

RDKit 3D conformer generator shows good performance as same as commercial packages. It indicates 3D descriptors of RDKit is useful in Computer Aided Drug Discovery I think.

At last, I attached today’s snippet as PDF files.