Loading python/examples/kernel_builder_qasm.py 0 → 100644 +27 −0 Original line number Diff line number Diff line import qiskit from qcor import * # Generate 3-qubit GHZ state circ = qiskit.QuantumCircuit(3, 3) circ.h(0) circ.cx(0, 1) circ.cx(1, 2) circ.measure([0, 1, 2], [0, 1 ,2]) src = circ.qasm() builder = KernelBuilder() builder.from_qasm(src) test_from_qasm = builder.create() q = qalloc(3) test_from_qasm(q) print(q.counts()) builder = KernelBuilder() builder.from_qiskit(circ) test_from_qk = builder.create() q = qalloc(3) test_from_qk(q) print(q.counts()) python/qcor.in.py +12 −3 Original line number Diff line number Diff line Loading @@ -723,6 +723,14 @@ class KernelBuilder(object): self.qjit_str += self.TAB+"{} = _internal_python_createObservable(\"{}\", \"{}\")\n".format(op_var_name, op_type, op_str) self.qjit_str += self.TAB+'exp_i_theta({}, {}, {})\n'.format(self.qreg_name, params_str, op_var_name) def from_qasm(self, qasm_str): xacc_ir = xacc.getCompiler('staq').compile(qasm_str).getComposites()[0] pyxasm = xacc.getCompiler('pyxasm').translate(xacc_ir, {'qreg_name':self.qreg_name, 'tab_prepend':self.TAB}) processed_str = pyxasm self.qjit_str += processed_str def from_qiskit(self, qk_circ): return self.from_qasm(qk_circ.qasm()) # Synthesis from matrix, or from matrix generator # can provide method = [qsearch,qfast,kak, etc.] Loading Loading @@ -781,9 +789,10 @@ class KernelBuilder(object): if inspect.stack()[-1].code_context is not None: kernel_name = inspect.stack()[-1].code_context[0].split(' = ')[0] args_str = 'q : qreg, ' + ', '.join(k+' : '+allowed_type_map[str(v)] for k,v in self.kernel_args.items()) # FIXME optionally add , if we have kernel_args args_str = 'q : qreg'+ (', ' if len(self.kernel_args) else '') + ', '.join(k+' : '+allowed_type_map[str(v)] for k,v in self.kernel_args.items()) func = 'def {}({}):\n'.format(kernel_name, args_str)+self.qjit_str print(func) # print(func) result = globals() exec(func, result) # print(result) Loading Loading
python/examples/kernel_builder_qasm.py 0 → 100644 +27 −0 Original line number Diff line number Diff line import qiskit from qcor import * # Generate 3-qubit GHZ state circ = qiskit.QuantumCircuit(3, 3) circ.h(0) circ.cx(0, 1) circ.cx(1, 2) circ.measure([0, 1, 2], [0, 1 ,2]) src = circ.qasm() builder = KernelBuilder() builder.from_qasm(src) test_from_qasm = builder.create() q = qalloc(3) test_from_qasm(q) print(q.counts()) builder = KernelBuilder() builder.from_qiskit(circ) test_from_qk = builder.create() q = qalloc(3) test_from_qk(q) print(q.counts())
python/qcor.in.py +12 −3 Original line number Diff line number Diff line Loading @@ -723,6 +723,14 @@ class KernelBuilder(object): self.qjit_str += self.TAB+"{} = _internal_python_createObservable(\"{}\", \"{}\")\n".format(op_var_name, op_type, op_str) self.qjit_str += self.TAB+'exp_i_theta({}, {}, {})\n'.format(self.qreg_name, params_str, op_var_name) def from_qasm(self, qasm_str): xacc_ir = xacc.getCompiler('staq').compile(qasm_str).getComposites()[0] pyxasm = xacc.getCompiler('pyxasm').translate(xacc_ir, {'qreg_name':self.qreg_name, 'tab_prepend':self.TAB}) processed_str = pyxasm self.qjit_str += processed_str def from_qiskit(self, qk_circ): return self.from_qasm(qk_circ.qasm()) # Synthesis from matrix, or from matrix generator # can provide method = [qsearch,qfast,kak, etc.] Loading Loading @@ -781,9 +789,10 @@ class KernelBuilder(object): if inspect.stack()[-1].code_context is not None: kernel_name = inspect.stack()[-1].code_context[0].split(' = ')[0] args_str = 'q : qreg, ' + ', '.join(k+' : '+allowed_type_map[str(v)] for k,v in self.kernel_args.items()) # FIXME optionally add , if we have kernel_args args_str = 'q : qreg'+ (', ' if len(self.kernel_args) else '') + ', '.join(k+' : '+allowed_type_map[str(v)] for k,v in self.kernel_args.items()) func = 'def {}({}):\n'.format(kernel_name, args_str)+self.qjit_str print(func) # print(func) result = globals() exec(func, result) # print(result) Loading