Exposes the callback option of the VQE algorithm in the VQE factory classes. It also adds a general kwargs dictionary which allows passing any additional arguments to the VQE.
This also ensures that the getter/setter methods of the VQE factories actually affect the constructed VQE instance.
Fixed a typo in the ElectronicEnergy._orbital_energies variable name and ensures the correct behavior of the orbital_energies property getter.
The ElectronicStructureResult did not initialize the _computed_dipole_moment variable causing critical errors when trying to print a result from an algorithm which does not compute these observables. Proper initialization fixes this issue. Printing the result would also fail when complex numbers were stored. This has also been remedied.
Fixed an issue where the existing Mapper was incorrectly mapping the creation operator \(+\) and the annihilation operator \(-\). It used to be that \(+\) was mapped to \(\sigma_+\) and \(-\) was mapped to \(\sigma_-\), but it is correct that \(+\) is mapped to \(\sigma_-\) and \(-\) is mapped to :math`sigma_+`.
Allow input operator to BravyiKitaevSuperFastMapper to be FermionicOp in sparse storage format. Previously, all input was interpreted as dense storage format, which raised an error when parsing sparse format as dense failed.
Ensure BaseProblem.molecule_data_transformed is set when using a legacy driver type without any transformers.
Updates the runtime tutorial to consistently use the new drivers in combination with the new transformers and the Property-framework in general.
qiskit_nature.mappers.second_quantization.BravyiKitaevSuperFastMapperimplementing the Bravyi-Kitaev super-fast fermion-to-qubit mapping. For example
from qiskit_nature.mappers.second_quantization import BravyiKitaevSuperFastMapper mapper = BravyiKitaevSuperFastMapper() mapper.map(fermionic_op)
SecondQuantizedOpnow has a method
is_hermitian()method which will return
Trueif the operator is equivalent to its adjoint and
to_list()is now an abstract method of
SecondQuantizedOpthat is implemented by all subclasses
to_normal_order(). It returns the normal ordered fermionic operator that is equivalent to self.
VibrationalStructureMoleculeDriverthat allow for the creation of Molecule-based drivers by specifying a molecule plus basis and method (for Electronic Structure drivers only) and a driver type. An additional type AUTO allows for the lookup of the first driver installed that supports the given method. The documentation of those two molecule driver classes gives more details on it.
The Property framework is the new modular and extensible approach for representing observable quantities. The framework is used as a replacement for the legacy driver results like QMolecule and WatsonHamiltonian. Please refer to the tutorial and documentation for more details. Related Github issues: * https://github.com/Qiskit/qiskit-nature/issues/148 * https://github.com/Qiskit/qiskit-nature/issues/167 * https://github.com/Qiskit/qiskit-nature/pull/220 * https://github.com/Qiskit/qiskit-nature/issues/243 * https://github.com/Qiskit/qiskit-nature/pull/263 * https://github.com/Qiskit/qiskit-nature/issues/264 * https://github.com/Qiskit/qiskit-nature/pull/303
VQEProgramto allow leveraging Qiskit Runtime to speed up the VQE algorithm. The
MinimumEigensolverinterface and can thus be used as a drop-in replacement for other minimum eigensolvers like
qiskit.algorithms.VQE. See the tutorials under docs/tutorials for an explicit example usage.
The internal data in
FermionicOphave been changed. As a result, more data type is now accepted by initialize. The ascending order constraint and the no-same index constraint have been removed. In addition, the dense and sparse labels are now automatically detected by the existence of underscores.
The property display_format of
FermionicOpis added. There are two modes dense and sparse. This display format can be switched by the property FermionicOp.display_format.
The internal API of the abstract class
qiskit_nature.operators.second_quantization.SecondQuantizedOpabstract class has been changed to use
EvolvedOperatorAnsatzis deprecated. Use
EvolvedOperatorAnsatzas a direct replacement instead.
The property dagger in the second quantized operators is deprecated. Use adjoint() method alternatively.
the legacy driver return types, QMolecule and WatsonHamiltonian
the legacy transformers acting on the now deprecated driver return types
the BaseProblem.molecule_data and BaseProblem.molecule_data_transformed attributes
All currently existing drivers have been moved from qiskit_nature.drivers to qiskit_nature.drivers.second_quantization. This is necessary because future additions to Nature which reside in parallel to the second_quantization submodules will not be using these drivers. Making this separation reflects that in the code structure. The same change was necessary for the existing qiskit_nature.transformers.
Fixed an issue where
FermionicOpraises unwanted ValueError when initialized with some list of sparse label.
Fixes the issue #198 where total dipole moment was not calculated correctly in the ElectronicStructureResult.
QiskitNatureError``s where not being raised properly by the ``ActiveSpaceTransformerdue to ill-formatted error messages.
AdaptVQEafter the update of
VQEwhich deleted the internal
_energy_evaluationmethod that Adapt-VQE was relying on.
The FreezeCoreTransformer (and ActiveSpaceTransformer) were incompatible with the automatic Z2Symmetry reduction. This issue was fixed by correcting the ElectronicStructureProblem.symmetry_sector_locator method.
The two-qubit reduction needs to be skipped when a qubit operator only has 2 (or even fewer) qubits.
VQEProgramdoes support the evaluation of auxiliary operators at the final state, but the
qiskit_nature.runtime.VQEProgram.supports_aux_operators()method previously returned False instead of True.
Optimizerclasses as input for the
VQEPrograminstead of only dictionaries.
Changed documentation and code to better reflect rebranding of Qiskit’s chemistry module as Qiskit Nature.