qrisp_to_iqm_converter#
Module: iqm.qrisp_iqm
- iqm.qrisp_iqm.qrisp_to_iqm_converter(qc: QuantumCircuit, dqa: DynamicQuantumArchitecture, circuit_name: str = 'Qrisp_converted') Circuit#
Converts a Qrisp QuantumCircuit to an IQM
Circuit.The circuit should already be transpiled to native gates (CZ, PRX) and have a valid qubit layout. For a one-step transpile-and-convert workflow, use
transpile_to_iqm()followed by this function.- Parameters:
qc (QuantumCircuit) – The Qrisp circuit to convert. Must already be transpiled to IQM-native gates (CZ, PRX).
dqa (DynamicQuantumArchitecture) – Determines the physical qubit names and available gate loci.
dqamaps Qrisp’squbits[i]to the i-th physical qubit name (QB1,QB2, …) in the IQM device.circuit_name (str) – Name assigned to the output IQM circuit.
- Returns:
qcconverted to IQM circuit format.- Raises:
ValueError – If the circuit has more qubits than the DQA.
Exception – If an unknown gate type is encountered (circuit was not properly transpiled).
- Return type:
Examples
from qrisp import QuantumCircuit from iqm.qrisp_iqm import transpile_to_iqm, qrisp_to_iqm_converter # 1. Create and transpile a Qrisp circuit qc = QuantumCircuit(3) qc.h(0) qc.cx(0, 2) qc.measure(range(3)) coupling_map = [(0, 1), (1, 2), (2, 3)] transpiled = transpile_to_iqm(qc, coupling_map) # 2. Obtain the IQM device DQA from iqm.iqm_client import IQMClient client = IQMClient( iqm_server_url="https://resonance.iqm.tech/", quantum_computer="garnet", token="YOUR_API_TOKEN", ) dqa = client.get_dynamic_quantum_architecture() # 3. Convert the transpiled circuit to IQM format iqm_circuit = qrisp_to_iqm_converter(transpiled, dqa) print(iqm_circuit) # Yields: # Circuit( # name='Qrisp_converted', # instructions=( # CircuitOperation(name='prx', locus=('QB1',), # args={'angle': 1.5707963267948966, 'phase': 6.283185307179586}, implementation=None), # CircuitOperation(name='prx', locus=('QB2',), # args={'angle': 1.5707963267948966, 'phase': 6.283185307179586}, implementation=None), # CircuitOperation(name='cz', locus=('QB1', 'QB2'), args={}, implementation=None), # CircuitOperation(name='measure', locus=('QB1',), args={'key': 'cb_0'}, implementation=None), # CircuitOperation(name='measure', locus=('QB3',), args={'key': 'cb_0'}, implementation=None), # CircuitOperation(name='prx', locus=('QB2',), # args={'angle': 1.5707963267948966, 'phase': 3.141592653589793}, implementation=None), # CircuitOperation(name='measure', locus=('QB2',), args={'key': 'cb_0'}, implementation=None)), # metadata=None, # )
The printed IQM circuit shows each gate as a
CircuitOperationwith its name, locus (target qubits), and arguments.