mcpField
C
cirq

cirq

github.com/davila7开发33.1k214 次安装今天更新
代码仓库

关于 cirq

Cirq 是面向量子研究者和开发者的开源 Python 框架,可用于设计、模拟和运行量子电路。它整合电路构建与转换、噪声建模,以及连接量子硬件提供商的能力。

主要功能

  1. 01量子电路构建
  2. 02精确与含噪模拟
  3. 03电路优化与编译
  4. 04量子硬件提供商集成
  5. 05噪声建模与误差缓解
  6. 06实验设计与数据分析

适用场景

  1. 01构建参数化量子电路
  2. 02模拟电路并比较噪声水平
  3. 03为目标硬件编译电路
  4. 04执行量子实验并分析结果

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/davila7/claude-code-templates --skill cirq

安装后在 Claude Code 中输入/cirq确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
building.md
experiments.md
hardware.md
noise.md
simulation.md
transformation.md

详细介绍

Cirq - 使用 Python 进行量子计算

Cirq 是 Google Quantum AI 的开源框架,用于在量子计算机和模拟器上设计、模拟和运行量子电路。

安装

uv pip install cirq

硬件集成:

# Google Quantum Engine
uv pip install cirq-google

# IonQ
uv pip install cirq-ionq

# AQT (Alpine Quantum Technologies)
uv pip install cirq-aqt

# Pasqal
uv pip install cirq-pasqal

# Azure Quantum
uv pip install azure-quantum cirq

快速入门

基本电路
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'))
参数化电路
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}")

核心功能

电路构建

有关构建量子电路的全面信息,包括量子比特、门、操作、自定义门和电路模式,请参阅:

常见主题:

  • 量子比特类型(GridQubit、LineQubit、NamedQubit)
  • 单量子比特门和双量子比特门
  • 参数化门和操作
  • 自定义门分解
  • 使用 moment 组织电路
  • 标准电路模式(Bell 态、GHZ、QFT)
  • 导入/导出(OpenQASM、JSON)
  • 使用量子多能级系统和可观测量
模拟

有关模拟量子电路的详细信息,包括精确模拟、含噪模拟、参数扫描和量子虚拟机,请参阅:

常见主题:

  • 精确模拟(状态向量、密度矩阵)
  • 采样和测量
  • 参数扫描(单个和多个参数)
  • 含噪模拟
  • 状态直方图和可视化
  • 量子虚拟机(QVM)
  • 期望值和可观测量
  • 性能优化
电路变换

有关量子电路优化、编译和操作的信息,请参阅:

常见主题:

  • 变换器框架
  • 门分解
  • 电路优化(合并门、移出 Z 门、丢弃可忽略的操作)
  • 面向硬件的电路编译
  • 量子比特路由和插入 SWAP
  • 自定义变换器
  • 变换流水线
硬件集成

有关在各提供商的真实量子硬件上运行电路的信息,请参阅:

支持的提供商:

  • Google Quantum AI(cirq-google)- Sycamore、Weber 处理器
  • IonQ(cirq-ionq)- 离子阱量子计算机
  • Azure Quantum(azure-quantum)- IonQ 和 Honeywell 后端
  • AQT(cirq-aqt)- Alpine Quantum Technologies
  • Pasqal(cirq-pasqal)- 中性原子量子计算机

主题包括设备表示、量子比特选择、身份验证、作业管理,以及面向硬件的电路优化。

噪声建模

有关噪声建模、含噪模拟、表征和误差缓解的信息,请参阅:

常见主题:

  • 噪声通道(退极化、振幅阻尼、相位阻尼)
  • 噪声模型(恒定、特定于门、特定于量子比特、热噪声)
  • 向电路添加噪声
  • 读出噪声
  • 噪声表征(随机基准测试、XEB)
  • 噪声可视化(热图)
  • 误差缓解技术
量子实验

有关实验设计、参数扫描、数据收集和使用 ReCirq 框架的信息,请参阅:

常见主题:

  • 实验设计模式
  • 参数扫描和数据收集
  • ReCirq 框架结构
  • 常见算法(VQE、QAOA、QPE)
  • 数据分析和可视化
  • 统计分析和保真度估计
  • 并行数据收集

常见模式

变分算法模板
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])
硬件执行模板
def run_on_hardware(circuit, provider='google', device_name='weber', repetitions=1000):
    """Template for running on quantum hardware."""

    if provider == 'google':
        import cirq_google
        engine = cirq_google.get_engine()
        processor = engine.get_processor(device_name)
        job = processor.run(circuit, repetitions=repetitions)
        return job.results()[0]

    elif provider == 'ionq':
        import cirq_ionq
        service = cirq_ionq.Service()
        result = service.run(circuit, repetitions=repetitions, target='qpu')
        return result

    elif provider == 'azure':
        from azure.quantum.cirq import AzureQuantumService
        # Setup workspace...
        service = AzureQuantumService(workspace)
        result = service.run(circuit, repetitions=repetitions, target='ionq.qpu')
        return result

    else:
        raise ValueError(f"Unknown provider: {provider}")
噪声研究模板
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)

最佳实践

  1. 电路设计

    • 根据拓扑选择合适的量子比特类型
    • 保持电路模块化且可复用
    • 使用描述性键为测量结果添加标签
    • 执行前,根据设备约束验证电路
  2. 模拟

    • 对纯态使用状态向量模拟(效率更高)
    • 仅在必要时使用密度矩阵模拟(混合态、噪声)
    • 利用参数扫描代替单独运行
    • 监控大型系统的内存使用量(2^n 会迅速增长)
  3. 硬件执行

    • 始终先在模拟器上测试
    • 根据校准数据选择最佳量子比特
    • 针对目标硬件门集优化电路
    • 在生产运行中实施误差缓解
    • 立即保存成本高昂的硬件运行结果
  4. 电路优化

    • 从高级内置转换器开始
    • 按顺序串联多项优化
    • 跟踪深度和门数的减少情况
    • 转换后验证正确性
  5. 噪声建模

    • 使用基于校准数据的真实噪声模型
    • 纳入所有误差源(门、退相干、读出)
    • 先进行表征,再进行缓解
    • 保持电路浅层,以尽量减少噪声累积
  6. 实验

    • 明确划分实验阶段(数据生成、收集、分析)
    • 使用 ReCirq 模式确保可复现性
    • 频繁保存中间结果
    • 并行执行相互独立的任务
    • 使用元数据详尽记录

更多资源

常见问题

电路对硬件来说太深:

  • 使用电路优化转换器降低深度
  • 请参阅 transformation.md 了解优化技术

模拟时出现内存问题:

  • 从密度矩阵模拟器切换到状态向量模拟器
  • 减少量子比特数量,或对 Clifford 电路使用稳定子模拟器

设备验证错误:

  • 使用 device.metadata.nx_graph 检查量子比特连通性
  • 将门分解为设备原生门集
  • 请参阅 hardware.md 了解特定设备的编译方法

噪声模拟速度太慢:

  • 密度矩阵模拟的复杂度为 O(2^2n)——可考虑减少量子比特数量
  • 仅在关键操作上选择性使用噪声模型
  • 请参阅 simulation.md 了解性能优化方法

评论

支持 Markdown