Challenges
Datasets
Workspaces
Papers
Discussions
Leaderboard
Log inSign up
Challenges
Datasets
Workspaces
Papers
Discussions
Leaderboard
Blog
Job Board
Q3AS

© 2026 Aqora Quantum S.A.S.

TermsPrivacyLegal Notice

Journal of Chemical Theory and Computation

Fermi.jl: A Modern Design for Quantum Chemistry

Gustavo J. R. Aroeira, Matthew M. Davis, Justin M. Turney, Henry F. Schaefer

Published Jan 3, 2022• 21 citations
Publisher

Abstract

Approximating molecular wave functions involves heavy numerical effort; therefore, codes for such tasks are written completely or partially in efficient languages such as C, C++, and Fortran. While these tools are dominant throughout quantum chemistry packages, the efficient development of new methods is often hindered by the complexity associated with code development. In order to ameliorate this scenario, some software packages take a dual approach where a simpler, higher-level language, such as Python, substitutes the traditional ones wherever performance is not critical. Julia is a novel, dynamically typed, programming language that aims to solve this two-language problem. It gained attention because of its modern and intuitive design, while still being highly optimized to compete with “low-level” languages. Recently, some chemistry-related projects have emerged exploring the capabilities of Julia. Herein, we introduce the quantum chemistry package Fermi.jl, which contains the first implementations of post-Hartree–Fock methods written in Julia. Its design makes use of many Julia core features, including multiple dispatch, metaprogramming, and interactive usage. Fermi.jl is a modular package, where new methods and implementations can be easily added to the existing code. Furthermore, it is designed to maximize code reusability by relying on general functions with specialized methods for particular cases. The feasibility of the project is explored through evaluating the performance of popular ab initio methods. It is our hope that this project motivates the usage of Julia within the community and brings new contributions into Fermi.jl.

DOI
10.1021/acs.jctc.1c00719

Related papers

A New Kid on the Block: Application of Julia to Hartree–Fock Calculations

David Poole, Jorge Luis Galvez Vallejo, Mark S. Gordon

In the field of electronic structure theory, many optimizations, ranging from accelerator offloading to exploitation of modern programming constructs, have been used to improve the performance of quantum chemistry software. However, one area that has remained largely unexplored is the space of novel programming languages that can provide unique benefits to quantum chemistry software development. One such programming language is Julia, an interpreted language designed to achieve the performance of high-performance, statically compiled languages. To assess the viability of Julia, the restricted Hartree-Fock method was implemented in a new quantum chemistry software package, JuliaChem. JuliaChem is a novel quantum chemistry software designed to take advantage of Julia as much as possible while achieving runtimes comparable to that of more established quantum chemistry software packages. Performance benchmarks against the popular quantum chemistry software package GAMESS, using the S22 test set of molecules, indicate that JuliaChem displays performance that is competitive with that of GAMESS. This shows that Julia could be a potentially useful tool for the field of electronic structure theory.

Journal of Chemical Theory and Computation•Jul 7, 2020•18 citations

QuantumInformation.jl—A Julia package for numerical computation in quantum information theory

Piotr Gawron, Dariusz Kurzyk, Łukasz Pawela

Numerical investigations are an important research tool in quantum information theory. There already exists a wide range of computational tools for quantum information theory implemented in various programming languages. However, there is little effort in implementing this kind of tools in the Julia language. Julia is a modern programming language designed for numerical computation with excellent support for vector and matrix algebra, extended type system that allows for implementation of elegant application interfaces and support for parallel and distributed computing. QuantumInformation.jl is a new quantum information theory library implemented in Julia that provides functions for creating and analyzing quantum states, and for creating quantum operations in various representations. An additional feature of the library is a collection of functions for sampling random quantum states and operations such as unitary operations and generic quantum channels.

arXiv:1806.11464•PLoS ONE•Dec 26, 2018•20 citations

QI.jl---a Julia package for numerical computation in quantum information theory

Piotr Gawron, Dariusz Kurzyk, Łukasz Pawela

Numerical investigations are an important research tool in quantum information theory. There already exists a wide range of computational tools implemented in various programming languages. However there is little effort in implementing this kind of tools in the Julia language. Julia is a modern numerical computation library with excellent support for vector and matrix algebra, extended type system that allows for implementation of elegant application interfaces and support for parallel and distributed computing. QI.jl is a new quantum information theory library implemented in Julia that provides functions for creating and analyzing quantum states, and for creating quantum operations in various representations. An additional feature of the library is a collection of functions for sampling random quantum states and operations such as unitary operations and generic quantum channels.

•Jun 29, 2018•0 citations

An Examination into SQUANCH and its Conversion to Julia

Takashi Joubert, Douglas D. Hodson, Michael R. Grimaila

The Julia programming language is popular in the technical computing community due to a design that combines performance-oriented characteristics with expressive high-level code. While Python is popular among developers of existing quantum networking simulation software, leveraging Julia's features offers an alternative to current approaches that necessitate bridging Python with low-level languages like C/C++ for performance. This paper details the approach to constructing a Julia package based on the SQUANCH Python library in an attempt to evaluate the potential of Julia as a means of development.

Congress in Computer Science, Computer Engineering, and Applied Computing (CSCE)•Jul 24, 2023•2 citations

Quanestimation.jl: An open-source Julia framework for quantum parameter estimation

Huai-Ming Yu, Jing Liu

As the main theoretical support of quantum metrology, quantum parameter estimation must follow the steps of quantum metrology towards the applied science and industry. Hence, optimal scheme design will soon be a crucial and core task for quantum parameter estimation. To efficiently accomplish this task, software packages aimed at computer-aided design are in high demand. In response to this need, we hereby introduce QuanEstimation.jl, an open-source Julia framework for scheme evaluation and design in quantum parameter estimation. It can be used either as an independent package or as the computational core of the recently developed hybrid-language (Python-Julia) package QuanEstimation [Phys. Rev. Res. 4 (4) (2022) 043057]. Utilizing this framework, the scheme evaluation and design in quantum parameter estimation can be readily performed, especially when quantum noises exist.

arXiv:2405.12066•Fundamental Research•Mar 13, 2025•5 citations

QuantumDynamics.jl: A modular approach to simulations of dynamics of open quantum systems

Amartya Bose

A simulation of the non-adiabatic dynamics of a quantum system coupled to dissipative environments poses significant challenges. New sophisticated methods are regularly being developed with an eye toward moving to larger systems and more complicated descriptions of solvents. Many of these methods, however, are quite difficult to implement and debug. Furthermore, trying to make the individual algorithms work together through a modular application programming interface can be quite difficult as well. We present a new, open-source software framework, QuantumDynamics.jl, designed to address these challenges. It provides implementations of a variety of perturbative and non-perturbative methods for simulating the dynamics of these systems. Most prominently, QuantumDynamics.jl supports hierarchical equations of motion and methods based on path integrals. An effort has been made to ensure maximum compatibility of the interface between the various methods. Additionally, QuantumDynamics.jl, being built on a high-level programming language, brings a host of modern features to explorations of systems, such as the usage of Jupyter notebooks and high level plotting, the possibility of leveraging high-performance machine learning libraries for further development. Thus, while the built-in methods can be used as end-points in themselves, the package provides an integrated platform for experimentation, exploration, and method development.

arXiv:2303.11781•The Journal of Chemical Physics•May 23, 2023•15 citations
Approximating molecular wave functions involves heavy numerical effort; therefore, codes for such tasks are written completely or partially in efficient languages such as C, C++, and Fortran. While these tools are dominant throughout quantum chemistry packages, the efficient development of new methods is often hindered by the complexity associated with code development. In order to ameliorate this scenario, some software packages take a dual approach where a simpler, higher-level language, such as Python, substitutes the traditional ones wherever performance is not critical. Julia is a novel, dynamically typed, programming language that aims to solve this two-language problem. It gained attention because of its modern and intuitive design, while still being highly optimized to compete with “low-level” languages. Recently, some chemistry-related projects have emerged exploring the capabilities of Julia. Herein, we introduce the quantum chemistry package Fermi.jl, which contains the first implementations of post-Hartree–Fock methods written in Julia. Its design makes use of many Julia core features, including multiple dispatch, metaprogramming, and interactive usage. Fermi.jl is a modular package, where new methods and implementations can be easily added to the existing code. Furthermore, it is designed to maximize code reusability by relying on general functions with specialized methods for particular cases. The feasibility of the project is explored through evaluating the performance of popular ab initio methods. It is our hope that this project motivates the usage of Julia within the community and brings new contributions into Fermi.jl.
In the field of electronic structure theory, many optimizations, ranging from accelerator offloading to exploitation of modern programming constructs, have been used to improve the performance of quantum chemistry software. However, one area that has remained largely unexplored is the space of novel programming languages that can provide unique benefits to quantum chemistry software development. One such programming language is Julia, an interpreted language designed to achieve the performance of high-performance, statically compiled languages. To assess the viability of Julia, the restricted Hartree-Fock method was implemented in a new quantum chemistry software package, JuliaChem. JuliaChem is a novel quantum chemistry software designed to take advantage of Julia as much as possible while achieving runtimes comparable to that of more established quantum chemistry software packages. Performance benchmarks against the popular quantum chemistry software package GAMESS, using the S22 test set of molecules, indicate that JuliaChem displays performance that is competitive with that of GAMESS. This shows that Julia could be a potentially useful tool for the field of electronic structure theory.
Numerical investigations are an important research tool in quantum information theory. There already exists a wide range of computational tools for quantum information theory implemented in various programming languages. However, there is little effort in implementing this kind of tools in the Julia language. Julia is a modern programming language designed for numerical computation with excellent support for vector and matrix algebra, extended type system that allows for implementation of elegant application interfaces and support for parallel and distributed computing. QuantumInformation.jl is a new quantum information theory library implemented in Julia that provides functions for creating and analyzing quantum states, and for creating quantum operations in various representations. An additional feature of the library is a collection of functions for sampling random quantum states and operations such as unitary operations and generic quantum channels.
Numerical investigations are an important research tool in quantum information theory. There already exists a wide range of computational tools implemented in various programming languages. However there is little effort in implementing this kind of tools in the Julia language. Julia is a modern numerical computation library with excellent support for vector and matrix algebra, extended type system that allows for implementation of elegant application interfaces and support for parallel and distributed computing. QI.jl is a new quantum information theory library implemented in Julia that provides functions for creating and analyzing quantum states, and for creating quantum operations in various representations. An additional feature of the library is a collection of functions for sampling random quantum states and operations such as unitary operations and generic quantum channels.
The Julia programming language is popular in the technical computing community due to a design that combines performance-oriented characteristics with expressive high-level code. While Python is popular among developers of existing quantum networking simulation software, leveraging Julia's features offers an alternative to current approaches that necessitate bridging Python with low-level languages like C/C++ for performance. This paper details the approach to constructing a Julia package based on the SQUANCH Python library in an attempt to evaluate the potential of Julia as a means of development.
As the main theoretical support of quantum metrology, quantum parameter estimation must follow the steps of quantum metrology towards the applied science and industry. Hence, optimal scheme design will soon be a crucial and core task for quantum parameter estimation. To efficiently accomplish this task, software packages aimed at computer-aided design are in high demand. In response to this need, we hereby introduce QuanEstimation.jl, an open-source Julia framework for scheme evaluation and design in quantum parameter estimation. It can be used either as an independent package or as the computational core of the recently developed hybrid-language (Python-Julia) package QuanEstimation [Phys. Rev. Res. 4 (4) (2022) 043057]. Utilizing this framework, the scheme evaluation and design in quantum parameter estimation can be readily performed, especially when quantum noises exist.
A simulation of the non-adiabatic dynamics of a quantum system coupled to dissipative environments poses significant challenges. New sophisticated methods are regularly being developed with an eye toward moving to larger systems and more complicated descriptions of solvents. Many of these methods, however, are quite difficult to implement and debug. Furthermore, trying to make the individual algorithms work together through a modular application programming interface can be quite difficult as well. We present a new, open-source software framework, QuantumDynamics.jl, designed to address these challenges. It provides implementations of a variety of perturbative and non-perturbative methods for simulating the dynamics of these systems. Most prominently, QuantumDynamics.jl supports hierarchical equations of motion and methods based on path integrals. An effort has been made to ensure maximum compatibility of the interface between the various methods. Additionally, QuantumDynamics.jl, being built on a high-level programming language, brings a host of modern features to explorations of systems, such as the usage of Jupyter notebooks and high level plotting, the possibility of leveraging high-performance machine learning libraries for further development. Thus, while the built-in methods can be used as end-points in themselves, the package provides an integrated platform for experimentation, exploration, and method development.