Berquist Eric, Dumi Amanda, Upadhyay Shiv, Abarbanel Omri D, Cho Minsik, Gaur Sagar, Cano Gil Victor Hugo, Hutchison Geoffrey R, Lee Oliver S, Rosen Andrew S, Schamnad Sanjeed, Schneider Felipe S S, Steinmann Casper, Stolyarchuk Maxim, Vandezande Jonathon E, Zak Weronika, Langner Karol M
Sandia National Laboratories, Albuquerque, New Mexico 87185, USA.
Department of Chemistry, University of Washington, Seattle, Washington 98195, USA.
J Chem Phys. 2024 Jul 28;161(4). doi: 10.1063/5.0216778.
Interoperability in computational chemistry is elusive, impeded by the independent development of software packages and idiosyncratic nature of their output files. The cclib library was introduced in 2006 as an attempt to improve this situation by providing a consistent interface to the results of various quantum chemistry programs. The shared API across programs enabled by cclib has allowed users to focus on results as opposed to output and to combine data from multiple programs or develop generic downstream tools. Initial development, however, did not anticipate the rapid progress of computational capabilities, novel methods, and new programs; nor did it foresee the growing need for customizability. Here, we recount this history and present cclib 2, focused on extensibility and modularity. We also introduce recent design pivots-the formalization of cclib's intermediate data representation as a tree-based structure, a new combinator-based parser organization, and parsed chemical properties as extensible objects.
计算化学中的互操作性难以实现,这受到软件包独立开发及其输出文件独特性质的阻碍。cclib库于2006年推出,旨在通过为各种量子化学程序的结果提供一致的接口来改善这种情况。cclib实现的跨程序共享API使用户能够专注于结果而非输出,并能够合并来自多个程序的数据或开发通用的下游工具。然而,最初的开发并未预料到计算能力、新方法和新程序的快速发展;也没有预见到对可定制性日益增长的需求。在此,我们回顾这段历史并介绍专注于可扩展性和模块化的cclib 2。我们还介绍了最近的设计转变——将cclib的中间数据表示形式正式化为基于树的结构、一种新的基于组合器的解析器组织,以及将解析后的化学性质作为可扩展对象。