Context Classe
Environnement d’interpréteur Q# isolé.
Un contexte fournit un environnement d’exécution Q# autonome dans lequel le code est évalué, compilé et exécuté séparément d’autres instances de contexte. Chaque contexte conserve son propre espace de noms de code.
Un contexte a un attribut code qui est un module Python contenant toutes les opérations et types Q# définis dans ce contexte. Cela vous permet d’appeler des opérations Q# à partir de Python.
Exemple :
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
Initialise un nouveau contexte Q# isolé.
Constructeur
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)
Paramètres de mot clé uniquement
| Nom | Description |
|---|---|
|
target_profile
|
La définition du profil cible permet à l’interpréteur Q# de générer des programmes compatibles avec une cible spécifique. Voir TargetProfile. Valeur par défaut: Unrestricted
|
|
target_name
|
Nom facultatif de l’ordinateur cible à utiliser pour déduire le paramètre de target_profile compatible. Valeur par défaut: None
|
|
project_root
|
Chemin facultatif d’un répertoire racine avec un projet Q# à inclure. Il doit contenir un manifeste de projet qsharp.json. Valeur par défaut: None
|
|
language_features
|
Liste facultative des indicateurs de fonctionnalités linguistiques à activer. Celles-ci correspondent aux fonctionnalités expérimentales ou préliminaires du langage Q#. Les valeurs valides sont les suivantes :
formulaire de bloc d’allocation qubit délimité ( Valeur par défaut: None
|
|
_trace_circuit
|
Valeur par défaut: None
|
|
_is_global_context
|
Valeur par défaut: False
|
Méthodes
| circuit |
Synthétise un circuit pour un programme Q#. Une expression d’entrée ou une opération doit être fournie. |
| compile |
Compile le code source Q# dans un programme qui peut être envoyé à une cible. Une expression d’entrée ou une expression pouvant être appelée avec des arguments doit être fournie. Exemple : |
| dump_machine |
Retourne le vecteur d’état épars du simulateur en tant qu’objet StateDump. |
| eval |
Évalue le code source Q#. La sortie est imprimée dans la console. |
| get_target_profile |
Retourne le profil cible pour ce contexte. |
| import_openqasm |
Importe le code source OpenQASM dans l’interpréteur de ce contexte. |
| logical_counts |
Extrait le nombre de ressources logiques à partir du code source Q#. Une expression d’entrée ou une expression pouvant être appelée avec des arguments doit être fournie. |
| run |
Exécute l’expression Q# donnée pour le nombre donné de captures. Chaque capture utilise une instance indépendante du simulateur. |
| set_classical_seed |
Définit la valeur initiale du générateur de nombres aléatoires utilisé pour les opérations de nombre aléatoire classique de bibliothèque standard. Cela s’applique à tous les codes Q# exécutés, compilés ou estimés dans ce contexte. |
| set_quantum_seed |
Définit la valeur initiale du générateur de nombres aléatoires utilisé pour les mesures quantiques. Cela s’applique à tous les codes Q# exécutés, compilés ou estimés dans ce contexte. |
circuit
Synthétise un circuit pour un programme Q#. Une expression d’entrée ou une opération doit être fournie.
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
Paramètres
| Nom | Description |
|---|---|
|
entry_expr
|
Expression d’entrée. Vous pouvez également fournir un appelant, qui doit être un appelant Q#. Valeur par défaut: None
|
|
*args
Obligatoire
|
Arguments à passer à l’appelant, s’il est fourni. |
Paramètres de mot clé uniquement
| Nom | Description |
|---|---|
|
operation
|
Opération à synthétiser. Il peut s’agir d’un nom d’une opération ou d’une expression lambda. L’opération ne doit prendre que des qubits ou des tableaux de qubits en tant que paramètres. Valeur par défaut: None
|
|
generation_method
|
Méthode à utiliser pour la génération de circuit.
ClassicalEval évalue le flux de contrôle classique au moment de la génération du circuit.
Simulate exécute une simulation complète pour tracer le circuit.
Static utilise une évaluation partielle et nécessite un profil non Valeur par défaut: None
|
|
max_operations
|
Nombre maximal d’opérations à inclure dans le circuit. Valeurs par défaut, Valeur par défaut: None
|
|
source_locations
|
Si Valeur par défaut: False
|
|
group_by_scope
|
Si Valeur par défaut: True
|
|
prune_classical_qubits
|
Si Valeur par défaut: False
|
Retours
| Type | Description |
|---|---|
|
<xref:Circuit>
|
Circuit synthétisé. |
Exceptions
| Type | Description |
|---|---|
|
En cas d’erreur de synthèse du circuit. |
compile
Compile le code source Q# dans un programme qui peut être envoyé à une cible. Une expression d’entrée ou une expression pouvant être appelée avec des arguments doit être fournie.
Exemple :
compile(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> QirInputData
Paramètres
| Nom | Description |
|---|---|
|
entry_expr
Obligatoire
|
Expression Q# qui sera utilisée comme point d’entrée pour le programme. Vous pouvez également fournir un appelant, qui doit être un appelant Q#. |
|
*args
Obligatoire
|
Arguments à passer à l’appelant, s’il est fourni. |
Retours
| Type | Description |
|---|---|
|
<xref:QirInputData>
|
Programme compilé. Permet |
dump_machine
Retourne le vecteur d’état épars du simulateur en tant qu’objet StateDump.
dump_machine() -> StateDump
Retours
| Type | Description |
|---|---|
|
État du simulateur. |
eval
Évalue le code source Q#.
La sortie est imprimée dans la console.
eval(source: str, *, save_events: bool = False) -> Any
Paramètres
| Nom | Description |
|---|---|
|
source
Obligatoire
|
Code source Q# à évaluer. |
Paramètres de mot clé uniquement
| Nom | Description |
|---|---|
|
save_events
|
Si la valeur est true, toutes les sorties sont enregistrées et retournées. Si la valeur est false, elles sont imprimées. Valeur par défaut: False
|
Retours
| Type | Description |
|---|---|
|
Valeur retournée par la dernière instruction dans le code source ou la sortie enregistrée si |
Exceptions
| Type | Description |
|---|---|
|
En cas d’erreur lors de l’évaluation du code source. |
get_target_profile
Retourne le profil cible pour ce contexte.
get_target_profile() -> TargetProfile
import_openqasm
Importe le code source OpenQASM dans l’interpréteur de ce contexte.
import_openqasm(source: str, **kwargs: Any) -> Any
Paramètres
| Nom | Description |
|---|---|
|
source
Obligatoire
|
Un programme ou un fragment OpenQASM. |
|
**kwargs
Obligatoire
|
Arguments de mot clé supplémentaires. Options courantes :
|
Retours
| Type | Description |
|---|---|
|
Valeur retournée par la dernière instruction dans le code source. |
Exceptions
| Type | Description |
|---|---|
|
En cas d’erreur lors de la génération, de l’analyse ou de l’analyse de la source OpenQASM. |
|
|
En cas d’erreur lors de la compilation du programme. |
logical_counts
Extrait le nombre de ressources logiques à partir du code source Q#. Une expression d’entrée ou une expression pouvant être appelée avec des arguments doit être fournie.
logical_counts(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> LogicalCounts
Paramètres
| Nom | Description |
|---|---|
|
entry_expr
Obligatoire
|
Expression d’entrée. Vous pouvez également fournir un appelant, qui doit être un appelant Q#. |
Retours
| Type | Description |
|---|---|
|
Ressources de programme en termes de nombre de portes logiques. |
run
Exécute l’expression Q# donnée pour le nombre donné de captures. Chaque capture utilise une instance indépendante du simulateur.
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]
Paramètres
| Nom | Description |
|---|---|
|
entry_expr
Obligatoire
|
Expression d’entrée. Vous pouvez également fournir un appelant, qui doit être un appelant Q#. |
|
shots
Obligatoire
|
Nombre de tirs à exécuter. |
|
*args
Obligatoire
|
Arguments à passer à l’appelant, s’il est fourni. |
|
on_result
Obligatoire
|
Fonction de rappel qui sera appelée avec chaque résultat. |
|
save_events
Obligatoire
|
Si la valeur est true, la sortie de chaque capture est enregistrée. Si la valeur est false, elles sont imprimées. |
|
noise
Obligatoire
|
Bruit à utiliser dans la simulation. |
|
qubit_loss
Obligatoire
|
Probabilité de perte de qubit dans la simulation. |
|
seed
Obligatoire
|
Valeur initiale à utiliser pour le générateur de nombres aléatoires dans la simulation, le cas échéant. |
|
type
Obligatoire
|
Type de simulateur à utiliser. S’il n’est pas spécifié, la simulation de vecteur d’état éparse par défaut est utilisée. |
|
num_qubits
Obligatoire
|
Nombre de qubits à utiliser pour le type de simulation « clifford ». S’il n’est pas spécifié, le simulateur Clifford suppose une valeur par défaut de 1 000 qubits. |
Paramètres de mot clé uniquement
| Nom | Description |
|---|---|
|
on_result
|
Valeur par défaut: None
|
|
save_events
|
Valeur par défaut: False
|
|
noise
|
Valeur par défaut: None
|
|
qubit_loss
|
Valeur par défaut: None
|
|
seed
|
Valeur par défaut: None
|
|
type
|
Valeur par défaut: None
|
|
num_qubits
|
Valeur par défaut: None
|
Retours
| Type | Description |
|---|---|
|
Liste des résultats ou des erreurs d’exécution. Si |
Exceptions
| Type | Description |
|---|---|
|
En cas d’erreur lors de l’interprétation de l’entrée. |
|
|
Si le nombre de tirs est inférieur à 1. |
set_classical_seed
Définit la valeur initiale du générateur de nombres aléatoires utilisé pour les opérations de nombre aléatoire classique de bibliothèque standard. Cela s’applique à tous les codes Q# exécutés, compilés ou estimés dans ce contexte.
set_classical_seed(seed: int | None) -> None
Paramètres
| Nom | Description |
|---|---|
|
seed
Obligatoire
|
Valeur initiale à utiliser pour le générateur de nombres aléatoires classique. Si aucune, la valeur initiale est générée à partir de l’entropie. |
set_quantum_seed
Définit la valeur initiale du générateur de nombres aléatoires utilisé pour les mesures quantiques. Cela s’applique à tous les codes Q# exécutés, compilés ou estimés dans ce contexte.
set_quantum_seed(seed: int | None) -> None
Paramètres
| Nom | Description |
|---|---|
|
seed
Obligatoire
|
Valeur initiale à utiliser pour le générateur de nombres aléatoires quantiques. Si aucune, la valeur initiale est générée à partir de l’entropie. |
Attributs
code
code: Any