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)
예제 #3
0
 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
예제 #4
0
 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
예제 #5
0
    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)