Release Notes


New Features

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

Bug Fixes

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


Bug Fixes

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


New Features

  • The SecondQuantizedOp now has a method is_hermitian() method which will return True if the operator is equivalent to its adjoint and False otherwise

  • to_list() is now an abstract method of SecondQuantizedOp that is implemented by all subclasses

  • Add to_normal_order(). It returns the normal ordered fermionic operator that is equivalent to self.

  • Introduces the ElectronicStructureMoleculeDriver and VibrationalStructureMoleculeDriver that 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.

  • Introduce the VQEProgram to allow leveraging Qiskit Runtime to speed up the VQE algorithm. The VQEProgram implements the MinimumEigensolver interface 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.

Upgrade Notes

  • The internal data in FermionicOp have 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 FermionicOp is added. There are two modes dense and sparse. This display format can be switched by the property FermionicOp.display_format.

Deprecation Notes

  • The EvolvedOperatorAnsatz is deprecated. Use EvolvedOperatorAnsatz as 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.

Bug Fixes

  • Fixed an issue where FermionicOp raises 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 ``ActiveSpaceTransformer due to ill-formatted error messages.

  • Fix AdaptVQE after the update of VQE which deleted the internal _energy_evaluation method 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.

  • Allow Qiskit’s Optimizer classes as input for the optimizer in the VQEProgram instead of only dictionaries.

Other Notes

  • Changed documentation and code to better reflect rebranding of Qiskit’s chemistry module as Qiskit Nature.