Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
176 commits
Select commit Hold shift + click to select a range
3003178
Introduced time evolution classes and interfaces.
Jul 12, 2021
6d36cd0
Migrated trotterization as trotterization builder.
Jul 12, 2021
9f08963
Implemented enum for trotterization mode; fixed imports.
Jul 13, 2021
a6aee58
Implemented trotter_qrte.py with unit tests.
Jul 13, 2021
162730d
trotter_qrte.py repetitions added.
Jul 13, 2021
81aa4f5
Code refactoring.
Jul 13, 2021
7ad3bdc
Code refactoring.
Jul 13, 2021
d92d49f
Gradient object introduced in a signature.
Jul 14, 2021
ba9726c
Draft of trotter_qrte.py gradient with unit tests.
Jul 23, 2021
eb6935c
trotter_qrte.py improvements; unit tests extended.
Jul 26, 2021
6ae7d56
trotter_qrte.py improvements; unit tests extended.
Jul 28, 2021
1dc5742
Merge branch 'main' into quantum-time-evo
Sep 2, 2021
93fe39d
Trotter test fix.
Sep 3, 2021
4a16874
Fixed float and complex handling.
Sep 3, 2021
3868bcb
Merge branch 'main' into quantum-time-evo
Nov 1, 2021
5831cad
Merge branch 'main' into quantum-time-evo
Dec 7, 2021
405cdc4
Merge branch 'main' into quantum-time-evo
Dec 7, 2021
5e1536e
qrte with product formula
anedumla Dec 7, 2021
90bc1d0
Merge pull request #5 from anedumla/time_evolution
Dec 8, 2021
0312a4d
Removed irrelevant files.
Dec 8, 2021
e1a3b1b
Removed irrelevant files.
Dec 8, 2021
3f7bb8c
Extended docs.
Dec 8, 2021
3534d61
Removed outdated unit tests.
Dec 8, 2021
59a8f9a
Removed outdated files.
Dec 13, 2021
77d541e
Code refactoring, docs extended.
Dec 13, 2021
655eb76
Code refactoring.
Dec 14, 2021
850156f
Merge branch 'main' into quantum-time-evo
Dec 14, 2021
809d829
Updated unit tests.
Dec 14, 2021
7e71eae
Code refactoring, extended docs and typehints.
Dec 14, 2021
0cff5a8
Reno added.
Dec 15, 2021
5b099a2
Extended checks and unit tests.
Dec 15, 2021
301bb6f
Code refactoring.
Dec 15, 2021
b6e7689
Code refactoring.
Dec 15, 2021
4a6b8b0
fix problem with test
anedumla Dec 15, 2021
9b87db8
Merge pull request #8 from anedumla/time_evolution
Dec 16, 2021
2bd3f6d
Merge branch 'feature-trotter-qrte' of https://github.com/dlasecki/qi…
Dec 16, 2021
d690b44
Docs extended.
Dec 17, 2021
a2c64a4
Added support for PauliOp, code refactoring.
Dec 17, 2021
2701ef7
Implemented general Quantum Time Evolution Framework interfaces.
Feb 16, 2022
d67b0c9
Updated docs.
Feb 16, 2022
5e1065e
Reno added.
Feb 16, 2022
9c041ed
Improved reno.
Feb 16, 2022
5582d32
Code refactoring.
Feb 16, 2022
c0e4bdd
Update qiskit/algorithms/time_evolution/evolution_base.py
Feb 22, 2022
d9dbcba
Code refactoring.
Feb 22, 2022
05172e9
Introduced evolution problem classes.
Feb 22, 2022
2c655d2
Merge remote-tracking branch 'origin/time-evo-framework' into time-ev…
Feb 22, 2022
1ecf5b6
Code refactoring.
Feb 22, 2022
8669094
Apply suggestions from code review
Feb 22, 2022
f55d38f
Added unit tests.
Feb 23, 2022
27c69ae
Lint fixed.
Feb 23, 2022
e12dd43
Merge branch 'main' into time-evo-framework
Feb 23, 2022
df0cbf4
Code refactoring
Feb 28, 2022
43e0084
Code refactoring
Feb 28, 2022
32c8750
Merge remote-tracking branch 'origin/time-evo-framework' into time-ev…
Feb 28, 2022
ea83dd0
Code refactoring
Feb 28, 2022
207a2ca
Code refactoring
Feb 28, 2022
79c893e
Code refactoring
Mar 1, 2022
9a82a4a
Code refactoring
Mar 1, 2022
e40b0ca
Code review changes.
Mar 1, 2022
ed8f26a
Removed gradient code for now.
Mar 1, 2022
069cbcb
Code review refactoring.
Mar 1, 2022
21bbf71
Removed gradient code for now.
Mar 1, 2022
cba5911
Evolving observable removed. Evaluating observables added.
Mar 1, 2022
0a88dc4
Code refactoring.
Mar 3, 2022
94574b8
Improved naming.
Mar 3, 2022
6b93f03
Improved folder structure; filled evolvers init file.
Mar 3, 2022
5014c61
Added Evolvers to algorithms init file.
Mar 3, 2022
d1cd3e0
Fixed missing imports.
Mar 3, 2022
d605119
Code refactoring
Mar 3, 2022
c6a04e0
Fixed cyclic imports.
Mar 4, 2022
6708db1
Extracted ListOrDict.
Mar 4, 2022
22f886c
Code refactoring.
Mar 4, 2022
ede8ef1
Merge branch 'main' into time-evo-framework
Mar 4, 2022
eb9ef89
Code refactoring.
Mar 7, 2022
897ac19
Fixed release note.
Mar 7, 2022
e0e2919
Fixed inheritance order.
Mar 7, 2022
eed3748
Merge branch 'time-evo-framework' into feature-trotter-qrte-2
Mar 7, 2022
73d0079
Updated code to the latest time evolution interface.
Mar 7, 2022
33d7d4c
Code refactoring.
Mar 7, 2022
a7b711a
Code refactoring.
Mar 7, 2022
94dc0d0
Code refactoring.
Mar 7, 2022
b48d9fb
Fixed cyclic imports.
Mar 8, 2022
5925403
Fixed pylint.
Mar 8, 2022
2340448
Name fix.
Mar 8, 2022
da5286e
Merge branch 'time-evo-framework' into feature-trotter-qrte-2
Mar 8, 2022
c8701a5
Import fix.
Mar 8, 2022
a3da72d
Lint fix.
Mar 8, 2022
d5114fb
Lint fix.
Mar 8, 2022
5b5004a
Code refactoring.
Mar 8, 2022
c0b5d21
Extracted and refactored aux_ops_evaluator.py
Mar 8, 2022
e5ddb44
Code refactoring
Mar 8, 2022
978c4f3
Implemented unit test.
Mar 9, 2022
1beb615
Extended unit test.
Mar 9, 2022
4c763ea
Date fixed.
Mar 9, 2022
da4cea8
Reno added.
Mar 9, 2022
6d0fa65
Switched to bound ansatz.
Mar 10, 2022
dec7733
Fix reno.
Mar 10, 2022
b274274
Merge branch 'main' into refactor-aux-operators
Mar 10, 2022
d207daa
Added docs.
Mar 10, 2022
11be9fe
Refactored unit test.
Mar 10, 2022
b8f36f8
Lint fixed.
Mar 10, 2022
59e1785
Code review edits.
Mar 10, 2022
853af9e
Added unit test cases for dicts.
Mar 10, 2022
fb82de6
Fixed reno reference.
Mar 10, 2022
8084683
Improved unit test.
Mar 11, 2022
62f30b4
Merge branch 'main' into refactor-aux-operators
Mar 11, 2022
0f65893
Merge branch 'refactor-aux-operators' into feature-trotter-qrte-2
Mar 11, 2022
25cdbec
Added quantum instance support.
Mar 11, 2022
76e0a19
Added support for aux_ops and unit test.
Mar 11, 2022
cb7201d
Fixed input object to eval_observables.
Mar 14, 2022
8b81e36
Fixed quantum_state types and conversion.
Mar 14, 2022
b1b3bcb
Fixed quantum_state types and conversion.
Mar 14, 2022
12c6f9d
Fixed types and docs.
Mar 14, 2022
337b1d5
Merge branch 'refactor-aux-operators' into feature-trotter-qrte-2
Mar 14, 2022
4e50808
Code refactoring.
Mar 15, 2022
afb3868
Merge branch 'main' into feature-trotter-qrte-2
Mar 18, 2022
9e1c09b
Lint fix.
Mar 22, 2022
dc835d9
Code refactoring.
Mar 22, 2022
5301b68
Reno update.
Mar 22, 2022
f76181e
Code refactoring.
Mar 22, 2022
2b0a7f1
Implemented some CR feedback.
Mar 23, 2022
a72f018
evolution_problem.py fix
Mar 23, 2022
e98f5b7
Removed trotter_ops_validator.py for now, extended unit tests, code r…
Mar 23, 2022
af1c1df
Updated names of the algorithm.
Mar 24, 2022
6200d9b
Added support for QuantumCircuit input. Code refactoring.
Mar 24, 2022
60284c2
Improved error handling in evolution_problem.py and unit tests added.
Mar 24, 2022
6f37d47
Code refactoring.
Mar 24, 2022
213a617
Cyclic import fix
Mar 24, 2022
dfe2df4
Refactored evolution_problem.py
Mar 25, 2022
5a79df1
Refactored test_trotter_qrte.py
Mar 25, 2022
3d45a95
Removed global tolerance.
Mar 25, 2022
373f265
CI fix.
Mar 28, 2022
5004748
Merge branch 'main' into feature-trotter-qrte-2
Mar 28, 2022
bcfb4e2
Code review fixes.
Mar 29, 2022
f29fb94
Code refactoring.
Mar 29, 2022
2c37cc1
Prepared qasm unit test.
Mar 29, 2022
1b185fd
Merge branch 'main' into feature-trotter-qrte-2
Mar 30, 2022
dd987ce
Removing state eval.
Mar 30, 2022
3726b8b
Refactored and updated tests.
Mar 30, 2022
f8a149a
Added qasm test for aux ops.
Mar 31, 2022
6e220a0
Added param binding test.
Mar 31, 2022
b1ce8e6
Added missing setters.
Mar 31, 2022
0927d2a
Updated unit tests.
Mar 31, 2022
519149d
Improved folder structure.
Apr 4, 2022
8b72492
Merge branch 'main' into feature-trotter-qrte-2
Apr 7, 2022
4211c30
Updated interfaces.
Apr 7, 2022
3242933
Fix lint.
Apr 7, 2022
3831c95
Removed legacy (soon) BaseBackend.
Apr 8, 2022
540f768
Merge branch 'main' into feature-trotter-qrte
Apr 8, 2022
ff03a16
Updated copyright years.
Apr 8, 2022
d3c35e6
Added example to reno.
Apr 12, 2022
46d5c14
Merge branch 'main' into feature-trotter-qrte
Apr 12, 2022
50840f8
Fixed reno.
Apr 14, 2022
59c1cef
Merge remote-tracking branch 'origin/feature-trotter-qrte' into featu…
Apr 14, 2022
70a2ad5
Merge branch 'main' into feature-trotter-qrte
Apr 14, 2022
62c9788
Removed BaseOperator.
Apr 26, 2022
8f3f981
Code refactoring.
Apr 26, 2022
9e61bd9
Merge remote-tracking branch 'origin/feature-trotter-qrte' into featu…
Apr 26, 2022
5eba3e5
Imports fix.
Apr 26, 2022
cc2dfcb
Merge branch 'main' into feature-trotter-qrte
Apr 26, 2022
1f459bb
Delayed parameters checks.
Apr 26, 2022
1bfa910
Merge remote-tracking branch 'origin/feature-trotter-qrte' into featu…
Apr 26, 2022
68a436e
Update qiskit/algorithms/evolvers/evolution_problem.py
Apr 26, 2022
c5561cf
Code refactoring.
Apr 26, 2022
07d06de
Update qiskit/algorithms/evolvers/evolution_problem.py
Apr 26, 2022
40dde49
Update qiskit/algorithms/evolvers/trotterization/trotter_qrte.py
Apr 26, 2022
3d2f164
Update qiskit/algorithms/evolvers/trotterization/trotter_qrte.py
Apr 26, 2022
17bf7e9
Update qiskit/algorithms/evolvers/trotterization/trotter_qrte.py
Apr 26, 2022
2c3fc90
Update qiskit/algorithms/evolvers/trotterization/trotter_qrte.py
Apr 26, 2022
d976453
Update qiskit/algorithms/evolvers/trotterization/trotter_qrte.py
Apr 26, 2022
6e68f4d
Update qiskit/algorithms/evolvers/trotterization/trotter_qrte.py
Apr 26, 2022
a78dfa2
Update qiskit/algorithms/evolvers/trotterization/trotter_qrte.py
Apr 26, 2022
fc6e318
Merge branch 'main' into feature-trotter-qrte
Apr 26, 2022
ed40a5e
Expectation might be None
Cryoris Apr 27, 2022
3766e43
Merge branch 'main' into feature-trotter-qrte
Apr 27, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions qiskit/algorithms/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@

RealEvolver
ImaginaryEvolver
TrotterQRTE
EvolutionResult
EvolutionProblem

Expand Down Expand Up @@ -205,8 +206,8 @@

from .algorithm_result import AlgorithmResult
from .evolvers import EvolutionResult, EvolutionProblem
from .evolvers.real.real_evolver import RealEvolver
from .evolvers.imaginary.imaginary_evolver import ImaginaryEvolver
from .evolvers.real_evolver import RealEvolver
from .evolvers.imaginary_evolver import ImaginaryEvolver
from .variational_algorithm import VariationalAlgorithm, VariationalResult
from .amplitude_amplifiers import Grover, GroverResult, AmplificationProblem, AmplitudeAmplifier
from .amplitude_estimators import (
Expand Down Expand Up @@ -243,6 +244,7 @@
)
from .exceptions import AlgorithmError
from .aux_ops_evaluator import eval_observables
from .evolvers.trotterization import TrotterQRTE

__all__ = [
"AlgorithmResult",
Expand All @@ -266,6 +268,7 @@
"NumPyEigensolver",
"RealEvolver",
"ImaginaryEvolver",
"TrotterQRTE",
"EvolutionResult",
"EvolutionProblem",
"LinearSolverResult",
Expand Down
61 changes: 55 additions & 6 deletions qiskit/algorithms/evolvers/evolution_problem.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,8 @@
class EvolutionProblem:
"""Evolution problem class.

This class is the input to time evolution algorithms and contains
information on e.g. the total evolution time and under which Hamiltonian
the state is evolved.
This class is the input to time evolution algorithms and must contain information on the total
evolution time, a quantum state to be evolved and under which Hamiltonian the state is evolved.
"""

def __init__(
Expand All @@ -34,8 +33,9 @@ def __init__(
time: float,
initial_state: Union[StateFn, QuantumCircuit],
aux_operators: Optional[ListOrDict[OperatorBase]] = None,
truncation_threshold: float = 1e-12,
t_param: Optional[Parameter] = None,
hamiltonian_value_dict: Optional[Dict[Parameter, Union[complex]]] = None,
hamiltonian_value_dict: Optional[Dict[Parameter, complex]] = None,
):
"""
Args:
Expand All @@ -44,15 +44,64 @@ def __init__(
initial_state: Quantum state to be evolved.
aux_operators: Optional list of auxiliary operators to be evaluated with the
evolved ``initial_state`` and their expectation values returned.
truncation_threshold: Defines a threshold under which values can be assumed to be 0.
Used when ``aux_operators`` is provided.
t_param: Time parameter in case of a time-dependent Hamiltonian. This
free parameter must be within the ``hamiltonian``.
hamiltonian_value_dict: If the Hamiltonian contains free parameters, this
dictionary maps all these parameters to values.

Raises:
ValueError: If non-positive time of evolution is provided.
"""

self.t_param = t_param
self.hamiltonian_value_dict = hamiltonian_value_dict
self.hamiltonian = hamiltonian
self.time = time
self.initial_state = initial_state
self.aux_operators = aux_operators
self.t_param = t_param
self.hamiltonian_value_dict = hamiltonian_value_dict
self.truncation_threshold = truncation_threshold

@property
def time(self) -> float:
"""Returns time."""
return self._time

@time.setter
def time(self, time: float) -> None:
"""
Sets time and validates it.

Raises:
ValueError: If time is not positive.
"""
if time <= 0:
raise ValueError(f"Evolution time must be > 0 but was {time}.")
self._time = time

def validate_params(self) -> None:
"""
Checks if all parameters present in the Hamiltonian are also present in the dictionary
that maps them to values.

Raises:
ValueError: If Hamiltonian parameters cannot be bound with data provided.
Comment thread
dlasecki marked this conversation as resolved.
"""
if isinstance(self.hamiltonian, OperatorBase):
t_param_set = set()
if self.t_param is not None:
t_param_set.add(self.t_param)
hamiltonian_dict_param_set = set()
if self.hamiltonian_value_dict is not None:
hamiltonian_dict_param_set = hamiltonian_dict_param_set.union(
set(self.hamiltonian_value_dict.keys())
)
params_set = t_param_set.union(hamiltonian_dict_param_set)
hamiltonian_param_set = set(self.hamiltonian.parameters)

if hamiltonian_param_set != params_set:
Comment thread
dlasecki marked this conversation as resolved.
raise ValueError(
f"Provided parameters {params_set} do not match Hamiltonian parameters "
f"{hamiltonian_param_set}."
)
4 changes: 2 additions & 2 deletions qiskit/algorithms/evolvers/evolution_result.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

from qiskit import QuantumCircuit
from qiskit.algorithms.list_or_dict import ListOrDict
from qiskit.opflow import StateFn
from qiskit.opflow import StateFn, OperatorBase
from ..algorithm_result import AlgorithmResult


Expand All @@ -25,7 +25,7 @@ class EvolutionResult(AlgorithmResult):

def __init__(
self,
evolved_state: Union[StateFn, QuantumCircuit],
evolved_state: Union[StateFn, QuantumCircuit, OperatorBase],
Comment thread
dlasecki marked this conversation as resolved.
aux_ops_evaluated: Optional[ListOrDict[Tuple[complex, complex]]] = None,
):
"""
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@

from abc import ABC, abstractmethod

from ..evolution_problem import EvolutionProblem
from ..evolution_result import EvolutionResult
from .evolution_problem import EvolutionProblem
from .evolution_result import EvolutionResult


class ImaginaryEvolver(ABC):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@

from abc import ABC, abstractmethod

from ..evolution_problem import EvolutionProblem
from ..evolution_result import EvolutionResult
from .evolution_problem import EvolutionProblem
from .evolution_result import EvolutionResult


class RealEvolver(ABC):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,13 @@
# Any modifications or derivative works of this code must retain this
# copyright notice, and modified files need to carry a notice indicating
# that they have been altered from the originals.
"""This package contains Trotterization-based Quantum Real Time Evolution algorithm.
It is compliant with the new Quantum Time Evolution Framework and makes use of
:class:`qiskit.synthesis.evolution.ProductFormula` and
:class:`~qiskit.circuit.library.PauliEvolutionGate` implementations. """

from qiskit.algorithms.evolvers.trotterization.trotter_qrte import (
TrotterQRTE,
)

__all__ = ["TrotterQRTE"]
Loading