qiskit.aqua.operators.legacy.WeightedPauliOperator
class WeightedPauliOperator(paulis, basis=None, z2_symmetries=None, atol=1e-12, name=None)
Weighted Pauli Operator
Parameters
- paulis (
List
[List
[Union
[complex
,Pauli
]]]) – the list of weighted Paulis, where a weighted pauli is composed of a length-2 list and the first item is the weight and the second item is the Pauli object. - basis (
Optional
[List
[Tuple
[object
,List
[int
]]]]) – the grouping basis, each element is a tuple composed of the basis and the indices to paulis which belong to that group. e.g., if tpb basis is used, the object will be a pauli. By default, the group is equal to non-grouping, each pauli is its own basis. - z2_symmetries (
Optional
[Z2Symmetries
]) – recording the z2 symmetries info - atol (
float
) – the threshold used in truncating paulis - name (
Optional
[str
]) – the name of operator.
__init__
__init__(paulis, basis=None, z2_symmetries=None, atol=1e-12, name=None)
Parameters
- paulis (
List
[List
[Union
[complex
,Pauli
]]]) – the list of weighted Paulis, where a weighted pauli is composed of a length-2 list and the first item is the weight and the second item is the Pauli object. - basis (
Optional
[List
[Tuple
[object
,List
[int
]]]]) – the grouping basis, each element is a tuple composed of the basis and the indices to paulis which belong to that group. e.g., if tpb basis is used, the object will be a pauli. By default, the group is equal to non-grouping, each pauli is its own basis. - z2_symmetries (
Optional
[Z2Symmetries
]) – recording the z2 symmetries info - atol (
float
) – the threshold used in truncating paulis - name (
Optional
[str
]) – the name of operator.
Methods
__init__ (paulis[, basis, z2_symmetries, …]) | type paulisList [List [Union [complex , Pauli ]]] |
add (other[, copy]) | Perform self + other. |
anticommute_with (other) | Anti commutes with |
chop ([threshold, copy]) | Eliminate the real and imagine part of weight in each pauli by threshold. |
commute_with (other) | Commutes with |
construct_evaluation_circuit (wave_function, …) | Construct the circuits for evaluation, which calculating the expectation <psi|H|psi>. |
copy () | Get a copy of self |
evaluate_with_result (result, statevector_mode) | This method can be only used with the circuits generated by the construct_evaluation_circuit() method with the same circuit_name_prefix name since the circuit names are tied to some meanings. |
evaluate_with_statevector (quantum_state) | param quantum_statea quantum state. |
evaluation_instruction (statevector_mode[, …]) | param statevector_modewill it be run on statevector simulator or not |
evolve ([state_in, evo_time, …]) | Carry out the eoh evolution for the operator under supplied specifications. |
evolve_instruction ([evo_time, …]) | Carry out the eoh evolution for the operator under supplied specifications. |
from_dict (dictionary[, before_04]) | Load paulis from a dictionary to construct an Operator. |
from_file (file_name[, before_04]) | Load paulis in a file to construct an Operator. |
from_list (paulis[, weights, name]) | Create a WeightedPauliOperator via a pair of list. |
is_empty () | Check Operator is empty or not. |
multiply (other) | Perform self * other, and the phases are tracked. |
print_details () | Print out the operator in details. |
reorder_paulis () | Reorder the paulis based on the basis and return the reordered paulis. |
rounding (decimals[, copy]) | Rounding the weight. |
simplify ([copy]) | Merge the paulis whose bases are identical and the pauli with zero coefficient would be removed. |
sub (other[, copy]) | Perform self - other. |
to_dict () | Save operator to a dict in pauli representation. |
to_file (file_name) | Save operator to a file in pauli representation. |
to_opflow ([reverse_endianness]) | to op flow |
Attributes
atol | get atol |
basis | returns basis |
name | returns name |
num_qubits | Number of qubits required for the operator. |
paulis | get paulis |
z2_symmetries | returns z2 symmetries |
add
add(other, copy=False)
Perform self + other.
Parameters
- other (WeightedPauliOperator) – to-be-combined operator
- copy (bool) – working on a copy or self, if False, the results are written back to self.
Returns
operator
Return type
anticommute_with
anticommute_with(other)
Anti commutes with
atol
get atol
basis
returns basis
chop
chop(threshold=None, copy=False)
Eliminate the real and imagine part of weight in each pauli by threshold. If pauli’s weight is less then threshold in both real and imaginary parts, the pauli is removed.
If weight is real-only, the imaginary part is skipped.
Parameters
- threshold (float) – the threshold is used to remove the paulis
- copy (bool) – chop on a copy or self
Returns
if copy is True, the original operator is unchanged; otherwise,
the operator is mutated.
Return type
commute_with
commute_with(other)
Commutes with
construct_evaluation_circuit
construct_evaluation_circuit(wave_function, statevector_mode, qr=None, cr=None, use_simulator_snapshot_mode=False, circuit_name_prefix='')
Construct the circuits for evaluation, which calculating the expectation <psi|H|psi>.
At statevector mode: to simplify the computation, we do not build the whole circuit for <psi|H|psi>, instead of that we construct an individual circuit <psi|, and a bundle circuit for H|psi>
Parameters
- wave_function (QuantumCircuit) – the quantum circuit.
- statevector_mode (bool) – indicate which type of simulator are going to use.
- qr (QuantumRegister, optional) – the quantum register associated with the input_circuit
- cr (ClassicalRegister, optional) – the classical register associated with the input_circuit
- use_simulator_snapshot_mode (bool, optional) – if aer_provider is used, we can do faster evaluation for pauli mode on statevector simulation
- circuit_name_prefix (str, optional) – a prefix of circuit name
Returns
a list of quantum circuits and each circuit with a unique name:
circuit_name_prefix + Pauli string
Return type
list[QuantumCircuit]
Raises
copy
copy()
Get a copy of self
evaluate_with_result
evaluate_with_result(result, statevector_mode, use_simulator_snapshot_mode=False, circuit_name_prefix='')
This method can be only used with the circuits generated by the construct_evaluation_circuit()
method with the same circuit_name_prefix name since the circuit names are tied to some meanings.
Calculate the evaluated value with the measurement results.
Parameters
- result (qiskit.Result) – the result from the backend.
- statevector_mode (bool) – indicate which type of simulator are used.
- use_simulator_snapshot_mode (bool) – if aer_provider is used, we can do faster evaluation for pauli mode on statevector simulation
- circuit_name_prefix (str) – a prefix of circuit name
Returns
the mean value float: the standard deviation
Return type
float
Raises
AquaError – if Operator is empty
evaluate_with_statevector
evaluate_with_statevector(quantum_state)
Parameters
quantum_state (numpy.ndarray) – a quantum state.
Returns
the mean value float: the standard deviation
Return type
float
Raises
AquaError – if Operator is empty
evaluation_instruction
evaluation_instruction(statevector_mode, use_simulator_snapshot_mode=False)
Parameters
- statevector_mode (bool) – will it be run on statevector simulator or not
- use_simulator_snapshot_mode (bool) – will it use qiskit aer simulator operator mode
Returns
Pauli-instruction pair.
Return type
dict
Raises
- AquaError – if Operator is empty
- MissingOptionalLibraryError – qiskit-aer not installed
evolve
evolve(state_in=None, evo_time=0, num_time_slices=1, quantum_registers=None, expansion_mode='trotter', expansion_order=1)
Carry out the eoh evolution for the operator under supplied specifications.
Parameters
- state_in (QuantumCircuit) – a circuit describes the input state
- evo_time (Union(complex, float, Parameter, ParameterExpression)) – The evolution time
- num_time_slices (int) – The number of time slices for the expansion
- quantum_registers (QuantumRegister) – The QuantumRegister to build the QuantumCircuit off of
- expansion_mode (str) – The mode under which the expansion is to be done. Currently support ‘trotter’, which follows the expansion as discussed in https://www.science.org/doi/10.1126/science.273.5278.1073, and ‘suzuki’, which corresponds to the discussion in https://arxiv.org/pdf/quant-ph/0508139.pdf
- expansion_order (int) – The order for suzuki expansion
Returns
The constructed circuit.
Return type
Raises
evolve_instruction
evolve_instruction(evo_time=0, num_time_slices=1, expansion_mode='trotter', expansion_order=1)
Carry out the eoh evolution for the operator under supplied specifications.
Parameters
- evo_time (Union(complex, float, Parameter, ParameterExpression)) – The evolution time
- num_time_slices (int) – The number of time slices for the expansion
- expansion_mode (str) – The mode under which the expansion is to be done. Currently support ‘trotter’, which follows the expansion as discussed in https://www.science.org/doi/10.1126/science.273.5278.1073, and ‘suzuki’, which corresponds to the discussion in https://arxiv.org/pdf/quant-ph/0508139.pdf
- expansion_order (int) – The order for suzuki expansion
Returns
The constructed QuantumCircuit.
Return type
Raises
- ValueError – Number of time slices should be a non-negative integer
- NotImplementedError – expansion mode not supported
- AquaError – if operator is empty
from_dict
classmethod from_dict(dictionary, before_04=False)
Load paulis from a dictionary to construct an Operator. The dictionary must comprise the key ‘paulis’ having a value which is an array of pauli dicts. Each dict in this array must be represented by label and coeff (real and imag) such as in the following example:
{'paulis':
[
{'label': 'IIII',
'coeff': {'real': -0.33562957575267038, 'imag': 0.0}},
{'label': 'ZIII',
'coeff': {'real': 0.28220597164664896, 'imag': 0.0}},
...
]
}
Parameters
- dictionary (dict) – dictionary, which contains a list of Paulis and coefficients.
- before_04 (bool) – support the format before Aqua 0.4.
Returns
the operator created from the input dictionary.
Return type
Raises
AquaError – Invalid dictionary
from_file
classmethod from_file(file_name, before_04=False)
Load paulis in a file to construct an Operator.
Parameters
- file_name (str) – path to the file, which contains a list of Paulis and coefficients.
- before_04 (bool) – support the format before Aqua 0.4.
Returns
the loaded operator.
Return type
from_list
classmethod from_list(paulis, weights=None, name=None)
Create a WeightedPauliOperator via a pair of list.
Parameters
- paulis (list[Pauli]) – the list of Paulis
- weights (list[complex], optional) – the list of weights, if it is None, all weights are 1.
- name (str, optional) – name of the operator.
Returns
operator
Return type
Raises
ValueError – The length of weights and paulis must be the same
is_empty
is_empty()
Check Operator is empty or not.
Returns
True if empty, False otherwise
Return type
bool
multiply
multiply(other)
Perform self * other, and the phases are tracked.
Parameters
other (WeightedPauliOperator) – an operator
Returns
the multiplied operator
Return type
name
returns name
num_qubits
Number of qubits required for the operator.
Returns
number of qubits
Return type
int
paulis
get paulis
print_details
print_details()
Print out the operator in details.
Returns
a formatted string describes the operator.
Return type
str
reorder_paulis
reorder_paulis()
Reorder the paulis based on the basis and return the reordered paulis.
Return type
List
[List
[Union
[complex
, Pauli
]]]
Returns
the ordered paulis based on the basis.
rounding
rounding(decimals, copy=False)
Rounding the weight.
Parameters
- decimals (int) – rounding the weight to the decimals.
- copy (bool) – chop on a copy or self
Returns
operator
Return type
simplify
simplify(copy=False)
Merge the paulis whose bases are identical and the pauli with zero coefficient would be removed.
This behavior of this method is slightly changed, it will remove the paulis whose weights are zero.
Parameters
copy (bool) – simplify on a copy or self
Returns
the simplified operator
Return type
sub
sub(other, copy=False)
Perform self - other.
Parameters
- other (WeightedPauliOperator) – to-be-combined operator
- copy (bool) – working on a copy or self, if False, the results are written back to self.
Returns
operator
Return type
to_dict
to_dict()
Save operator to a dict in pauli representation.
Returns
a dictionary contains an operator with pauli representation.
Return type
dict
to_file
to_file(file_name)
Save operator to a file in pauli representation.
Parameters
file_name (str) – path to the file
to_opflow
to_opflow(reverse_endianness=False)
to op flow
z2_symmetries
returns z2 symmetries