Skip to content

Latest commit

 

History

History
248 lines (204 loc) · 12.1 KB

Features.md

File metadata and controls

248 lines (204 loc) · 12.1 KB

pyLIQTR Features

Included below are the exhaustive list of features contained within pyLIQTR. This Table provides quick links to some of the new features.

  1. OpenQASM
  2. Heisenberg
  3. Fermi-Hubbard
  4. Dual Plane Wave
  5. Gaussian Orbitals
  6. Arbitrary Spin
  7. Ground State Estimation
  8. Quantum Signal Processing
  9. Quantum Singular Value Transformation
  10. Double Factorized Block Encoding
  11. Tutorials

I. Quantum Signal Processing

Phase Factor Generation

Phase-Factor Generation Algorithms:

  • Integrated phase factor framework
  • 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)

QSP/QSVT Sequences

  • QSP/QET/QSVT Circuits

    • 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)
  • Quantum dynamics via QET/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()

II. Eigenvalue Estimation

Qubitized phase estimation

  • 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)

III. Qubitized Components

Qubitized primitives

  • Qubitized Reflection / Projection Operator
  • Qubitized Rotation Operator
  • Qubitized Walk Operator

Select & Prepare Oracles

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
  • 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

Block Encodings

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

Helper Functions:

  • Encoding Handler
    • Description: Handler function for specalized block encodings (in terms of problem instances)
    • Source: getEncoding.py
    • Functions:
      • getEncoding()

IV. PEST: Generating Electronic Structure Hamiltonians

Plane-wave basis (PW) Dual-plane wave basis (DPW) Tools to manipulate atomic coordinates

V. Problem Instances

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)
  • 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)
  • 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)

VI. Tutorials

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

VII. Classical Simulation Methods (pyLIQTR.clam)

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

VIII. General Utilities / Operations (pyLIQTR.clam)

Multilinear algebra Pauli / Fermionic operators (classical methods) Periodic system preparation