CRYSTALpytools: A Python infrastructure for the CRYSTAL code

CRYSTALpytools: A Python infrastructure for the CRYSTAL code
复制标题

DOI:
10.1016/j.cpc.2023.108853
复制
发表时间:
2023-08-21
影响因子:
6.3
通讯作者:
Harrison,Nicholas M.
Harrison,Nicholas M.
中科院分区:
物理与天体物理2区
文献类型:
--
作者:
Camino,Bruno;Zhou,Huanyu;Harrison,Nicholas M.

文献摘要

相似文献

CRYSTALpytool是GitHub上提供的一个开源Python项目,它实现了一个用户友好的界面,用于量子力学凝聚态模拟的Crystalcode。CRYSTALpytool提供的功能包括:i)为一系列计算写入和读取Crystalinput和output文件(单点、电子结构、几何优化、谐振和准谐振晶格动力学、弹性张量评估、电子密度的拓扑分析,电子传输等); ii)提取相关信息; iii)创建工作流; iv)后处理计算量;以及v)以各种风格绘制结果,以进行快速和精确的视觉分析。此外,CRYSTALpytool允许用户将Crystalobjects(项目的中心数据结构)分别与pymatgen和ASE库的Structure和Atoms对象进行交互。这些工具可用于创建、操作和可视化复杂的结构,并将其有效地写入Crystalinput文件。CRYSTALpytoolsCPC是一款专门为不太精通Python的用户开发的笔记本,通过用户友好的图形界面和预定义的工作流程来指导他们使用CRYSTALpytoolsCPC工具来完成不同的特定任务。程序摘要程序标题:CRYSTALpytoolsCPC程序文件库链接:https://doi.org/10.17632/p2bp3fsk86.1开发人员的存储库链接:https://github.com/crystal-code-tools/CRYSTALpytoolsLicensing条款:MIT编程语言:Python和CRYSTALpytoolsNotebookNature of problem:TheCrystalcode [1,2]是一款用于计算材料属性的强大工具。它在凝聚态计算领域中脱颖而出,因为它使用了局部基集,大量的并行化,有效地实现了非局部Fock交换,以及广泛使用了点和空间对称性。然而,它目前缺乏一个易于编程的接口来访问其输入/输出结构,需要能够在计算材料科学工作流程中使用晶体计算。从历史上看,Crystalin在此类工作流程中的使用是通过以各种语言实现的定制脚本来实现的,这阻碍了代码的重用和共享。解决方案方法:CRYSTALpytools项目将在模块化代码中实现Crystalcalculation的自动化,该代码可以由全球范围内的广泛用户社区共同开发。它通过将标准化的输入和输出文件转换为python对象并提供一套操作它们的功能来实现这一点。核心实现是基于一组数据结构表示theCrystal_objects.CRYSTALpytools,在其目前的实现,包含了大量的功能,输入/输出操作,振动和热力学分析,和可视化。其他评论,包括限制和不寻常的功能:点群和空间群对称的开发是theCrystalcode的优势之一,因此,所有的几何修改功能已经开发,以优化对称的使用。当一个结构从数据库中下载或被外部代码修改时,如pymatgen [3]或ASE [4],在将结构转换为optimisedCrystal_object之前,会执行对称性分析。所有这些对象都可以直接转换为Crystal使用的0、1、2或3维周期性的标准结构(即:.gui或.f34文件)。参考文献[1]Dovesi Roberto等人,量子力学凝聚态模拟与晶体,线计算。摩尔Sci. 8(4)(2018年7月1日)e1360。[2]Erba Alessandro等人,CRYSTAL 23:A Program for Computational Solid State Physics and Chemistry(晶体23:计算固体物理与化学程序)
CRYSTALpytoolsis an open source Python project available on GitHub that implements a user-friendly interface to theCrystalcode for quantum-mechanical condensed matter simulations.CRYSTALpytoolsprovides functionalities to: i) write and readCrystalinput and output files for a range of calculations (single-point, electronic structure, geometry optimization, harmonic and quasi-harmonic lattice dynamics, elastic tensor evaluation, topological analysis of the electron density, electron transport, and others); ii) extract relevant information; iii) create workflows; iv) post-process computed quantities, and v) plot results in a variety of styles for rapid and precise visual analysis. Furthermore,CRYSTALpytoolsallows the user to translateCrystalobjects (the central data structure of the project) to and from the Structure and Atoms objects of the pymatgen and ASE libraries, respectively. These tools can be used to create, manipulate and visualise complicated structures and write them efficiently toCrystalinput files. Jupyter Notebooks have also been developed for the less Python savvy users to guide them in the use ofCRYSTALpytoolsthrough a user-friendly graphical interface with predefined workflows to complete different specific tasks.Program summaryProgram Title:CRYSTALpytoolsCPC Library link to program files:https://doi.org/10.17632/p2bp3fsk86.1Developer's repository link:https://github.com/crystal-code-tools/CRYSTALpytoolsLicensing provisions:MITProgramming language:Python and Jupyter NotebookNature of problem:TheCrystalcode [1,2] is a powerful tool for the calculation of materials properties. It stands out in the condensed matter computational landscape because of the use of local basis sets, heavy parallelisation, efficient implementation of non-local Fock exchange, and extensive use of point and space symmetry. However, it currently lacks an easily programmable interface to access its input/output structure needed to be able to useCrystalcalculations within computational materials science workflows. Historically, the use ofCrystalin such workflows has been achieved through bespoke scripting implemented in a variety of languages which has hindered code reuse and sharing.Solution method:TheCRYSTALpytoolsproject will enable the automation ofCrystalcalculations in a modular code that can be co-developed by a wide community of users worldwide. It achieves this by transforming standardised input and output files into python objects and providing a suite of functionality to manipulate them. The core implementation is based on a set of data structures denoted theCrystal_objects.CRYSTALpytools, in its current implementation, contains a large variety of functions for input/output manipulation, vibrational and thermodynamic analysis, and visualisation.Additional comments including restrictions and unusual features:The exploitation of point group and space group symmetry is one of the strengths of theCrystalcode, therefore, all the geometry modification functions have been developed to optimise the use of symmetry. When a structure is downloaded from a database or is modified by external code, such as pymatgen [3] or ASE [4], a symmetry analysis is performed before transforming the structure to be an optimisedCrystal_object. All such objects can be directly transformed to standard structures periodic in 0, 1, 2 or 3 dimensions used byCrystal(ie: .gui or .f34 files).References[1]Dovesi Roberto, et al., Quantum-mechanical condensed matter simulations with CRYSTAL, WIREs Comput. Mol. Sci. 8(4) (1 July 2018) e1360.[2]Erba Alessandro, et al., CRYSTAL23: A Program for Computational Solid State Physics and Chemistry …