Introduction to Cirq

This notebook demonstrates how to run quantum circuits on VTT QX using Cirq, Google’s open-source quantum computing framework. Cirq gives you direct control over circuit construction and gate-level operations, and integrates with IQM hardware via the cirq-iqm package.

In this example, a 3-qubit GHZ state is prepared and executed on a VTT QX device, and the measurement results are printed and plotted.

Setup

This notebook uses the following requirements.

pip install "iqm-client[cirq]>=33.0.0,<34.0.0"
pip install matplotlib
import os

from iqm.cirq_iqm.iqm_sampler import IQMSampler

os.environ["IQM_TOKEN"] = ""
# TODO: Replace 'demo' with 'q5' or 'q50' to run on real hardware
sampler = IQMSampler("https://qx.vtt.fi/", quantum_computer="demo")

Job submission using Cirq

import cirq
from collections import Counter
from matplotlib import pyplot as plt

# Create named qubits (IQM uses 1-based naming)
q1, q2, q3 = cirq.NamedQubit("QB1"), cirq.NamedQubit("QB2"), cirq.NamedQubit("QB3")

# This example creates a GHZ state, replace it with your own code
circuit = cirq.Circuit(
    [
        cirq.H(q1),
        cirq.CNOT(q1, q2),
        cirq.CNOT(q1, q3),
        cirq.measure(q1, q2, q3, key="result"),
    ]
)
print(circuit)

# Execute it on the quantum computing backend
result = sampler.run(circuit, repetitions=1000)

# Print and plot the result
measurements = result.measurements["result"]
counts = Counter(["".join(map(str, row)) for row in measurements])
probs = {k: v / sum(counts.values()) for k, v in sorted(counts.items())}

print(probs)

plt.bar(probs.keys(), probs.values())
plt.xlabel("Measurement outcomes")
plt.ylabel("Probability")
plt.show()

Conclusion

This notebook demonstrated how to:

  • Connect Cirq to VTT QX using IQMSampler.
  • Define and execute a quantum circuit (GHZ state) using the Cirq framework.
  • Retrieve and visualise measurement results.

For more information, see the cirq-iqm documentation.