mcpField
A
alterlab-cirq

alterlab-cirq

github.com/alterlab-ieu開発7868 回インストール5 週間前に更新
リポジトリ

alterlab-cirq について

alterlab-cirqは、Google Quantum AIのPythonフレームワークCirqを使うためのスキルです。量子回路の構築、シミュレーション、変換、実行に加え、ノイズ研究や実験、対応ハードウェアでの実行を支援します。

主な機能

  1. 01量子回路の構築と変換
  2. 02状態ベクトルと密度行列のシミュレーション
  3. 03ノイズモデリングと回路特性評価
  4. 04対応ハードウェアでの回路実行
  5. 05量子実験の設計と分析

活用シーン

  1. 01回路の試作とパラメータスイープ
  2. 02ノイズによる回路動作の調査
  3. 03量子ハードウェア向け回路の準備
  4. 04ベンチマークと量子実験の実施

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/alterlab-ieu/alterlab-academic-skills --skill alterlab-cirq

インストール後、Claude Code で/alterlab-cirqを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

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

詳細

Cirq - Python による量子コンピューティング

Cirq は Google Quantum AI のオープンソースフレームワークです。量子コンピューターやシミュレーターで量子回路を設計、シミュレーション、実行できます。

このスキルを使う場面

ユーザーが次のことを希望する場合に、このスキルを使います。

  • Cirq で回路を構築し、シミュレーションする(状態ベクトル、密度行列、パラメータスイープ)
  • Google のハードウェアノイズをモデル化する、または Quantum Virtual Machine(willow_pink、weber、rainbow)で実行する
  • Cirq の回路を Google Quantum Engine(承認済みパートナー)、IonQ、AQT、Pasqal、Azure Quantum に送信する
  • 特性評価実験(ランダム化ベンチマーキング、XEB)や ReCirq 形式の研究を実施する
対象外
シナリオ代わりに使用
IBM Quantum ハードウェア、Qiskit Runtime プリミティブ、または Qiskit トランスパイルalterlab-qiskit
自動微分を使った勾配学習型の量子 ML/ハイブリッドモデルalterlab-pennylane
Lindblad マスター方程式、デコヒーレンス、または空洞 QED ダイナミクス(回路なし)alterlab-qutip

インストール

uv pip install cirq          # Python ≥ 3.11; current 1.7.x as of 2026-09

cirq パッケージはメタパッケージであり、cirq-core、cirq-google、 cirq-ionq、cirq-aqt、cirq-pasqal、cirq-web をすべて依存関係として含みます。シミュレーションのみを行う軽量な環境には、cirq-core だけをインストールしてください。オプションの追加機能:

# 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]"

クイックスタート

基本的な回路
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)
  • 単一量子ビットゲートと2量子ビットゲート
  • パラメーター化されたゲートと演算
  • カスタムゲートの分解
  • moment を使った回路の構成
  • 標準的な回路パターン(ベル状態、GHZ、QFT)
  • インポート/エクスポート(OpenQASM、JSON)
  • qudit とオブザーバブルの扱い
シミュレーション

厳密なシミュレーション、ノイズのあるシミュレーション、パラメータースイープ、Quantum Virtual Machine など、量子回路のシミュレーションに関する詳しい情報については、以下を参照してください。

主なトピック:

  • 厳密なシミュレーション(状態ベクトル、密度行列)
  • サンプリングと測定
  • パラメータースイープ(単一および複数のパラメーター)
  • ノイズのあるシミュレーション
  • 状態ヒストグラムと可視化
  • Quantum Virtual Machine(QVM)
  • 期待値とオブザーバブル
  • パフォーマンスの最適化
回路変換

量子回路の最適化、コンパイル、操作に関する情報については、以下を参照してください。

主なトピック:

  • トランスフォーマーフレームワーク
  • ゲートの分解
  • 回路の最適化(ゲートの結合、Z ゲートの繰り出し、無視できる演算の削除)
  • ハードウェア向けの回路コンパイル
  • 量子ビットのルーティングと SWAP の挿入
  • カスタムトランスフォーマー
  • 変換パイプライン
ハードウェア連携

さまざまなプロバイダーの実際の量子ハードウェアで回路を実行する方法については、以下を参照してください。

対応プロバイダー:

  • Google Quantum AI(cirq-google)- 承認済みパートナー向けの Quantum Engine。一般向けには willow_pink、weber、rainbow モデルの Quantum Virtual Machine を提供
  • IonQ(cirq-ionq)- トラップイオン型量子コンピューター
  • Azure Quantum(azure-quantum)- IonQ および Quantinuum のターゲット
  • AQT(cirq-aqt)- Alpine Quantum Technologies(ARNICA API。ワークスペース ID とリソース ID が必要)
  • 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='<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}")
ノイズ研究のテンプレート
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 を参照してください

シミュレーションでメモリの問題が発生する場合:

  • 密度行列シミュレーターから状態ベクトルシミュレーターに切り替えます
  • 量子ビット数を減らすか、クリフォード回路にはスタビライザーシミュレーターを使用します

デバイス検証エラーが発生する場合:

  • device.metadata.nx_graph で量子ビットの接続性を確認します
  • ゲートをデバイス固有のゲートセットに分解します
  • デバイス固有のコンパイルについては hardware.md を参照してください

AlterLab Academic Skills スイートの一部です。

ノイズを含むシミュレーションが遅すぎる場合:

  • 密度行列シミュレーションは O(2^2n) です。量子ビット数の削減を検討してください
  • 重要な操作のみにノイズモデルを選択的に適用します
  • パフォーマンスの最適化については simulation.md を参照してください

コメント