Context クラス

分離された Q# インタープリター環境。

コンテキストは自己完結型の Q# 実行環境を提供します。この環境では、コードが他のコンテキスト インスタンスから分離して評価、コンパイル、実行されます。 各コンテキストは、独自のコード名前空間を保持します。

コンテキストには、code 属性があります。これは、このコンテキストで定義されているすべての Q# 操作と型を含むPython モジュールです。 これにより、Pythonから Q# 操作を呼び出すことができます。

Example:


   ctx = qdk.Context()
   ctx.eval("operation Main() : Result { use q = Qubit(); X(q); MResetZ(q) }")
   assert ctx.run("Main()", 2) == [qdk.Result.One, qdk.Result.One]
   assert ctx.code.Main() == qdk.Result.One

新しい分離された Q# コンテキストを初期化します。

コンストラクター

Context(*, target_profile: TargetProfile = TargetProfile.Unrestricted, target_name: str | None = None, project_root: str | None = None, language_features: List[str] | None = None, _trace_circuit: bool | None = None, _is_global_context: bool = False)

キーワードのみのパラメーター

名前 説明
target_profile

ターゲット プロファイルを設定すると、Q# インタープリターは特定のターゲットと互換性のあるプログラムを生成できます。 TargetProfileを参照してください。

規定値: Unrestricted
target_name

互換性のあるtarget_profile設定の推論に使用するターゲット コンピューターの省略可能な名前。

規定値: None
project_root

含める Q# プロジェクトを含むルート ディレクトリへの省略可能なパス。 qsharp.json プロジェクト マニフェストを含む必要があります。

規定値: None
language_features

有効にする言語機能フラグの省略可能な一覧。 これらは、試験段階またはプレビューの Q# 言語機能に対応します。 有効な値は次のとおりです。

  • "v2-preview-syntax": Q# v2 プレビュー構文を有効にします。 これにより、次のサポートが削除されます。

スコープ付き量子ビット割り当てブロック フォーム (use q = Qubit() { ... })、代わりにステートメント フォーム (use q = Qubit();) が必要です。 また、変更可能な変数の割り当てに set キーワードを使用する必要がなくなります。

規定値: None
_trace_circuit
規定値: None
_is_global_context
規定値: False

メソッド

circuit

Q# プログラムの回線を合成します。 エントリ式または操作を指定する必要があります。

compile

ターゲットに送信できるプログラムに Q# ソース コードをコンパイルします。 エントリ式または引数を含む呼び出し可能な式を指定する必要があります。

Example:

dump_machine

シミュレーターのスパース状態ベクトルを StateDump オブジェクトとして返します。

eval

Q# ソース コードを評価します。

出力はコンソールに出力されます。

get_target_profile

このコンテキストのターゲット プロファイルを返します。

import_openqasm

OpenQASM ソース コードをこのコンテキストのインタープリターにインポートします。

logical_counts

Q# ソース コードから論理リソース数を抽出します。 エントリ式または引数を含む呼び出し可能な式を指定する必要があります。

run

指定されたショット数に対して、指定された Q# 式を実行します。 各ショットでは、シミュレーターの独立したインスタンスが使用されます。

set_classical_seed

標準ライブラリの従来の乱数演算に使用される乱数ジェネレーターのシードを設定します。 これは、このコンテキストで実行、コンパイル、または推定されるすべての Q# コードに適用されます。

set_quantum_seed

量子測定に使用される乱数ジェネレーターのシードを設定します。 これは、このコンテキストで実行、コンパイル、または推定されるすべての Q# コードに適用されます。

circuit

Q# プログラムの回線を合成します。 エントリ式または操作を指定する必要があります。

circuit(entry_expr: str | Callable | GlobalCallable | Closure | None = None, *args, operation: str | None = None, generation_method: CircuitGenerationMethod | None = None, max_operations: int | None = None, source_locations: bool = False, group_by_scope: bool = True, prune_classical_qubits: bool = False) -> Circuit

パラメーター

名前 説明
entry_expr
str または Callable

エントリ式。 または、Q# 呼び出し可能である必要がある呼び出し可能な呼び出し可能を指定することもできます。

規定値: None
*args
必須

呼び出し可能な呼び出し可能に渡す引数 (指定されている場合)。

キーワードのみのパラメーター

名前 説明
operation
str

合成する操作。 操作の名前またはラムダ式を指定できます。 この操作では、量子ビットまたは量子ビットの配列のみをパラメーターとして受け取る必要があります。

規定値: None
generation_method

回路生成に使用する方法。 ClassicalEval は、回路生成時に従来の制御フローを評価します。 Simulate は完全なシミュレーションを実行して回路をトレースします。 Static は部分評価を使用し、Unrestricted 以外のターゲット プロファイルが必要です。 既定では、生成方法を自動的に選択する None します。

規定値: None
max_operations
int

回線に含める操作の最大数。 既定値は None です。これは制限がないことを意味します。

規定値: None
source_locations

True場合は、各ゲートにソース位置で注釈を付けます。

規定値: False
group_by_scope

True場合は、関数宣言やループ ブロックなど、操作を含むスコープでグループ化します。

規定値: True
prune_classical_qubits

True場合は、量子ゲートで使用されない量子ビット (従来のコントロールとしてのみ使用される量子ビットなど) を削除します。

規定値: False

返品

説明
<xref:Circuit>

合成された回路。

例外

説明

回線の合成中にエラーが発生した場合。

compile

ターゲットに送信できるプログラムに Q# ソース コードをコンパイルします。 エントリ式または引数を含む呼び出し可能な式を指定する必要があります。

Example:

compile(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> QirInputData

パラメーター

名前 説明
entry_expr
必須

プログラムのエントリ ポイントとして使用される Q# 式。 または、Q# 呼び出し可能である必要がある呼び出し可能な呼び出し可能を指定することもできます。

*args
必須

呼び出し可能な呼び出し可能に渡す引数 (指定されている場合)。

返品

説明
<xref:QirInputData>

コンパイル済みプログラム。 str()を使用して QIR 文字列を取得します。

dump_machine

シミュレーターのスパース状態ベクトルを StateDump オブジェクトとして返します。

dump_machine() -> StateDump

返品

説明

シミュレーターの状態。

eval

Q# ソース コードを評価します。

出力はコンソールに出力されます。

eval(source: str, *, save_events: bool = False) -> Any

パラメーター

名前 説明
source
必須

評価する Q# ソース コード。

キーワードのみのパラメーター

名前 説明
save_events

true の場合、すべての出力が保存され、返されます。 false の場合は、印刷されます。

規定値: False

返品

説明
Any

ソース コード内の最後のステートメントによって返される値、または save_events が true の場合は保存された出力。

例外

説明

ソース コードの評価中にエラーが発生した場合。

get_target_profile

このコンテキストのターゲット プロファイルを返します。

get_target_profile() -> TargetProfile

import_openqasm

OpenQASM ソース コードをこのコンテキストのインタープリターにインポートします。

import_openqasm(source: str, **kwargs: Any) -> Any

パラメーター

名前 説明
source
必須
str

OpenQASM プログラムまたはフラグメント。

**kwargs
必須

追加のキーワード引数。 一般的なオプション:

  • name (str): プログラムの名前。 これは、プログラムのエントリ ポイントとして使用されます。

  • search_path (str): ファイル参照を解決するためのオプションの検索パス。

  • output_semantics (OutputSemantics): コンパイルの出力セマンティクス。

  • program_type (ProgramType): 実行するプログラムコンパイルの種類:

    • ProgramType.Operation (既定値): ソースはグローバル名前空間の Q# 操作になり、宣言された古典的な入力のパラメーターと、宣言された各量子ビットのパラメーターが含まれますが、明示的または暗黙的な出力宣言は操作の戻り値の型になります。

    • ProgramType.File: 入力ソースをスタンドアロン プログラムとして扱い、従来のパラメーターのみを受け取り、必要な量子ビットを内部的に割り当て、操作の終了時に解放する操作を qasm_import 名前空間に作成します。

    • ProgramType.Fragments: 現在の対話型インタープリターで指定されたソースを実行し、現在のスコープで宣言された変数または操作を定義し、ソース内の最後のステートメントの値を返します。

返品

説明
Any

ソース コード内の最後のステートメントによって返される値。

例外

説明

OpenQASM ソースの生成、解析、または分析中にエラーが発生した場合。

プログラムのコンパイル中にエラーが発生した場合。

logical_counts

Q# ソース コードから論理リソース数を抽出します。 エントリ式または引数を含む呼び出し可能な式を指定する必要があります。

logical_counts(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> LogicalCounts

パラメーター

名前 説明
entry_expr
必須

エントリ式。 または、Q# 呼び出し可能である必要がある呼び出し可能な呼び出し可能を指定することもできます。

返品

説明

論理ゲート数の観点からリソースをプログラムします。

run

指定されたショット数に対して、指定された Q# 式を実行します。 各ショットでは、シミュレーターの独立したインスタンスが使用されます。

run(entry_expr: str | Callable | GlobalCallable | Closure, shots: int, *args, on_result: Callable[[ShotResult], None] | None = None, save_events: bool = False, noise: Tuple[float, float, float] | PauliNoise | BitFlipNoise | PhaseFlipNoise | DepolarizingNoise | NoiseConfig | None = None, qubit_loss: float | None = None, seed: int | None = None, type: Literal['sparse', 'clifford'] | None = None, num_qubits: int | None = None) -> List[Any]

パラメーター

名前 説明
entry_expr
必須

エントリ式。 または、Q# 呼び出し可能である必要がある呼び出し可能な呼び出し可能を指定することもできます。

shots
必須

実行するショットの数。

*args
必須

呼び出し可能な呼び出し可能に渡す引数 (指定されている場合)。

on_result
必須

各結果で呼び出されるコールバック関数。

save_events
必須

true の場合、各ショットの出力が保存されます。 false の場合は、印刷されます。

noise
必須

シミュレーションで使用するノイズ。

qubit_loss
必須

シミュレーションでの量子ビット損失の確率。

seed
必須

シミュレーションで乱数ジェネレーターに使用するシード (存在する場合)。

type
必須

使用するシミュレーターの種類。 指定しない場合は、既定のスパース状態ベクトル シミュレーションが使用されます。

num_qubits
必須

シミュレーション タイプ "clifford" に使用する量子ビットの数。 指定しない場合、クリフォード シミュレーターでは既定値の 1000 量子ビットが想定されます。

キーワードのみのパラメーター

名前 説明
on_result
規定値: None
save_events
規定値: False
noise
規定値: None
qubit_loss
規定値: None
seed
規定値: None
type
規定値: None
num_qubits
規定値: None

返品

説明

結果またはランタイム エラーの一覧。 save_eventsが true の場合は、ShotResultの一覧が返されます。

例外

説明

入力の解釈中にエラーが発生した場合。

ショットの数が 1 未満の場合。

set_classical_seed

標準ライブラリの従来の乱数演算に使用される乱数ジェネレーターのシードを設定します。 これは、このコンテキストで実行、コンパイル、または推定されるすべての Q# コードに適用されます。

set_classical_seed(seed: int | None) -> None

パラメーター

名前 説明
seed
必須

古典的な乱数ジェネレーターに使用するシード。 None の場合、シードはエントロピから生成されます。

set_quantum_seed

量子測定に使用される乱数ジェネレーターのシードを設定します。 これは、このコンテキストで実行、コンパイル、または推定されるすべての Q# コードに適用されます。

set_quantum_seed(seed: int | None) -> None

パラメーター

名前 説明
seed
必須

量子乱数ジェネレーターに使用するシード。 None の場合、シードはエントロピから生成されます。

属性

code

code: Any