Context Clase
Un entorno de intérprete de Q# aislado.
Un contexto proporciona un entorno de ejecución de Q# autocontenido donde el código se evalúa, compila y se ejecuta de forma aislada de otras instancias de Context. Cada contexto mantiene su propio espacio de nombres de código.
Un contexto tiene un atributo code que es un módulo Python que contiene todas las operaciones y tipos de Q# definidos en este contexto. Esto le permite llamar a operaciones de Q# desde Python.
Ejemplo:
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
Inicializa un nuevo contexto de Q# aislado.
Constructor
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)
Parámetros de palabra clave únicamente
| Nombre | Description |
|---|---|
|
target_profile
|
Establecer el perfil de destino permite al intérprete de Q# generar programas compatibles con un destino específico. Consulte TargetProfile. Valor predeterminado: Unrestricted
|
|
target_name
|
Nombre opcional de la máquina de destino que se va a usar para deducir la configuración de target_profile compatible. Valor predeterminado: None
|
|
project_root
|
Ruta de acceso opcional a un directorio raíz con un proyecto de Q# que se va a incluir. Debe contener un manifiesto de proyecto qsharp.json. Valor predeterminado: None
|
|
language_features
|
Lista opcional de marcas de características de idioma que se van a habilitar. Se corresponden con las características del lenguaje Q# experimentales o en versión preliminar. Los valores válidos son:
formulario de bloque de asignación de cúbits con ámbito ( Valor predeterminado: None
|
|
_trace_circuit
|
Valor predeterminado: None
|
|
_is_global_context
|
Valor predeterminado: False
|
Métodos
| circuit |
Sintetiza un circuito para un programa de Q#. Se debe proporcionar una expresión de entrada o una operación. |
| compile |
Compila el código fuente de Q# en un programa que se puede enviar a un destino. Se debe proporcionar una expresión de entrada o un invocable con argumentos. Ejemplo: |
| dump_machine |
Devuelve el vector de estado disperso del simulador como un objeto StateDump. |
| eval |
Evalúa el código fuente de Q#. La salida se imprime en la consola. |
| get_target_profile |
Devuelve el perfil de destino de este contexto. |
| import_openqasm |
Importa el código fuente de OpenQASM en el intérprete de este contexto. |
| logical_counts |
Extrae los recuentos de recursos lógicos del código fuente de Q#. Se debe proporcionar una expresión de entrada o un invocable con argumentos. |
| run |
Ejecuta la expresión Q# dada para el número determinado de capturas. Cada captura usa una instancia independiente del simulador. |
| set_classical_seed |
Establece el valor de inicialización del generador de números aleatorios usado para las operaciones de números aleatorios clásicos de la biblioteca estándar. Esto se aplica a todo el código de Q# ejecutado, compilado o estimado en este contexto. |
| set_quantum_seed |
Establece el valor de inicialización del generador de números aleatorios que se usa para las medidas cuánticas. Esto se aplica a todo el código de Q# ejecutado, compilado o estimado en este contexto. |
circuit
Sintetiza un circuito para un programa de Q#. Se debe proporcionar una expresión de entrada o una operación.
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
Parámetros
| Nombre | Description |
|---|---|
|
entry_expr
|
Expresión de entrada. Como alternativa, se puede proporcionar un invocable, que debe ser un Q# al que se puede llamar. Valor predeterminado: None
|
|
*args
Requerido
|
Argumentos que se van a pasar al invocable, si se proporciona uno. |
Parámetros de palabra clave únicamente
| Nombre | Description |
|---|---|
|
operation
|
Operación que se va a sintetizar. Puede ser un nombre de una operación o una expresión lambda. La operación solo debe tomar cúbits o matrices de cúbits como parámetros. Valor predeterminado: None
|
|
generation_method
|
Método que se va a usar para la generación de circuitos.
ClassicalEval evalúa el flujo de control clásico en el tiempo de generación del circuito.
Simulate ejecuta una simulación completa para realizar un seguimiento del circuito.
Static usa la evaluación parcial y requiere un perfil que no Valor predeterminado: None
|
|
max_operations
|
Número máximo de operaciones que se van a incluir en el circuito. El valor predeterminado es Valor predeterminado: None
|
|
source_locations
|
Si Valor predeterminado: False
|
|
group_by_scope
|
Si Valor predeterminado: True
|
|
prune_classical_qubits
|
Si Valor predeterminado: False
|
Devoluciones
| Tipo | Description |
|---|---|
|
<xref:Circuit>
|
Circuito sintetizado. |
Excepciones
| Tipo | Description |
|---|---|
|
Si hay un error al sintetizar el circuito. |
compile
Compila el código fuente de Q# en un programa que se puede enviar a un destino. Se debe proporcionar una expresión de entrada o un invocable con argumentos.
Ejemplo:
compile(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> QirInputData
Parámetros
| Nombre | Description |
|---|---|
|
entry_expr
Requerido
|
Expresión de Q# que se usará como punto de entrada para el programa. Como alternativa, se puede proporcionar un invocable, que debe ser un Q# al que se puede llamar. |
|
*args
Requerido
|
Argumentos que se van a pasar al invocable, si se proporciona uno. |
Devoluciones
| Tipo | Description |
|---|---|
|
<xref:QirInputData>
|
Programa compilado. Use |
dump_machine
Devuelve el vector de estado disperso del simulador como un objeto StateDump.
dump_machine() -> StateDump
Devoluciones
| Tipo | Description |
|---|---|
|
Estado del simulador. |
eval
Evalúa el código fuente de Q#.
La salida se imprime en la consola.
eval(source: str, *, save_events: bool = False) -> Any
Parámetros
| Nombre | Description |
|---|---|
|
source
Requerido
|
Código fuente de Q# que se va a evaluar. |
Parámetros de palabra clave únicamente
| Nombre | Description |
|---|---|
|
save_events
|
Si es true, se guardarán y devolverán todas las salidas. Si es false, se imprimirán. Valor predeterminado: False
|
Devoluciones
| Tipo | Description |
|---|---|
|
Valor devuelto por la última instrucción del código fuente o la salida guardada si |
Excepciones
| Tipo | Description |
|---|---|
|
Si se produce un error al evaluar el código fuente. |
get_target_profile
Devuelve el perfil de destino de este contexto.
get_target_profile() -> TargetProfile
import_openqasm
Importa el código fuente de OpenQASM en el intérprete de este contexto.
import_openqasm(source: str, **kwargs: Any) -> Any
Parámetros
| Nombre | Description |
|---|---|
|
source
Requerido
|
Un programa o fragmento de OpenQASM. |
|
**kwargs
Requerido
|
Argumentos de palabra clave adicionales. Opciones comunes:
|
Devoluciones
| Tipo | Description |
|---|---|
|
Valor devuelto por la última instrucción del código fuente. |
Excepciones
| Tipo | Description |
|---|---|
|
Si se produce un error al generar, analizar o analizar el origen de OpenQASM. |
|
|
Si hay un error al compilar el programa. |
logical_counts
Extrae los recuentos de recursos lógicos del código fuente de Q#. Se debe proporcionar una expresión de entrada o un invocable con argumentos.
logical_counts(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> LogicalCounts
Parámetros
| Nombre | Description |
|---|---|
|
entry_expr
Requerido
|
Expresión de entrada. Como alternativa, se puede proporcionar un invocable, que debe ser un Q# al que se puede llamar. |
Devoluciones
| Tipo | Description |
|---|---|
|
Recursos de programa en términos de recuentos de puertas lógicas. |
run
Ejecuta la expresión Q# dada para el número determinado de capturas. Cada captura usa una instancia independiente del simulador.
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]
Parámetros
| Nombre | Description |
|---|---|
|
entry_expr
Requerido
|
Expresión de entrada. Como alternativa, se puede proporcionar un invocable, que debe ser un Q# al que se puede llamar. |
|
shots
Requerido
|
Número de tomas que se van a ejecutar. |
|
*args
Requerido
|
Argumentos que se van a pasar al invocable, si se proporciona uno. |
|
on_result
Requerido
|
Función de devolución de llamada a la que se llamará con cada resultado. |
|
save_events
Requerido
|
Si es true, se guardará la salida de cada captura. Si es false, se imprimirán. |
|
noise
Requerido
|
Ruido que se va a usar en la simulación. |
|
qubit_loss
Requerido
|
Probabilidad de pérdida de cúbits en la simulación. |
|
seed
Requerido
|
Inicialización que se va a usar para el generador de números aleatorios en la simulación, si existe. |
|
type
Requerido
|
Tipo de simulador que se va a usar. Si no se especifica, se usará la simulación de vector de estado dispersa predeterminada. |
|
num_qubits
Requerido
|
Número de cúbits que se van a usar para el tipo de simulación "clifford". Si no se especifica, el simulador de Clifford supone un valor predeterminado de 1000 cúbits. |
Parámetros de palabra clave únicamente
| Nombre | Description |
|---|---|
|
on_result
|
Valor predeterminado: None
|
|
save_events
|
Valor predeterminado: False
|
|
noise
|
Valor predeterminado: None
|
|
qubit_loss
|
Valor predeterminado: None
|
|
seed
|
Valor predeterminado: None
|
|
type
|
Valor predeterminado: None
|
|
num_qubits
|
Valor predeterminado: None
|
Devoluciones
| Tipo | Description |
|---|---|
|
Una lista de resultados o errores en tiempo de ejecución. Si |
Excepciones
| Tipo | Description |
|---|---|
|
Si hay un error al interpretar la entrada. |
|
|
Si el número de tomas es menor que 1. |
set_classical_seed
Establece el valor de inicialización del generador de números aleatorios usado para las operaciones de números aleatorios clásicos de la biblioteca estándar. Esto se aplica a todo el código de Q# ejecutado, compilado o estimado en este contexto.
set_classical_seed(seed: int | None) -> None
Parámetros
| Nombre | Description |
|---|---|
|
seed
Requerido
|
Inicialización que se va a usar para el generador de números aleatorios clásico. Si No, la inicialización se generará a partir de la entropía. |
set_quantum_seed
Establece el valor de inicialización del generador de números aleatorios que se usa para las medidas cuánticas. Esto se aplica a todo el código de Q# ejecutado, compilado o estimado en este contexto.
set_quantum_seed(seed: int | None) -> None
Parámetros
| Nombre | Description |
|---|---|
|
seed
Requerido
|
Inicialización que se va a usar para el generador de números aleatorios cuánticos. Si No, la inicialización se generará a partir de la entropía. |
Atributos
code
code: Any