Jonathan M. Waldrop, Wibe de Jong, Edward F. Valeev, Theresa L. Windus and Ryan M. Richard*,
{"title":"化学家:化学家为化学家编写的领域特定语言。","authors":"Jonathan M. Waldrop, Wibe de Jong, Edward F. Valeev, Theresa L. Windus and Ryan M. Richard*, ","doi":"10.1021/acs.jpca.5c02993","DOIUrl":null,"url":null,"abstract":"<p >Managing the complexity of quantum chemistry (QC) software is key to ensuring it remains accessible, maintainable, and reusable. Noticeably missing from the QC ecosystem are modules targeting bottleneck routines. Here we argue that this is likely due to the difficulty in defining interfaces for such modules. To that end, we introduce the open-source, publicly available <span>Chemist</span> library https://github.com/NWChemEx/Chemist. <span>Chemist</span> is a domain-specific language targeting the QC domain. <span>Chemist</span> has been developed focusing on performance and user-friendliness. Using <span>Chemist</span>, QC tasks are defined using familiar domain concepts such as molecules, wave functions, and operators. The domain objects are hierarchical to ensure a systematic encapsulation of information. Key features of <span>Chemist</span> include: extensibility, the ability to alias existing data, and the ability to succinctly define many common QC tasks. The usefulness of <span>Chemist</span> is demonstrated by discussing the interface of <span>NWChemEx</span>’s Fock build module and by showcasing a proof-of-concept self-consistent field algorithm containing uncertainty propagation.</p>","PeriodicalId":59,"journal":{"name":"The Journal of Physical Chemistry A","volume":"129 34","pages":"7964–7979"},"PeriodicalIF":2.8000,"publicationDate":"2025-08-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"https://pubs.acs.org/doi/pdf/10.1021/acs.jpca.5c02993","citationCount":"0","resultStr":"{\"title\":\"Chemist: A Domain-Specific Language by Chemists for Chemists\",\"authors\":\"Jonathan M. Waldrop, Wibe de Jong, Edward F. Valeev, Theresa L. Windus and Ryan M. Richard*, \",\"doi\":\"10.1021/acs.jpca.5c02993\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"<p >Managing the complexity of quantum chemistry (QC) software is key to ensuring it remains accessible, maintainable, and reusable. Noticeably missing from the QC ecosystem are modules targeting bottleneck routines. Here we argue that this is likely due to the difficulty in defining interfaces for such modules. To that end, we introduce the open-source, publicly available <span>Chemist</span> library https://github.com/NWChemEx/Chemist. <span>Chemist</span> is a domain-specific language targeting the QC domain. <span>Chemist</span> has been developed focusing on performance and user-friendliness. Using <span>Chemist</span>, QC tasks are defined using familiar domain concepts such as molecules, wave functions, and operators. The domain objects are hierarchical to ensure a systematic encapsulation of information. Key features of <span>Chemist</span> include: extensibility, the ability to alias existing data, and the ability to succinctly define many common QC tasks. The usefulness of <span>Chemist</span> is demonstrated by discussing the interface of <span>NWChemEx</span>’s Fock build module and by showcasing a proof-of-concept self-consistent field algorithm containing uncertainty propagation.</p>\",\"PeriodicalId\":59,\"journal\":{\"name\":\"The Journal of Physical Chemistry A\",\"volume\":\"129 34\",\"pages\":\"7964–7979\"},\"PeriodicalIF\":2.8000,\"publicationDate\":\"2025-08-15\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"https://pubs.acs.org/doi/pdf/10.1021/acs.jpca.5c02993\",\"citationCount\":\"0\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"The Journal of Physical Chemistry A\",\"FirstCategoryId\":\"1\",\"ListUrlMain\":\"https://pubs.acs.org/doi/10.1021/acs.jpca.5c02993\",\"RegionNum\":2,\"RegionCategory\":\"化学\",\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"Q3\",\"JCRName\":\"CHEMISTRY, PHYSICAL\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"The Journal of Physical Chemistry A","FirstCategoryId":"1","ListUrlMain":"https://pubs.acs.org/doi/10.1021/acs.jpca.5c02993","RegionNum":2,"RegionCategory":"化学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"Q3","JCRName":"CHEMISTRY, PHYSICAL","Score":null,"Total":0}
Chemist: A Domain-Specific Language by Chemists for Chemists
Managing the complexity of quantum chemistry (QC) software is key to ensuring it remains accessible, maintainable, and reusable. Noticeably missing from the QC ecosystem are modules targeting bottleneck routines. Here we argue that this is likely due to the difficulty in defining interfaces for such modules. To that end, we introduce the open-source, publicly available Chemist library https://github.com/NWChemEx/Chemist. Chemist is a domain-specific language targeting the QC domain. Chemist has been developed focusing on performance and user-friendliness. Using Chemist, QC tasks are defined using familiar domain concepts such as molecules, wave functions, and operators. The domain objects are hierarchical to ensure a systematic encapsulation of information. Key features of Chemist include: extensibility, the ability to alias existing data, and the ability to succinctly define many common QC tasks. The usefulness of Chemist is demonstrated by discussing the interface of NWChemEx’s Fock build module and by showcasing a proof-of-concept self-consistent field algorithm containing uncertainty propagation.
期刊介绍:
The Journal of Physical Chemistry A is devoted to reporting new and original experimental and theoretical basic research of interest to physical chemists, biophysical chemists, and chemical physicists.