Synergistic Disclosure
Rosas, Mediano, Rassouli & Barrett [RMRB20] define \(\alpha\)-synergy as the maximum mutual information \(I(V;Y)\) over channels \(p(V \mid X)\) that are independent of every block in a constraint set \(\alpha\):
dit exposes both the scalar functions in this module and the lattice
decomposition SynDisc / ModifiedSynDisc
(see Partial Information Decomposition).
In [1]: from dit.multivariate import synergistic_disclosure
In [2]: from dit.example_dists import Xor
In [3]: d = Xor()
In [4]: synergistic_disclosure(d, sources=[[0], [1]], target=[2], alpha=[[0], [1]], niter=8)
Out[4]: 1.0
API
- synergistic_disclosure(dist, sources, target, alpha, niter=None, bound=None)[source]
Compute S_alpha(X -> Y) for a single constraint set alpha.
This is the maximum I(V; Y) over all alpha-synergistic channels, i.e. channels p_{V|X} satisfying I(V; X_{alpha_i}) = 0 for each subgroup alpha_i in alpha.
- Parameters:
dist (Distribution) – The joint distribution over sources and target.
sources (list of lists) – Each inner list gives the indices of one source variable group.
target (list) – The indices of the target variable.
alpha (list of lists) – Each inner list gives source-list indices (0-based) specifying which sources form each constraint subgroup.
niter (int, None) – Number of basin-hopping restarts.
bound (int, None) – Cardinality bound on V.
- Returns:
s_alpha – The synergistic disclosure, in bits.
- Return type:
- backbone_disclosure(dist, sources=None, target=None, niter=None, bound=None)[source]
Compute the full backbone decomposition of I(X; Y).
The backbone decomposes I(X;Y) = sum_{m=1}^{n} B^m_partial, where each B^m_partial >= 0 measures the marginal gain from relaxing constraints on groups of m variables to groups of m-1.
- Parameters:
dist (Distribution) – The joint distribution over sources and target.
sources (iter of iters, None) – The source variable groups. If None, all but last are used.
target (iter, None) – The target variable. If None, the last variable is used.
niter (int, None) – Number of basin-hopping restarts per lattice node.
bound (int, None) – Cardinality bound on V.
- Returns:
backbone – Keys are integers m=1..n, values are B^m_partial (non-negative backbone atoms).
- Return type:
- self_synergy(dist, sources=None, alpha=None, niter=None, bound=None)[source]
Compute S_alpha(X -> X), the self-synergy of sources X.
When alpha is None, uses the full individual-source constraints alpha = {{0}, {1}, …, {n-1}}.
- Parameters:
dist (Distribution) – The joint distribution over sources.
sources (list of lists, None) – The source variable groups. If None, each variable is its own group.
alpha (list of lists, None) – Constraint subgroups (source-list indices). If None, each individual source is constrained.
niter (int, None) – Number of basin-hopping restarts.
bound (int, None) – Cardinality bound on V.
- Returns:
s_self – The self-synergy, in bits.
- Return type:
modified_synergistic_disclosure() is the
singleton-constraint shortcut used by ModifiedSynDisc.