Skip to content

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.

log_probability(value, parent_values=None)

Compute log probability from CPT or prior.

sample(parent_values=None)

Sample from conditional or prior distribution.

update_cpt(cpt)

Update the conditional probability table.

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.

apply(state) abstractmethod

Apply the operator to a quantum state.

is_hermitian()

Check if the operator is Hermitian.

is_unitary()

Check if the operator is unitary.

matrix_representation() abstractmethod

Get the matrix representation of the operator.

probabilistic_quantum_reasoner.core.operators.UnitaryOperator(name, matrix=None, generator=None, angle=0.0)

Bases: QuantumOperator

Unitary quantum operator for reversible quantum operations.

apply(state)

Apply unitary transformation to quantum state.

inverse()

Get the inverse (adjoint) of the unitary operator.

matrix_representation()

Get the unitary matrix representation.

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.

gradient(parameter_idx, epsilon=1e-08)

Compute parameter gradient using finite differences.

update_parameters(new_parameters)

Update the operator parameters.

probabilistic_quantum_reasoner.core.operators.PauliOperators

Collection of Pauli operators.

X() staticmethod

Pauli-X (NOT) gate.

Y() staticmethod

Pauli-Y gate.

Z() staticmethod

Pauli-Z gate.

probabilistic_quantum_reasoner.core.operators.HadamardOperator()

Bases: UnitaryOperator

Hadamard gate for creating superposition.

probabilistic_quantum_reasoner.core.operators.CNOTOperator()

Bases: UnitaryOperator

Controlled-NOT gate for creating entanglement.

probabilistic_quantum_reasoner.core.operators.ComputationalBasisMeasurement(dimension)

Bases: MeasurementOperator

Standard computational basis measurement.