def _generate_cqasm_from_instructions(instructions, number_of_qubits=2, full_state_projection=True): experiment_dict = { 'instructions': instructions, 'header': { 'n_qubits': number_of_qubits, 'number_of_clbits': number_of_qubits, 'compiled_circuit_qasm': '' }, 'config': { 'coupling_map': 'all-to-all', 'basis_gates': 'x,y,z,h,rx,ry,rz,s,cx,ccx,u1,u2,u3,id,snapshot', 'n_qubits': number_of_qubits } } experiment = qiskit.qobj.QasmQobjExperiment.from_dict(experiment_dict) for instruction in experiment.instructions: if hasattr(instruction, 'params'): # convert params to params used in qiskit instructions qiskit_instruction = Instruction('dummy', 0, 0, instruction.params) instruction.params = qiskit_instruction.params simulator = QuantumInspireBackend(Mock(), Mock()) result = simulator._generate_cqasm(experiment, full_state_projection) return result
def test_generate_cqasm_with_entangle_algorithm(self): q = QuantumRegister(2) b = ClassicalRegister(2) circuit = QuantumCircuit(q, b) circuit.h(q[0]) circuit.cx(q[0], q[1]) circuit.measure(q[0], b[0]) circuit.measure(q[1], b[1]) backend = QuantumInspireBackend(Mock(), Mock()) # transpiling the circuits using the transpiler_config new_circuits = transpile(circuit, backend) run_config = RunConfig(shots=1024, max_credits=10, memory=False) # assembling the circuits into a qobj to be run on the backend qiskit_job = assemble(new_circuits, backend, run_config=run_config) experiment = qiskit_job.experiments[0] result = backend._generate_cqasm(experiment) expected = "version 1.0\n" \ "# cQASM generated by QI backend for Qiskit\n" \ "qubits 2\n" \ "H q[0]\n" \ "CNOT q[0], q[1]\n" self.assertEqual(result, expected)
def _generate_cqasm_from_circuit(circuit, full_state_projection=True): run_config_dict = {'shots': 25, 'memory': True} backend = QuantumInspireBackend(Mock(), Mock()) qobj = assemble(circuit, backend, **run_config_dict) experiment = qobj.experiments[0] simulator = QuantumInspireBackend(Mock(), Mock()) result = simulator._generate_cqasm(experiment, full_state_projection) return result
def _generate_cqasm_from_instructions(instructions, number_of_qubits=2): experiment_dict = {'instructions': instructions, 'header': {'n_qubits': number_of_qubits, 'number_of_clbits': number_of_qubits, 'compiled_circuit_qasm': ''}, 'config': {'coupling_map': 'all-to-all', 'basis_gates': 'x,y,z,h,rx,ry,rz,s,cx,ccx,u1,u2,u3,id,snapshot', 'n_qubits': number_of_qubits}} experiment = qiskit.qobj.QobjExperiment.from_dict(experiment_dict) simulator = QuantumInspireBackend(Mock(), Mock()) result = simulator._generate_cqasm(experiment) return result
def test_generate_cqasm_WithEntangleAlgorithm(self): q = QuantumRegister(2) b = ClassicalRegister(2) circuit = QuantumCircuit(q, b) circuit.h(q[0]) circuit.cx(q[0], q[1]) circuit.measure(q[0], b[0]) circuit.measure(q[1], b[1]) simulator = QuantumInspireBackend(Mock(), Mock()) qiskit_job = qiskit.compile(circuit, simulator) experiment = qiskit_job.experiments[0] result = simulator._generate_cqasm(experiment) expected = "version 1.0\n" \ "# cQASM generated by QI backend for Qiskit\n" \ "qubits 2\n" \ "H q[0]\n" \ "CNOT q[0], q[1]\n" self.assertEqual(result, expected)