qbraid.transpiler.cirq_qasm package

Submodules

qbraid.transpiler.cirq_qasm.qasm_conversions module

Module for conversions between Cirq Circuits and QASM strings

to_qasm(circuit, header=None, precision=10, qubit_order=<cirq.ops.qubit_order.QubitOrder object>)[source]

Returns a QASM string representing the input Cirq circuit.

Parameters

circuit (Circuit) – Cirq circuit to convert to a QASM string.

Returns

QASM string equivalent to the input Cirq circuit.

Return type

QASMType

from_qasm(qasm)[source]

Returns a Cirq circuit equivalent to the input QASM string.

Parameters

qasm (str) – QASM string to convert to a Cirq circuit.

Return type

Circuit

Returns

Cirq circuit representation equivalent to the input QASM string.

qbraid.transpiler.cirq_qasm.qasm_parser module

Module defining qBraid Cirq QASM parser.

class Qasm(supported_format, qelib1_include, qregs, cregs, c)[source]

Bases: object

Qasm stores the final result of the Qasm parsing.

class QasmGateStatement(qasm_gate, cirq_gate, num_params, num_args)[source]

Bases: object

Specifies how to convert a call to an OpenQASM gate to a list of cirq.GateOperation’s. Has the responsibility to validate the arguments and parameters of the call and to generate a list of corresponding cirq.GateOperation’s in the ‘on’ method.

Initializes a Qasm gate statement. :type qasm_gate: str :param qasm_gate: The symbol of the QASM gate. :type cirq_gate: Union[Gate, Callable[[List[float]], Gate]] :param cirq_gate: The gate class on the cirq side. :type num_params: int :param num_params: The number of params taken by this gate. :type num_args: int :param num_args: The number of qubits (used in validation) this gate takes.

on(params, args, lineno)[source]
Return type

Iterable[Operation]

class QasmParser[source]

Bases: object

Parser for QASM strings. .. rubric:: Example

qasm = “OPENQASM 2.0; qreg q1[2]; CX q1[0], q1[1];” parsedQasm = QasmParser().parse(qasm)

basic_gates: Dict[str, QasmGateStatement] = {'CX': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'U': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>}
qelib_gates = {'c3sqrtx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'c3sx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'c3x': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'c4x': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'ccx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'ccz': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'ch': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cp': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'crx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cry': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'crz': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cs': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'csdg': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cswap': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'csx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cu': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cu1': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cu3': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cy': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cz': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'h': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'id': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'iswap': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'p': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'r': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'rx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'ry': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'rz': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'rzz': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 's': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'sdg': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'swap': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'sx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'sxdg': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 't': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'tdg': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'u': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'u1': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'u2': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'u3': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'x': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'y': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'z': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>}
all_gates = {'CX': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'U': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'c3sqrtx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'c3sx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'c3x': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'c4x': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'ccx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'ccz': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'ch': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cp': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'crx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cry': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'crz': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cs': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'csdg': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cswap': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'csx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cu': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cu1': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cu3': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cy': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'cz': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'h': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'id': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'iswap': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'p': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'r': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'rx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'ry': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'rz': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'rzz': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 's': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'sdg': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'swap': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'sx': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'sxdg': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 't': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'tdg': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'u': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'u1': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'u2': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'u3': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'x': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'y': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>, 'z': <qbraid.transpiler.cirq_qasm.qasm_parser.QasmGateStatement object>}
tokens = ['FORMAT_SPEC', 'NUMBER', 'NATURAL_NUMBER', 'QELIBINC', 'ID', 'PI', 'QREG', 'CREG', 'MEASURE', 'ARROW']
start = 'start'
precedence = (('left', '+', '-'), ('left', '*', '/'), ('right', '^'))
p_start(p)[source]

start : qasm

p_qasm_format_only(p)[source]

qasm : format

p_qasm_no_format_specified_error(p)[source]

qasm : QELIBINC | circuit

p_qasm_include(p)[source]

qasm : qasm QELIBINC

p_qasm_circuit(p)[source]

qasm : qasm circuit

p_format(p)[source]

format : FORMAT_SPEC

p_circuit_reg(p)[source]

circuit : new_reg circuit

p_circuit_gate_or_measurement(p)[source]

circuit : circuit gate_op | circuit measurement

p_circuit_empty(p)[source]

circuit : empty

p_new_reg(p)[source]

new_reg : QREG ID ‘[‘ NATURAL_NUMBER ‘]’ ‘;’ | CREG ID ‘[‘ NATURAL_NUMBER ‘]’ ‘;’

p_gate_op_no_params(p)[source]

gate_op : ID qargs

p_gate_op_with_params(p)[source]

gate_op : ID ‘(‘ params ‘)’ qargs

p_params_multiple(p)[source]

params : expr ‘,’ params

p_params_single(p)[source]

params : expr

p_expr_term(p)[source]

expr : term

p_expr_parens(p)[source]

expr : ‘(‘ expr ‘)’

p_expr_function_call(p)[source]

expr : ID ‘(‘ expr ‘)’

p_expr_unary(p)[source]

expr : ‘-‘ expr | ‘+’ expr

p_expr_binary(p)[source]

expr : expr ‘*’ expr | expr ‘/’ expr | expr ‘+’ expr | expr ‘-‘ expr | expr ‘^’ expr

p_term(p)[source]

term : NUMBER | NATURAL_NUMBER | PI

p_args_multiple(p)[source]

qargs : qarg ‘,’ qargs

p_args_single(p)[source]

qargs : qarg ‘;’

p_quantum_arg_register(p)[source]

qarg : ID

p_classical_arg_register(p)[source]

carg : ID

make_name(idx, reg)[source]
p_quantum_arg_bit(p)[source]

qarg : ID ‘[‘ NATURAL_NUMBER ‘]’

p_classical_arg_bit(p)[source]

carg : ID ‘[‘ NATURAL_NUMBER ‘]’

p_measurement(p)[source]

measurement : MEASURE qarg ARROW carg ‘;’

p_error(p)[source]
find_column(p)[source]
p_empty(p)[source]

empty :

parse(qasm)[source]
Return type

Qasm

debug_context(p)[source]