Skip to content

๐Ÿง  Inference API Reference

This section documents the inference engines and algorithms used for probabilistic reasoning in quantum-classical hybrid networks.


๐Ÿ”„ Core Inference Engine

probabilistic_quantum_reasoner.inference.engine.QuantumInferenceEngine(network, backend=None)

Central inference engine for quantum Bayesian networks.

Coordinates different inference algorithms and provides a unified interface for probabilistic reasoning in quantum-classical hybrid models.

Initialize the inference engine.

Parameters:

Name Type Description Default
network Any

QuantumBayesianNetwork instance

required
backend Optional[Any]

Quantum computing backend

None

estimate_complexity(algorithm)

Estimate computational complexity for given algorithm.

infer(query_nodes, algorithm='belief_propagation', **kwargs)

Perform inference on the network.

Parameters:

Name Type Description Default
query_nodes List[str]

List of nodes to compute marginals for

required
algorithm str

Inference algorithm to use

'belief_propagation'
**kwargs

Algorithm-specific parameters

{}

Returns:

Type Description
InferenceResult

InferenceResult with marginal probabilities and metadata

Raises:

Type Description
InferenceError

If inference fails


๐Ÿง  Variational Inference

probabilistic_quantum_reasoner.inference.variational.VariationalQuantumInference(network, backend, n_layers=3, optimizer='adam')

Variational quantum inference for quantum Bayesian networks.

Uses variational quantum circuits to approximate marginal distributions and perform approximate inference in quantum probabilistic models.

Initialize variational quantum inference.

Parameters:

Name Type Description Default
network Any

QuantumBayesianNetwork instance

required
backend Any

Quantum computing backend

required
n_layers int

Number of variational layers

3
optimizer str

Classical optimizer for parameters

'adam'

run_inference(query_nodes, max_iterations=100, learning_rate=0.1, tolerance=1e-06, **kwargs)

Run variational quantum inference.

Parameters:

Name Type Description Default
query_nodes List[str]

Nodes to compute marginals for

required
max_iterations int

Maximum optimization iterations

100
learning_rate float

Learning rate for parameter updates

0.1
tolerance float

Convergence tolerance

1e-06

Returns:

Type Description
Tuple[Dict[str, Dict[Any, float]], Dict[str, Any]]

Tuple of (marginals, metadata)

probabilistic_quantum_reasoner.inference.variational.PennyLaneCircuit(n_qubits, n_layers=3)

Bases: ParametricQuantumCircuit

PennyLane implementation of parametric quantum circuit.

build_circuit(parameters)

Build circuit and return state vector.

expectation_value(parameters, observable)

Compute expectation value.

probabilistic_quantum_reasoner.inference.variational.QiskitCircuit(n_qubits, n_layers=3)

Bases: ParametricQuantumCircuit

Qiskit implementation of parametric quantum circuit.

build_circuit(parameters)

Build parametric quantum circuit.

expectation_value(parameters, observable)

Compute expectation value using Qiskit primitives.

probabilistic_quantum_reasoner.inference.variational.Optimizer

Bases: ABC

Abstract base class for optimizers.

update(parameters, gradient) abstractmethod

Update parameters using gradient.

probabilistic_quantum_reasoner.inference.variational.AdamOptimizer(learning_rate=0.001, beta1=0.9, beta2=0.999, epsilon=1e-08)

Bases: Optimizer

Adam optimizer with momentum and adaptive learning rates.

update(parameters, gradient)

Adam update rule.

probabilistic_quantum_reasoner.inference.variational.SGDOptimizer(learning_rate=0.1)

Bases: Optimizer

Stochastic gradient descent optimizer.

update(parameters, gradient)

SGD update rule.


๐Ÿง  Belief Propagation

probabilistic_quantum_reasoner.inference.belief_propagation.QuantumBeliefPropagation(network, max_iterations=100, tolerance=1e-06)

Quantum belief propagation algorithm for inference.

Extends classical belief propagation to handle quantum amplitudes, superposition, and entanglement in hybrid probabilistic networks.

Initialize quantum belief propagation.

Parameters:

Name Type Description Default
network Any

QuantumBayesianNetwork instance

required
max_iterations int

Maximum number of iterations

100
tolerance float

Convergence tolerance

1e-06

get_convergence_info()

Get information about convergence.

run_inference(query_nodes=None, evidence=None)

Run quantum belief propagation inference.

Parameters:

Name Type Description Default
query_nodes Optional[List[str]]

Nodes to compute beliefs for

None
evidence Optional[Dict[str, Any]]

Evidence to condition on

None

Returns:

Type Description
Dict[str, Dict[Any, float]]

Dictionary mapping node IDs to probability distributions


๐Ÿง  Causal Inference

probabilistic_quantum_reasoner.inference.causal.QuantumCausalInference(network, backend=None)

Quantum causal inference engine.

Implements quantum analogs of Pearl's causal hierarchy: 1. Association (observation): P(Y|X) 2. Intervention (action): P(Y|do(X)) 3. Counterfactuals: P(Y_x|X',Y')

Initialize quantum causal inference engine.

Parameters:

Name Type Description Default
network Any

QuantumBayesianNetwork instance

required
backend Optional[Any]

Quantum computing backend

None

counterfactual_query(factual_evidence, counterfactual_interventions, query_nodes, **kwargs)

Perform counterfactual query: P(Y_x | X', Y').

Parameters:

Name Type Description Default
factual_evidence Dict[str, Any]

Observed evidence in actual world

required
counterfactual_interventions Dict[str, Any]

Interventions in counterfactual world

required
query_nodes List[str]

Nodes to query in counterfactual world

required

Returns:

Type Description
InferenceResult

Counterfactual inference result

do_calculus(interventions, query_nodes=None, **kwargs)

Perform quantum do-calculus intervention.

Parameters:

Name Type Description Default
interventions Dict[str, Any]

Dictionary of node_id -> intervention_value

required
query_nodes Optional[List[str]]

Nodes to query after intervention

None
**kwargs

Additional parameters

{}

Returns:

Type Description
InferenceResult

InferenceResult after intervention

estimate_causal_effect(treatment, outcome, confounders=None, **kwargs)

Estimate causal effect of treatment on outcome.

Parameters:

Name Type Description Default
treatment str

Treatment variable

required
outcome str

Outcome variable

required
confounders Optional[List[str]]

List of confounding variables

None

Returns:

Type Description
Dict[str, Any]

Dictionary with causal effect estimates

is_identifiable(treatment, outcome)

Check if causal effect is identifiable from observational data.


๐Ÿงช Example Usage

๐Ÿ“Œ Basic Inference

```python from probabilistic_quantum_reasoner.inference.engine import QuantumInferenceEngine engine = QuantumInferenceEngine(network) result = engine.infer(query_nodes=["A", "B"])