All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
Types of changes:
- Added: for new features.
- Changed: for changes in existing functionality.
- Deprecated: for soon-to-be removed features.
- Removed: for now removed features.
- Fixed: for any bug fixes.
- Security: in case of vulnerabilities.
- Remove declarative api (#758) (#759) (#760) (#762) (#763)
- Refactor Multiclass Extensions to set Estimator internally (#822)
- Refactor algorithms (#831)
- Moved to Terra: multi-controlled Toffoli, U1 and Pauli rotation gates (including tests) (#833)
0.6.5 - 2020-03-16
- Removed cvxopt from installation. (#858)
- Fixes issue #768. The AQGD optimizer if condition in func converged was ignored. That kept breaking the while loop for training. (#858)
0.6.4 - 2020-02-06
- Fix weighted_pauli_operator expectation value mode for Aer 0.4 release. (#808)
- Update python 3.6 Gaussian driver. (#808)
- Python 3.8 Gaussian drivers. (#808)
0.6.3 - 2020-01-29
- Add install checks for cvxopt, torch, pyscf. Add python 3.8 support. (#795)
- Python 3.5 support in qiskit-aqua is deprecated. Support will be removed on the upstream python community's end of life date for the version, which is 09/13/2020.
0.6.2 - 2019-12-17
VQE
,VQC
andQSVM
now use parameterized circuits when available to save time in transpilation. (#693)- Initial stage of ml, finance, and optimization refactor into separate application-specific directories.
(#700) Among other changes:
- qiskit/aqua/translators/data_providers/ moved to qiskit/finance/data_providers/
- qiskit/aqua/translators/ising/portfolio.py and portfolio_diversification.py moved to qiskit/finance/ising/
- qiskit/aqua/translators/ising/ (i.e. all but above 2) moved to qiskit/optimization/ising/
UCCSD
updated so the excitation pool can be managed by an adaptive algorithm like VQEAdapt. (#685)- Deprecate Declarative JSON API. (#720)
- Ability to create a
CustomCircuitOracle
object with a callback forevaluate_classically
, which aGrover
object will now check for, upon initialization, on its provided oracle. (#681) VariationalForm
andFeatureMap
have a new property calledsupport_parameterized_circuit
which indicates whether or not the circuit can be built with a TerraParameter
(orParameterVector
) object. Further, theevolution_instruction
method supportsParameter
for the time parameter. (#693)VQEAdapt
, an adaptive version of VQE for chemistry which dynamically selects the UCCSD excitations to include in the ansatz. (#685)- Optionally split a qobj by max gates per job to better avoid "Payload is too large" errors when running on quantum hardware. (#694)
- An option in
evolution_instruction
to control whether to add a barrier between every slice. (#708) - Added
VQE
snapshot mode for the Aer QasmSimulator when no noise model is specified andshots==1
. (#715) - Added the implementation for the iterative QAE algorithm (#749)
- Parameter ordering in the init of the
multivariate_distribution
class. (#741) - List concatenation bug in the
VQC
algorithm. (#733) - Bug where
UCCSD
might generate an empty operator and try to evolve it. (#680) - Decompose causes DAG failure using feature maps. (#719)
- Error when only using a subset of qubits in measurement error mitigation. (#748)
- The AQGD optimizer if condition in func converged was ignored. That kept breaking the wile loop for training.(#770)
- The
CircuitCache
class is removed, use parameterized circuits as an alternative. (#693)
0.6.1 - 2019-10-16
- Remove terra cap from stable branch. (#709)
0.6.0 - 2019-08-22
- Relative-Phase Toffoli gates
rccx
(with 2 controls) andrcccx
(with 3 controls). (#517) - Variational form
RYCRX
(#560) - A new
'basic-no-ancilla'
mode tomct
. (#473) - Multi-controlled rotation gates
mcrx
,mcry
, andmcrz
as a generalu3
gate is not supported by graycode implementation - Chemistry: ROHF open-shell support
- Supported for all drivers: Gaussian16, PyQuante, PySCF and PSI4
- HartreeFock initial state, UCCSD variational form and two qubit reduction for parity mapping now support different alpha and beta particle numbers for open shell support
- Chemistry: UHF open-shell support
- Supported for all drivers: Gaussian16, PyQuante, PySCF and PSI4
- QMolecule extended to include integrals, coefficients etc for separate beta
- Chemistry: QMolecule extended with integrals in atomic orbital basis to facilitate common access
to these for experimentation
- Supported for all drivers: Gaussian16, PyQuante, PySCF and PSI4
- Chemistry: Additional PyQuante and PySCF driver configuration
- Convergence tolerance and max convergence iteration controls.
- For PySCF initial guess choice
- Chemistry: Processing output added to debug log from PyQuante and PySCF computations (Gaussian16 and PSI4 outputs were already added to debug log)
- Chemistry: Merged qiskit-chemistry to this repo. The old chemistry changelog is at OLD_CHEMISTRY_CHANGELOG.md
- Add
MatrixOperator
,WeightedPauliOperator
andTPBGroupedPauliOperator
class. (#593) - Add
evolution_instruction
function to get registerless instruction of time evolution. (#593) - Add
op_converter
module to unified the place in charge of converting different types of operators. (#593) - Add
Z2Symmetries
class to encapsulate the Z2 symmetries info and has helper methods for tapering an Operator. (#593). - Amplitude Estimation: added maximum likelihood postprocessing and confidence interval computation.
- Maximum Likelihood Amplitude Estimation (MLAE): Implemented new algorithm for amplitude estimation based on maximum likelihood estimation, which reduces number of required qubits and circuit depth. (#642)
- Added (piecewise) linearly and polynomially controlled Pauli-rotation circuits. (#642)
- Add
q_equation_of_motion
to study excited state of a molecule, and add two algorithms to prepare the reference state. (#655)
- Improve
mct
's'basic'
mode by using relative-phase Toffoli gates to build intermediate results. - Adapt to Qiskit Terra's newly introduced
Qubit
class. (#536) - Prevent
QPE/IQPE
from modifying inputOperator
s. (#531) - The PyEDA dependency was removed; corresponding oracles' underlying logic operations are now handled by SymPy. (#586)
- Refactor the
Operator
class, each representation has its own classMatrixOperator
,WeightedPauliOperator
andTPBGroupedPauliOperator
. (#593) - The
power
inevolution_instruction
was applied on the theta on the CRZ gate directly, the new version repeats the circuits to implement power. (#593) - CircuitCache is OFF by default, and it can be set via environment variable now
QISKIT_AQUA_CIRCUIT_CACHE
. (#630)
- A bug where
TruthTableOracle
would build incorrect circuits for truth tables with only a single1
value. - A bug caused by
PyEDA
's indeterminism. - A bug with
QPE/IQPE
's translation and stretch computation. - Chemistry: Bravyi-Kitaev mapping fixed when num qubits was not a power of 2
- Setup
initial_layout
inQuantumInstance
via a list. (#630)
- General multi-controlled rotation gate
mcu3
is removed and replaced by multi-controlled rotation gatesmcrx
,mcry
, andmcrz
- The
Operator
class is deprecated, in favor of usingMatrixOperator
,WeightedPauliOperator
andTPBGroupedPauliOperator
. (#593)
0.5.5 - 2019-07-26
- A bug with
docplex.get_qubitops
's incorrect translation
0.5.4 - 2019-07-24
- Fix the bug about manipulating the right operand and rebuild diagonal matrix every time. (#622)
0.5.3 - 2019-07-16
- Since the syntax inverse() on a gate does not invert a gate now, the bug introduced wrong post rotation for Pauli Y.
0.5.2 - 2019-06-27
- The pyeda requirement was made optional instead of an install requirement
0.5.1 - 2019-05-24
- Make torch optional install
0.5.0 - 2019-05-02
- Implementation of the HHL algorithm supporting
LinearSystemInput
. - Pluggable component
Eigenvalues
with variantEigQPE
. - Pluggable component
Reciprocal
with variantsLookupRotation
andLongDivision
. - Multiple-Controlled U1 and U3 operations
mcu1
andmcu3
. - Pluggable component
QFT
derived from componentIQFT
. - Summarize the transpiled circuits at the DEBUG logging level.
QuantumInstance
acceptsbasis_gates
andcoupling_map
again.- Support to use
cx
gate for the entangement inRY
andRYRZ
variational form. (cz
is the default choice.) - Support to use arbitrary mixer Hamiltonian in
QAOA
. This allows to use QAOA in constrained optimization problems [arXiv:1709.03489]. - Added variational algorithm base class
VQAlgorithm
, implemented byVQE
andVQC
. - Added
ising/docplex.py
for automatically generating Ising Hamiltonian from optimization models of DOcplex. - Added
'basic-dirty-ancilla'
mode formct
. - Added
mcmt
for Multi-Controlled, Multi-Target gate. - Exposed capabilities to generate circuits from logical AND, OR, DNF (disjunctive normal forms), and CNF (conjunctive normal forms) formulae.
- Added the capability to generate circuits from ESOP (exclusive sum of products) formulae with optional optimization based on Quine-McCluskey and ExactCover.
- Added
LogicalExpressionOracle
for generating oracle circuits from arbitrary boolean logic expressions (including DIMACS support) with optional optimization capability. - Added
TruthTableOracle
for generating oracle circuits from truth-tables with optional optimization capability. - Added
CustomCircuitOracle
for generating oracle from user specified circuits. - Added implementation of the Deutsch-Jozsa algorithm.
- Added implementation of the Bernstein-Vazirani algorithm.
- Added implementation of the Simon's algorithm.
- Added implementation of the Shor's algorithm.
- Added optional capability for
Grover
's algorithm to take a custom initial state (as opposed to the default uniform superposition) - Added capability to create a
Custom
initial state using existing circuit. - Added the ADAM (and AMSGRAD) optimization algorithm
- Multivariate distributions added, so uncertainty models now have univariate and multivariate distribution components.
- Added option to include or skip the swaps operations for qft and iqft circuit constructions.
- Added classical linear system solver
ExactLSsolver
. - Added parameters
auto_hermitian
andauto_resize
toHHL
algorithm to support non-hermititan and non 2**n sized matrices by default. - Added another feature map,
RawFeatureVector
, that directly maps feature vectors to qubits' states for classification. SVM_Classical
can now load models trained byQSVM
.- Added
CompleteMeasFitter
for mitigating measurement error when jobs are run on a real device or noisy simulator. - Added
QGAN
(Quantum Generative Adversarial Network) algorithm, along with neural network components comprising a quantum generator and classical discriminator.
QuantumInstance
does not takememory
anymore.- Moved Command line and GUI interfaces to separate repo (qiskit_aqua_uis).
- Removed the
SAT
-specific oracle (now supported byLogicalExpressionOracle
).
- Changed the type of
entanger_map
used inFeatureMap
andVariationalForm
to list of list. - Fixed package setup to correctly identify namespace packages using
setuptools.find_namespace_packages
. - Changed
advanced
mode implementation ofmct
: using simpleh
gates instead ofch
, and fixing the old recursion step in_multicx
. - Components
random_distributions
renamed touncertainty_models
. - Reorganized the constructions of various common gates (
ch
,cry
,mcry
,mct
,mcu1
,mcu3
,mcmt
,logic_and
, andlogic_or
) and circuits (PhaseEstimationCircuit
,BooleanLogicCircuits
,FourierTransformCircuits
, andStateVectorCircuits
) under thecircuits
directory. - Renamed the algorithm
QSVMVariational
toVQC
, which stands for Variational Quantum Classifier. - Renamed the algorithm
QSVMKernel
toQSVM
. - Renamed the class
SVMInput
toClassificationInput
. - Renamed problem type
'svm_classification'
to'classification'
- Fixed
ising/docplex.py
to correctly multiply constant values in constraints
0.4.1 - 2019-01-09
- Optimizers now have most relevant options on constructor for ease of programming. Options may still be set via set_options.
- Provider is now explicitly named and the named backend is created from that named provider. Backend being selected from the first of the internally known set of providers is deprecated.
- Improve operation with Aer provider/backends.
- Registration to Aqua of externally provided pluggable algorithms and components altered to setuptools entry point support for plugins. The prior registration mechanism has been removed.
- A flag
before_04
in theload_from_dict(file)
method is added to support to load operator in the old format. We encourage to save the operator in the new format from now on.
0.4.0 - 2018-12-19
- Compatibility with Terra 0.7
- Compatibility with Aer 0.1
- Programmatic APIs for algorithms and components -- each component can now be instantiated and initialized via a single (non-emptY) constructot call
QuantumInstance
API for algorithm/backend decoupling --QuantumInstance
encapsulates a backend and its settings- Updated documentation and Jupyter Notebooks illustrating the new programmatic APIs
- Transparent parallelization for gradient-based optimizers
- Multiple-Controlled-NOT (cnx) operation
- Pluggable algorithmic component
RandomDistribution
- Concrete implementations of
RandomDistribution
:BernoulliDistribution
,LogNormalDistribution
,MultivariateDistribution
,MultivariateNormalDistribution
,MultivariateUniformDistribution
,NormalDistribution
,UniformDistribution
, andUnivariateDistribution
- Pluggable algorithmic component:
- Concrete implementations of
UncertaintyProblem
:FixedIncomeExpectedValue
,EuropeanCallExpectedValue
, andEuropeanCallDelta
- Amplitude Estimation algorithm
- Qiskit Optimization: New Ising models for optimization problems exact cover, set packing, vertex cover, clique, and graph partition
Qiskit AI:
: - New feature maps extending the `FeatureMap` pluggable
interface: `PauliExpansion` and `PauliZExpansion`
- Training model serialization/deserialization mechanism
Qiskit Finance:
: - Amplitude estimation for Bernoulli random variable:
illustration of amplitude estimation on a single qubit
problem
- Loading of multiple univariate and multivariate random
distributions
- European call option: expected value and delta (using
univariate distributions)
- Fixed income asset pricing: expected value (using
multivariate distributions)
- The pauli string in
Operator
class is aligned with Terra 0.7. Now the order of a n-qubit pauli string isq_{n-1}...q{0}
Thus, the (de)serialier (save_to_dict
andload_from_dict
) in theOperator
class are also changed to adopt the changes ofPauli
class.
HartreeFock
component of pluggable type [`InitialState]{.title-ref} moved to Qiskit ChemistryUCCSD
component of pluggable typeVariationalForm
moved to Qiskit Chemistry
0.3.1 - 2018-11-29
- Different backends might have different signatures for describing the job completion.
0.3.0 - 2018-10-05
- Updated for 0.6 Terra
- Enhanced backend settings
Pluggable multiclass classifier extensions
: - AllPairs
- OneAgainstAll
- ErrorCorrectingCode
- Pluggable Feature Maps for QSVM algos
- Pluggable Variation Forms for QSVM.Variational
- SPSA calibration and control variables all configurable
- Step size configurable for optimizers with numerical approximation of the jacobian
Z2 Symmetry tapering
: - Operator
- HartreeFock InitialState
- UCCSD
- UCCSD performance improvements
- Remote device/simulator job auto-recovery
- Algorithm concatenation: VQE->(I)QPE
Operator improvements
: - Subtraction
- Negation
- Scaling
0.2.0 - 2018-07-27
- Ising model for TSP.
- add summarize circuits.
- Relax max circuits for simulation.
- Added qubit_tapering method.
- multiclass svm (one against all).
- Allow dynamic loading preferences package.module.
- Changed name from acqua to aqua.
- Move QAOA's variational form to under the algorithm implementation directory.
- Factor out the QAOA variational form.
- Operator will crash if the backend is None.
- Fix/max num circuits.
- fix grover for cases that don't need ancillary qubits.
- Fixed validation error for string of numbers.
- fix link to ai and opt notebooks.
0.1.2 - 2018-07-12
- UI Preferences Page including proxies urls, provider, verify.
- Add help menu with link to documentation.
- Add num_iterations param to grover.
- Graph partition ising model added.
- F2 finite field functions and find_Z2_symmetries function.
- Added packages preferences array for client custom pluggable packages.
- Clean up use_basis_gates options.
- Change Qiskit registering for Qiskit 0.5.5.
- GUI - Windows: new line appears when text view dismissed.
- Update test_grover to account for cases where the groundtruth info is missing.
- Qconfig discovery - Fix permission denied error on list folders.
- UI Fix Popup cut/copy/paste/select all behavior in mac/windows/linux.
- Fix typo grouped paulis.
- Fix numpy argmax usage on potentially complex state vector.
- Fix/use list for paulis and update helper function of ising model.
0.1.1 - 2018-06-13
- Changed short and long descriptions in setup.py.
0.1.0 - 2018-06-13
- Changed package name to dashes in setup.py.
- Updated qiskit minimum version in setup.py.
- Fixed links in readme.me.