@@ -47,13 +47,16 @@ def _random_qiskit_circuit(size: int) -> QuantumCircuit:
4747
4848
4949def test_aer_multiple_circuits ():
50+
5051 provider = ScalewayProvider (
5152 project_id = os .environ ["QISKIT_SCALEWAY_PROJECT_ID" ],
5253 secret_key = os .environ ["QISKIT_SCALEWAY_SECRET_KEY" ],
5354 url = os .getenv ("QISKIT_SCALEWAY_API_URL" ),
5455 )
5556
56- backend = provider .get_backend ("aer_simulation_pop_c16m128" )
57+ backend = provider .get_backend (
58+ os .getenv ("QISKIT_SCALEWAY_BACKEND_NAME" , "aer_simulation_pop_c16m128" )
59+ )
5760
5861 assert backend is not None
5962
@@ -86,3 +89,89 @@ def test_aer_multiple_circuits():
8689 assert result .success
8790 finally :
8891 backend .delete_session (session_id )
92+
93+
94+ def _get_noise_model ():
95+ import qiskit_aer .noise as noise
96+
97+ # Error probabilities (exaggerated to get a noticeable effect for demonstration)
98+ prob_1 = 0.01 # 1-qubit gate
99+ prob_2 = 0.1 # 2-qubit gate
100+
101+ # Depolarizing quantum errors
102+ error_1 = noise .depolarizing_error (prob_1 , 1 )
103+ error_2 = noise .depolarizing_error (prob_2 , 2 )
104+
105+ # Add errors to noise model
106+ noise_model = noise .NoiseModel ()
107+ noise_model .add_all_qubit_quantum_error (error_1 , ["rz" , "sx" , "x" ])
108+ noise_model .add_all_qubit_quantum_error (error_2 , ["cx" ])
109+
110+ return noise_model
111+
112+
113+ def _bell_state_circuit ():
114+ qc = QuantumCircuit (2 , 2 )
115+ qc .h (0 )
116+ qc .cx (0 , 1 )
117+ qc .measure_all ()
118+ return qc
119+
120+
121+ def _simple_one_state_circuit ():
122+ qc = QuantumCircuit (1 , 1 )
123+ qc .x (0 )
124+ qc .measure_all ()
125+ return qc
126+
127+
128+ def test_aer_with_noise_model ():
129+
130+ provider = ScalewayProvider (
131+ project_id = os .environ ["QISKIT_SCALEWAY_PROJECT_ID" ],
132+ secret_key = os .environ ["QISKIT_SCALEWAY_SECRET_KEY" ],
133+ url = os .getenv ("QISKIT_SCALEWAY_API_URL" ),
134+ )
135+
136+ backend = provider .get_backend (
137+ os .getenv ("QISKIT_SCALEWAY_BACKEND_NAME" , "aer_simulation_pop_c16m128" )
138+ )
139+
140+ assert backend is not None
141+
142+ session_id = backend .start_session (
143+ name = "my-aer-session-autotest" ,
144+ deduplication_id = f"my-aer-session-autotest-{ random .randint (1 , 1000 )} " ,
145+ max_duration = "15m" ,
146+ )
147+
148+ assert session_id is not None
149+
150+ try :
151+ qc1 = _bell_state_circuit ()
152+ qc2 = _simple_one_state_circuit ()
153+
154+ run_ideal_result = backend .run (
155+ [qc1 , qc2 ],
156+ shots = 1000 ,
157+ max_parallel_experiments = 0 ,
158+ session_id = session_id ,
159+ ).result ()
160+
161+ run_noisy_result = backend .run (
162+ [qc1 , qc2 ],
163+ shots = 1000 ,
164+ max_parallel_experiments = 0 ,
165+ session_id = session_id ,
166+ noise_model = _get_noise_model (),
167+ ).result ()
168+
169+ ideal_results = run_ideal_result .results
170+ noisy_results = run_noisy_result .results
171+
172+ assert len (ideal_results ) == len (noisy_results ) == 2
173+
174+ for i , ideal_result in enumerate (ideal_results ):
175+ assert len (ideal_result .data .counts ) < len (noisy_results [i ].data .counts )
176+ finally :
177+ backend .delete_session (session_id )
0 commit comments