qsharp Módulo

API pública del intérprete de Q#.

Este módulo es la superficie pública para la funcionalidad del intérprete de Q# dentro del qdk paquete.

Exportaciones de claves:

Clases

BitFlipNoise

Ruido de volteo de bits que se va a usar en la simulación.

Crea una nueva instancia de BitFlipNoise.

El canal de volteo de bits aplica un error de Pauli-X con probabilidad p.

CircuitGenerationMethod

API pública del intérprete de Q#.

Este módulo es la superficie pública para la funcionalidad del intérprete de Q# dentro del qdk paquete.

Exportaciones de claves:

DepolarizingNoise

Ruido de despolarización que se va a usar en la simulación.

Crea una nueva instancia de DepolarizingNoise.

El canal de despolarización aplica Pauli-X, Pauli-Y o Pauli-Z errores cada uno con probabilidad p / 3.

Pauli

Operador Q# Pauli.

PauliNoise

El ruido de Pauli que se va a usar en la simulación representada como probabilidades de los errores de Pauli-X, Pauli-Y y Pauli-Z

Crea una nueva PauliNoise instancia con las probabilidades de error especificadas.

PhaseFlipNoise

Ruido de volteo de fase que se va a usar en la simulación.

Crea una nueva instancia de PhaseFlipNoise.

El canal de volteo de fase aplica un error de Pauli-Z con probabilidad p.

QSharpError

Error devuelto por el intérprete de Q#.

Result

Resultado de la medición de Q#.

ShotResult

Un único resultado de una toma.

StateDump

Volcado de estado devuelto por el intérprete de Q#.

TargetProfile

Un perfil de destino de Q#.

Un perfil de destino describe las funcionalidades del hardware o simulador que se usará para ejecutar el programa Q#.

Funciones

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
str

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 noUnrestricted sea de destino. El valor predeterminado es None el que selecciona automáticamente el método de generación.

Valor predeterminado: None
max_operations
int

Número máximo de operaciones que se van a incluir en el circuito. El valor predeterminado es None que no hay límite.

Valor predeterminado: None
source_locations

Si Truees , anota cada puerta con su ubicación de origen.

Valor predeterminado: False
group_by_scope

Si Truees , agrupa las operaciones por su ámbito contenedor, como declaraciones de función o bloques de bucle.

Valor predeterminado: True
prune_classical_qubits

Si Truees , quita los cúbits que nunca se usan en una puerta cuántica (por ejemplo, los cúbits solo se usan como controles clásicos).

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 str() para obtener la cadena QIR.

dump_circuit

Volca un circuito que muestra el estado actual del simulador.

Este circuito contendrá las puertas que se han aplicado en el simulador hasta el punto actual.

Requiere que el intérprete se inicialice con trace_circuit=True.

dump_circuit() -> Circuit

Devoluciones

Tipo Description
<xref:Circuit>

Seguimiento del circuito actual.

Excepciones

Tipo Description

Si el intérprete no se inicializó con trace_circuit=True

dump_machine

Devuelve el vector de estado disperso del simulador como un objeto StateDump.

dump_machine() -> StateDump

Devoluciones

Tipo Description

Estado del simulador.

dump_operation

Devuelve una matriz cuadrada de números complejos que representa la operación realizada.

dump_operation(operation: str, num_qubits: int) -> List[List[complex]]

Parámetros

Nombre Description
operation
Requerido

La operación que se va a realizar, que debe funcionar en una lista de cúbits.

num_qubits
Requerido

Número de cúbits que se van a usar.

Devoluciones

Tipo Description

Matriz que representa la operación.

estimate

Calcula los recursos para el código fuente de Q#. Se debe proporcionar una expresión de entrada o un invocable con argumentos.

En desuso desde la versión This: function usa la API del estimador de recursos heredado. Utilice qdk.qre en su lugar.

estimate(entry_expr: str | Callable | GlobalCallable | Closure, params: Dict[str, Any] | List | EstimatorParams | None = None, *args) -> EstimatorResult

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.

params

Parámetros para configurar la estimación física.

Valor predeterminado: None
*args
Requerido

Argumentos que se van a pasar al invocable, si se proporciona uno.

Devoluciones

Tipo Description

Recursos estimados.

estimate_custom

estimate_custom(algorithm, qubit, qec, factories=Ellipsis, *, error_budget=0.01, max_factories=None, logical_depth_factor=None, max_physical_qubits=None, max_duration=None, error_budget_pruning=False)

Parámetros

Nombre Description
algorithm
Requerido
qubit
Requerido
qec
Requerido
factories
Valor predeterminado: Ellipsis

Parámetros de palabra clave únicamente

Nombre Description
error_budget
Valor predeterminado: 0.01
max_factories
Valor predeterminado: None
logical_depth_factor
Valor predeterminado: None
max_physical_qubits
Valor predeterminado: None
max_duration
Valor predeterminado: None
error_budget_pruning
Valor predeterminado: False

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
Any

Valor devuelto por la última instrucción del código fuente o la salida guardada si save_events es true.

Excepciones

Tipo Description

Si se produce un error al evaluar el código fuente.

init

Inicializa el intérprete de Q#.

init(*, 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) -> Config

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:

  • "v2-preview-syntax": habilita la sintaxis de vista previa de Q# v2. Esto quita la compatibilidad con el formulario de bloque de asignación de cúbits con ámbito (use q = Qubit() { ... }), que requiere el formulario de instrucción en su lugar (use q = Qubit();). También quita el requisito de usar la set palabra clave para las asignaciones de variables mutables.
Valor predeterminado: None
trace_circuit

Habilita el seguimiento del circuito durante la ejecución. Se requiere pasar True para que la función dump_circuit devuelva un circuito. La función de circuitoNO se ve afectada por este parámetro y siempre generará un circuito.

Valor predeterminado: None

Devoluciones

Tipo Description
<xref:Config>

Configuración del intérprete de Q#.

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 save_events es true, se devuelve una lista de ShotResult .

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.

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.

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.