Saturday, February 17, 2018

get_conformations.py: a simple script to generate rotamers



Here's a simple script for generating rotamers. It assumes the input geometry is reasonable and perturbs the dihedral angles of $n$ rotateable bonds by $\pm 120^\circ$. It makes all $3^n$ combinations of dihedral angles but if that is larger than a user-defined cutoff it will pick a random subset. Rotateable bonds include alcohol, phenols, and primary amines, but also amide bonds.  It doesn't know about equivalent atoms, so it will happily rotate a tert-butyl or trifluoromethyl group.



This work is licensed under a Creative Commons Attribution 4.0

Wednesday, February 14, 2018

Predicting pKa values using PM3 - conformer search part 3


This is a follow up to this post, but now we (that is Mads) use up to 1000 structures. To summarise: we use RDKit to generate $n$ starting conformations of neutral ("0") and protonated ("+") acebutolol and minimise them in aqueous solution using PM3/COSMO (MOPAC) and PM3/SMD /GAMESS) for a maximum of 200 steps.

The plot shows the lowest energy structure relative to the lowest energy found among all values of $n$. For example, the lowest PM3/COSMO value for the neutral form is found when generating 400 starting geometries and using 1000 starting structure, the lowest energy found is 1.1 kcal/mol higher.


I was a bit worried about the numerical stability of the COSMO and SMD methods, i.e. that the $n$ = 400 structure was generated in the $n$ = 1000 run, but had a higher energy for some reason. The figure above shows the lowest energy structure found ($n$ = 400) in purple and the structure most closely resembling it in the $n$ = 1000 search in green. So the $n$ = 400 structure was not generated in the $n$ = 1000 run.

Acebutolol has 12 rotateable bonds and roughly $3^{12}$ = 500,000 possible rotamers and RDKit samples these randomly. So, on hindsight, it is not surprising that $n$ = 400 and $n$ = 1000 randomly chosen samples do not both contain the lowest energy structure.

Incredibly (at least to me), the green structure is 1.7 kcal/mol higher in energy than the green. But, further optimisation of the green structure does not change energy, nor does changing the optimiser to EF instead of the default. I even rotated the molecule and restarted to the optimisation to test the robustness of the COSMO grid. But, no, this energy difference due to what I think is a minor strutural difference appears to be real. This means that the conformational PES is quite rugged, i.e. small structural changes can result in relatively big energy changes.

As it stands, pKa-predictions using PM3/COMSO or SMD (where I use $n$ > 100) will have a ca 1 pKa unit random error due to the conformational search and increasing $n$ is not really going to decrease that very much.

I'm not sure what to do about that.  We might try combining several low-$n$ conformational searches, with different random seeds. Alternatively, we may have to implement some sort of directed search, e.g. a genetic algorithm but that is going to be quite expensive for an SQM based method.

Alternatively, we have to pick the structures we use based on an MM screen where we can do a more thorough search but then we really need a MM/continuum solvation method interface.  If you have other ideas I'd be happy to hear about it.

Let me end with a challenge. Can you make a robust method that can find a PM3/COSMO energy equal to or lower than -183.01 kcal/mol for neutral acebutolol? And that is converged with respect to starting geometry and number of conformers tested? The MOPAC keywords are

pm3 eps=78.4 charge=0 cycles=200



This work is licensed under a Creative Commons Attribution 4.0

Saturday, February 10, 2018

take_elementary_step.py: exploring chemical space one elementary step at a time

I have written a program called take_elementary_step.py. It is basically an implementation of the idea described in this paper by Zimmerman, but using the atom connectivity matrix approach described in this paper by Woo Youn Kim.

Zimmerman defines an elementary reaction step as a chemical rearrangement "with no more than two connections breaking and two connections forming simultaneously, while maintaining the upper and lower limits for coordination number of each atom." Two structures that are related in this way are very likely to be connected by a single transition state.

The code generates all such states for a given molecule and then selects the "best ones" based on a crude energy function based on bond dissociation energies. The idea is then to optimize the molecules using a QM method to refine the selection and then locate the TS connecting the selected structures to the input structures.  The atom ordering should be preserved (haven't checked yet) so they are suitable for interpolation-based methods such as NEB or GSM.

The default is to lists all structures with energies no higher than 200 kJ/mol compared to the input structure and to use homolytic bond cleavage, i.e. a C-H bonds is broken into a C and H radical, rather than, say, C- and H+, but this can be controlled by the "heterolytic" keyword.

Using the heterolytic option will result in incorrectly charged fragments in some cases, but these should be weeded out by the energy criterion. For example, if you input acetylene the code will generate HC3- + HC3- instead of HC3- + HC3+, but I didn't feel like writing complicated code to fix this since these possibilities will no be presented to the user because they are too high in energy.

The figure at the bottom shows the results using 1,3-butadiene + ethene as input. For some reason, RDKit has trouble displaying H2 molecules so they have been removed and acetylene looks very weird (e.g. for comp64).  There are 88 structures in all, but that number could be reduced significantly be removing molecules with unsaturated atoms and/or three- and four-membered rings.

In his paper, Zimmerman shows 5 selected structures obtained using his implementation:

Taken from P.M. Zimmerman, J. Comp. Chem. 2013, 34, 1385. Copyright John Wiley & Sons. 

The first three also appear below as comp8, comp21, and comp54, while the last two are seemingly missing. However, they actually don't correspond to elementary steps since more than 2 bonds are broken or formed, but result from the subsequent QM optimization of comp7 and comp52 where additional bonds are formed between unsaturated C atoms.





This work is licensed under a Creative Commons Attribution 4.0

Saturday, February 3, 2018

Simple transformation rules lead to complex and beautiful molecules

I'm messing around with some code for a new project. The code starts with the first molecule shown below (NCCN) and repeatedly applies two transformation: it inserts a C atom between 2 C atoms (CC>>CCC) and cyclizes 3 C atoms (CCC>>C1CC1). The image below shows the result for 7 cycles of this, i.e. cycle 1 creates NCCCN, cycle 2 creates  NC1CC1N and NCCCCN, etc.

After 7 cycles these two simples transformations lead to 121 molecules, some of which are quite beautiful in my opinion. I wonder how many of these have been made.




This work is licensed under a Creative Commons Attribution 4.0

Friday, January 26, 2018

xyz2mol: converting an xyz file to an RDKit mol object

I have written a program called xyzmol that converts an xyz file to an RDKit mol object, based on this paper.  For ions the molecular charge has to be specified in the xyz file.

In principle this could be accomplished by using OpenBabel to convert an xyz file to and sdf file and reading the sdf file with RDKit. However, in my experience OpenBabel occasionally mis-assigns bond orders and I believe this code does this less often.

The code works by constructing an atom connectivity (AC) matrix from the xyz file, converts the AC matrix to a bond order (BO) matrix, computes the formal atomic charges, and then constructs a molecule object using all this information, including the 3D coordinates.

The code that constructs the AC matrix from the xyz file (xyz2AC) uses scaled covalent radii to find bonds and the current scale factor is 1.25, but this may need adjusting.

The code currently works only for organic molecules, i.e. molecules containing the following elements: H, B, C-F, Si-Cl, Br, and I.

The current version assumes a close shell molecule, i.e. it does not work with radicals yet.

I hope you find it useful.


This work is licensed under a Creative Commons Attribution 4.0

Tuesday, January 23, 2018

Open access chemistry publishing options in 2018

I just noticed that my go-to journal increased its APC again.* Now there's a flat fee of $1095 so I am re-evaluating my options for impact neutral OA publishing. I don't think PeerJ is greedy, so I think the most likely explanation is be that their old model was not sustainable. I now feel I have been a bit to hard on some other OA publishers (e.g. here and here, but not here).

While price and impact-neutrality is the main consideration, open peer review is a nice bonus that I became accustomed to from PeerJ. In my experience it makes for much better reviews and keeps the tone civil.

Impact neutral journals
$750 ACS Omega (+ ACS membership $166/year). Closed peer review.

$1000 F1000Research. Open peer review. Bio-related

$1095 PeerJ. Open peer review. Bio-related. PeerJ also has a membership model, which may be cheaper than the APC.

(The RSC manages "the journal’s chemistry section by commissioning articles and overseeing the peer-review process")

$1350 Cogent Chemistry. Has a "pay what you can" policy. Closed peer review.

$1495 PLoS ONE. Closed peer review.

$1760 Scientific Reports. Closed peer review


Free or reasonably priced journals that judge perceived impact
$0 Chemical Science Closed peer review

$0 Beilstein Journal of Organic Chemistry. Closed peer review.

$0 Beilstein Journal of Nanotechnology. Closed peer review.

$0 ACS Central Science. Closed peer review.

$100 Living Journal of Computational Molecular Science. Closed peer review

£500 RSC Advances. Closed peer review. (Normally £750)

Let me know if I have missed anything.




This work is licensed under a Creative Commons Attribution 4.0

Wednesday, January 17, 2018

Drug design: My latest paper explained without the jargon

Our latest paper has appeared in the latest issue of Chemical Science. It's ultimately related to making better drugs so first some background.

Background
Making complex drug candidates for testing is usually done in several steps where new chemical groups are added at each step. There are usually several reactive atoms and the challenge is to predict the most reactive one. This is currently done mostly by chemical intuition and related literature examples – an approach that often fails, which contributes significantly to the cost of making new drugs. So, there is a need for a fast, yet powerful and easy-to-use tool to predict the most reactive atom in a molecule. 

The New Study
For this study we collaborated with the pharmaceutical company Lundbeck A/S to develop a user-friendly tool to predict the most reactive atoms for one of the most often used chemical reaction within drug design.  We compared our predictions against published results for more than 500 different kinds of molecules and found that we made correct predictions in 96% of the cases.
We have made the software is available free to anyone and also made an easy-to-use web interface at regiosqm.org.  We are now working on extending the method to other types of reactions.




This work is licensed under a Creative Commons Attribution 4.0

Saturday, January 13, 2018

Number of possible fragments for the connectivity-based hierarchy scheme



Faithful readers of this blog (hi, mom!) will know that we have been working with the connectivity-based hierarchy (CBH) approach for a while (paper almost done). The method works by breaking molecules up into fragments and truncating with hydrogens. In the CBH-1 scheme you fragment into bonds (so propane would be fragmented into 2 ethane molecules) and in the CBH-2 scheme you include all bonds to an atom with 2 or more bonds (butane would be fragmented into 2 propane molecules).

I started wondering how many different fragments we would need to cover most organic molecules wth the CBH-2 scheme so I wrote some code (shown below) to find out and the number turns out to be 15,670 neutral molecules using ["C","N","O","F","Si","P","S","Cl","Br","I"]

This number also includes CBH-1 fragments because you need them in the CBH-2 scheme. There are a few special cases missing such as isocyanide and there aren't any rings such as cyclopropane, since these are not made until you get higher up in the CBH hierarchy.  Also, there are some very weird molecules that you'll probably never see as a functional group in an organic molecule.

The code considers all possible combinations (so it runs for a long time) and then uses RDKit to figure out if it's a reasonable molecule.

As mentioned the code only generates neutral molecules, so the actual number of fragments needed will be higher.


This work is licensed under a Creative Commons Attribution 3.0 Unported License.

Monday, January 1, 2018

Planned papers for 2018

A year ago I thought I'd probably publish seven papers in 2017:

Accepted
1. Protein structure refinement using a quantum mechanics-based chemical shielding predictor
2. Prediction of pKa values for drug-like molecules using semiempirical quantum chemical methods

Probable
3. Intermolecular Interactions in the Condensed Phase: Evaluation of Semi-empirical Quantum Mechanical Methods
4. Fast Prediction of the Regioselectivity of Electrophilic Aromatic Substitution Reactions of Heteroaromatic Systems Using Semi-Empirical Quantum Chemical Methods
5. Benchmarking cost vs. accuracy for computation of NMR shielding constants by quantum mechanical methods
6. Improved prediction of chemical shifts using machine learning
7. PM6 for all elements in GAMESS, including PCM interface

As you can see from the links the end result will be three papers, because paper 4, while accepted in 2017, will be officially published in 2018. In addition I also published this short preprint and a proposal.

Here's the plan for 2018

Accepted

Probable
2. Random Versus Systematic Errors in Reaction Enthalpies Computed using Semi-empirical and Minimal Basis Set Methods
3. Improving Solvation Energy Predictions using the SMD Solvation Method and Semi-empirical Electronic Structure Methods

Maybe
4. Towards a barrier height benchmark set for biologically relevant systems - part 2
5. pKaSQM: Automated Prediction of pKa Values for Druglike Molecules Using Semiempirical Quantum Chemical Methods
6. Prediction of CH pKa values

Paper 2 is essentially done and I've blogged about it here and here. I thought Paper 3 was also essentially done, but we discovered that the PM6/SMD geometry optimization has some problems with X-H bond breaking so we have to go back and look at that.  I am still quite confident we will get this out in 2018.

Paper 4: much of the work is done but we haven't started in the manuscript. We have collected 11 new systems to include in the database and we plan to improve the accuracy of the benchmark values using the approach in paper 2. 

Paper 5: As I wrote in July: "This paper is 2/3 written and presents a completely automated PM3-based pKa prediction protocol. The method works quite well, but most outliers turn out to be due to high energy conformations. The main remaining issue is to find a conformer-search protocol that consistently gives low-energy conformations. Depending on how much time I have to devote to paper 4 and the proposal mentioned below, I am still hopefull I can get this published this year." You can read more about it here, here, and here.

This was put on the back burner to focus on other things, but we have started to look at the conformation issue again with my new PhD student Mads. It also looks like the accuracy can be improved by using the new PM3/SMD radii from paper 3. My main issue with QM-based pKa prediction is that I am not sure we can ever beat the accuracy of the empirical predictors.

Paper 6: I think it might be more fruitful to focus on CH pKa values since they are of interest to synthetic chemists and there is currently no other predictor that I know of. I have written some prototype code and I am in the process of creating a test set from Bordwell's data as a side project, but the fate of this project is really in the hands of the Danish Science Foundation. I'll know more in the Spring.

Work in progress
I have been working on some prototype codes (here, here, and here) aimed at high throughput screening of barrier heights and Mads will be building on this in 2018.


This work is licensed under a Creative Commons Attribution 3.0 Unported License.