{ "cells": [ { "cell_type": "markdown", "id": "27a387e3", "metadata": {}, "source": [ "# 06 - Circuit Inspection\n", "\n", "Analyze circuits: depth, gate count, drawing, operation breakdown.\n", "\n", "**Concepts:** Circuit properties, draw, copy, reset" ] }, { "cell_type": "code", "execution_count": null, "id": "694c69de", "metadata": {}, "outputs": [], "source": [ "import quantsdk as qs\n", "import math" ] }, { "cell_type": "markdown", "id": "ed7fce1b", "metadata": {}, "source": [ "## Circuit Properties" ] }, { "cell_type": "code", "execution_count": null, "id": "5a10b3a8", "metadata": {}, "outputs": [], "source": [ "circuit = qs.Circuit(4, name=\"demo\")\n", "circuit.h(0)\n", "circuit.cx(0, 1)\n", "circuit.cx(1, 2)\n", "circuit.cx(2, 3)\n", "circuit.rz(0, math.pi/4)\n", "circuit.rz(1, math.pi/4)\n", "circuit.measure_all()\n", "\n", "print(f\"Name: {circuit.name}\")\n", "print(f\"Qubits: {circuit.num_qubits}\")\n", "print(f\"Depth: {circuit.depth}\")\n", "print(f\"Gate count: {circuit.gate_count}\")\n", "print(f\"Measurements: {circuit.num_measurements}\")\n", "print(f\"\\nGate breakdown:\")\n", "for gate, count in circuit.count_ops().items():\n", " print(f\" {gate}: {count}\")" ] }, { "cell_type": "markdown", "id": "5fad7424", "metadata": {}, "source": [ "## Circuit Drawing" ] }, { "cell_type": "code", "execution_count": null, "id": "dfb06b10", "metadata": {}, "outputs": [], "source": [ "# Simple circuit\n", "bell = qs.Circuit(2, name=\"bell\").h(0).cx(0, 1).measure_all()\n", "print(bell.draw())" ] }, { "cell_type": "code", "execution_count": null, "id": "5f39b193", "metadata": {}, "outputs": [], "source": [ "# More complex circuit\n", "circuit = qs.Circuit(3, name=\"complex\")\n", "circuit.h(0).h(1).h(2)\n", "circuit.cx(0, 1).cx(1, 2)\n", "circuit.rz(0, math.pi/4)\n", "circuit.ry(1, math.pi/3)\n", "circuit.ccx(0, 1, 2)\n", "circuit.measure_all()\n", "\n", "print(circuit.draw())" ] }, { "cell_type": "markdown", "id": "c6965857", "metadata": {}, "source": [ "## Iterating Over Gates" ] }, { "cell_type": "code", "execution_count": null, "id": "bbc0bf45", "metadata": {}, "outputs": [], "source": [ "circuit = qs.Circuit(2).h(0).rx(0, math.pi/4).cx(0, 1).measure_all()\n", "\n", "print(\"Gate list:\")\n", "for gate in circuit.gates:\n", " print(f\" {gate}\")" ] }, { "cell_type": "markdown", "id": "40ee3618", "metadata": {}, "source": [ "## Copy and Reset" ] }, { "cell_type": "code", "execution_count": null, "id": "e993cdfd", "metadata": {}, "outputs": [], "source": [ "# Copy preserves the circuit\n", "original = qs.Circuit(2).h(0).cx(0, 1)\n", "copy = original.copy()\n", "copy.rz(0, math.pi) # Modify copy only\n", "\n", "print(f\"Original gates: {original.gate_count}\")\n", "print(f\"Copy gates: {copy.gate_count}\")\n", "\n", "# Reset clears all gates\n", "circuit = qs.Circuit(3).h(0).cx(0, 1).cx(1, 2)\n", "print(f\"\\nBefore reset: {circuit.gate_count} gates\")\n", "circuit.reset_circuit()\n", "print(f\"After reset: {circuit.gate_count} gates\")" ] }, { "cell_type": "markdown", "id": "f51042ef", "metadata": {}, "source": [ "## Depth Comparison" ] }, { "cell_type": "code", "execution_count": null, "id": "7033857b", "metadata": {}, "outputs": [], "source": [ "# Serial circuit (deep)\n", "serial = qs.Circuit(4)\n", "serial.h(0).cx(0, 1).cx(1, 2).cx(2, 3)\n", "\n", "# Parallel circuit (shallow)\n", "parallel = qs.Circuit(4)\n", "parallel.h(0).h(1).h(2).h(3) # All in parallel\n", "\n", "print(f\"Serial: {serial.gate_count} gates, depth {serial.depth}\")\n", "print(f\"Parallel: {parallel.gate_count} gates, depth {parallel.depth}\")" ] } ], "metadata": { "language_info": { "name": "python" } }, "nbformat": 4, "nbformat_minor": 5 }