def test_assemble_parametric_unsupported(self): """Test that parametric pulses are translated to Waveform if they're not supported by the backend during assemble time. """ sched = pulse.Schedule(name='test_parametric_to_sample_pulse') sched += Play(pulse.Drag(duration=25, amp=0.2+0.3j, sigma=7.8, beta=4), DriveChannel(1)) sched += Play(pulse.Constant(duration=25, amp=1), DriveChannel(2)) backend = FakeOpenPulse3Q() backend.configuration().parametric_pulses = ['something_extra'] qobj = assemble(sched, backend) self.assertNotEqual(qobj.config.pulse_library, []) qobj_insts = qobj.experiments[0].instructions self.assertFalse(hasattr(qobj_insts[0], 'pulse_shape'))
def test_assemble_single_circuit(self): """Test assembling a single circuit. """ qr = QuantumRegister(2, name='q') cr = ClassicalRegister(2, name='c') circ = QuantumCircuit(qr, cr, name='circ') circ.h(qr[0]) circ.cx(qr[0], qr[1]) circ.measure(qr, cr) qobj = assemble(circ, shots=2000, memory=True) self.assertIsInstance(qobj, QasmQobj) self.assertEqual(qobj.config.shots, 2000) self.assertEqual(qobj.config.memory, True) self.assertEqual(len(qobj.experiments), 1) self.assertEqual(qobj.experiments[0].instructions[1].name, 'cx')
def test_pulse_name_conflicts_in_other_schedule(self): """Test two pulses with the same name in different schedule can be resolved.""" backend = FakeAlmaden() schedules = [] ch_d0 = pulse.DriveChannel(0) for amp in (0.1, 0.2): sched = Schedule() sched += Play(gaussian(duration=100, amp=amp, sigma=30, name='my_pulse'), ch_d0) sched += measure(qubits=[0], backend=backend) << 100 schedules.append(sched) qobj = assemble(schedules, backend) # two user pulses and one measurement pulse should be contained self.assertEqual(len(qobj.config.pulse_library), 3)
def test_assemble_multi_schedules_with_multi_lo_configs(self): """Test assembling schedules, with the same number of lo configs (n:n setup).""" qobj = assemble([self.schedule, self.schedule], qobj_header=self.header, qubit_lo_freq=self.default_qubit_lo_freq, meas_lo_freq=self.default_meas_lo_freq, schedule_los=[self.user_lo_config, self.user_lo_config], **self.config) validate_qobj_against_schema(qobj) test_dict = qobj.to_dict() self.assertListEqual(test_dict['config']['qubit_lo_freq'], [4.9, 5.0]) self.assertEqual(len(test_dict['experiments']), 2) self.assertEqual(len(test_dict['experiments'][0]['instructions']), 2) self.assertDictEqual(test_dict['experiments'][0]['config'], {'qubit_lo_freq': [4.91, 5.0]})
def test_assemble_single_schedule_with_multi_lo_configs(self): """Test assembling a single schedule, with lo configs (frequency sweep).""" qobj = assemble( self.schedule, qobj_header=self.header, qubit_lo_freq=self.default_qubit_lo_freq, meas_lo_freq=self.default_meas_lo_freq, schedule_los=[self.user_lo_config, self.user_lo_config], **self.config) test_dict = qobj.to_dict() self.assertListEqual(test_dict['config']['qubit_lo_freq'], [4.9, 5.0]) self.assertEqual(len(test_dict['experiments']), 2) self.assertEqual(len(test_dict['experiments'][0]['instructions']), 2) self.assertDictEqual(test_dict['experiments'][0]['config'], {'qubit_lo_freq': [4.91, 5.0]})
def test_assemble_initialize(self): """Test assembling a circuit with an initialize. """ q = QuantumRegister(2, name='q') circ = QuantumCircuit(q, name='circ') circ.initialize([1 / np.sqrt(2), 0, 0, 1 / np.sqrt(2)], q[:]) qobj = assemble(circ) validate_qobj_against_schema(qobj) self.assertIsInstance(qobj, QasmQobj) self.assertEqual(qobj.experiments[0].instructions[0].name, 'initialize') np.testing.assert_almost_equal( qobj.experiments[0].instructions[0].params, [0.7071067811865, 0, 0, 0.707106781186])
def test_pulse_name_conflicts(self): """Test that pulse name conflicts can be resolved.""" name_conflict_pulse = pulse.SamplePulse(samples=np.array( [0.02, 0.05, 0.05, 0.05, 0.02], dtype=np.complex128), name='pulse0') self.schedule = self.schedule.insert( 1, name_conflict_pulse(self.device.q[1].drive)) qobj = assemble(self.schedule, qobj_header=self.header, qubit_lo_freq=self.default_qubit_lo_freq, meas_lo_freq=self.default_meas_lo_freq, schedule_los=[], **self.config) self.assertNotEqual(qobj.config.pulse_library[1], 'pulse0') self.assertEqual(qobj.experiments[0].instructions[0].name, 'pulse0') self.assertNotEqual(qobj.experiments[0].instructions[1].name, 'pulse0')
def test_default_shots_greater_than_max_shots(self): """Test assembling with default shots greater than max shots""" qr = QuantumRegister(2, name='q') qc = ClassicalRegister(2, name='c') circ = QuantumCircuit(qr, qc, name='circ') circ.h(qr[0]) circ.cx(qr[0], qr[1]) circ.measure(qr, qc) backend = FakeYorktown() backend._configuration.max_shots = 5 qobj = assemble(circ, backend) validate_qobj_against_schema(qobj) self.assertIsInstance(qobj, QasmQobj) self.assertEqual(qobj.config.shots, 5)
def test_circuit_with_conditionals(self): """Verify disassemble sets conditionals correctly.""" qr = QuantumRegister(2) cr1 = ClassicalRegister(1) cr2 = ClassicalRegister(2) qc = QuantumCircuit(qr, cr1, cr2) qc.measure(qr[0], cr1) # Measure not required for a later conditional qc.measure(qr[1], cr2[1]) # Measure required for a later conditional qc.h(qr[1]).c_if(cr2, 3) qobj = assemble(qc) circuits, run_config_out, header = disassemble(qobj) run_config_out = RunConfig(**run_config_out) self.assertEqual(run_config_out.n_qubits, 2) self.assertEqual(run_config_out.memory_slots, 3) self.assertEqual(len(circuits), 1) self.assertEqual(circuits[0], qc) self.assertEqual({}, header)
def test_pulse_name_conflicts(self): """Test that pulse name conflicts can be resolved.""" name_conflict_pulse = pulse.SamplePulse(samples=np.array( [0.02, 0.05, 0.05, 0.05, 0.02], dtype=np.complex128), name='pulse0') self.schedule = self.schedule.insert( 1, Play(name_conflict_pulse, self.backend_config.drive(1))) qobj = assemble(self.schedule, qobj_header=self.header, qubit_lo_freq=self.default_qubit_lo_freq, meas_lo_freq=self.default_meas_lo_freq, schedule_los=[], **self.config) validate_qobj_against_schema(qobj) self.assertNotEqual(qobj.config.pulse_library[0].name, qobj.config.pulse_library[1].name)
def test_assemble_opaque_inst(self): """Test opaque instruction is assembled as-is""" opaque_inst = Instruction(name='my_inst', num_qubits=4, num_clbits=2, params=[0.5, 0.4]) q = QuantumRegister(6, name='q') c = ClassicalRegister(4, name='c') circ = QuantumCircuit(q, c, name='circ') circ.append(opaque_inst, [q[0], q[2], q[5], q[3]], [c[3], c[0]]) qobj = assemble(circ) validate_qobj_against_schema(qobj) self.assertIsInstance(qobj, QasmQobj) self.assertEqual(len(qobj.experiments[0].instructions), 1) self.assertEqual(qobj.experiments[0].instructions[0].name, 'my_inst') self.assertEqual(qobj.experiments[0].instructions[0].qubits, [0, 2, 5, 3]) self.assertEqual(qobj.experiments[0].instructions[0].memory, [3, 0]) self.assertEqual(qobj.experiments[0].instructions[0].params, [0.5, 0.4])
def run_circuit(circuit: QuantumCircuit): """account must be saved first: https://quantum-computing.ibm.com/""" provider = IBMQ.load_account() # print(provider.backends(simulator=False, operational=True)) backend = provider.get_backend("ibmq_ourense") print(backend) mapped_circuit = transpile(circuit, backend=backend) qobj = assemble(mapped_circuit, backend=backend, shots=8192) # print(qobj) job = backend.run(qobj) print("Job: ") print(job) print(job.status()) print(job.job_id()) result = job.result() counts = result.get_counts() print(counts)
def test_disassemble_no_run_config(self): """Test disassembling with no run_config, relying on default. """ qr = QuantumRegister(2, name='q') qc = ClassicalRegister(2, name='c') circ = QuantumCircuit(qr, qc, name='circ') circ.h(qr[0]) circ.cx(qr[0], qr[1]) circ.measure(qr, qc) qobj = assemble(circ) circuits, run_config_out, headers = disassemble(qobj) run_config_out = RunConfig(**run_config_out) self.assertEqual(run_config_out.n_qubits, 2) self.assertEqual(run_config_out.memory_slots, 2) self.assertEqual(len(circuits), 1) self.assertEqual(circuits[0], circ) self.assertEqual({}, headers)
def test_opaque_instruction(self): """Test the disassembler handles opaque instructions correctly.""" opaque_inst = Instruction(name='my_inst', num_qubits=4, num_clbits=2, params=[0.5, 0.4]) q = QuantumRegister(6, name='q') c = ClassicalRegister(4, name='c') circ = QuantumCircuit(q, c, name='circ') circ.append(opaque_inst, [q[0], q[2], q[5], q[3]], [c[3], c[0]]) qobj = assemble(circ) circuits, run_config_out, header = disassemble(qobj) run_config_out = RunConfig(**run_config_out) self.assertEqual(run_config_out.n_qubits, 6) self.assertEqual(run_config_out.memory_slots, 4) self.assertEqual(len(circuits), 1) self.assertEqual(circuits[0], circ) self.assertEqual({}, header)
def test_unsupported_meas_level(self): """Test that assembly raises an error if meas_level is not supported""" # pylint: disable=unused-variable backend = FakeOpenPulse2Q() backend.configuration().meas_levels = [1, 2] with self.assertRaises(SchemaValidationError): qobj = assemble(self.schedule, backend, qubit_lo_freq=self.qubit_lo_freq, meas_lo_freq=self.meas_lo_freq, qubit_lo_range=self.qubit_lo_range, meas_lo_range=self.meas_lo_range, schedule_los=self.schedule_los, meas_level=0, meas_map=self.meas_map, memory_slots=self.memory_slots, rep_time=self.rep_time, )
def test_disassemble_schedule_los(self): """Test disassembling schedule los.""" d0 = pulse.DriveChannel(0) m0 = pulse.MeasureChannel(0) d1 = pulse.DriveChannel(1) m1 = pulse.MeasureChannel(1) sched0 = pulse.Schedule() sched1 = pulse.Schedule() schedule_los = [ {d0: 4.5e9, d1: 5e9, m0: 6e9, m1: 7e9}, {d0: 5e9, d1: 4.5e9, m0: 7e9, m1: 6e9} ] qobj = assemble([sched0, sched1], backend=self.backend, schedule_los=schedule_los) _, run_config_out, _ = disassemble(qobj) run_config_out = RunConfig(**run_config_out) self.assertEqual(run_config_out.schedule_los, schedule_los)
def test_disassemble_isometry(self): """Test disassembling a circuit with an isometry. """ q = QuantumRegister(2, name='q') circ = QuantumCircuit(q, name='circ') circ.iso(qi.random_unitary(4).data, circ.qubits, []) qobj = assemble(circ) circuits, run_config_out, header = disassemble(qobj) run_config_out = RunConfig(**run_config_out) self.assertEqual(run_config_out.n_qubits, 2) self.assertEqual(run_config_out.memory_slots, 0) self.assertEqual(len(circuits), 1) # params array assert_allclose(circuits[0]._data[0][0].params[0], circ._data[0][0].params[0]) # all other data self.assertEqual(circuits[0]._data[0][0].params[1:], circ._data[0][0].params[1:]) self.assertEqual(circuits[0]._data[0][1:], circ._data[0][1:]) self.assertEqual(circuits[0]._data[1:], circ._data[1:]) self.assertEqual({}, header)
def test_convert_to_bfunc_plus_conditional(self): """Verify assemble_circuits converts conditionals from QASM to Qobj.""" qr = QuantumRegister(1) cr = ClassicalRegister(1) qc = QuantumCircuit(qr, cr) qc.h(qr[0]).c_if(cr, 1) qobj = assemble(qc) bfunc_op, h_op = qobj.experiments[0].instructions self.assertEqual(bfunc_op.name, 'bfunc') self.assertEqual(bfunc_op.mask, '0x1') self.assertEqual(bfunc_op.val, '0x1') self.assertEqual(bfunc_op.relation, '==') self.assertTrue(hasattr(h_op, 'conditional')) self.assertEqual(bfunc_op.register, h_op.conditional)
def test_assemble_circuits_binds_parameters(self): """Verify assemble_circuits applies parameter bindings and output circuits are bound.""" qr = QuantumRegister(1) qc1 = QuantumCircuit(qr) qc2 = QuantumCircuit(qr) x = Parameter('x') y = Parameter('y') qc1.u2(x, y, qr[0]) qc2.rz(x, qr[0]) qc2.rz(y, qr[0]) bind_args = { 'parameter_binds': [{ x: 0, y: 0 }, { x: 1, y: 0 }, { x: 1, y: 1 }] } qobj = assemble([qc1, qc2], **bind_args) self.assertEqual(len(qobj.experiments), 6) self.assertEqual([len(expt.instructions) for expt in qobj.experiments], [1, 1, 1, 2, 2, 2]) self.assertEqual(qobj.experiments[0].instructions[0].params, [0, 0]) self.assertEqual(qobj.experiments[1].instructions[0].params, [1, 0]) self.assertEqual(qobj.experiments[2].instructions[0].params, [1, 1]) self.assertEqual(qobj.experiments[3].instructions[0].params, [0]) self.assertEqual(qobj.experiments[3].instructions[1].params, [0]) self.assertEqual(qobj.experiments[4].instructions[0].params, [1]) self.assertEqual(qobj.experiments[4].instructions[1].params, [0]) self.assertEqual(qobj.experiments[5].instructions[0].params, [1]) self.assertEqual(qobj.experiments[5].instructions[1].params, [1])
def test_assemble_with_single_kernels(self): """Test that assembly works with both a single kernel.""" disc_one = Kernel('disc_one', test_params=True) schedule = Schedule() schedule = schedule.append( Acquire(5, AcquireChannel(0), MemorySlot(0), kernel=disc_one), ) schedule = schedule.append( Acquire(5, AcquireChannel(1), MemorySlot(1)), ) qobj = assemble(schedule, qubit_lo_freq=self.default_qubit_lo_freq, meas_lo_freq=self.default_meas_lo_freq, meas_map=[[0, 1]]) validate_qobj_against_schema(qobj) qobj_kernels = qobj.experiments[0].instructions[0].kernels self.assertEqual(len(qobj_kernels), 1) self.assertEqual(qobj_kernels[0].name, 'disc_one') self.assertEqual(qobj_kernels[0].params['test_params'], True)
def test_assemble_memory_slots_for_schedules(self): """Test assembling schedules with different memory slots.""" n_memoryslots = [10, 5, 7] schedules = [] for n_memoryslot in n_memoryslots: schedule = Acquire(5, self.backend_config.acquire(0), mem_slot=pulse.MemorySlot(n_memoryslot-1)) schedules.append(schedule) qobj = assemble(schedules, qubit_lo_freq=self.default_qubit_lo_freq, meas_lo_freq=self.default_meas_lo_freq, meas_map=[[0], [1]]) validate_qobj_against_schema(qobj) self.assertEqual(qobj.config.memory_slots, max(n_memoryslots)) self.assertEqual(qobj.experiments[0].header.memory_slots, n_memoryslots[0]) self.assertEqual(qobj.experiments[1].header.memory_slots, n_memoryslots[1]) self.assertEqual(qobj.experiments[2].header.memory_slots, n_memoryslots[2])
def test_disassemble_single_circuit(self): """Test disassembling a single circuit. """ qr = QuantumRegister(2, name='q') cr = ClassicalRegister(2, name='c') circ = QuantumCircuit(qr, cr, name='circ') circ.h(qr[0]) circ.cx(qr[0], qr[1]) circ.measure(qr, cr) qobj = assemble(circ, shots=2000, memory=True) circuits, run_config_out, headers = disassemble(qobj) run_config_out = RunConfig(**run_config_out) self.assertEqual(run_config_out.n_qubits, 2) self.assertEqual(run_config_out.memory_slots, 2) self.assertEqual(run_config_out.shots, 2000) self.assertEqual(run_config_out.memory, True) self.assertEqual(len(circuits), 1) self.assertEqual(circuits[0], circ) self.assertEqual({}, headers)
def test_measure_to_registers_when_conditionals(self): """Verify assemble_circuits maps all measure ops on to a register slot for a circuit containing conditionals.""" qr = QuantumRegister(2) cr1 = ClassicalRegister(1) cr2 = ClassicalRegister(2) qc = QuantumCircuit(qr, cr1, cr2) qc.measure(qr[0], cr1) # Measure not required for a later conditional qc.measure(qr[1], cr2[1]) # Measure required for a later conditional qc.h(qr[1]).c_if(cr2, 3) qobj = assemble(qc) first_measure, second_measure = [op for op in qobj.experiments[0].instructions if op.name == 'measure'] self.assertTrue(hasattr(first_measure, 'register')) self.assertEqual(first_measure.register, first_measure.memory) self.assertTrue(hasattr(second_measure, 'register')) self.assertEqual(second_measure.register, second_measure.memory)
def test_disassemble_multiple_schedules(self): """Test disassembling multiple schedules, all should have the same config. """ d0 = pulse.DriveChannel(0) d1 = pulse.DriveChannel(1) with pulse.build(self.backend) as sched0: with pulse.align_right(): pulse.play(pulse.library.Constant(10, 1.0), d0) pulse.set_phase(1.0, d0) pulse.shift_phase(3.11, d0) pulse.set_frequency(1e9, d0) pulse.shift_frequency(1e7, d0) pulse.delay(20, d0) pulse.delay(10, d1) pulse.play(pulse.library.Constant(8, 0.1), d1) pulse.measure_all() with pulse.build(self.backend) as sched1: with pulse.align_right(): pulse.play(pulse.library.Constant(8, 0.1), d0) pulse.play(pulse.library.Waveform([0., 1.]), d1) pulse.set_phase(1.1, d0) pulse.shift_phase(3.5, d0) pulse.set_frequency(2e9, d0) pulse.shift_frequency(3e7, d1) pulse.delay(20, d1) pulse.delay(10, d0) pulse.play(pulse.library.Constant(8, 0.4), d1) pulse.measure_all() qobj = assemble([sched0, sched1], backend=self.backend, shots=2000) scheds, run_config_out, _ = disassemble(qobj) run_config_out = RunConfig(**run_config_out) self.assertEqual(run_config_out.memory_slots, 2) self.assertEqual(run_config_out.shots, 2000) self.assertEqual(run_config_out.memory, False) self.assertEqual(len(scheds), 2) self.assertEqual(scheds[0], sched0) self.assertEqual(scheds[1], sched1)
def test_multiple_conditionals_multiple_registers(self): """Verify disassemble handles multiple conditionals and registers.""" qr = QuantumRegister(3) cr1 = ClassicalRegister(3) cr2 = ClassicalRegister(5) cr3 = ClassicalRegister(6) cr4 = ClassicalRegister(1) qc = QuantumCircuit(qr, cr1, cr2, cr3, cr4) qc.x(qr[1]) qc.h(qr) qc.cx(qr[1], qr[0]).c_if(cr3, 14) qc.ccx(qr[0], qr[2], qr[1]).c_if(cr4, 1) qc.h(qr).c_if(cr1, 3) qobj = assemble(qc) circuits, run_config_out, header = disassemble(qobj) run_config_out = RunConfig(**run_config_out) self.assertEqual(run_config_out.n_qubits, 3) self.assertEqual(run_config_out.memory_slots, 15) self.assertEqual(len(circuits), 1) self.assertEqual(circuits[0], qc) self.assertEqual({}, header)
def test_resize_value_to_register(self): """Verify assemble_circuits converts the value provided on the classical creg to its mapped location on the device register.""" qr = QuantumRegister(1) cr1 = ClassicalRegister(2) cr2 = ClassicalRegister(2) cr3 = ClassicalRegister(1) qc = QuantumCircuit(qr, cr1, cr2, cr3) qc.h(qr[0]).c_if(cr2, 2) qobj = assemble(qc) bfunc_op, h_op = qobj.experiments[0].instructions self.assertEqual(bfunc_op.name, 'bfunc') self.assertEqual(bfunc_op.mask, '0xC') self.assertEqual(bfunc_op.val, '0x8') self.assertEqual(bfunc_op.relation, '==') self.assertTrue(hasattr(h_op, 'conditional')) self.assertEqual(bfunc_op.register, h_op.conditional)
def test_assemble_user_rep_time_delay(self): """Check that user runtime config rep_time and rep_delay work.""" # set custom rep_time and rep_delay in runtime config rep_time = 200.0e-6 rep_delay = 2.5e-6 self.config['rep_time'] = rep_time self.config['rep_delay'] = rep_delay # dynamic rep rates off # RuntimeWarning bc using ``rep_delay`` when dynamic rep rates off with self.assertWarns(RuntimeWarning): qobj = assemble(self.schedule, self.backend, **self.config) self.assertEqual(qobj.config.rep_time, int(rep_time*1e6)) self.assertEqual(hasattr(qobj.config, 'rep_delay'), False) # now remove rep_delay and enable dynamic rep rates # RuntimeWarning bc using ``rep_time`` when dynamic rep rates are enabled del self.config['rep_delay'] setattr(self.backend_config, 'dynamic_reprate_enabled', True) with self.assertWarns(RuntimeWarning): qobj = assemble(self.schedule, self.backend, **self.config) self.assertEqual(qobj.config.rep_time, int(rep_time*1e6)) self.assertEqual(hasattr(qobj.config, 'rep_delay'), False) # use ``default_rep_delay`` # ``rep_time`` comes from allowed backend rep_times rep_times = [0.5, 1.0, 1.5] # sec self.backend_config.rep_times = rep_times setattr(self.backend_config, 'rep_delay_range', [0, 3.0e-6]) setattr(self.backend_config, 'default_rep_delay', 2.2e-6) del self.config['rep_time'] qobj = assemble(self.schedule, self.backend, **self.config) self.assertEqual(qobj.config.rep_time, int(rep_times[0]*1e6)) self.assertEqual(qobj.config.rep_delay, 2.2) # use qobj ``default_rep_delay`` self.config['rep_delay'] = 1.5e-6 qobj = assemble(self.schedule, self.backend, **self.config) self.assertEqual(qobj.config.rep_time, int(rep_times[0]*1e6)) self.assertEqual(qobj.config.rep_delay, 1.5) # use ``rep_delay`` outside of ``rep_delay_range self.config['rep_delay'] = 5.0e-6 with self.assertRaises(SchemaValidationError): assemble(self.schedule, self.backend, **self.config)
def test_assemble_memory_slots_for_schedules(self): """Test assembling schedules with different memory slots.""" acquire = pulse.Acquire(5) n_memoryslots = [10, 5, 7] schedules = [] for n_memoryslot in n_memoryslots: schedule = acquire(self.device.acquires[0], mem_slots=pulse.MemorySlot(n_memoryslot - 1)) schedules.append(schedule) qobj = assemble(schedules, qubit_lo_freq=self.default_qubit_lo_freq, meas_lo_freq=self.default_meas_lo_freq, meas_map=[[0], [1]]) self.assertEqual(qobj.config.memory_slots, max(n_memoryslots)) self.assertEqual(qobj.experiments[0].header.memory_slots, n_memoryslots[0]) self.assertEqual(qobj.experiments[1].header.memory_slots, n_memoryslots[1]) self.assertEqual(qobj.experiments[2].header.memory_slots, n_memoryslots[2])
def compile(circuits, backend, config=None, basis_gates=None, coupling_map=None, initial_layout=None, shots=1024, max_credits=10, seed=None, qobj_id=None, seed_mapper=None, pass_manager=None, memory=False): """Compile a list of circuits into a qobj. Args: circuits (QuantumCircuit or list[QuantumCircuit]): circuits to compile backend (BaseBackend): a backend to compile for config (dict): dictionary of parameters (e.g. noise) used by runner basis_gates (list[str]): list of basis gates names supported by the target. Default: ['u1','u2','u3','cx','id'] coupling_map (list): coupling map (perhaps custom) to target in mapping initial_layout (list): initial layout of qubits in mapping shots (int): number of repetitions of each circuit, for sampling max_credits (int): maximum credits to use seed (int): random seed for simulators seed_mapper (int): random seed for swapper mapper qobj_id (int): identifier for the generated qobj pass_manager (PassManager): a pass manger for the transpiler pipeline memory (bool): if True, per-shot measurement bitstrings are returned as well Returns: Qobj: the qobj to be run on the backends Raises: QiskitError: if the desired options are not supported by backend """ warnings.warn( 'qiskit.compile() is deprecated and will be removed in Qiskit Terra 0.9. ' 'Please use qiskit.compiler.transpile() to transform circuits ' 'and qiskit.compiler.assemble() to produce a runnable qobj.', DeprecationWarning) new_circuits = transpile(circuits, basis_gates=basis_gates, coupling_map=coupling_map, initial_layout=initial_layout, seed_transpiler=seed_mapper, backend=backend, pass_manager=pass_manager) qobj = assemble(new_circuits, qobj_header=None, shots=shots, max_credits=max_credits, seed_simulator=seed, memory=memory, qobj_id=qobj_id, config=config) # deprecated return qobj
def test_init_qubits_false(self): """Check that the init_qubits=False assemble option is passed on to the qobj.""" qobj = assemble(self.schedule, self.backend, init_qubits=False) self.assertEqual(qobj.config.init_qubits, False)