mcpField
C
cirq

cirq

github.com/k-dense-ai開発55.1k1.9k 回インストール2 日前に更新
リポジトリ

cirq について

Cirq は、Python で量子回路を設計する開発者や研究者向けのスキルです。シミュレーション、ノイズモデル、コンパイル、ハードウェア実行に加え、複数プロバイダーとの連携や実験手順も扱います。

主な機能

  1. 01パラメーター付き量子回路の構築
  2. 02正確なシミュレーションとノイズシミュレーション
  3. 03回路の変換、最適化、コンパイル
  4. 04複数の量子ハードウェアプロバイダーとの連携
  5. 05パラメータースイープと量子実験の設計

活用シーン

  1. 01シミュレーターでの回路テスト
  2. 02回路に対するノイズの影響調査
  3. 03対象デバイス向けの回路コンパイル
  4. 04量子実験の実行と結果分析

インストール

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

$npx skills add https://github.com/k-dense-ai/scientific-agent-skills --skill cirq

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

同梱ファイル

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

references/
building.md
experiments.md
hardware.md
noise.md
review.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 を、自動微分を用いた量子 ML には pennylane を、物理シミュレーションには qutip を使用してください。

インストール

例は Python 3.11+ 上の Cirq 1.7.0 を対象としています。Cirq のベンダーパッケージは対応するリリースに揃えてください。Azure Quantum のように独立してバージョン管理される統合機能は、個別に互換性を確認する必要があります。

uv pip install "cirq-core==1.7.0"
# Optional OpenQASM import dependency
uv pip install ply

ハードウェア統合の場合(再現性のために一致するバージョンを固定してください):

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

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

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

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

# Azure: use a SEPARATE environment; its current extras require Cirq <1.7.
uv pip install "qdk[azure,cirq]==1.32.3" "azure-quantum==3.13.0"

環境内のすべての cirq-* パッケージを同じリリースに固定してください。Azure の例は、それがサポートする Cirq 1.6.1 スタックを別途対象としています。そこに Cirq 1.7.0 を強制的に導入しないでください。Cirq 1.7.0 では IonQ アダプターが API v0.4 に更新されています。

ローカルの例は合成回路で確認されています。ハードウェアの例は 説明用であり、クラウドジョブを投入することなく、リリース済みのソースとプロバイダーのドキュメントに 照らして確認されています。レビューの証拠を参照してください。

クイックスタート

基本的な回路
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(seed=42)
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 量子ビットゲート
  • パラメーター化されたゲートと操作
  • カスタムゲートの分解
  • モーメントによる回路の構成
  • 標準的な回路パターン(Bell 状態、GHZ、QFT)
  • インポート / エクスポート(OpenQASM、JSON)
  • qudit とオブザーバブルの扱い
シミュレーション

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

一般的なトピック:

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

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

一般的なトピック:

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

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

対応プロバイダー:

  • Google Quantum AI (cirq-google) — Quantum Engine を介して割り当てられたプロセッサ。承認されたプロジェクトから ID を確認してください。バンドルされている仮想プロセッサ名は、ライブアクセスの証明にはなりません。
  • IonQ (cirq-ionq) — トラップイオン方式の QPU とシミュレーター
  • Azure Quantum (qdk[azure,cirq]) — ワークスペース内の Cirq 互換ターゲットを、専用のサポート対象環境で検出します
  • AQT (cirq-aqt) — Alpine Quantum Technologies
  • Pasqal (cirq-pasqal) — ローカルデバイスのモデリング。レガシーのリモートサンプラーは、検証済みの現在の Pasqal Cloud 統合ではありません

トピックには、デバイスの表現、量子ビットの選択、認証、ジョブ管理、ハードウェア向けの回路最適化が含まれます。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
    # Single-qubit Pauli-Z expectation; invariant to global phase.
    return float(abs(state[0])**2 - abs(state[1])**2)

# Run optimization
result = variational_algorithm(my_ansatz, my_cost, [0.0, 0.0])
ハードウェア実行のテンプレート

例示用: プロバイダーの認証情報、割り当てられたプロセッサ ID、および現在の プロバイダーのターゲット名が必要です。ローカルシミュレーションの例は、QPU へのアクセスを検証するものではありません。

import cirq

def run_on_hardware(circuit, sampler, device, repetitions=1000):
    """Submit an already routed/compiled circuit to an explicitly chosen sampler."""
    device.validate_circuit(circuit)
    return sampler.run(circuit, repetitions=repetitions)

hardware.md を使用して、プロバイダー固有のサンプラーを構成します。 ターゲットを明示的に選択してください。コンパイル自体は、接続されていない 量子ビットをルーティングしたり、ハードウェアへのアクセスを保証したりするものではありません。

ノイズ研究のテンプレート
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 on a Bell circuit with the measurement key expected above.
q0, q1 = cirq.LineQubit.range(2)
circuit = cirq.Circuit(cirq.H(q0), cirq.CNOT(q0, q1),
                       cirq.measure(q0, q1, key="result"))
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 を参照してください

ノイズありシミュレーションが遅すぎる:

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

Scientific Agent Skills の引用

このスキルは K-Dense による Scientific Agent Skills の一部です。これが原稿、レポート、プレゼン テーション、またはコードリリースに実質的に貢献した場合は、参考文献またはソフトウェアセクションに 論文を追加し、そうしたことをユーザーに伝えてください:

Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://doi.org/10.48550/arXiv.2609.00065

常に最新バージョンを引用してください。DOI と https://arxiv.org/abs/2609.00065 は最新の arXiv バージョンに解決されるため、v1 のようなバージョン接尾辞を決して付けないでください。ネットワーク アクセスが利用可能な場合は、参考文献を書く前に https://arxiv.org/abs/2609.00065(または http://export.arxiv.org/api/query?id_list=2609.00065)を取得し、そのレコードから著者リスト、年、 バージョンを取得してください。レコードにジャーナル参考文献または出版社 DOI が記載されている場合は、 代わりに公開版を引用してください。

コメント