BasisOpt: a Python package for quantum chemistry basis set optimization


The basis set used in quantum chemical calculations for molecular applications is vital to the accuracy and efficiency of the calculation, but the development of novel basis sets is hindered by an opaque process and inaccessibility of the tools required. We present here BasisOpt, a tool for the automated optimization of basis sets with an easy-to-use framework. It features an open and accessible workflow for basis set optimization that can be easily adapted to almost any quantum chemistry program, a standardized approach to testing basis sets, and visualization of both the optimized basis sets and the optimization process. We provide proof-of-concept examples where: (i) a density fitting basis set is optimized for He, Ne and Ar; (ii) the exponents of the def2-SVP basis are re-optimized for a set of molecules, rather than atoms; (iii) a large, almost saturated basis of sp primitives is automatically reduced to (10s5p) while achieving the lowest energy for such a basis set composition.

Version notes

Sections on author contributions and (an absence of) conflicts of interest have been added. A missing acknowledgement has also been added.


Supplementary material

Supplementary material
Full code listings
Data for example A
Energetic errors (basis set incompleteness errors and density fitting errors) that support example A in the manuscript.
Data for example B
Molecular energy data that support example B in the manuscript.
Molecular basis set from example B
The optimised basis set from example B.
VTZ-JKFit basis
The cc-pVTZ-JKFit basis for He, Ne and Ar
VQZ-JKFit basis
The cc-pVQZ-JKFit basis for He, Ne and Ar
V5Z-JKFit basis
The cc-pV5Z-JKFit basis for He, Ne and Ar

Supplementary weblinks

BasisOpt code
The GitHub repository for the code in the manuscript