Skip to contents

One libtma call per unit: runs apply_tensor() for the directed per-line rows (and misses), then folds unordered rows, applies the weight model per line, sums the lines and pulls out the self-connection diagonal – the steps accumulate() and every other binding share.

Usage

accumulate_unit_networks(
  tensor,
  dims,
  dims_sender,
  dims_receiver,
  dims_mode,
  context_lookup,
  unit_rows,
  codes,
  times,
  ordered = FALSE,
  weight = NULL,
  misses = TRUE,
  diagonal = FALSE
)

Arguments

tensor

Numeric vector (column-major flat tensor)

dims

Integer vector of tensor dimensions

dims_sender

0-based sender axis indices

dims_receiver

0-based receiver axis indices

dims_mode

0-based mode axis indices

context_lookup

Integer matrix (n_context_rows x n_factors), 0-based

unit_rows

0-based response-row indices for this unit

codes

Numeric matrix (n_context_rows x n_codes)

times

Numeric vector of timestamps per context row

ordered

TRUE = directed; FALSE = undirected

weight

Weight model name ("binary", "product", "sqrt", "log1p"), or TRUE/FALSE for the legacy binary flag. NULL (default) = "binary".

misses

TRUE (default) = also accumulate missed co-occurrences and self-misses.

diagonal

Unordered only: self-connections (and self-misses) are also columns of the connection (and miss) vectors, in the A & A, A & B, B & B, ... layout. The separate self vectors are returned either way.

Value

List with connection_counts (n_codes^2 ordered, or choose(n_codes, 2)), row_connection_counts (raw per line, folded when unordered), self_connection_counts (n_codes), row_self_connection_counts (raw per line); with misses, also miss_counts, row_miss_counts, self_miss_counts, row_self_miss_counts.