Back to skills
SKILL.md
Alterlab Cirq
ASecurityBuilds, simulates, and runs quantum circuits with Cirq, Google Quantum AI's framework for NISQ hardware, noise-aware low-level circuit design, and noise characterization. Use when targeting Google Quantum AI processors or their Quantum Virtual Machine models (Willow, Sycamore-class Rainbow/Weber), IonQ/AQT/Pasqal via Cirq plugins, designing noise-aware NISQ circuits, or running characterization experiments (randomized benchmarking, XEB). For IBM Quantum hardware and Qiskit Runtime prefer alte...
- 68 stars
- 0 votes
- 0 copies
- 0 views
- Added May 28, 2026
Works with
Security analysis
96/100- Installs packages at runtime which could introduce malicious dependencies
Pro scans all 7 files and shows the line behind each finding
npx -y skills add AlterLab-IEU/AlterLab-Academic-Skills --skill alterlab-cirq --agent claude-codeAre you the author of Alterlab Cirq?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/alterlab-ieu-alterlab-cirq)---
name: alterlab-cirq
description: Builds, simulates, and runs quantum circuits with Cirq, Google Quantum AI's framework for NISQ hardware, noise-aware low-level circuit design, and noise characterization. Use when targeting Google Quantum AI processors or their Quantum Virtual Machine models (Willow, Sycamore-class Rainbow/Weber), IonQ/AQT/Pasqal via Cirq plugins, designing noise-aware NISQ circuits, or running characterization experiments (randomized benchmarking, XEB). For IBM Quantum hardware and Qiskit Runtime prefer alterlab-qiskit; for gradient-trained quantum ML and hybrid quantum-classical models prefer alterlab-pennylane; for open-system Lindblad/master-equation dynamics prefer alterlab-qutip. Part of the AlterLab Academic Skills suite.
license: Apache-2.0
allowed-tools: Read Write Edit Bash(python:*)
compatibility: No API key required for local simulation. Runs via `uv run python`; requires the cirq Python package. Google Quantum AI hardware access needs separate credentials.
metadata:
skill-author: AlterLab
version: "1.1.0"
last_updated: "2026-09-23"
---
# Cirq - Quantum Computing with Python
Cirq is Google Quantum AI's open-source framework for designing, simulating, and running quantum circuits on quantum computers and simulators.
## When to Use This Skill
Use this skill when the user wants to:
- Build and simulate circuits in Cirq (state-vector, density-matrix, parameter sweeps)
- Model Google hardware noise or run on the Quantum Virtual Machine (`willow_pink`, `weber`, `rainbow`)
- Submit Cirq circuits to Google Quantum Engine (approved partners), IonQ, AQT, Pasqal, or Azure Quantum
- Run characterization experiments (randomized benchmarking, XEB) or ReCirq-style studies
### Does NOT Trigger
| Scenario | Use Instead |
|----------|-------------|
| IBM Quantum hardware, Qiskit Runtime primitives, or Qiskit transpilation | `alterlab-qiskit` |
| Gradient-trained quantum ML / hybrid models with autodiff | `alterlab-pennylane` |
| Lindblad master equations, decoherence, or cavity-QED dynamics (no circuits) | `alterlab-qutip` |
## Installation
```bash
uv pip install cirq # Python ≥ 3.11; current 1.7.x as of 2026-09
```
The `cirq` package is a meta-package that already pulls in `cirq-core`, `cirq-google`,
`cirq-ionq`, `cirq-aqt`, `cirq-pasqal`, and `cirq-web`; install `cirq-core` alone for a
lightweight simulation-only environment. Optional extras:
```bash
# OpenQASM import (cirq.contrib.qasm_import needs `ply`), quimb tensor-network tools
uv pip install "cirq-core[contrib]"
# Azure Quantum — its `cirq` extra pins cirq-core 1.6.x, so use a separate environment
uv pip install "azure-quantum[cirq]"
```
## Quick Start
### Basic Circuit
```python
import cirq
import numpy as np
# Create qubits
q0, q1 = cirq.LineQubit.range(2)
# Build circuit
circuit = cirq.Circuit(
cirq.H(q0), # Hadamard on q0
cirq.CNOT(q0, q1), # CNOT with q0 control, q1 target
cirq.measure(q0, q1, key='result')
)
print(circuit)
# Simulate
simulator = cirq.Simulator()
result = simulator.run(circuit, repetitions=1000)
# Display results
print(result.histogram(key='result'))
```
### Parameterized Circuit
```python
import sympy
# Define symbolic parameter
theta = sympy.Symbol('theta')
# Create parameterized circuit
circuit = cirq.Circuit(
cirq.ry(theta)(q0),
cirq.measure(q0, key='m')
)
# Sweep over parameter values
sweep = cirq.Linspace('theta', start=0, stop=2*np.pi, length=20)
results = simulator.run_sweep(circuit, params=sweep, repetitions=1000)
# Process results
for params, result in zip(sweep, results):
theta_val = params['theta']
counts = result.histogram(key='m')
print(f"θ={theta_val:.2f}: {counts}")
```
## Core Capabilities
### Circuit Building
For comprehensive information about building quantum circuits, including qubits, gates, operations, custom gates, and circuit patterns, see:
- **[references/building.md](references/building.md)** - Complete guide to circuit construction
Common topics:
- Qubit types (GridQubit, LineQubit, NamedQubit)
- Single and two-qubit gates
- Parameterized gates and operations
- Custom gate decomposition
- Circuit organization with moments
- Standard circuit patterns (Bell states, GHZ, QFT)
- Import/export (OpenQASM, JSON)
- Working with qudits and observables
### Simulation
For detailed information about simulating quantum circuits, including exact simulation, noisy simulation, parameter sweeps, and the Quantum Virtual Machine, see:
- **[references/simulation.md](references/simulation.md)** - Complete guide to quantum simulation
Common topics:
- Exact simulation (state vector, density matrix)
- Sampling and measurements
- Parameter sweeps (single and multiple parameters)
- Noisy simulation
- State histograms and visualization
- Quantum Virtual Machine (QVM)
- Expectation values and observables
- Performance optimization
### Circuit Transformation
For information about optimizing, compiling, and manipulating quantum circuits, see:
- **[references/transformation.md](references/transformation.md)** - Complete guide to circuit transformations
Common topics:
- Transformer framework
- Gate decomposition
- Circuit optimization (merge gates, eject Z gates, drop negligible operations)
- Circuit compilation for hardware
- Qubit routing and SWAP insertion
- Custom transformers
- Transformation pipelines
### Hardware Integration
For information about running circuits on real quantum hardware from various providers, see:
- **[references/hardware.md](references/hardware.md)** - Complete guide to hardware integration
Supported providers:
- **Google Quantum AI** (cirq-google) - Quantum Engine for approved partners; Quantum Virtual Machine models `willow_pink`, `weber`, `rainbow` for everyone
- **IonQ** (cirq-ionq) - Trapped ion quantum computers
- **Azure Quantum** (azure-quantum) - IonQ and Quantinuum targets
- **AQT** (cirq-aqt) - Alpine Quantum Technologies (ARNICA API; workspace + resource IDs)
- **Pasqal** (cirq-pasqal) - Neutral atom quantum computers
Topics include device representation, qubit selection, authentication, job management, and circuit optimization for hardware.
### Noise Modeling
For information about modeling noise, noisy simulation, characterization, and error mitigation, see:
- **[references/noise.md](references/noise.md)** - Complete guide to noise modeling
Common topics:
- Noise channels (depolarizing, amplitude damping, phase damping)
- Noise models (constant, gate-specific, qubit-specific, thermal)
- Adding noise to circuits
- Readout noise
- Noise characterization (randomized benchmarking, XEB)
- Noise visualization (heatmaps)
- Error mitigation techniques
### Quantum Experiments
For information about designing experiments, parameter sweeps, data collection, and using the ReCirq framework, see:
- **[references/experiments.md](references/experiments.md)** - Complete guide to quantum experiments
Common topics:
- Experiment design patterns
- Parameter sweeps and data collection
- ReCirq framework structure
- Common algorithms (VQE, QAOA, QPE)
- Data analysis and visualization
- Statistical analysis and fidelity estimation
- Parallel data collection
## Common Patterns
### Variational Algorithm Template
```python
import scipy.optimize
def variational_algorithm(ansatz, cost_function, initial_params):
"""Template for variational quantum algorithms."""
def objective(params):
circuit = ansatz(params)
simulator = cirq.Simulator()
result = simulator.simulate(circuit)
return cost_function(result)
# Optimize
result = scipy.optimize.minimize(
objective,
initial_params,
method='COBYLA'
)
return result
# Define ansatz
def my_ansatz(params):
q = cirq.LineQubit(0)
return cirq.Circuit(
cirq.ry(params[0])(q),
cirq.rz(params[1])(q)
)
# Define cost function
def my_cost(result):
state = result.final_state_vector
# Calculate cost based on state
return np.real(state[0])
# Run optimization
result = variational_algorithm(my_ansatz, my_cost, [0.0, 0.0])
```
### Hardware Execution Template
```python
def run_on_hardware(circuit, provider='google', device_name='<processor_id>',
device_config='<config_name>', target='ionq.simulator',
repetitions=1000):
"""Template for running on quantum hardware."""
if provider == 'google':
# Approved Quantum Engine users only; otherwise use the Quantum Virtual Machine
# (cirq_google.engine.create_default_noisy_quantum_virtual_machine).
import cirq_google
engine = cirq_google.get_engine() # uses GOOGLE_CLOUD_PROJECT
processor = engine.get_processor(device_name)
# cirq-google 1.7: device_config_name is required (see processor.list_configs())
# and run() returns a cirq.Result directly.
return processor.run(circuit, device_config_name=device_config,
repetitions=repetitions)
elif provider == 'ionq':
import cirq_ionq
service = cirq_ionq.Service() # reads IONQ_API_KEY
return service.run(circuit, repetitions=repetitions, target='qpu')
elif provider == 'azure':
from azure.quantum.cirq import AzureQuantumService
# Setup workspace...
service = AzureQuantumService(workspace)
# Target names are system-specific (e.g. 'ionq.qpu.forte-1'); see service.targets()
return service.run(circuit, repetitions=repetitions, target=target)
else:
raise ValueError(f"Unknown provider: {provider}")
```
### Noise Study Template
```python
def noise_comparison_study(circuit, noise_levels):
"""Compare circuit performance at different noise levels."""
results = {}
for noise_level in noise_levels:
# Create noisy circuit
noisy_circuit = circuit.with_noise(cirq.depolarize(p=noise_level))
# Simulate
simulator = cirq.DensityMatrixSimulator()
result = simulator.run(noisy_circuit, repetitions=1000)
# Analyze
results[noise_level] = {
'histogram': result.histogram(key='result'),
'dominant_state': max(
result.histogram(key='result').items(),
key=lambda x: x[1]
)
}
return results
# Run study
noise_levels = [0.0, 0.001, 0.01, 0.05, 0.1]
results = noise_comparison_study(circuit, noise_levels)
```
## Best Practices
1. **Circuit Design**
- Use appropriate qubit types for your topology
- Keep circuits modular and reusable
- Label measurements with descriptive keys
- Validate circuits against device constraints before execution
2. **Simulation**
- Use state vector simulation for pure states (more efficient)
- Use density matrix simulation only when needed (mixed states, noise)
- Leverage parameter sweeps instead of individual runs
- Monitor memory usage for large systems (2^n grows quickly)
3. **Hardware Execution**
- Always test on simulators first
- Select best qubits using calibration data
- Optimize circuits for target hardware gateset
- Implement error mitigation for production runs
- Store expensive hardware results immediately
4. **Circuit Optimization**
- Start with high-level built-in transformers
- Chain multiple optimizations in sequence
- Track depth and gate count reduction
- Validate correctness after transformation
5. **Noise Modeling**
- Use realistic noise models from calibration data
- Include all error sources (gate, decoherence, readout)
- Characterize before mitigating
- Keep circuits shallow to minimize noise accumulation
6. **Experiments**
- Structure experiments with clear separation (data generation, collection, analysis)
- Use ReCirq patterns for reproducibility
- Save intermediate results frequently
- Parallelize independent tasks
- Document thoroughly with metadata
## Additional Resources
- **Official Documentation**: https://quantumai.google/cirq
- **API Reference**: https://quantumai.google/reference/python/cirq
- **Tutorials**: https://quantumai.google/cirq/tutorials
- **Examples**: https://github.com/quantumlib/Cirq/tree/main/examples
- **ReCirq**: https://github.com/quantumlib/ReCirq
## Common Issues
**Circuit too deep for hardware:**
- Use circuit optimization transformers to reduce depth
- See `transformation.md` for optimization techniques
**Memory issues with simulation:**
- Switch from density matrix to state vector simulator
- Reduce number of qubits or use stabilizer simulator for Clifford circuits
**Device validation errors:**
- Check qubit connectivity with device.metadata.nx_graph
- Decompose gates to device-native gateset
- See `hardware.md` for device-specific compilation
Part of the AlterLab Academic Skills suite.
**Noisy simulation too slow:**
- Density matrix simulation is O(2^2n) - consider reducing qubits
- Use noise models selectively on critical operations only
- See `simulation.md` for performance optimization
Files in this skill
- SKILL.md
- references/building.md
- references/experiments.md
- references/hardware.md
- references/noise.md
- references/simulation.md
- references/transformation.md
Attribution
Comments
Loading comments…