quimb.tensor.belief_propagation.sparse_ops

Specialized kernels for belief propagation with sparse COO tensors and dense vector messages. Both sparse.COO and n-dimensional scipy.sparse.coo_array are supported.

Functions

parse_coo(x)

Get the (coords, data) pair of a COO array, with coords as a

to_dense(x)

Convert a possibly sparse array to a dense numpy array.

_compute_all_tensor_messages_coo(coords, data, ms, out)

Numba kernel that computes all outgoing messages for COO tensor.

_contract_all_messages_coo(coords, data, ms, out)

Numba kernel that fully contracts a COO tensor with all incoming

_prepare_coo_ms_for_numba(coo, ms)

Make sure COO format tensor and messages are ready for numba kernels.

compute_all_tensor_messages_coo(coo, ms)

Given messages ms incident to a sparse tensor, compute all the

contract_tensor_messages_coo(coo, ms)

Contract a sparse tensor with a dense vector message on every

sum_all_but_axis_coo(x, axis)

Sum the sparse tensor x over every dimension but axis, returning

Module Contents

quimb.tensor.belief_propagation.sparse_ops.parse_coo(x)

Get the (coords, data) pair of a COO array, with coords as a tuple of one flat coordinate array per dimension. Returns None if x is not a COO array with zero fill value. Duplicate coordinates are allowed, since every kernel here accumulates additively.

quimb.tensor.belief_propagation.sparse_ops.to_dense(x)

Convert a possibly sparse array to a dense numpy array.

quimb.tensor.belief_propagation.sparse_ops._compute_all_tensor_messages_coo(coords, data, ms, out)

Numba kernel that computes all outgoing messages for COO tensor.

quimb.tensor.belief_propagation.sparse_ops._contract_all_messages_coo(coords, data, ms, out)

Numba kernel that fully contracts a COO tensor with all incoming messages.

quimb.tensor.belief_propagation.sparse_ops._prepare_coo_ms_for_numba(coo, ms)

Make sure COO format tensor and messages are ready for numba kernels.

quimb.tensor.belief_propagation.sparse_ops.compute_all_tensor_messages_coo(coo, ms)

Given messages ms incident to a sparse tensor, compute all the outgoing messages, each the contraction of the tensor with every incident message but one.

Parameters:
  • coo ((tuple[array], array)) – The (coords, data) pair, as returned by parse_coo.

  • ms (sequence of array) – The dense vector messages, one per dimension.

Return type:

list[array]

quimb.tensor.belief_propagation.sparse_ops.contract_tensor_messages_coo(coo, ms)

Contract a sparse tensor with a dense vector message on every dimension, to a scalar.

Parameters:
  • coo ((tuple[array], array)) – The (coords, data) pair, as returned by parse_coo.

  • ms (sequence of array) – The dense vector messages, one per dimension.

Return type:

scalar

quimb.tensor.belief_propagation.sparse_ops.sum_all_but_axis_coo(x, axis)

Sum the sparse tensor x over every dimension but axis, returning a dense vector. This is the BP ‘uniform message’ initialization step.