qiskit-aer 0.17.2__cp314-cp314-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. qiskit_aer/VERSION.txt +1 -0
  2. qiskit_aer/__init__.py +89 -0
  3. qiskit_aer/aererror.py +30 -0
  4. qiskit_aer/aerprovider.py +119 -0
  5. qiskit_aer/backends/__init__.py +20 -0
  6. qiskit_aer/backends/aer_compiler.py +1085 -0
  7. qiskit_aer/backends/aer_simulator.py +1025 -0
  8. qiskit_aer/backends/aerbackend.py +679 -0
  9. qiskit_aer/backends/backend_utils.py +567 -0
  10. qiskit_aer/backends/backendconfiguration.py +395 -0
  11. qiskit_aer/backends/backendproperties.py +590 -0
  12. qiskit_aer/backends/compatibility.py +287 -0
  13. qiskit_aer/backends/controller_wrappers.cp314-win_amd64.pyd +0 -0
  14. qiskit_aer/backends/libopenblas.dll +0 -0
  15. qiskit_aer/backends/name_mapping.py +306 -0
  16. qiskit_aer/backends/qasm_simulator.py +925 -0
  17. qiskit_aer/backends/statevector_simulator.py +330 -0
  18. qiskit_aer/backends/unitary_simulator.py +316 -0
  19. qiskit_aer/jobs/__init__.py +35 -0
  20. qiskit_aer/jobs/aerjob.py +143 -0
  21. qiskit_aer/jobs/utils.py +66 -0
  22. qiskit_aer/library/__init__.py +204 -0
  23. qiskit_aer/library/control_flow_instructions/__init__.py +16 -0
  24. qiskit_aer/library/control_flow_instructions/jump.py +47 -0
  25. qiskit_aer/library/control_flow_instructions/mark.py +30 -0
  26. qiskit_aer/library/control_flow_instructions/store.py +29 -0
  27. qiskit_aer/library/default_qubits.py +44 -0
  28. qiskit_aer/library/instructions_table.csv +21 -0
  29. qiskit_aer/library/save_instructions/__init__.py +44 -0
  30. qiskit_aer/library/save_instructions/save_amplitudes.py +168 -0
  31. qiskit_aer/library/save_instructions/save_clifford.py +63 -0
  32. qiskit_aer/library/save_instructions/save_data.py +129 -0
  33. qiskit_aer/library/save_instructions/save_density_matrix.py +91 -0
  34. qiskit_aer/library/save_instructions/save_expectation_value.py +257 -0
  35. qiskit_aer/library/save_instructions/save_matrix_product_state.py +71 -0
  36. qiskit_aer/library/save_instructions/save_probabilities.py +156 -0
  37. qiskit_aer/library/save_instructions/save_stabilizer.py +70 -0
  38. qiskit_aer/library/save_instructions/save_state.py +79 -0
  39. qiskit_aer/library/save_instructions/save_statevector.py +120 -0
  40. qiskit_aer/library/save_instructions/save_superop.py +62 -0
  41. qiskit_aer/library/save_instructions/save_unitary.py +63 -0
  42. qiskit_aer/library/set_instructions/__init__.py +19 -0
  43. qiskit_aer/library/set_instructions/set_density_matrix.py +78 -0
  44. qiskit_aer/library/set_instructions/set_matrix_product_state.py +83 -0
  45. qiskit_aer/library/set_instructions/set_stabilizer.py +77 -0
  46. qiskit_aer/library/set_instructions/set_statevector.py +78 -0
  47. qiskit_aer/library/set_instructions/set_superop.py +78 -0
  48. qiskit_aer/library/set_instructions/set_unitary.py +78 -0
  49. qiskit_aer/noise/__init__.py +265 -0
  50. qiskit_aer/noise/device/__init__.py +25 -0
  51. qiskit_aer/noise/device/models.py +397 -0
  52. qiskit_aer/noise/device/parameters.py +202 -0
  53. qiskit_aer/noise/errors/__init__.py +30 -0
  54. qiskit_aer/noise/errors/base_quantum_error.py +119 -0
  55. qiskit_aer/noise/errors/pauli_error.py +283 -0
  56. qiskit_aer/noise/errors/pauli_lindblad_error.py +363 -0
  57. qiskit_aer/noise/errors/quantum_error.py +451 -0
  58. qiskit_aer/noise/errors/readout_error.py +355 -0
  59. qiskit_aer/noise/errors/standard_errors.py +498 -0
  60. qiskit_aer/noise/noise_model.py +1231 -0
  61. qiskit_aer/noise/noiseerror.py +30 -0
  62. qiskit_aer/noise/passes/__init__.py +18 -0
  63. qiskit_aer/noise/passes/local_noise_pass.py +160 -0
  64. qiskit_aer/noise/passes/relaxation_noise_pass.py +137 -0
  65. qiskit_aer/primitives/__init__.py +44 -0
  66. qiskit_aer/primitives/estimator.py +751 -0
  67. qiskit_aer/primitives/estimator_v2.py +159 -0
  68. qiskit_aer/primitives/sampler.py +361 -0
  69. qiskit_aer/primitives/sampler_v2.py +256 -0
  70. qiskit_aer/quantum_info/__init__.py +32 -0
  71. qiskit_aer/quantum_info/states/__init__.py +16 -0
  72. qiskit_aer/quantum_info/states/aer_densitymatrix.py +313 -0
  73. qiskit_aer/quantum_info/states/aer_state.py +525 -0
  74. qiskit_aer/quantum_info/states/aer_statevector.py +302 -0
  75. qiskit_aer/utils/__init__.py +44 -0
  76. qiskit_aer/utils/noise_model_inserter.py +66 -0
  77. qiskit_aer/utils/noise_transformation.py +431 -0
  78. qiskit_aer/version.py +86 -0
  79. qiskit_aer-0.17.2.dist-info/METADATA +209 -0
  80. qiskit_aer-0.17.2.dist-info/RECORD +83 -0
  81. qiskit_aer-0.17.2.dist-info/WHEEL +5 -0
  82. qiskit_aer-0.17.2.dist-info/licenses/LICENSE.txt +203 -0
  83. qiskit_aer-0.17.2.dist-info/top_level.txt +1 -0
@@ -0,0 +1,78 @@
1
+ # This code is part of Qiskit.
2
+ #
3
+ # (C) Copyright IBM 2018, 2021.
4
+ #
5
+ # This code is licensed under the Apache License, Version 2.0. You may
6
+ # obtain a copy of this license in the LICENSE.txt file in the root directory
7
+ # of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
8
+ #
9
+ # Any modifications or derivative works of this code must retain this
10
+ # copyright notice, and modified files need to carry a notice indicating
11
+ # that they have been altered from the originals.
12
+ """
13
+ Instruction to set the state simulator state to a matrix.
14
+ """
15
+
16
+ from qiskit.circuit import QuantumCircuit, Instruction
17
+ from qiskit.quantum_info import Operator
18
+ from ..default_qubits import default_qubits
19
+
20
+
21
+ class SetUnitary(Instruction):
22
+ """Set unitary state of the simulator"""
23
+
24
+ _directive = True
25
+
26
+ def __init__(self, state):
27
+ """Create new instruction to set the unitary simulator state.
28
+
29
+ Args:
30
+ state (Operator): A unitary matrix.
31
+
32
+ Raises:
33
+ ValueError: if the input matrix is not state.
34
+
35
+ .. note::
36
+
37
+ This set instruction must always be performed on the full width of
38
+ qubits in a circuit, otherwise an exception will be raised during
39
+ simulation.
40
+ """
41
+ if not isinstance(state, Operator):
42
+ state = Operator(state)
43
+ if not state.num_qubits or not state.is_unitary():
44
+ raise ValueError("The input matrix is not unitary")
45
+ super().__init__("set_unitary", state.num_qubits, 0, [state.data])
46
+
47
+
48
+ def set_unitary(self, state):
49
+ """Set the state of the simulator.
50
+
51
+ Args:
52
+ state (Operator): A state matrix.
53
+
54
+ Returns:
55
+ QuantumCircuit: with attached instruction.
56
+
57
+ Raises:
58
+ ValueError: If the state is the incorrect size for the current circuit.
59
+ ValueError: if the input matrix is not unitary.
60
+
61
+ .. note:
62
+
63
+ This instruction is always defined across all qubits in a circuit.
64
+ """
65
+ qubits = default_qubits(self)
66
+ if not isinstance(state, Operator):
67
+ state = Operator(state)
68
+ if not state.num_qubits or state.num_qubits != len(qubits):
69
+ raise ValueError(
70
+ "The size of the unitary matrix for the set_unitary"
71
+ " instruction must be equal to the number of qubits"
72
+ f" in the circuit (state.num_qubits ({state.num_qubits})"
73
+ f" != QuantumCircuit.num_qubits ({self.num_qubits}))."
74
+ )
75
+ return self.append(SetUnitary(state), qubits)
76
+
77
+
78
+ QuantumCircuit.set_unitary = set_unitary
@@ -0,0 +1,265 @@
1
+ # This code is part of Qiskit.
2
+ #
3
+ # (C) Copyright IBM 2018, 2019.
4
+ #
5
+ # This code is licensed under the Apache License, Version 2.0. You may
6
+ # obtain a copy of this license in the LICENSE.txt file in the root directory
7
+ # of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
8
+ #
9
+ # Any modifications or derivative works of this code must retain this
10
+ # copyright notice, and modified files need to carry a notice indicating
11
+ # that they have been altered from the originals.
12
+
13
+ r"""
14
+ ================================================
15
+ Noise Models (:mod:`qiskit_aer.noise`)
16
+ ================================================
17
+
18
+ .. currentmodule:: qiskit_aer.noise
19
+
20
+ This module contains classes and functions to build a noise model for
21
+ simulating a Qiskit quantum circuit in the presence of errors.
22
+
23
+
24
+ Building Noise Models
25
+ =====================
26
+
27
+ The :class:`NoiseModel` class is used to represent noise model for the
28
+ :class:`~qiskit_aer.QasmSimulator`. It can be used to construct
29
+ custom noise models for simulator, to automatically generate a basic
30
+ device noise model for an IBMQ or fake backend.
31
+
32
+
33
+ Device Noise Models
34
+ -------------------
35
+
36
+ A simplified approximate :class:`NoiseModel` can be generated automatically
37
+ from the properties of real device backends from the IBMQ provider or
38
+ fake backends of the `fake_provider` using the :meth:`NoiseModel.from_backend`
39
+ method. See the method documentation for details.
40
+
41
+
42
+ **Example: Basic device noise model**
43
+
44
+ .. code-block:: python
45
+
46
+ from qiskit import IBMQ
47
+ from qiskit.providers.aer.noise import NoiseModel
48
+ from qiskit import QuantumCircuit, transpile
49
+ from qiskit_aer import AerSimulator
50
+ from qiskit.visualization import plot_histogram
51
+ from qiskit_aer.noise import NoiseModel
52
+
53
+ # Make a circuit
54
+ circ = QuantumCircuit(3, 3)
55
+ circ.h(0)
56
+ circ.cx(0, 1)
57
+ circ.cx(1, 2)
58
+ circ.measure([0, 1, 2], [0, 1, 2])
59
+
60
+ # Get the noise model of ibmq_lima
61
+ provider = IBMQ.load_account()
62
+ provider = IBMQ.get_provider(hub='ibm-q', group='open', project='main')
63
+ backend_lima = provider.get_backend('ibmq_lima')
64
+ noise_model = NoiseModel.from_backend(backend_lima)
65
+
66
+ # Get coupling map from backend
67
+ coupling_map = backend_lima.configuration().coupling_map
68
+
69
+ # Get basis gates from noise model
70
+ basis_gates = noise_model.basis_gates
71
+
72
+ # Perform a noise simulation
73
+ backend = AerSimulator(noise_model=noise_model,
74
+ coupling_map=coupling_map,
75
+ basis_gates=basis_gates)
76
+ transpiled_circuit = transpile(circ, backend)
77
+ result = backend.run(transpiled_circuit).result()
78
+
79
+ counts = result.get_counts(0)
80
+ plot_histogram(counts)
81
+
82
+
83
+ **Example: Basic device noise model using a `fake_provider` backend**
84
+
85
+ .. code-block:: python
86
+
87
+ from qiskit import QuantumCircuit, transpile
88
+ from qiskit_aer import AerSimulator
89
+ from qiskit.visualization import plot_histogram
90
+ from qiskit_aer.noise import NoiseModel
91
+ from qiskit.providers.fake_provider import FakeVigo
92
+
93
+ # Build noise model from backend properties
94
+ backend = FakeVigo()
95
+ noise_model = NoiseModel.from_backend(backend)
96
+
97
+ # Get coupling map from backend
98
+ coupling_map = backend.configuration().coupling_map
99
+
100
+ # Get basis gates from noise model
101
+ basis_gates = noise_model.basis_gates
102
+
103
+ # Make a circuit
104
+ circ = QuantumCircuit(3, 3)
105
+ circ.h(0)
106
+ circ.cx(0, 1)
107
+ circ.cx(1, 2)
108
+ circ.measure([0, 1, 2], [0, 1, 2])
109
+
110
+ # Perform a noise simulation
111
+ backend = AerSimulator(noise_model=noise_model,
112
+ coupling_map=coupling_map,
113
+ basis_gates=basis_gates)
114
+ transpiled_circuit = transpile(circ, backend)
115
+ result = backend.run(transpiled_circuit).result()
116
+
117
+ counts = result.get_counts(0)
118
+ plot_histogram(counts)
119
+
120
+
121
+ Custom Noise Models
122
+ -------------------
123
+
124
+ Custom noise models can be used by adding :class:`QuantumError` to circuit
125
+ gate, reset or measure instructions, and :class:`ReadoutError` to measure
126
+ instructions. This module includes several helper functions for generating
127
+ :class:`QuantumError` instances based on canonical error models used in
128
+ Quantum Information Theory that can simplify building noise models. See the
129
+ documentation for the :class:`NoiseModel` class for additional details.
130
+
131
+ **Example: depolarizing noise model**
132
+
133
+ .. code-block:: python
134
+
135
+ from qiskit import QuantumCircuit, transpile, Aer
136
+ from qiskit.visualization import plot_histogram
137
+ from qiskit_aer import AerSimulator
138
+ import qiskit_aer.noise as noise
139
+
140
+ # Error probabilities
141
+ prob_1 = 0.001 # 1-qubit gate
142
+ prob_2 = 0.01 # 2-qubit gate
143
+
144
+ # Depolarizing quantum errors
145
+ error_1 = noise.depolarizing_error(prob_1, 1)
146
+ error_2 = noise.depolarizing_error(prob_2, 2)
147
+
148
+ # Add errors to noise model
149
+ noise_model = noise.NoiseModel()
150
+ noise_model.add_all_qubit_quantum_error(error_1, ['u1', 'u2', 'u3'])
151
+ noise_model.add_all_qubit_quantum_error(error_2, ['cx'])
152
+
153
+ # Get basis gates from noise model
154
+ basis_gates = noise_model.basis_gates
155
+
156
+ # Make a circuit
157
+ circ = QuantumCircuit(3, 3)
158
+ circ.h(0)
159
+ circ.cx(0, 1)
160
+ circ.cx(1, 2)
161
+ circ.measure([0, 1, 2], [0, 1, 2])
162
+
163
+ # Perform a noise simulation
164
+ backend = AerSimulator(noise_model=noise_model,
165
+ coupling_map=coupling_map,
166
+ basis_gates=basis_gates)
167
+ transpiled_circuit = transpile(circ, backend)
168
+ result = backend.run(transpiled_circuit).result()
169
+
170
+ counts = result.get_counts(0)
171
+ plot_histogram(counts)
172
+
173
+
174
+ Classes
175
+ =======
176
+
177
+ The following are the classes used to represented noise and error terms.
178
+
179
+ .. autosummary::
180
+ :toctree: ../stubs/
181
+
182
+ NoiseModel
183
+ QuantumError
184
+ PauliLindbladError
185
+ ReadoutError
186
+
187
+
188
+ Quantum Error Functions
189
+ =======================
190
+
191
+ The following functions can be used to generate many common types of
192
+ :class:`QuantumError` objects for inclusion in a :class:`NoiseModel`.
193
+
194
+ .. autosummary::
195
+ :toctree: ../stubs/
196
+
197
+ pauli_error
198
+ depolarizing_error
199
+ mixed_unitary_error
200
+ coherent_unitary_error
201
+ reset_error
202
+ amplitude_damping_error
203
+ phase_damping_error
204
+ phase_amplitude_damping_error
205
+ thermal_relaxation_error
206
+ kraus_error
207
+
208
+
209
+ Noise Transpiler Passes
210
+ =======================
211
+
212
+ These transpiler passes can be used to build noise models that can be applied
213
+ to circuits via transpilation.
214
+
215
+ .. autosummary::
216
+ :toctree: ../stubs/
217
+
218
+ LocalNoisePass
219
+ RelaxationNoisePass
220
+
221
+
222
+ Device Noise Parameters
223
+ =======================
224
+
225
+ The following are utility functions which can be used for extracting error
226
+ parameters and error objects from device `BackendProperties`.
227
+
228
+ .. autosummary::
229
+ :toctree: ../stubs/
230
+
231
+ device.basic_device_readout_errors
232
+ device.basic_device_gate_errors
233
+ device.gate_param_values
234
+ device.gate_error_values
235
+ device.gate_length_values
236
+ device.readout_error_values
237
+ device.thermal_relaxation_values
238
+ """
239
+
240
+ # Noise and Error classes
241
+ from .noise_model import NoiseModel
242
+ from .errors import QuantumError
243
+ from .errors import PauliError
244
+ from .errors import PauliLindbladError
245
+ from .errors import ReadoutError
246
+
247
+ # Error generating functions
248
+ from .errors import kraus_error
249
+ from .errors import mixed_unitary_error
250
+ from .errors import coherent_unitary_error
251
+ from .errors import pauli_error
252
+ from .errors import depolarizing_error
253
+ from .errors import reset_error
254
+ from .errors import thermal_relaxation_error
255
+ from .errors import phase_amplitude_damping_error
256
+ from .errors import amplitude_damping_error
257
+ from .errors import phase_damping_error
258
+
259
+ # Transpiler Passes
260
+ from .passes import LocalNoisePass
261
+ from .passes import RelaxationNoisePass
262
+
263
+ # Submodules
264
+ from . import errors
265
+ from . import device
@@ -0,0 +1,25 @@
1
+ # This code is part of Qiskit.
2
+ #
3
+ # (C) Copyright IBM 2018, 2019.
4
+ #
5
+ # This code is licensed under the Apache License, Version 2.0. You may
6
+ # obtain a copy of this license in the LICENSE.txt file in the root directory
7
+ # of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
8
+ #
9
+ # Any modifications or derivative works of this code must retain this
10
+ # copyright notice, and modified files need to carry a notice indicating
11
+ # that they have been altered from the originals.
12
+
13
+ """
14
+ Functions for building noise models from backend properties.
15
+ """
16
+
17
+ from .models import basic_device_readout_errors
18
+ from .models import basic_device_gate_errors
19
+ from .parameters import gate_param_values
20
+ from .parameters import gate_error_values
21
+ from .parameters import gate_length_values
22
+ from .parameters import readout_error_values
23
+ from .parameters import thermal_relaxation_values
24
+
25
+ from . import parameters