API Reference¶
🧠 Core Network¶
probabilistic_quantum_reasoner.core.network.QuantumBayesianNetwork(name='QuantumBayesianNetwork', backend=None)
¶
A quantum-classical hybrid Bayesian network for probabilistic reasoning.
This class implements a graph structure that combines quantum nodes (with amplitudes and superposition) and classical nodes (with probability distributions) to enable sophisticated uncertainty modeling and inference.
Initialize a quantum Bayesian network.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
name
|
str
|
Name identifier for the network |
'QuantumBayesianNetwork'
|
backend
|
Optional[Any]
|
Quantum computing backend (Qiskit, PennyLane, etc.) |
None
|
add_quantum_node(node_id, outcome_space, name=None, initial_amplitudes=None, **kwargs)
¶
Convenience method to add a quantum node.
add_stochastic_node(node_id, outcome_space, name=None, prior_probabilities=None, **kwargs)
¶
Convenience method to add a classical stochastic node.
add_hybrid_node(node_id, outcome_space, name=None, mixing_parameter=0.5, **kwargs)
¶
Convenience method to add a hybrid quantum-classical node.
add_edge(parent_id, child_id, **edge_attrs)
¶
Add a directed edge (causal relationship) between nodes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
parent_id
|
str
|
ID of parent node |
required |
child_id
|
str
|
ID of child node |
required |
**edge_attrs
|
Additional edge attributes |
{}
|
Raises:
| Type | Description |
|---|---|
NetworkTopologyError
|
If nodes don't exist or edge creates cycle |
entangle(node_ids)
¶
Create quantum entanglement between specified nodes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
node_ids
|
List[str]
|
List of node IDs to entangle |
required |
Raises:
| Type | Description |
|---|---|
NetworkTopologyError
|
If nodes are not quantum nodes |
infer(query_nodes=None, evidence=None, algorithm='belief_propagation', **kwargs)
¶
Perform probabilistic inference on the network.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
query_nodes
|
Optional[List[str]]
|
Nodes to compute marginals for (all if None) |
None
|
evidence
|
Optional[Dict[str, Any]]
|
Evidence to condition on |
None
|
algorithm
|
str
|
Inference algorithm to use |
'belief_propagation'
|
**kwargs
|
Algorithm-specific parameters |
{}
|
Returns:
| Type | Description |
|---|---|
InferenceResult
|
InferenceResult with marginal probabilities and metadata |
intervene(interventions, query_nodes=None, **kwargs)
¶
Perform causal intervention (do-calculus).
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 |
🧩 Nodes¶
probabilistic_quantum_reasoner.core.nodes.QuantumNode(node_id, name, outcome_space, initial_state=None, conditional_operators=None)
¶
Bases: BaseNode
Node representing a quantum random variable with amplitude-based states.
apply_unitary(unitary)
¶
Apply unitary transformation to quantum state.
entangle_with(other_node_id)
¶
Mark this node as entangled with another.
get_amplitude(outcome)
¶
Get quantum amplitude for specific outcome.
is_entangled()
¶
Check if node is entangled with others.
log_probability(value, parent_values=None)
¶
Compute log probability using Born rule.
sample(parent_values=None)
¶
Sample from quantum state by performing measurement.
set_amplitude(outcome, amplitude)
¶
Set quantum amplitude for specific outcome.
probabilistic_quantum_reasoner.core.nodes.StochasticNode(node_id, name, outcome_space, cpt=None, prior_distribution=None)
¶
Bases: BaseNode
Classical probabilistic node with conditional probability tables.
probabilistic_quantum_reasoner.core.nodes.HybridNode(node_id, name, outcome_space, quantum_component=None, classical_component=None, mixing_parameter=0.5)
¶
Bases: BaseNode
Node that combines quantum and classical probabilistic elements.
get_classical_probability(value, parent_values=None)
¶
Get probability from classical component only.
get_quantum_probability(value, parent_values=None)
¶
Get probability from quantum component only.
log_probability(value, parent_values=None)
¶
Compute mixture log probability.
sample(parent_values=None)
¶
Sample using mixture of quantum and classical components.
update_mixing_parameter(new_lambda)
¶
Update the quantum-classical mixing parameter.
⚙️ Quantum Operators¶
probabilistic_quantum_reasoner.core.operators.QuantumOperator(name, dimension)
¶
Bases: ABC
Abstract base class for quantum operators.
probabilistic_quantum_reasoner.core.operators.UnitaryOperator(name, matrix=None, generator=None, angle=0.0)
¶
Bases: QuantumOperator
Unitary quantum operator for reversible quantum operations.
probabilistic_quantum_reasoner.core.operators.MeasurementOperator(name, projectors, outcome_labels)
¶
Bases: QuantumOperator
Measurement operator for quantum state collapse.
apply(state)
¶
Apply measurement and return post-measurement state.
collapse_to_outcome(state, outcome_idx)
¶
Collapse state to specific measurement outcome.
matrix_representation()
¶
Get matrix representation (sum of projectors).
measure_probabilities(state)
¶
Calculate measurement outcome probabilities.
probabilistic_quantum_reasoner.core.operators.ParametricUnitaryOperator(name, parameter_symbols, generator_function, initial_parameters=None)
¶
Bases: UnitaryOperator
Parametric unitary operator for variational quantum algorithms.