Skip to main contentIBM Quantum Documentation
This page is from an old version of Qiskit SDK and does not exist in the latest version. We recommend you migrate to the latest version. See the release notes for more information.
Important

IBM Quantum Platform is moving and this version will be sunset on July 1. To get started on the new platform, read the migration guide.

qiskit.chemistry.transformations.FermionicTransformation

class FermionicTransformation(transformation=<FermionicTransformationType.FULL: 'full'>, qubit_mapping=<FermionicQubitMappingType.PARITY: 'parity'>, two_qubit_reduction=True, freeze_core=False, orbital_reduction=None, z2symmetry_reduction=None)

GitHub

A transformation from a fermionic problem, represented by a driver, to a qubit operator.

Parameters

  • transformation (FermionicTransformationType) – full or particle_hole
  • qubit_mapping (FermionicQubitMappingType) – ‘jordan_wigner’, ‘parity’ or ‘bravyi_kitaev’
  • two_qubit_reduction (bool) – Whether two qubit reduction should be used, when parity mapping only
  • freeze_core (bool) – Whether to freeze core orbitals when possible
  • orbital_reduction (Optional[List[int]]) – Orbital list to be frozen or removed
  • z2symmetry_reduction (Union[str, List[int], None]) – If z2 symmetry reduction should be applied to resulting qubit operators that are computed. For each symmetry detected the operator will be split in two where each requires one qubit less for computation. So for example 3 symmetries will split in the original operator into 8 new operators each requiring 3 less qubits. Now only one of these operators will have the ground state and be the correct symmetry sector needed for the ground state. Setting ‘auto’ will use an automatic computation of the correct sector. If from other experiments, with the z2symmetry logic, the sector is known, then the tapering values of that sector can be provided (a list of int of values -1, and 1). The default is None meaning no symmetry reduction is done. Note that dipole and other operators such as spin, num particles etc are also symmetry reduced according to the symmetries found in the main operator if this operator commutes with the main operator symmetry. If it does not then the operator will be discarded since no meaningful measurement can take place.

Raises

QiskitChemistryError – Invalid symmetry reduction

__init__

__init__(transformation=<FermionicTransformationType.FULL: 'full'>, qubit_mapping=<FermionicQubitMappingType.PARITY: 'parity'>, two_qubit_reduction=True, freeze_core=False, orbital_reduction=None, z2symmetry_reduction=None)

Parameters

  • transformation (FermionicTransformationType) – full or particle_hole
  • qubit_mapping (FermionicQubitMappingType) – ‘jordan_wigner’, ‘parity’ or ‘bravyi_kitaev’
  • two_qubit_reduction (bool) – Whether two qubit reduction should be used, when parity mapping only
  • freeze_core (bool) – Whether to freeze core orbitals when possible
  • orbital_reduction (Optional[List[int]]) – Orbital list to be frozen or removed
  • z2symmetry_reduction (Union[str, List[int], None]) – If z2 symmetry reduction should be applied to resulting qubit operators that are computed. For each symmetry detected the operator will be split in two where each requires one qubit less for computation. So for example 3 symmetries will split in the original operator into 8 new operators each requiring 3 less qubits. Now only one of these operators will have the ground state and be the correct symmetry sector needed for the ground state. Setting ‘auto’ will use an automatic computation of the correct sector. If from other experiments, with the z2symmetry logic, the sector is known, then the tapering values of that sector can be provided (a list of int of values -1, and 1). The default is None meaning no symmetry reduction is done. Note that dipole and other operators such as spin, num particles etc are also symmetry reduced according to the symmetries found in the main operator if this operator commutes with the main operator symmetry. If it does not then the operator will be discarded since no meaningful measurement can take place.

Raises

QiskitChemistryError – Invalid symmetry reduction


Methods

__init__([transformation, qubit_mapping, …])type transformationFermionicTransformationType
build_hopping_operators([excitations])Builds the product of raising and lowering operators (basic excitation operators)
get_default_filter_criterion()Returns a default filter criterion method to filter the eigenvalues computed by the eigen solver.
interpret(raw_result)Interprets an EigenstateResult in the context of this transformation.
transform(driver[, aux_operators])Transformation from the driver to a qubit operator.

Attributes

commutation_ruleGetter of the commutation rule
molecule_infoGetter of the molecule information.
qubit_mappingGetter of the qubit mapping.
untapered_qubit_opGetter for the untapered qubit operator

build_hopping_operators

build_hopping_operators(excitations='sd')

Builds the product of raising and lowering operators (basic excitation operators)

Parameters

excitations (Union[str, List[List[int]]]) – The excitations to be included in the eom pseudo-eigenvalue problem. If a string (‘s’, ‘d’ or ‘sd’) then all excitations of the given type will be used. Otherwise a list of custom excitations can directly be provided.

Return type

Tuple[Dict[str, WeightedPauliOperator], Dict[str, List[bool]], Dict[str, List[Any]]]

Returns

A tuple containing the hopping operators, the types of commutativities and the excitation indices.

commutation_rule

Getter of the commutation rule

Return type

bool

get_default_filter_criterion

get_default_filter_criterion()

Returns a default filter criterion method to filter the eigenvalues computed by the eigen solver. For more information see also aqua.algorithms.eigen_solvers.NumPyEigensolver.filter_criterion.

In the fermionic case the default filter ensures that the number of particles is being preserved.

Return type

Optional[Callable[[Union[List, ndarray], float, Optional[List[float]]], bool]]

interpret

interpret(raw_result)

Interprets an EigenstateResult in the context of this transformation.

Parameters

raw_result (Union[EigenstateResult, EigensolverResult, MinimumEigensolverResult]) – an eigenstate result object.

Return type

ElectronicStructureResult

Returns

An electronic structure result.

molecule_info

Getter of the molecule information.

Return type

Dict[str, Any]

qubit_mapping

Getter of the qubit mapping.

Return type

str

transform

transform(driver, aux_operators=None)

Transformation from the driver to a qubit operator.

Parameters

  • driver (BaseDriver) – A driver encoding the molecule information.
  • aux_operators (Optional[List[FermionicOperator]]) – Additional auxiliary FermionicOperator instances to evaluate.

Return type

Tuple[OperatorBase, List[OperatorBase]]

Returns

A qubit operator and a dictionary of auxiliary operators.

untapered_qubit_op

Getter for the untapered qubit operator

Was this page helpful?
Report a bug or request content on GitHub.