Determining Proton Affinities using psi4

This is the 3rd post in a series outlining a workflow using freely available computational chemistry resources with python interfaces to evalute properties of gas-phase ions. A cursory search illustrates that there are a variety of computational packages with a direct python interface but interestingly, not all of these packages are current. PySCF appears to be a solid choice, however, some of the documentation/examples do not provide a direct means to calculate thermochemistry. GAMESS is another option but the python wrapper for this system has not been updated in almost a year and appears only compatible with select python 2.7 installations. After testing all of these options, it became clear that psi4 provided a tractable approach to optimize the geometry of molecules followed by a detailed thermochemical and frequency evaluation. The ipynb notebook illustrates the mechanism to not only optimize the geometry of water, but also determine the proton affinity. This latter property remains essential for describing the ionization behavior of target molecules along with a host of other chemical properties. In many literature reports a more detailed treatment of the energy terms is often presented, however, as a first pass this workflow yields a result that is in good aggreement with the literature value for water.

Geometry Optimization in Python

This is the second post in a series aiming at generating a range of candidate structures for evaluation in the context of molecular modeling in the field of ion mobility spectrometry. In a previous post, the use of rdkit to generate structures was introduced. However, closer inspection of the code highlights a few funciton calls aimed at optimizing the conformer structures. Given that the tetraalkylammonium ions were the focus of that effort, the optimization step was quite rapid. This brought into question as to whether any geometry optimization was being performed. In the following jupyter notebook, ibuprofen generated from SMILES input is optimized using the same function call as found in the previous post. This degree of optimization does not reach the level needed for more advanced calculations but can be a decent start when trying to group the different conformers into structural families.

Required python modules include: rdkit

Optional modules: pymol and an instance of this program running as a server.