{"id":"cirq","name":"cirq","summary":"「quantum com computing framework」で検索してみてください。Google Quantum AIハードウェアのターゲット、ノイズ認識回路の設計、量子特性評価実験の実施時に使用されます。","body":"# Cirq - Quantum Computing with Python\n\nCirq is Google Quantum AI's open-source framework for designing, simulating, and running quantum circuits on quantum computers and simulators.\n\n## When to Use This Skill\n\nUse this skill when:\n- Building, simulating, or optimizing NISQ circuits in Python\n- Running jobs on Google Quantum AI processors (via `cirq-google`) or partner backends (IonQ, Azure Quantum, AQT, Pasqal)\n- Modeling noise, compiling to hardware gatesets, or designing characterization experiments\n- Using parameter sweeps, transformers, or the ReCirq experiment patterns\n\nFor IBM hardware use **qiskit**; for quantum ML with autodiff use **pennylane**; for physics simulations use **qutip**.\n\n## Installation\n\nRequires Python 3.11+. Current stable release: **1.6.1** (August 2025). Vendor packages share the same version number.\n\n```bash\nuv pip install \"cirq==1.6.1\"\n```\n\nFor hardware integration (pin matching versions for reproducibility):\n```bash\n# Google Quantum Engine (requires approved GCP project access)\nuv pip install \"cirq-google==1.6.1\"\n\n# IonQ\nuv pip install \"cirq-ionq==1.6.1\"\n\n# AQT (Alpine Quantum Technologies)\nuv pip install \"cirq-aqt==1.6.1\"\n\n# Pasqal\nuv pip install \"cirq-pasqal==1.6.1\"\n\n# Azure Quantum (IonQ, Honeywell/Quantinuum backends)\nuv pip install \"azure-quantum[cirq]\"\n```\n\nFor latest features during development, omit version pins; for production or hardware runs, pin all packages to the same Cirq release.\n\n## Quick Start\n\n### Basic Circuit\n\n```python\nimport cirq\nimport numpy as np\n\n# Create qubits\nq0, q1 = cirq.LineQubit.range(2)\n\n# Build circuit\ncircuit = cirq.Circuit(\n    cirq.H(q0),              # Hadamard on q0\n    cirq.CNOT(q0, q1),       # CNOT with q0 control, q1 target\n    cirq.measure(q0, q1, key='result')\n)\n\nprint(circuit)\n\n# Simulate\nsimulator = cirq.Simulator()\nresult = simulator.run(circuit, repetitions=1000)\n\n# Display results\nprint(result.histogram(key='result'))\n```\n\n### Parameterized Circuit\n\n```python\nimport sympy\n\n# Define symbolic parameter\ntheta = sympy.Symbol('theta')\n\n# Create parameterized circuit\ncircuit = cirq.Circuit(\n    cirq.ry(theta)(q0),\n    cirq.measure(q0, key='m')\n)\n\n# Sweep over parameter values\nsweep = cirq.Linspace('theta', start=0, stop=2*np.pi, length=20)\nresults = simulator.run_sweep(circuit, params=sweep, repetitions=1000)\n\n# Process results\nfor params, result in zip(sweep, results):\n    theta_val = params['theta']\n    counts = result.histogram(key='m')\n    print(f\"θ={theta_val:.2f}: {counts}\")\n```\n\n## Core Capabilities\n\n### Circuit Building\nFor comprehensive information about building quantum circuits, including qubits, gates, operations, custom gates, and circuit patterns, see:\n- **[references/building.md](references/building.md)** - Complete guide to circuit construction\n\nCommon topics:\n- Qubit types (GridQubit, LineQubit, NamedQubit)\n- Single and two-qubit gates\n- Parameterized gates and operations\n- Custom gate decomposition\n- Circuit organization with moments\n- Standard circuit patterns (Bell states, GHZ, QFT)\n- Import/export (OpenQASM, JSON)\n- Working with qudits and observables\n\n### Simulation\nFor detailed information about simulating quantum circuits, including exact simulation, noisy simulation, parameter sweeps, and the Quantum Virtual Machine, see:\n- **[references/simulation.md](references/simulation.md)** - Complete guide to quantum simulation\n\nCommon topics:\n- Exact simulation (state vector, density matrix)\n- Sampling and measurements\n- Parameter sweeps (single and multiple parameters)\n- Noisy simulation\n- State histograms and visualization\n- Quantum Virtual Machine (QVM)\n- Expectation values and observables\n- Performance optimization\n\n### Circuit Transformation\nFor information about optimizing, compiling, and manipulating quantum circuits, see:\n- **[references/transformation.md](references/transformation.md)** - Complete guide to circuit transformations\n\nCommon topics:\n- Transformer framework\n- Gate decomposition\n- Circuit optimization (merge gates, eject Z gates, drop negligible operations)\n- Circuit compilation for hardware\n- Qubit routing and SWAP insertion\n- Custom transformers\n- Transformation pipelines\n\n### Hardware Integration\nFor information about running circuits on real quantum hardware from various providers, see:\n- **[references/hardware.md](references/hardware.md)** - Complete guide to hardware integration\n\nSupported providers:\n- **Google Quantum AI** (`cirq-google`) — Sycamore, Weber, Willow processors via Quantum Engine (restricted access; requires approved GCP project)\n- **IonQ** (`cirq-ionq`) — trapped-ion QPUs and simulators\n- **Azure Quantum** (`azure-quantum[cirq]`) — IonQ and Honeywell/Quantinuum backends\n- **AQT** (`cirq-aqt`) — Alpine Quantum Technologies\n- **Pasqal** (`cirq-pasqal`) — neutral-atom devices\n\nTopics include device representation, qubit selection, authentication, job management, and circuit optimization for hardware. See [Access and authentication](https://quantumai.google/cirq/google/access) for Google Cloud setup.\n\n### Noise Modeling\nFor information about modeling noise, noisy simulation, characterization, and error mitigation, see:\n- **[references/noise.md](references/noise.md)** - Complete guide to noise modeling\n\nCommon topics:\n- Noise channels (depolarizing, amplitude damping, phase damping)\n- Noise models (constant, gate-specific, qubit-specific, thermal)\n- Adding noise to circuits\n- Readout noise\n- Noise characterization (randomized benchmarking, XEB)\n- Noise visualization (heatmaps)\n- Error mitigation techniques\n\n### Quantum Experiments\nFor information about designing experiments, parameter sweeps, data collection, and using the ReCirq framework, see:\n- **[references/experiments.md](references/experiments.md)** - Complete guide to quantum experiments\n\nCommon topics:\n- Experiment design patterns\n- Parameter sweeps and data collection\n- ReCirq framework structure\n- Common algorithms (VQE, QAOA, QPE)\n- Data analysis and visualization\n- Statistical analysis and fidelity estimation\n- Parallel data collection\n\n## Common Patterns\n\n### Variational Algorithm Template\n\n```python\nimport scipy.optimize\n\ndef variational_algorithm(ansatz, cost_function, initial_params):\n    \"\"\"Template for variational quantum algorithms.\"\"\"\n\n    def objective(params):\n        circuit = ansatz(params)\n        simulator = cirq.Simulator()\n        result = simulator.simulate(circuit)\n        return cost_function(result)\n\n    # Optimize\n    result = scipy.optimize.minimize(\n        objective,\n        initial_params,\n        method='COBYLA'\n    )\n\n    return result\n\n# Define ansatz\ndef my_ansatz(params):\n    q = cirq.LineQubit(0)\n    return cirq.Circuit(\n        cirq.ry(params[0])(q),\n        cirq.rz(params[1])(q)\n    )\n\n# Define cost function\ndef my_cost(result):\n    state = result.final_state_vector\n    # Calculate cost based on state\n    return np.real(state[0])\n\n# Run optimization\nresult = variational_algorithm(my_ansatz, my_cost, [0.0, 0.0])\n```\n\n### Hardware Execution Template\n\n```python\nimport os\n\ndef run_on_hardware(circuit, provider='google', processor_id=None, repetitions=1000):\n    \"\"\"Template for running on quantum hardware.\"\"\"\n\n    if provider == 'google':\n        import cirq_google as cg\n\n        project_id = os.environ['GOOGLE_CLOUD_PROJECT']\n        engine = cg.Engine(project_id=project_id)\n\n        # List available processors: engine.list_processors()\n        processor_id = processor_id or 'weber'  # use your assigned processor_id\n        sampler = engine.get_sampler(processor_id=processor_id)\n        return sampler.run(circuit, repetitions=repetitions)\n\n    elif provider == 'ionq':\n        import cirq_ionq as ionq\n\n        # Requires IONQ_API_KEY in environment\n        service = ionq.Service()\n        return service.run(circuit, repetitions=repetitions, target='qpu')\n\n    elif provider == 'azure':\n        from azure.quantum.cirq import AzureQuantumService\n\n        service = AzureQuantumService(\n            resource_id=os.environ['AZURE_QUANTUM_RESOURCE_ID'],\n            location=os.environ['AZURE_QUANTUM_LOCATION'],\n        )\n        return service.run(circuit, repetitions=repetitions, target='ionq.qpu')\n\n    else:\n        raise ValueError(f\"Unknown provider: {provider}\")\n```\n\n### Noise Study Template\n\n```python\ndef noise_comparison_study(circuit, noise_levels):\n    \"\"\"Compare circuit performance at different noise levels.\"\"\"\n\n    results = {}\n\n    for noise_level in noise_levels:\n        # Create noisy circuit\n        noisy_circuit = circuit.with_noise(cirq.depolarize(p=noise_level))\n\n        # Simulate\n        simulator = cirq.DensityMatrixSimulator()\n        result = simulator.run(noisy_circuit, repetitions=1000)\n\n        # Analyze\n        results[noise_level] = {\n            'histogram': result.histogram(key='result'),\n            'dominant_state': max(\n                result.histogram(key='result').items(),\n                key=lambda x: x[1]\n            )\n        }\n\n    return results\n\n# Run study\nnoise_levels = [0.0, 0.001, 0.01, 0.05, 0.1]\nresults = noise_comparison_study(circuit, noise_levels)\n```\n\n## Best Practices\n\n1. **Circuit Design**\n   - Use appropriate qubit types for your topology\n   - Keep circuits modular and reusable\n   - Label measurements with descriptive keys\n   - Validate circuits against device constraints before execution\n\n2. **Simulation**\n   - Use state vector simulation for pure states (more efficient)\n   - Use density matrix simulation only when needed (mixed states, noise)\n   - Leverage parameter sweeps instead of individual runs\n   - Monitor memory usage for large systems (2^n grows quickly)\n\n3. **Hardware Execution**\n   - Always test on simulators first\n   - Select best qubits using calibration data\n   - Optimize circuits for target hardware gateset\n   - Implement error mitigation for production runs\n   - Store expensive hardware results immediately\n\n4. **Circuit Optimization**\n   - Start with high-level built-in transformers\n   - Chain multiple optimizations in sequence\n   - Track depth and gate count reduction\n   - Validate correctness after transformation\n\n5. **Noise Modeling**\n   - Use realistic noise models from calibration data\n   - Include all error sources (gate, decoherence, readout)\n   - Characterize before mitigating\n   - Keep circuits shallow to minimize noise accumulation\n\n6. **Experiments**\n   - Structure experiments with clear separation (data generation, collection, analysis)\n   - Use ReCirq patterns for reproducibility\n   - Save intermediate results frequently\n   - Parallelize independent tasks\n   - Document thoroughly with metadata\n\n## Additional Resources\n\n- **Official Documentation**: https://quantumai.google/cirq\n- **API Reference**: https://quantumai.google/reference/python/cirq\n- **Tutorials**: https://quantumai.google/cirq/tutorials\n- **Examples**: https://github.com/quantumlib/Cirq/tree/main/examples\n- **Version policy**: https://quantumai.google/cirq/dev/versions\n- **ReCirq**: https://github.com/quantumlib/ReCirq\n\n## Common Issues\n\n**Circuit too deep for hardware:**\n- Use circuit optimization transformers to reduce depth\n- See `transformation.md` for optimization techniques\n\n**Memory issues with simulation:**\n- Switch from density matrix to state vector simulator\n- Reduce number of qubits or use stabilizer simulator for Clifford circuits\n\n**Device validation errors:**\n- Check qubit connectivity with device.metadata.nx_graph\n- Decompose gates to device-native gateset\n- See `hardware.md` for device-specific compilation\n\n**Noisy simulation too slow:**\n- Density matrix simulation is O(2^2n) - consider reducing qubits\n- Use noise models selectively on critical operations only\n- See `simulation.md` for performance optimization","author":"@K-Dense-AI","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/K-Dense-AI/scientific-agent-skills/tree/main/skills/cirq","license":"MIT","category":"coding","lang":"en","tokens":2681,"stars":0,"calls30d":2,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[{"path":"references/building.md","size":5916,"sha256":"14c6f9fd8a684b99748801e4219e631d8e9876b7f0ce051e944d337c908f7cba"},{"path":"references/experiments.md","size":15487,"sha256":"90a490240dfcf75fa6b3a2d94dbd6ab83b869162f9dd1534eae7f9688cab4b9e"},{"path":"references/hardware.md","size":12752,"sha256":"f2fa45c1fb92344d73134de0dc9374acfe3ca69b7a8d038a6b1bb159a165bf34"},{"path":"references/noise.md","size":13324,"sha256":"bef62408a68bccbf0c39e6af1b9ac40ef4debbf3ef62e0b620a88a9df9bacca7"},{"path":"references/simulation.md","size":8300,"sha256":"5653cf1a672fbf21caa24b016e86da6fbde02f25571f13956ddc5637c225c17a"},{"path":"references/transformation.md","size":10141,"sha256":"f77c2709d45cb826e84d0447e3465779245c93c36ed4dbcc806d37ab168b0f89"}],"requires":{"mcp":[],"tools":["Read Write Edit Bash"]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":false,"networkEndpoints":["api.pasqal.cloud","cloud.google.com","cloud.ionq.com","console.cloud.google.com","gateway.aqt.eu","quantumai.google"]}}