Included below are the exhaustive list of features contained within pyLIQTR. This Table provides quick links to some of the new features.
- OpenQASM
- Heisenberg
- Fermi-Hubbard
- Dual Plane Wave
- Gaussian Orbitals
- Arbitrary Spin
- Ground State Estimation
- Quantum Signal Processing
- Quantum Singular Value Transformation
- Double Factorized Block Encoding
- Tutorials
Phase-Factor Generation Algorithms:
- Integrated phase factor framework
- Description: Integrated framework for phase factor determination.
- Source: phase_factors
- Notebooks: qsvt_and_qsp.ipynb
- Optimizer based (R-convention)
- Description: Optimizer-based generation of phase angles for QSP/QET/QSVT.
- Source: angler.py
- Notebooks: AngleGeneration
- Function fitting / Analytical expansions (for optimizer)
- Description: Approximation of functions in a Chebyshev polynomial basis.
- Source: expander.py fitter.py
- Notebooks: AngleGeneration
-
- Description: Circuits implementing Quantum Signal Processing (QSP), Quantum Eigenvalue Transform (QET) and the Quantum Singular Value Transform (QSVT)--based algorithms.
- Source: qsvt.py
- Classes:
- Parent class for QSVT:
QSVT_Abstract()
- QET/QSVT with real polynomials:
QSVT_real_polynomial(QSVT_abstract)
- QET/QSVT with "sum" of real polynomials:
QSVT_real_polynomial_sum(qualtran.GateWithRegisters)
- Legacy Fourier-response sequence:
QSP_fourier_response(QSVT_abstract)
- Parent class for QSVT:
-
- Description: Functions to facilitate quantum dynamics simulations via QSP/QET/QSVT.
- Source: qsvt_dynamics.py
- Functions:
- Automated construction of QET/QSVT simulation circuits:
qsvt_dynamics()
- Convenient determination of phase angles:
simulation_phases()
- Automated construction of QET/QSVT simulation circuits:
- Qubitized Phase Estimation Circuits
- Description: Implementation of phase estimation / ground-state energy estimation via methods from Phys. Rev. X 8, 041015.
- Source: phase_estimation.py
- Classes:
- Phase-estimation circuit:
QubitizedPhaseEstimation(qualtran.GateWithRegisters)
- Phase-estimation circuit:
- Qubitized Reflection / Projection Operator
- Source: qubitized_gates.py
- Classes:
QubitizedReflection(qualtran.GateWithRegisters)
- Qubitized Rotation Operator
- Source: qubitized_gates.py
- Classes:
QubitizedRotation(qualtran.GateWithRegisters)
- Qubitized Walk Operator
- Source: qubitized_gates.py
- Classes:
QubitizedWalkOperator(qualtran.GateWithRegisters)
Oracles:
- Pauli-String LCU (QROM-based): Select
- Description:
- Source: select_oracle_pauli_lcu.py
- Classes:
- Pauli-string LCU select; QROM-implementation which can be (optionally) conditioned on a control qubit. The optional control is required for the new QSVT and block-encoding methods.
- Pauli-String LCU (QROM-based): Prepare
- Description:
- Source: prepare_oracle_pauli_lcu.py
- Classes:
- Pauli-string LCU prepare.
- Fermionic Encoding: Select
- Description: Select oracle for molecular electronic structure Hamiltonians expressed in a basis that diagonalizes the Coulomb potential.
- Source: select_LinearT
- Classes:
FermionicSelect_LinearT(qualtran.GateWithRegisters)
- Select from Linear T paper Section IV.A, Fig. 14
- Fermionic Encoding: Prepare
- Description: Prepare oracle for molecular electronic structure Hamiltonians expressed in a basis that diagonalizes the Coulomb potential.
- Source: prepare_LinearT
- Classes:
FermionicPrepare_LinearT(qualtran.GateWithRegisters)
- Prepare from Linear T paper Section IV.B, Fig. 16
Subprepare_LinearT(qualtran.GateWithRegisters)
- Subprepare from Linear T paper Section IV.B, Fig. 15
Abstract Encoding Classes:
- Abstract Block Encodings
- Description: Abstrct template for block encodings.
- Source: BlockEncoding.py
- Classes:
BlockEncoding(qualtran.GateWithRegisters)
- Abstract Select-Prepare Encodings
- Description: Abstract class for block encodings via Select and Prepare oracles
- Source: BlockEncoding.py
- Classes:
BlockEncoding_select_prepare(BlockEncoding)
Specialized Encodings:
- Block encoding: Fermi-Hubbard
- Description: Optimized block encodings for the single-orbital (band) Fermi-Hubbard model on a 2d, periodic square lattice (following Phys. Rev. X 8, 041015)
- Source: fermi_hubbard_square_encoding.py
- Classes:
fermi_hubbard_square_encoding(BlockEncoding_select_prepare)
- Block encoding: Fermionic_LinearT
- Description: Implements encoding from section IV of Linear T paper
- Source: LinearT.py
- Classes:
Fermionic_LinearT(BlockEncoding)
- Block encoding: Generic Linear Combination of Unitaries (LCU)
- Description: Generic block encoding for a linear combination of unitary operators, as expressed in terms of Pauli strings.
- Source: PauliStringLCU.py
- Classes:
PauliStringLCU(BlockEncoding_select_prepare)
- Block encoding: DoubleFactorized
- Description: Implements encoding for a double factorized hamiltonian from Appendix C of the tensor hypercontraction paper
- Source: DoubleFactorized.py
- Classes:
DoubleFactorized(BlockEncoding)
Helper Functions:
- Encoding Handler
- Description: Handler function for specalized block encodings (in terms of problem instances)
- Source: getEncoding.py
- Functions:
getEncoding()
Plane-wave basis (PW) Dual-plane wave basis (DPW) Tools to manipulate atomic coordinates
Problem Specification:
- ProblemInstance Class
- Description: Class used to specify problem instances, for use with block encodings
- Source: ProblemInstance.py
- Classes:
ProblemInstance()
Application Problems:
- Fermionic Model Hamiltonians
- Description: Model Hamiltonians for fermionic systems
- Source: fermionic_models.py
- Classes:
- Fermi-Hubbard Model:
FermiHubbard(LatticeInstance)
- Fermi-Hubbard Model:
- Generic Lattice Hamiltonians
- Description: Flexible problem instance for arbitrary models on lattices (currently restricted to spin models).
- Source: LatticeInstance.py
- Classes:
LatticeInstance(ProblemInstance)
- Spin Hamiltonians
- Description: Named spin models for lattice systems.
- Source: spin_models.py
- Classes:
- Heisenberg Model:
Heisenberg(LatticeInstance)
- Transverse-Field Ising Model:
Transverse_Field_Ising(Heisenberg)
- Heisenberg Model:
- Chemical Hamiltonians (Local-basis electronic structure)
- Description: Electronic structure for Hamiltonians defined with a local basis set (Slatter/Gaussian-Type Orbitals).
- Source: ChemicalHamiltonian.py
- Classes:
ChemicalHamiltonian(ProblemInstance)
- Material Hamiltonians (Nonlocal-basis electronic structure)
- Description: Electronic structure for Hamiltonians defined with a nonlocal basis set (Plane-wave/Dual plane-wave bases).
- Source: ElectronicStructure.py
- Classes:
ElectronicStructure(ProblemInstance)
Application Problems:
- Electronic Structure: Local basis (small-molecules in a STO/GTO basis)
- Description: Resource estimation for electronic structure problems that are defined in a local basis. Applies to most calculations with isolated (i.e., non-periodic) small-molecules
- Notebooks: LocalChemistry
- Electronic Structure: Nonlocal basis (materials in a periodic dual plane-wave basis)
- Description: Resource estimation for ground state energy estimation (GSEE) of periodic electronic structure systems with Hamiltonians expressed in the dual plan wave (DPW) basis. Main example used is a magnesium slab.
- Notebooks: PeriodicChemistry
- Fermi-Hubbard Model
- Description: Resource estimation for the Fermi-Hubbard model. Includes demonstrations with isolated block encodings, qubitized quantum dynamics, and qubitized phase estimation.
- Notebooks: FermiHubbard
- General Lattice Models
- Description: Block encodings and circuits for general spin models on arbitrary lattices. Demonstrated briefly in the cited notebooks.
- Notebooks: Algorithms_and_Infrastructure
- Heisenberg Model
- Description: Resource estimation for the Heisenberg model. Includes demonstrations with isolated block encodings, qubitized quantum dynamics, and qubitized phase estimation.
- Notebooks: Heisenberg
- Homogeneous Catalysis
- Description: Resource estimation for qubitized phase estimation using the double factorized block encoding for a homogeneous catalyst.
- Notebooks: Homogeneous Catalysis
General Infrastructure:
- Detailed Discussions (broader capabilities)
- Description: Notebooks that demonstrate pyLIQTRs general capabities for block encodings, problem instances, and qubitized circuits. Also demonstrates how to define general spin/fermionic Hamiltonians on arbitrary lattices in any dimensionality.
- Notebooks: Algorithms_and_Infrastructure
Integration of classical ODE’s Conversion of spin / fermionic Hamiltonians for classical numerics Simulation of quantum dynamics Differential equations
- Description: Linearization methods (Carleman) and definition of different nonlinear differential equations. Includes: (i) van der Pol oscillator, Lotka-Volterra system; (2) Viscous Burger’s equation; (3) Nonlinear Vlasov equation w/ scalar collision kernel
- Source: linearization_tools
- Notebooks: linearization_tools.ipynb
Multilinear algebra Pauli / Fermionic operators (classical methods) Periodic system preparation