Skip to main content

Haiqu.transpile(circuits: QuantumCircuit | list[QuantumCircuit] | CircuitModel | list[CircuitModel], device: DeviceModel, **transpilation_options: Any) → CircuitModel | list[CircuitModel]

Transpile a quantum circuit for a specific device.
  • Parameters:
    • circuits (QuantumCircuit | list *[*QuantumCircuit ] | CircuitModel | list *[*CircuitModel ]) — The circuit(s) to transpile.
    • device (DeviceModel) — The target device for execution.
    • **transpilation_options — Additional arguments. See Qiskit transpiler documentation for details.
  • Returns: The transpiled quantum circuit, logged to the current experiment. : When transpiling a circuit generated by Haiqu or containing Haiqu-generated components, the transpiled circuit will be returned in form of a single gate. The metrics will contain details of the transpilation. The returned CircuitModel will be linked to the original circuit.
  • Return type: CircuitModel | list[CircuitModel]

Examples

Haiqu SDK uses the Qiskit Transpiler for transpilation of your circuits. Transpiling a circuit is as easy as follows:
>>> device = haiqu.get_device("fake_torino")
>>> transpiled_circuit = haiqu.transpile(circuit, device)
Every circuit stores the information about its transpiled versions, that can be viewed using:
>>> haiqu.list_transpiled_circuits(circuit)
It may sometimes be useful to compare the circuits resulting from transpilation with different parameters.
>>> transpiled_circuit_opt0 = haiqu.transpile(circuit, device, optimization_level=0)
>>> transpiled_circuit_opt3 = haiqu.transpile(circuit, device, optimization_level=3)
>>> haiqu.compare_metrics(transpiled_circuit_opt0, transpiled_circuit_opt3)