From 8f9e7c53c47412cbb0d6c935124d14c500543d08 Mon Sep 17 00:00:00 2001 From: "Davide Gessa (dakk)" Date: Fri, 26 May 2023 19:14:30 +0200 Subject: [PATCH 1/7] use transpile and run instead of execute in docstring --- qiskit_aer/noise/__init__.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/qiskit_aer/noise/__init__.py b/qiskit_aer/noise/__init__.py index dfe18526ad..b78b8b10ae 100644 --- a/qiskit_aer/noise/__init__.py +++ b/qiskit_aer/noise/__init__.py @@ -42,7 +42,7 @@ .. code-block:: python - from qiskit import QuantumCircuit, execute + from qiskit import QuantumCircuit, transpile from qiskit import IBMQ, Aer from qiskit.visualization import plot_histogram from qiskit_aer.noise import NoiseModel @@ -66,10 +66,12 @@ circ.measure([0, 1, 2], [0, 1, 2]) # Perform a noise simulation - result = execute(circ, Aer.get_backend('qasm_simulator'), - coupling_map=coupling_map, - basis_gates=basis_gates, - noise_model=noise_model).result() + backend = Aer.get_backend('qasm_simulator') + transpiled_circuit = transpile(circ, backend=backend, + coupling_map=coupling_map, + basis_gates=basis_gates) + result = backend.run(transpiled_circuit, noise_model=noise_model).result() + counts = result.get_counts(0) plot_histogram(counts) @@ -88,7 +90,7 @@ .. code-block:: python - from qiskit import QuantumCircuit, execute, Aer + from qiskit import QuantumCircuit, transpile, Aer from qiskit.visualization import plot_histogram import qiskit_aer.noise as noise @@ -116,9 +118,12 @@ circ.measure([0, 1, 2], [0, 1, 2]) # Perform a noise simulation - result = execute(circ, Aer.get_backend('qasm_simulator'), - basis_gates=basis_gates, - noise_model=noise_model).result() + backend = Aer.get_backend('qasm_simulator') + transpiled_circuit = transpile(circ, backend=backend, + coupling_map=coupling_map, + basis_gates=basis_gates) + result = backend.run(transpiled_circuit, noise_model=noise_model).result() + counts = result.get_counts(0) plot_histogram(counts) From 847316fb7d0f54db24f72c426314989dc9c86007 Mon Sep 17 00:00:00 2001 From: "Davide Gessa (dakk)" Date: Fri, 26 May 2023 19:22:15 +0200 Subject: [PATCH 2/7] use backend.run instead of execute in README --- README.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 199654cfce..6c16f54ca3 100755 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ $ python ```python import qiskit -from qiskit import IBMQ +from qiskit import IBMQ, transpile from qiskit_aer import AerSimulator # Generate 3-qubit GHZ state @@ -58,10 +58,11 @@ circ.cx(1, 2) circ.measure_all() # Construct an ideal simulator -aersim = AerSimulator() +backend = Aer.get_backend('qasm_simulator') # Perform an ideal simulation -result_ideal = qiskit.execute(circ, aersim).result() +transpiled_circuit = transpile(circ, backend=backend) +result_ideal = backend.run(transpiled_circuit).result() counts_ideal = result_ideal.get_counts(0) print('Counts(ideal):', counts_ideal) # Counts(ideal): {'000': 493, '111': 531} @@ -74,7 +75,8 @@ backend = provider.get_backend('ibmq_athens') aersim_backend = AerSimulator.from_backend(backend) # Perform noisy simulation -result_noise = qiskit.execute(circ, aersim_backend).result() +transpiled_circuit = transpile(circ, backend=aersim_backend) +result_noise = aersim_backend.run(transpiled_circuit).result() counts_noise = result_noise.get_counts(0) print('Counts(noise):', counts_noise) From c4ff4cd124b362e75275b253a802d3e2cd327f33 Mon Sep 17 00:00:00 2001 From: "Davide Gessa (dakk)" Date: Tue, 30 May 2023 09:58:06 +0200 Subject: [PATCH 3/7] use fake_provider for noise_model example --- README.md | 2 +- qiskit_aer/noise/__init__.py | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 6c16f54ca3..77110c0117 100755 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ $ python ```python import qiskit -from qiskit import IBMQ, transpile +from qiskit import IBMQ, transpile, Aer from qiskit_aer import AerSimulator # Generate 3-qubit GHZ state diff --git a/qiskit_aer/noise/__init__.py b/qiskit_aer/noise/__init__.py index b78b8b10ae..936c05023a 100644 --- a/qiskit_aer/noise/__init__.py +++ b/qiskit_aer/noise/__init__.py @@ -26,30 +26,30 @@ The :class:`NoiseModel` class is used to represent noise model for the :class:`~qiskit_aer.QasmSimulator`. It can be used to construct -custom noise models for simulator, to to automatically generate a basic -device noise model for an IBMQ backend. +custom noise models for simulator, to automatically generate a basic +device noise model for an `provider.fake_provider` backend. Device Noise Models ------------------- A simplified approximate :class:`NoiseModel` can be generated automatically -from the properties of real device backends from the IBMQ provider using the -:meth:`NoiseModel.from_backend` method. See the method documentation for -details. +from the real noise data for an IBM Quantum device using the data stored in +`provider.fake_provider` using the :meth:`NoiseModel.from_backend` method. +See the method documentation for details. **Example: Basic device noise model** .. code-block:: python from qiskit import QuantumCircuit, transpile - from qiskit import IBMQ, Aer + from qiskit import Aer from qiskit.visualization import plot_histogram from qiskit_aer.noise import NoiseModel + from qiskit.providers.fake_provider import FakeVigo # Build noise model from backend properties - provider = IBMQ.load_account() - backend = provider.get_backend('ibmq_vigo') + backend = FakeVigo() noise_model = NoiseModel.from_backend(backend) # Get coupling map from backend From 67a4eb302328ea64f13a096e0d12bdd433daa66e Mon Sep 17 00:00:00 2001 From: "Davide Gessa (dakk)" Date: Thu, 1 Jun 2023 13:50:36 +0200 Subject: [PATCH 4/7] Revert edits on README.md --- README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 77110c0117..199654cfce 100755 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ $ python ```python import qiskit -from qiskit import IBMQ, transpile, Aer +from qiskit import IBMQ from qiskit_aer import AerSimulator # Generate 3-qubit GHZ state @@ -58,11 +58,10 @@ circ.cx(1, 2) circ.measure_all() # Construct an ideal simulator -backend = Aer.get_backend('qasm_simulator') +aersim = AerSimulator() # Perform an ideal simulation -transpiled_circuit = transpile(circ, backend=backend) -result_ideal = backend.run(transpiled_circuit).result() +result_ideal = qiskit.execute(circ, aersim).result() counts_ideal = result_ideal.get_counts(0) print('Counts(ideal):', counts_ideal) # Counts(ideal): {'000': 493, '111': 531} @@ -75,8 +74,7 @@ backend = provider.get_backend('ibmq_athens') aersim_backend = AerSimulator.from_backend(backend) # Perform noisy simulation -transpiled_circuit = transpile(circ, backend=aersim_backend) -result_noise = aersim_backend.run(transpiled_circuit).result() +result_noise = qiskit.execute(circ, aersim_backend).result() counts_noise = result_noise.get_counts(0) print('Counts(noise):', counts_noise) From b3336051e02f301e8000637e58ca3a6475b6fa5a Mon Sep 17 00:00:00 2001 From: "Davide Gessa (dakk)" Date: Thu, 1 Jun 2023 16:38:04 +0200 Subject: [PATCH 5/7] Update examples in docstring for qiskit_aer.noise --- qiskit_aer/noise/__init__.py | 73 ++++++++++++++++++++++++++++-------- 1 file changed, 58 insertions(+), 15 deletions(-) diff --git a/qiskit_aer/noise/__init__.py b/qiskit_aer/noise/__init__.py index 936c05023a..b29bede491 100644 --- a/qiskit_aer/noise/__init__.py +++ b/qiskit_aer/noise/__init__.py @@ -27,26 +27,69 @@ The :class:`NoiseModel` class is used to represent noise model for the :class:`~qiskit_aer.QasmSimulator`. It can be used to construct custom noise models for simulator, to automatically generate a basic -device noise model for an `provider.fake_provider` backend. +device noise model for an IBMQ or fake backend. Device Noise Models ------------------- A simplified approximate :class:`NoiseModel` can be generated automatically -from the real noise data for an IBM Quantum device using the data stored in -`provider.fake_provider` using the :meth:`NoiseModel.from_backend` method. -See the method documentation for details. +from the properties of real device backends from the IBMQ provider or +fake backends of the `fake_provider` using the :meth:`NoiseModel.from_backend` +method. See the method documentation for details. + **Example: Basic device noise model** +.. code-block:: python + + from qiskit import IBMQ + from qiskit.providers.aer.noise import NoiseModel + from qiskit import QuantumCircuit, transpile + from qiskit_aer import AerSimulator + from qiskit.visualization import plot_histogram + from qiskit_aer.noise import NoiseModel + + # Make a circuit + circ = QuantumCircuit(3, 3) + circ.h(0) + circ.cx(0, 1) + circ.cx(1, 2) + circ.measure([0, 1, 2], [0, 1, 2]) + + # Get the noise model of ibmq_lima + provider = IBMQ.load_account() + provider = IBMQ.get_provider(hub='ibm-q', group='open', project='main') + backend_lima = provider.get_backend('ibmq_lima') + noise_model = NoiseModel.from_backend(backend_lima) + + # Get coupling map from backend + coupling_map = backend_lima.configuration().coupling_map + + # Get basis gates from noise model + basis_gates = noise_model.basis_gates + + # Perform a noise simulation + backend = AerSimulator(noise_model=noise_model, + coupling_map=coupling_map, + basis_gates=basis_gates) + transpiled_circuit = transpile(circ, backend) + result = backend.run(transpiled_circuit).result() + + counts = result.get_counts(0) + plot_histogram(counts) +``` + + +**Example: Basic device noise model using a `fake_provider` backend** + .. code-block:: python from qiskit import QuantumCircuit, transpile - from qiskit import Aer + from qiskit_aer import AerSimulator from qiskit.visualization import plot_histogram from qiskit_aer.noise import NoiseModel - from qiskit.providers.fake_provider import FakeVigo + from qiskit.providers.fake_provider import FakeVigo # Build noise model from backend properties backend = FakeVigo() @@ -66,11 +109,11 @@ circ.measure([0, 1, 2], [0, 1, 2]) # Perform a noise simulation - backend = Aer.get_backend('qasm_simulator') - transpiled_circuit = transpile(circ, backend=backend, - coupling_map=coupling_map, - basis_gates=basis_gates) - result = backend.run(transpiled_circuit, noise_model=noise_model).result() + backend = AerSimulator(noise_model=noise_model, + coupling_map=coupling_map, + basis_gates=basis_gates) + transpiled_circuit = transpile(circ, backend) + result = backend.run(transpiled_circuit).result() counts = result.get_counts(0) plot_histogram(counts) @@ -119,11 +162,11 @@ # Perform a noise simulation backend = Aer.get_backend('qasm_simulator') - transpiled_circuit = transpile(circ, backend=backend, - coupling_map=coupling_map, - basis_gates=basis_gates) + transpiled_circuit = transpile(circ, backend=backend, + coupling_map=coupling_map, + basis_gates=basis_gates) result = backend.run(transpiled_circuit, noise_model=noise_model).result() - + counts = result.get_counts(0) plot_histogram(counts) From d3af17c8d20b8554ac8be24d05ee5a6d9ac8e50b Mon Sep 17 00:00:00 2001 From: "Davide Gessa (dakk)" Date: Thu, 1 Jun 2023 16:42:36 +0200 Subject: [PATCH 6/7] Fix depolarizing noise model example --- qiskit_aer/noise/__init__.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/qiskit_aer/noise/__init__.py b/qiskit_aer/noise/__init__.py index b29bede491..5031b819fb 100644 --- a/qiskit_aer/noise/__init__.py +++ b/qiskit_aer/noise/__init__.py @@ -135,6 +135,7 @@ from qiskit import QuantumCircuit, transpile, Aer from qiskit.visualization import plot_histogram + from qiskit_aer import AerSimulator import qiskit_aer.noise as noise # Error probabilities @@ -161,11 +162,11 @@ circ.measure([0, 1, 2], [0, 1, 2]) # Perform a noise simulation - backend = Aer.get_backend('qasm_simulator') - transpiled_circuit = transpile(circ, backend=backend, - coupling_map=coupling_map, - basis_gates=basis_gates) - result = backend.run(transpiled_circuit, noise_model=noise_model).result() + backend = AerSimulator(noise_model=noise_model, + coupling_map=coupling_map, + basis_gates=basis_gates) + transpiled_circuit = transpile(circ, backend) + result = backend.run(transpiled_circuit).result() counts = result.get_counts(0) plot_histogram(counts) From 6ec7236c89d20614c9ac376ffb9063d53b573823 Mon Sep 17 00:00:00 2001 From: Hiroshi Horii Date: Sat, 3 Jun 2023 00:06:59 +0900 Subject: [PATCH 7/7] Remove incorrect markup in noise/__init__.py --- qiskit_aer/noise/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qiskit_aer/noise/__init__.py b/qiskit_aer/noise/__init__.py index 5031b819fb..b03ac45f4e 100644 --- a/qiskit_aer/noise/__init__.py +++ b/qiskit_aer/noise/__init__.py @@ -78,7 +78,6 @@ counts = result.get_counts(0) plot_histogram(counts) -``` **Example: Basic device noise model using a `fake_provider` backend** @@ -171,6 +170,7 @@ counts = result.get_counts(0) plot_histogram(counts) + Classes =======