qat.purr.integrations.qasm module

class AbstractParser

Bases: object

can_parse(qasm)
Return type:

ParseResults

parser_language()
Return type:

Languages

abstract walk_node(node, context, builder, **kwargs)
class BitRegister(bits=None)

Bases: object

class CloudQasmParser

Bases: RestrictedQasm2Parser

QASM parser used in our QCaaS system.

class CregIndexValue(register_name, index, value)

Bases: object

Used to reference when we’re looking at a particular index in a creg variable.

property variable
class OpenPulseContext(registers=None, gates=None, variables=None, cali_methods=None)

Bases: QasmContext

class ParseResults(success, errors=None)

Bases: object

Results object for attempted parse. When coerced to a boolean matches against if parse was successful.

static failure(message)
static success()
class Qasm2Parser(order_result_vars=False, raw_results=False)

Bases: AbstractParser

ecr_gate = Instruction(name='ecr', num_qubits=2, num_clbits=0, params=[])
modify(circ)

Allows children to transform the program before validation/transforming into our AST occurs.

parse(builder, qasm)
Return type:

InstructionBuilder

parser_language()
Return type:

Languages

process_barrier(node, context, builder, **kwargs)
process_cnot(node, context, builder, **kwargs)
process_creg(node, context, builder, **kwargs)
process_delay(node, context, builder, **kwargs)
process_gate(node, context, builder, **kwargs)

Process a gate call.

process_gate_definition(node, context, _, **kwargs)
process_intrinsic(node, context, builder)
process_measure(node, context, builder, **kwargs)
process_program(builder, circ)
Return type:

InstructionBuilder

process_qreg(node, context, builder, **kwargs)
process_reset(node, context, builder, **kwargs)
process_unitary(node, context, builder, **kwargs)

Unitary in QASM terms is just U(...).

validate(circ)
walk_node(node, context, builder, **kwargs)

Process each individual QASM node, builds context or forwards processing to relevant process_x method associated with each node type.

class Qasm3Parser

Bases: Interpreter, AbstractParser

assignment(tree)
bit_declaration_statement(tree)
cal_block(tree)
calibration_definition(tree)
calibration_grammar_declaration(tree)
can_parse(qasm_str)
Return type:

ParseResults

complex_declaration_statement(tree)
extern_frame(tree)
extern_or_subroutine_call(tree)
extern_port(tree)
frame_attribute_assignment(tree)
frame_definition(tree)
gate_definition(tree)
generate_expr_list_defcal_name(name, expr_list)
get_waveform_samples(wf)
include(tree)
initalize(builder)
lark_parser = Lark(open('<string>'), parser='earley', lexer='dynamic', ...)
parse(builder, qasm_str)
parser_language()
Return type:

Languages

quantum_barrier(tree)
quantum_declaration(tree)
quantum_gate_call(tree)
quantum_measurement(tree)

Throwaway measurement that doesn’t store results into any variable.

quantum_measurement_assignment_statement(tree)
quantum_reset(tree)
return_statement(tree)
timing_box(tree)
timing_instruction(tree)

This is actually a delay instruction.

transform_to_value(child_tree, walk_variable=True, return_variable=False)
version(tree)
walk_node(node, context, builder, **kwargs)
waveform_definition(tree)
class Qasm3ParserBase

Bases: AbstractParser, QASMVisitor

add_cnot(control_qbs, target_qbs, builder)
add_creg(reg_name, reg_length, context)
add_delay(delay, qubits, builder)
add_ecr(qubits, builder)
add_if(left, right, if_body, context, builder)
add_measure(qubits, bits, builder)
add_qreg(reg_name, reg_length, context, builder)
add_reset(qubits, builder)
add_unitary(theta, phi, _lambda, qubit_or_register, builder)
load_default_gates(context)
Return type:

QasmContext

modify(prog)

Allows children to transform the program before validation/transforming into our AST occurs.

parse(builder, qasm)
Return type:

InstructionBuilder

parser_language()
Return type:

Languages

process_program(prog, context)
Return type:

InstructionBuilder

validate(prog)
visit_BinaryExpression(node, context)
visit_ClassicalDeclaration(node, context)
visit_Identifier(node, context)
visit_Include(node, context)
visit_IndexedIdentifier(node, context)
Return type:

list

visit_IntegerLiteral(node, context)
Return type:

int

visit_QuantumGate(node, context)
visit_QuantumGateDefinition(node, context)
visit_QuantumMeasurement(node, context)
visit_QuantumMeasurementStatement(node, context)
visit_QubitDeclaration(node, context)
visit_UnaryExpression(node, context)
class QasmContext(registers=None, gates=None, variables=None)

Bases: object

Container object for all data relating to the scope/pass of QASM currently under analysis.

class QubitRegister(qubits=None)

Bases: object

class Registers

Bases: object

class RestrictedQasm2Parser(allowed_gates=None, disable_if=False, *args, **kwargs)

Bases: Qasm2Parser

Parser which only allows certain gates to be passed.

validate(circ)
class UntargetedPulse(pulse_class, *args, **kwargs)

Bases: object

Pulse that currently has no device to send it down.

build_with_target(channel)
property ref_instance
extern_port_name(physical_channel)
get_frame_mappings(model)

Generate the names for frames we allow in open pulse ‘extern’ statements. Returns a dictionary mapping name->pulse channel.

get_port_mappings(model)

Generate the names for ports we allow in open pulse ‘extern’ statements. Returns a dictionary mapping name->physical channel.

get_qasm_parser(qasm_str)

Gets the appropriate QASM parser for the passed-in QASM string.

qasm_from_file(file_path)

Get QASM from a file.