Skip to content

Qiskit Nature 0.2.0

Compare
Choose a tag to compare
@manoelmarques manoelmarques released this 18 Aug 16:44
· 501 commits to main since this release
438c621

Changelog

Added

  • Add qiskit_nature.mappers.second_quantization.BravyiKitaevSuperFastMapper implementing
    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)
    
  • The qiskit_nature.operators.SecondQuantizedOp now has a method
    qiskit_nature.operators.SecondQuantizedOp.is_hermitian() method which will
    return True if the operator is equivalent to its adjoint and False otherwise

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

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

  • Introduces the qiskit_nature.drivers.second_quantization.ElectronicStructureMoleculeDriver and
    qiskit_nature.drivers.second_quantization.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.

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

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

  • The internal data in qiskit_nature.operators.second_quantization.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 qiskit_nature.operators.second_quantization.FermionicOp
    is 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.SecondQuantizedOp abstract class has been
    changed to use qiskit.opflow.mixins.StarAlgebraMixin.

Changed

  • The qiskit_nature.circuit.library.EvolvedOperatorAnsatz is deprecated.
    Use qiskit.circuit.library.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.

Fixed

  • Fixed an issue where qiskit_nature.operators.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.

  • QiskitNatureErrors where not being raised properly by the ActiveSpaceTransformer due to
    ill-formatted error messages.

  • Fix qiskit_nature.algorithms.AdaptVQE after the update of
    qiskit.algorithms.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.

  • The qiskit_nature.runtime.VQEProgram does 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.

  • Allow Qiskit's qiskit.algorithms.optimizers.Optimizer classes as input for
    the optimizer in the qiskit_nature.runtime.VQEProgram instead of only
    dictionaries.

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