mcpField
C
cirq

cirq

github.com/kalarislabs其他7339 次安装3 天前更新
代码仓库

关于 cirq

用于使用 Cirq 的技能;Cirq 是 Google 的开源 Python 量子电路框架,支持电路设计、模拟和硬件执行,涵盖噪声研究及在 Google 和合作方后端开展实验。

主要功能

  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/kalarislabs/research-agent-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 的开源框架,用于在量子计算机和模拟器上设计、模拟和运行量子线路。

何时使用此技能

在以下情况下使用此技能:

  • 使用 Python 构建、模拟或优化 NISQ 线路
  • 在 Google Quantum AI 处理器(通过 cirq-google)或合作伙伴后端(IonQ、Azure Quantum、AQT、Pasqal)上运行作业
  • 对噪声进行建模、编译到硬件门集,或设计表征实验
  • 使用参数扫描、转换器或 ReCirq 实验模式

对于 IBM 硬件,请使用 qiskit;对于使用自动微分的量子机器学习,请使用 pennylane;对于物理模拟,请使用 qutip。

安装

需要 Python 3.11+。当前稳定版本:1.6.1(2025 年 8 月)。供应商软件包使用相同的版本号。

uv pip install "cirq==1.6.1"

硬件集成(为确保可复现性,请固定匹配的版本):

# Google Quantum Engine (requires approved GCP project access)
uv pip install "cirq-google==1.6.1"

# IonQ
uv pip install "cirq-ionq==1.6.1"

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

# Pasqal
uv pip install "cirq-pasqal==1.6.1"

# Azure Quantum (IonQ, Honeywell/Quantinuum backends)
uv pip install "azure-quantum[cirq]"

开发期间如需使用最新功能,请省略版本固定;用于生产环境或硬件运行时,请将所有软件包固定到同一个 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)
  • 使用 qudit 和可观测量
模拟

如需详细了解量子线路模拟,包括精确模拟、含噪模拟、参数扫描和量子虚拟机,请参阅:

常见主题:

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

如需了解量子线路的优化、编译和操作,请参阅:

常见主题:

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

如需了解如何在不同供应商的真实量子硬件上运行线路,请参阅:

支持的供应商:

  • Google Quantum AI(cirq-google)— 通过 Quantum Engine 使用 Sycamore、Weber、Willow 处理器(访问受限;需要已获批准的 GCP 项目)
  • IonQ(cirq-ionq)— 离子阱 QPU 和模拟器
  • Azure Quantum(azure-quantum[cirq])— IonQ 和 Honeywell/Quantinuum 后端
  • AQT(cirq-aqt)— Alpine Quantum Technologies
  • Pasqal(cirq-pasqal)— 中性原子设备

主题包括设备表示、量子比特选择、身份验证、作业管理,以及针对硬件的线路优化。Google Cloud 设置请参阅访问和身份验证。

噪声建模

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

常见主题:

  • 噪声通道(退极化、振幅阻尼、相位阻尼)
  • 噪声模型(恒定、特定门、特定量子比特、热噪声)
  • 向电路添加噪声
  • 读出噪声
  • 噪声表征(随机基准测试、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])
硬件执行模板
import os

def run_on_hardware(circuit, provider='google', processor_id=None, repetitions=1000):
    """Template for running on quantum hardware."""

    if provider == 'google':
        import cirq_google as cg

        project_id = os.environ['GOOGLE_CLOUD_PROJECT']
        engine = cg.Engine(project_id=project_id)

        # List available processors: engine.list_processors()
        processor_id = processor_id or 'weber'  # use your assigned processor_id
        sampler = engine.get_sampler(processor_id=processor_id)
        return sampler.run(circuit, repetitions=repetitions)

    elif provider == 'ionq':
        import cirq_ionq as ionq

        # Requires IONQ_API_KEY in environment
        service = ionq.Service()
        return service.run(circuit, repetitions=repetitions, target='qpu')

    elif provider == 'azure':
        from azure.quantum.cirq import AzureQuantumService

        service = AzureQuantumService(
            resource_id=os.environ['AZURE_QUANTUM_RESOURCE_ID'],
            location=os.environ['AZURE_QUANTUM_LOCATION'],
        )
        return service.run(circuit, repetitions=repetitions, target='ionq.qpu')

    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 了解性能优化

Agent 操作流程

  1. 检查环境。 确认库版本、单位、坐标系和数据格式(FITS、CIF、HDF5、netCDF)。
  2. 明确输入。 根据数据或用户提供的信息确认格式、标识符和参数。对于任何会改变结果的值,宁可询问,也不要猜测。
  3. 先运行小规模版本。 在小网格、区域或子集上运行,并检查物理合理性。
  4. 使用上述说明和参考资料执行完整任务。
  5. 验证结果。 检查单位和量纲一致性、守恒定律或已知极限,以及数值收敛性。
  6. 报告。 说明运行了什么(版本、命令、参数)、检查了什么,以及仍有哪些不确定之处。
如果发生这种情况请这样做
结果违反已知物理极限报告前检查单位、边界条件和求解器容差。
已安装版本中缺少这些说明里的函数、标志或端点查看已安装版本自身的文档(help()、--help、官方文档),进行适配并告知用户。切勿臆造 API。
必需的输入、标识符或参数不明确询问用户,或在运行前明确说明所采用的假设。

诚信原则

  • 切勿捏造结果、参数、标识符、引文或统计数据。如果无法运行或验证某项内容,请如实说明。
  • 对每项定量结果都报告不确定性和数值容差。
  • 此处与版本相关的细节可能已过时:请根据已安装版本的官方文档进行确认。
  • 对于需要付费、占用共享 GPU 或云配额、涉及个人或患者数据,或无法撤销的操作,请先征求许可。

相关技能

  • pennylane:与硬件无关、支持自动微分的量子机器学习框架。
  • qiskit:使用 Qiskit 和 IBM Quantum Runtime 构建、模拟、转译和执行量子电路。

评论

支持 Markdown