mcpField
C
cirq

cirq

github.com/crazymsn开发2335 次安装22 周前更新
代码仓库

关于 cirq

cirq 是 Google Quantum AI 的开源 Python 量子计算框架,面向量子电路设计、模拟与实验。它涵盖电路变换、噪声建模及多家硬件平台集成。

主要功能

  1. 01构建量子电路与参数化门
  2. 02精确及含噪电路模拟
  3. 03电路优化与硬件编译
  4. 04噪声建模和误差缓解
  5. 05接入多家量子硬件

适用场景

  1. 01模拟量子算法并分析测量结果
  2. 02为量子硬件优化和编译电路
  3. 03比较不同噪声条件下的电路表现

安装

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

$npx skills add https://github.com/crazymsn/academic-skills --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