From 1482f080c3f8dbf53ee8ce5bfc089f3ad92a1f0f Mon Sep 17 00:00:00 2001 From: juliankedys <96544513+juliankedys@users.noreply.github.com> Date: Sun, 26 Oct 2025 06:35:37 +0000 Subject: [PATCH 1/8] Add blog post: phase-diagram-playbook --- _posts/2025-10-25-phase-diagram-playbook.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 _posts/2025-10-25-phase-diagram-playbook.md diff --git a/_posts/2025-10-25-phase-diagram-playbook.md b/_posts/2025-10-25-phase-diagram-playbook.md new file mode 100644 index 0000000..e69de29 From 4c9c33139dd64a7544f7d7fe21bdfe5c22cd8369 Mon Sep 17 00:00:00 2001 From: juliankedys <96544513+juliankedys@users.noreply.github.com> Date: Sun, 26 Oct 2025 12:34:20 +0000 Subject: [PATCH 2/8] Add post: phase-diagram-playbook (draft) + bibliography --- _posts/2025-10-25-phase-diagram-playbook.md | 537 ++++++++++++++++++ .../2025-10-25-phase-diagram-playbook.bib | 0 2 files changed, 537 insertions(+) create mode 100644 assets/bibliography/2025-10-25-phase-diagram-playbook.bib diff --git a/_posts/2025-10-25-phase-diagram-playbook.md b/_posts/2025-10-25-phase-diagram-playbook.md index e69de29..87f679a 100644 --- a/_posts/2025-10-25-phase-diagram-playbook.md +++ b/_posts/2025-10-25-phase-diagram-playbook.md @@ -0,0 +1,537 @@ +--- +layout: distill +title: "A Shared Coordinate System for Whole-Brain Dynamics" +tags: [computational neuroscience, shared latent representations, tutorial, subject alignment, neural state-spaces, energy landscapes, intersubject comparability, interpretable descriptors, brain dynamics, statistical physics] +giscus_comments: true +date: 2025-10-25 +featured: false + +authors: + - name: "Julian Kędys" + url: "https://www.linkedin.com/in/julian-kedys-a332222a6/" + affiliations: + - name: "Department of Digital Medicine, Poznań Supercomputing and Networking Center (PSNC), Polish Academy of Sciences" + url: "https://www.psnc.pl" + - name: "Cezary Mazurek" + url: "http://pl.linkedin.com/in/cezarymazurek" + affiliations: + - name: "Department of Digital Medicine, Poznań Supercomputing and Networking Center (PSNC), Polish Academy of Sciences" + url: "https://www.psnc.pl" +--- + +# Contents: +### Introduction +### Motivation and contribution +### Pipeline overview + - 1) ELA-secure preprocessing (brief) + - 2) Population-universal shared latent space + - 3) Binarisation of latent time series + - 4) Pairwise maximum-entropy (Ising) fitting + - 5) Energy-Landscape Analysis (ELA): descriptors and kinetics + - 6) Phase-Diagram Analysis (PDA): multi-observable placement + +### Robustness, uncertainty and diagnostics +### Limitations and scope +### Outlook + +--- + +## Overview + +We present a modular, modality-agnostic workflow that turns heterogeneous whole-brain time series into cohort-comparable, interpretable coordinates on a shared phase diagram, together with energy-landscape descriptors such as attractors, barriers, and kinetics. + +Key steps: +1) population-universal latent spaces (SRM, MCCA, Group PCA or Group ICA with consensus and automated dimensionality selection) +2) per-latent binarisation to the +/-1 format +3) PMEM or Ising fitting (exact for small N, pseudo-likelihood, or variational Bayes +4) energy-landscape analysis: minima, disconnectivity, barriers, occupancies, kinetics +5) phase-diagram analysis: multi-observable placement on a shared reference surface with uncertainty + +Outputs include uncertainty, quality control, and interactive visuals. Methods are user-tweakable, reliable, and reproducible. + +--- + +## Motivation and contribution + +The UniReps community prioritises representational alignment and comparability across subjects, datasets, and models. This post demonstrates: + +- a subject-alignment front-end that produces shared latent representations with stable semantics across a population +- a stitched, physics-grounded back-end (PMEM to ELA to PDA) that yields mechanistically interpretable descriptors and shared coordinates +- a robustness-first toolkit that includes consensus alignment, automated selection, uncertainty quantification, diagnostics, and review-ready artefacts + +--- + +## Pipeline overview + +
+

PIPELINE_OVERVIEW_PLACEHOLDER

+
+ +1. Preprocess and engineer: ELA-secure detrending, conservative handling of missing data, safe within-subject run concatenation, per-region standardisation. +2. Population-aware alignment and dimensionality reduction: shared latents via SRM, MCCA, or Group PCA or Group ICA with consensus; automatic dimensionality selection. +3. Binarisation: per-latent threshold (median or mean), yielding +/-1 time series. +4. PMEM or Ising fitting: exact (small N), safeguarded pseudo-likelihood, or variational Bayes. +5. Energy-landscape analysis: attractors, barriers, disconnectivity graph, occupancies, kinetics. +6. Phase-diagram analysis: multi-observable placement on a shared reference surface with confidence intervals and near-criticality indices. + +--- + +## 1) ELA-secure preprocessing (brief overview) + +Aim: remove spikes, outliers, and slow global drifts while **preserving the on/off switching structure** that drives binarisation, PMEM fitting, and ELA/PDA. The procedure is modality-agnostic, non-invasive, and parameterised to be reproducible. + +* Adaptive per-region parameters are computed from simple statistics and Welch spectra, then re-adapted after each step if requested (robust mode). +* Despiking uses derivative-based detection with local, percentile-scaled replacements in short contextual windows; consecutive spikes are handled as blocks. +* Outlier removal is IQR-based with the same local, percentile-scaled replacement; an optional second pass is available. +* Population-aware detrending uses a cohort-optimised LOESS trend (fraction selected by stationarity and autocorrelation reduction). The global trend is estimated on the mean signal and scaled per region, which corrects drift without flattening transitions. +* Optional steps: light smoothing, bandpass filtering, breaking long flat runs, temporal standardisation, and spatial normalisation. +* Outputs include per-step amplitude deltas and residual checks; we also report the concordance between pre- and post-detrending binary states to ensure switching patterns are retained. + + +
Example region: Striatum dorsal region (R). Multi panel view of the preprocessing pipeline applied to one regional time series: Original Signal → After Despiking (derivative based spike detection with local percentile scaled replacement) → After Outlier Removal (IQR based with local context) → After Universal Detrending (global LOESS model optimised on the cohort) → After Spatial Normalization (min max to [0,1]). The sequence removes spikes and outliers, corrects slow global drift, and rescales amplitudes while preserving the switching structure required for later binarisation and PMEM, ELA, PDA.
+ +
Automatic adaptation and step audit for the same region. The printout reports initial region statistics (median, IQR, std, noise estimate, SNR, main frequency), the adapted parameters chosen for this instance (filter band and order, despike and outlier thresholds and windows, polynomial order and windows for detrending and smoothing), and per step summaries such as max amplitude change. It records that the universal LOESS detrending was used and shows the selected LOESS fraction. These diagnostics make the preprocessing reproducible and provide quality control before alignment and binarisation.
::contentReference[oaicite:0]{index=0} + + +
Regional examples: dentate gyrus (R) and thalamus (R). Left panels show original versus detrended regional signals after applying the universal global-trend model. Right panels show the resulting binary state rasters using per-region median thresholds; the title reports binary-state concordance between original and detrended signals. These visuals quantify how detrending shifts baselines yet preserves the switching patterns used for PMEM, ELA and downstream binarisation.
+ +
Cohort-wide evidence for a global trend. Top: absolute linear-trend correlations (abs(r)) for each recording with a decision threshold at 0.3. Bottom: relative trend magnitudes with a threshold at 0.1. The fact that many recordings exceed these thresholds motivates a universal detrending step before alignment and binarisation.
+ +
Detrending model selection on a representative dataset. Top: the global signal overlaid with linear, quadratic and LOESS trends; the preferred method is highlighted as the best. Bottom: residuals after each detrending method. The chosen model is the one that yields residuals that are most stationary and least autocorrelated; here LOESS is selected and its fraction is later optimised across datasets.
+ +
Summary table of trend metrics for all recordings. For each dataframe we report r value, p value, relative trend magnitude and whether residuals are stationary after linear, quadratic or LOESS detrending. This audit supports the universal-method choice and sets LOESS parameters used in the preprocessing pipeline.
+::contentReference[oaicite:0]{index=0} + + + +{% details Click to expand: practical notes %} + +* Replacement never injects artificial structure: values are drawn from local percentiles and clamped to local ranges; neighbors can be skipped to avoid bleeding flagged samples. +* Block handling groups consecutive indices to avoid fragmentation; a de-blocking fix prevents long identical segments after replacements. +* Universal LOESS fraction is chosen across the cohort to balance residual stationarity, autocorrelation reduction, and variance explained; region-wise application only scales that global trend. +* All steps are seedable and config-driven; logs capture chosen parameters, max amplitude changes, and QC metrics for auditability. + +#### Remark: + +For ELA, methods must enhance quality without compromising temporal structure. Safe, beneficial steps: + +* Despiking: generally beneficial; percentile/MAD-based, no hardcoded amplitude thresholds. +* Outlier removal: single or repeated; statistics-driven safeguards prevent over-removal. +* Detrending: crucial for our data; prefer the universal LOESS approach for cross-subject/session/region comparability. Region-wise detrending should be used only with domain context; the cohort-wide analysis supports global detrending, with expert review welcomed. +* Flat-blocks breaking: apply if replacements create long identical runs. +* Smoothing: only very mild, primarily cosmetic; avoid aggressive windows that could distort binarisation. + +Bandpass filtering can be applied if not already applied to the data - many recording devices perform it automatically. Temporal standardisation and spatial normalisation are not required for ELA itself but are retained for general use; spatial normalisation is applied for the imputation pipeline to align signs and amplitudes. LOESS may shift some series below zero; this is expected and accounted for. All parameterisations are chosen to remain strictly ELA-compatible. + + {% enddetails %} + +--- + +## 2) Population-universal shared latent space + +Goal: obtain shared, ELA-secure latent components whose semantics are stable across subjects and runs, so downstream binarisation → PMEM → ELA/PDA is directly comparable and computationally tractable. + +#### What’s new/strong here (one glance): + +* Pick-and-mix reductions: (Group PCA, Group ICA, SRM, MCCA) with robust tweaks (varimax, multi-restart ICA, PCA-initialised SRM, whitened MCCA). +* A population-aware, multi-metric objective (structural + temporal + method-specific) → auto-selection of dimensionality and hyperparameters. +* Alignment toolkit (orthogonal Procrustes with column-wise sign fixes, Hungarian matching, and a neuro-Procrustes consensus). +* Synergy-weighted consensus across methods with dominance checks, stability (RV) analysis, and per-component contribution audits. +* Efficient, reproducible compute (SVD on averaged covariances, fast downsampling for temporal metrics, parallel grid search, seeded randomness). + +
+

SHARED_COMPONENTS_PLACEHOLDER (e.g., heatmaps of method-specific and consensus components)

+
+ +--- + +### 2.1 Methods (population-aware, ELA-secure) + +All methods preserve temporal ordering (only linear projections or orthogonal transforms over channels), and we quantify temporal faithfulness (trustworthiness/continuity, autocorrelation preservation). + +* Group PCA (variance capture + varimax): eigenvectors of the average subject covariance; optional varimax keeps components sparse/interpretable without breaking orthogonality. +*Extras:* elbow detection, subject-wise EVR, reconstruction error, and post-rotation low-variance pruning. + +* Group ICA (shared independent subspaces): subject-wise PCA → concatenation → FastICA with multi-restart selection (best negentropy proxy via kurtosis deviation), independence verification (mean abs(corr), kNN mutual information, squared-corr checks), sign harmonisation of subject contributions before averaging. + +* SRM (shared timecourses with subject-specific maps): iterative orthogonal subject mappings (W_i) and shared response (S), PCA-based initialisation, Hungarian-matched alignment of mappings across subjects, orthogonality diagnostics, shared variance quantification. + +* MCCA (maximising cross-subject correlation): per-subject whitening → SVD on concatenated features (SUMCOR-style) → iterative refinement of subject loadings (a_i). We report cross-subject alignment, canonical correlations to shared response, orthogonality in whitened space, and shared variance in native space. + +> Why four methods? They trade off interpretability, independence, correlation sharing, and variance capture. We score them with the same unified, ELA-aware metric suite and fuse them, yielding a stable, population-universal latent space. + +--- + +### 2.2 Alignment & sign consistency (critical for comparability) + +* Orthogonal Procrustes with column-wise sign checks (flip a component if it anticorrelates with the reference). +* Hungarian matching aligns component order across methods/subjects by maximal absolute correlations. +* Neuro-Procrustes consensus: iterative, order-robust alignment across methods (SVD-based reference) with final sign harmonisation. +* Optional biological sign protocol (baseline-anchored flips) to stabilise polarities across datasets. + +
+

ALIGNMENT_FLOW_PLACEHOLDER (schematic of Procrustes → sign fix → Hungarian → consensus)

+
+ +--- + +### 2.3 Metrics & selection (multi-objective, normalised to [0,1]) + +Structural fidelity (RSA-style): correlation between original region-by-region correlation structure and that reconstructed from latents; sign preservation weighted by abs(corr); Procrustes disparity; Kruskal stress on inter-region distances. + +Temporal faithfulness: trustworthiness/continuity of neighbour relations, temporal neighbourhood hits, autocorrelation preservation at task-relevant lags. + +Method-specific: + +* PCA: mean subject EVR, reconstruction error. +* ICA: independence (mean abs(corr)↓, MI↓), kurtosis (≠3), sparsity. +* SRM: shared alignment (Hungarian-matched), orthogonality, shared variance. +* MCCA: cross-subject alignment, shared variance, canonical correlations, orthogonality (whitened). + +Normalisation uses principled maps (e.g., $$x \mapsto \tfrac{1}{1+x}$$ for “smaller-is-better”, linear $$[-1,1]\to[0,1]$$ for correlations). +Composite score: weighted average (user- or default weights), then auto-optimise (k) and hyperparameters via seeded, parallel grid search. + +{% details Click to expand: metric formulas %} + +Kruskal stress (upper-triangle, variance-matched): +$$ +\operatorname{Stress}=\sqrt{\frac{\sum_{i +

CONSENSUS_DIAGNOSTICS_PLACEHOLDER (barplots: component alignment & subject consistency with thresholds)

+ + +--- + +### 2.5 Mathematical cores (rigorous but compact) + +SRM (orthogonal, correlation-maximising form). For subjects $X_i\in\mathbb{R}^{T_i\times d}$ find $W_i\in\mathbb{R}^{d\times k}$ with $W_i^\top W_i=I$ and shared response $S\in\mathbb{R}^{T\times k}$: + +{% raw %} +$$ +\min_{\{W_i\},\, S}\sum_i \lVert X_i W_i - S \rVert_F^2 +\;\Longleftrightarrow\; +\max_{\{W_i\},\, S}\sum_i \operatorname{tr}\!\big(S^\top X_i W_i\big), +\qquad W_i^\top W_i = I. +$$ +{% endraw %} + +Updates: $S\leftarrow \tfrac{1}{n}\sum_i X_i W_i$ (column-wise z-scored), +$W_i \leftarrow U V^\top$ where $U\Sigma V^\top = \operatorname{SVD}(X_i^\top S)$. + +MCCA (SUMCOR-style, whitened). Let $X_i$ be centred and whitened to $\tilde X_i$. Find $a_i\in\mathbb{R}^{d\times k}$ maximising total cross-correlation: + +{% raw %} +$$ +\max_{\{a_i\}}\; \sum_{i +

SCREE_AND_VARIANCE_PLACEHOLDER (scree, per-component & cumulative variance; consensus variance explained)

+ + +--- + +### 2.7 Outputs (what to expect) + +* Method-specific models (components/loadings), aligned across methods. +* Consensus model (columns = population-universal latents), with weights and stability report. +* Per-subject projections (time × components) ready for binarisation → ELA/PDA. +* QC bundle: metric table, thresholded alignment & consistency plots, dominance index, and retained-component justifications. + +--- + +{% details Click to expand: implementation highlights & safeguards %} + +* RSA-style structure preservation reconstructs regions from components (per-region least squares) to compare correlation matrices before/after, reporting Pearson on vectorised upper triangles, Frobenius/mean diffs, and weighted sign preservation. +* Temporal metrics (trustworthiness/continuity, neighbourhood hit) use downsampled representations for speed without losing neighbourhood signal; autocorr preservation checked at task-relevant lags. +* Robust sign handling: column-wise correlation checks after Procrustes; optional baseline-anchored flipping (percentile-based) prevents biologically implausible polarity swaps. +* Dominance index offers four normalised variants (Gini/CV/TVD/min-max) to ensure balanced consensus. +* Permutation/phase-randomisation thresholds provide statistical guardrails for declaring alignment/consistency “good enough.” + {% enddetails %} + +--- + +### References (core methods and metrics) + +* SRM: Chen, R. S., Chen, P.-H., et al. A Reduced-Dimension fMRI Shared Response Model. NeurIPS, 2015. +* MCCA: Kettenring, J. R. Canonical analysis of several sets of variables. Biometrika, 1971. +* CCA: Hotelling, H. Relations Between Two Sets of Variates. Biometrika, 1936. +* Orthogonal Procrustes: Schönemann, P. H. A generalized solution of the orthogonal Procrustes problem. Psychometrika, 1966. +* Hungarian algorithm: Kuhn, H. W. The Hungarian Method for the Assignment Problem. Naval Research Logistics Quarterly, 1955. +* PCA/Varimax: Jolliffe, I. T. Principal Component Analysis; Kaiser, H. F. The Varimax Criterion. Psychometrika, 1958. +* ICA / FastICA: Hyvärinen, A. and Oja, E. Independent Component Analysis: Algorithms and Applications. Neural Networks, 2000. +* Trustworthiness/Continuity: Venna, J. and Kaski, S. Neighborhood Preservation in Nonlinear Projection Methods. 2001. +* Kruskal stress: Kruskal, J. B. Multidimensional scaling by optimizing goodness of fit to a nonmetric hypothesis. Psychometrika, 1964. +* RSA: Kriegeskorte, N. et al. Representational Similarity Analysis. Frontiers in Systems Neuroscience, 2008. +* RV coefficient: Robert, P. and Escoufier, Y. A Unifying Tool for Linear Multivariate Statistical Methods: The RV-Coefficient. 1976. + +--- + +
+

PIPELINE_SUMMARY_PLACEHOLDER (overview from preprocessing → pick-and-mix methods → alignment → consensus → QC)

+
+::contentReference[oaicite:0]{index=0} + +--- + + +## 3) Binarisation of latent time series + +After alignment and dimensionality reduction, each latent x_i(t) is thresholded per-latent using median or mean and mapped to s_i(t) in the set {-1,+1}. + +This respects component-specific baselines, keeps PMEM tractable, and standardises inputs for inter-subject comparability. + +--- + +## 4) Pairwise maximum-entropy (Ising) fitting + +We model binary latents with the pairwise maximum-entropy distribution + +$$ +P(\mathbf{s}) \propto \exp\left(\sum_i h_i s_i + \sum_{i + + + +--- + +## 6) Phase-Diagram Analysis (PDA): multi-observable placement + +Each subject is placed on a shared reference phase surface parameterised by mu and sigma via a variance-balanced discrepancy over multiple observables, for example + +$$ +\{m,\; q,\; \chi_{\mathrm{SG}},\; \chi_{\mathrm{Uni}},\; C\}. +$$ + +We compute the optimum, bootstrap confidence ellipses, and distance-to-criticality, enabling direct cross-subject comparison that is not tied to a single healthy baseline. + +
+ +
+ +--- + +## Robustness, uncertainty and diagnostics + +- Uncertainty via variational-Bayes posteriors for h and J; bootstrap intervals for mu and sigma and for near-criticality; block bootstrap for autocorrelation +- Convergence checks including MCMC R-hat and effective sample size where applicable, pseudo-likelihood relative-norm stopping, and ELBO improvements for variational Bayes +- Quality-control gates including permutation or null thresholds for spurious minima, component-stability filters, and sensitivity to number of latents and alignment choice +- Ablations: pooled versus subgroup reference surfaces; method toggles among SRM, MCCA, and ICA; median versus mean thresholds + +--- + +## Interactive figures + +- Phase placements with confidence intervals +
+ +
+ +- Basin visits over time (stripe plot) +
+ +
+ +- Barrier distribution and kinetics +
+ +
+ +--- + +## Reproducibility and artefacts + +We operate config-first with deterministic seeds and machine-parsable outputs. + +{% highlight yaml %} +# configs/pipeline.yaml +seed: 123 +preprocess: + detrend: conservative + concat_runs: true + impute: short_gaps_only +alignment: + methods: [SRM, MCCA, GroupPCA, GroupICA] + consensus: true + select_dim: auto +binarise: + threshold: median +ising: + mode: PL # {EXACT|PL|VB} + l2_h: 1e-5 + l2_J: 1e-4 + pl_tol: 1e-6 # relative-norm stopping + vb: + prior_prec_h: 6.0 + prior_prec_J: 30.0 +ela: + minima_search: exhaustive + kinetics: true +pda: + observables: [m, q, chiSG, chiUni, C] + bootstrap: true + ci_level: 0.95 +reports: + phase_report: true + landscape_report: true +{% endhighlight %} + +Repository layout for this post: +- post file: _posts/2025-10-25-a-shared-coordinate-system.md +- static images: assets/img/a-shared-coordinate-system/… +- plotly HTML: assets/plotly/… +- BibTeX: assets/bibliography/a-shared-coordinate-system.bib + +--- + +## Limitations and scope + +- Binarisation coarsens signals, but enables interpretable PMEM fitting and stable cross-subject comparability +- Latent selection is influential; consensus and metric-guided selection mitigate but semantics remain partly model-dependent +- The choice of reference surface affects PDA; we quantify sensitivity and expose cost bowls for transparency +- Designed for resting or task neural time series; extension to other binarisable dynamical systems is often straightforward + +--- + +## Outlook + +Population-universal latents combined with physics-grounded descriptors provide a shared language for multi-subject brain dynamics that is portable across modalities, tasks, and species, and a bridge to mechanistic interpretation and clinical translation. Planned extensions include multi-modal fusion, alignment-aware causal probes, and targeted clinical studies. + +--- + +## Appendix: Mathematical details + +### PMEM objective via pseudo-likelihood + +Maximise pseudo-likelihood with L2 regularisation: + +$$ +\mathcal{L}_{\mathrm{PL}}(\mathbf{h},\mathbf{J}) += +\sum_{t,i}\log P\left(s_i^{(t)}\mid \mathbf{s}_{\setminus i}^{(t)}\right) +- +\frac{\lambda_h}{2}\lVert \mathbf{h}\rVert_2^2 +- +\frac{\lambda_J}{2}\lVert \mathbf{J}\rVert_F^2. +$$ + +### Variational Bayes sketch + +Gaussian priors on parameters; update posterior precision via empirical feature covariances; track the evidence lower bound; optional Monte Carlo moment approximation for larger N. + +### Observables for PDA + +$$ +\begin{aligned} +m &= \frac{1}{N}\sum_i \langle s_i\rangle, \\ +q &= \frac{1}{N}\sum_i \langle s_i\rangle^2, \\ +\chi_{\mathrm{Uni}} &= \frac{1}{N}\sum_{i\neq j}\mathrm{Cov}(s_i,s_j), \\ +\chi_{\mathrm{SG}} &= \frac{1}{N}\sum_k \lambda_k^2, \\ +C &= \frac{1}{N}\left(\langle E^2\rangle - \langle E\rangle^2\right). +\end{aligned} +$$ + +--- + +### Acknowledgements + +We thank colleagues at PSNC for discussions and infrastructure support. + +--- + +### References + +Rendered from the bibliography file. diff --git a/assets/bibliography/2025-10-25-phase-diagram-playbook.bib b/assets/bibliography/2025-10-25-phase-diagram-playbook.bib new file mode 100644 index 0000000..e69de29 From bce1fedb5f2cda641fa09e18d6932315bb9d76cf Mon Sep 17 00:00:00 2001 From: juliankedys <96544513+juliankedys@users.noreply.github.com> Date: Tue, 28 Oct 2025 05:14:34 +0000 Subject: [PATCH 3/8] Exctended the descriptions of the key methods; appropriate visuals will be included very shortly (same day), in the upcoming push. --- _posts/2025-10-25-phase-diagram-playbook.md | 553 +++++++++++++++----- 1 file changed, 429 insertions(+), 124 deletions(-) diff --git a/_posts/2025-10-25-phase-diagram-playbook.md b/_posts/2025-10-25-phase-diagram-playbook.md index 87f679a..fc74bb2 100644 --- a/_posts/2025-10-25-phase-diagram-playbook.md +++ b/_posts/2025-10-25-phase-diagram-playbook.md @@ -1,63 +1,109 @@ --- layout: distill -title: "A Shared Coordinate System for Whole-Brain Dynamics" -tags: [computational neuroscience, shared latent representations, tutorial, subject alignment, neural state-spaces, energy landscapes, intersubject comparability, interpretable descriptors, brain dynamics, statistical physics] +title: "Shared Coordinates for Cross-Subject Brain Dynamics: Universal Latents and Directly Comparable Phase Diagrams" +categories: [shared latent representations, tutorial, subject alignment, neural state-spaces, energy landscapes, intersubject comparability, state transitions, interpretable descriptors, brain dynamics] giscus_comments: true date: 2025-10-25 featured: false authors: - - name: "Julian Kędys" + - name: Julian Kędys url: "https://www.linkedin.com/in/julian-kedys-a332222a6/" affiliations: - - name: "Department of Digital Medicine, Poznań Supercomputing and Networking Center (PSNC), Polish Academy of Sciences" - url: "https://www.psnc.pl" - - name: "Cezary Mazurek" + name: Department of Digital Medicine, Poznań Supercomputing and Networking Center (PSNC), Polish Academy of Sciences + - name: Cezary Mazurek url: "http://pl.linkedin.com/in/cezarymazurek" - affiliations: - - name: "Department of Digital Medicine, Poznań Supercomputing and Networking Center (PSNC), Polish Academy of Sciences" - url: "https://www.psnc.pl" ---- -# Contents: -### Introduction -### Motivation and contribution -### Pipeline overview - - 1) ELA-secure preprocessing (brief) - - 2) Population-universal shared latent space - - 3) Binarisation of latent time series - - 4) Pairwise maximum-entropy (Ising) fitting - - 5) Energy-Landscape Analysis (ELA): descriptors and kinetics - - 6) Phase-Diagram Analysis (PDA): multi-observable placement +bibliography: 2025-10-25-phase-diagram-playbook.bib + +toc: + - name: "Overview" + - name: "Introduction" + subsections: + - name: "1. Big‑picture overview - why shared latents + PMEM → ELA → PDA?" + - name: "2. Where the methods come from (intuitive recap)" + - name: "3. Why shared latents are necessary (and useful)" + - name: "Motivation and contribution" + - name: "Pipeline overview" + subsections: + - name: "1) ELA-secure preprocessing (brief)" + - name: "2) Population-universal shared latent space" + - name: "3) Binarisation of latent time series" + - name: "4) Pairwise maximum-entropy (Ising) fitting" + - name: "5) Energy-Landscape Analysis (ELA): descriptors and kinetics" + - name: "6) Phase-Diagram Analysis (PDA): multi-observable placement" + - name: "Robustness, uncertainty and diagnostics" + - name: "Limitations and scope" + - name: "Outlook" -### Robustness, uncertainty and diagnostics -### Limitations and scope -### Outlook --- -## Overview +## Overview (TL;DR) -We present a modular, modality-agnostic workflow that turns heterogeneous whole-brain time series into cohort-comparable, interpretable coordinates on a shared phase diagram, together with energy-landscape descriptors such as attractors, barriers, and kinetics. +We present a modular, modality-agnostic workflow that turns heterogeneous whole-brain time series into cohort-comparable, interpretable coordinates on a shared phase diagram, together with energy-landscape descriptors such as attractors, barriers, and kinetics. Key steps: -1) population-universal latent spaces (SRM, MCCA, Group PCA or Group ICA with consensus and automated dimensionality selection) +1) population-universal latent spaces (Shared Response Model - SRM, Multiset Canonical Correlation Analysis - MCCA, Group PCA or Group ICA with consensus and automated dimensionality selection) 2) per-latent binarisation to the +/-1 format -3) PMEM or Ising fitting (exact for small N, pseudo-likelihood, or variational Bayes -4) energy-landscape analysis: minima, disconnectivity, barriers, occupancies, kinetics -5) phase-diagram analysis: multi-observable placement on a shared reference surface with uncertainty +3) Pairwise Maximum Entropy Model (PMEM) or Ising fitting: exact for small N, pseudo-likelihood, or variational Bayes +4) energy landscape analysis (ELA): minima, disconnectivity, barriers, occupancies, kinetics +5) phase diagram analysis (PDA): novel multi-observable placement on a shared reference surface with uncertainty Outputs include uncertainty, quality control, and interactive visuals. Methods are user-tweakable, reliable, and reproducible. + +--- + +## Introduction + +#### 1. Big‑picture overview - why shared latents + PMEM → ELA → PDA? +Modern whole‑brain recordings are heterogeneous across subjects, sessions, tasks and modalities. If we analyse each participant in their own idiosyncratic space, descriptors of “brain state” are not directly comparable. Our pipeline solves this in two moves: +1. Population‑universal shared latents. We align subjects into a common, low‑dimensional space (SRM / MCCA / Group PCA‑ICA with consensus). Variables have stable meaning across participants and runs, so everything downstream is comparable and reproducible. +2. Physics‑grounded descriptors. On the binarised latents we fit a pairwise maximum‑entropy model (PMEM/Ising), then read out two complementary summaries: + * Energy‑Landscape Analysis (ELA) - an attractor‑and‑barrier view of the fitted Ising energy. It yields minima/basins, disconnectivity graphs, barrier spectra, and kinetic descriptors (basin dwell times, mean first-passage times (MFPTs), committors, relaxation times). This is the mechanistic, state‑space view. + * Phase‑Diagram Analysis (PDA) - a macroscopic view that places each subject on the **($$\mu$$, $$\sigma$$)** plane of a disordered (via parametric perturbations) Ising model (SK‑like). In broad outline, it uses multiple observables at once to locate individuals relative to critical boundaries, providing cohort‑comparable coordinates and uncertainty. + +#### 2. Where the methods come from (intuitive recap) +* **PMEM/Ising:** Among all binary models that match the empirical means and pairwise correlations, PMEM has maximum entropy. It is equivalent to the zero‑temperature Ising family used throughout statistical physics. Minimal assumptions; parameters are interpretable as fields $$h_i$$ and couplings $$J_{ij}$$. +* **ELA:** Treat the fitted Ising as an energy landscape: + $$ + E(\mathbf{s}) = -\sum_i h_i s_i - \tfrac{1}{2}\sum_{i\neq j} J_{ij} s_i s_j + $$, + + over binary states $$\mathbf{s}\in\{-1,+1\}^N$$. + + Local minima = attractors; energy differences = barriers; transition graphs + Markov kinetics = how the brain moves between them. +* **PDA:** In spin‑glass models, the distribution of couplings matters. If the off‑diagonal $$J_{ij}$$ have mean $$\mu$$ and standard deviation $$\sigma$$ with $$h_i\approx 0$$, the system sits in regions (paramagnetic / spin‑glass / ferromagnetic) that govern ordering, glassiness and susceptibility. PDA maps each subject onto this phase surface so cohorts can be compared at a glance. + +#### 3. Why shared latents are necessary (and useful) +* **Stable semantics:** Each latent represents the same population‑level pattern across participants, which makes ELA basins and PDA coordinates directly comparable. +* **Tractability:** PMEM scales as $$\mathcal{O}(N^2)$$ parameters; a well‑chosen latent space puts us in the sweet spot between information retention and robust estimation. +* **Downstream identifiability:** Binarisation → PMEM → ELA/PDA relies on on/off switching. Our alignment preserves this structure and gives us comparable switching rasters across the cohort. +* **Utility‑forward:** with one aligned space we can publish shared phase diagrams and landscape reports that are re‑usable across datasets and modalities, enabling baseline‑independent comparisons and cross‑study synthesis. + +**Select practical advantages of our framework:** + +The workflow is largely standalone and implemented locally, from scratch - allowing researchers/analysts to adapt its workings to their exact needs - with numerical-stability and computational-efficiency improvements (relative to analogous implementations in the domain), novel algorithmic extensions (i.a. for multi-subject dimnensionality reduction, comparative phase diagram analysis of heterogenous brain dynamics), informative metrics and rich visualisations, and emphasis on **a)** automated parameter optimisation - not requiring domain expertise or significant prior experience with the pipeline from the user, **b)** data-driven model selection, **c)** data-modality universality and independece of heuristics/meta-knowledge throughout the entire design process, and **d)** availability of alternative methods and hyperparameters for key processing/modelling stages, so as to best fit the needs of the user + +**Limitations worth remembering:** +- Binarisation coarsens signals (whereas more granular discretisation becomes computationally prohibitve almost instantly for real-life data/problems) +- Results depend on the selection of binarisation thresholds, dimensionality-reduction models and target counts of obtained latent features +- For exact modelling methods, the set of possible states doubles in size with every additional feature/node/brain region +- PDA assumes $$h\approx 0$$ and an SK‑like (Sherrington-Kirkpatrick) parametrisation +- ELA explores single‑spin‑flip pathways, which is a limited and simplified assumption + +To counteract the influence of initial choice of (hyper)parameters, we quantify uncertainty in the workflow, track convergence wherever applicable, offer truly data-driven and bias-free optimisation of pipeline parameters, and expose diagnostics so these choices remain transparent and testable. + --- ## Motivation and contribution -The UniReps community prioritises representational alignment and comparability across subjects, datasets, and models. This post demonstrates: +Reflecting the UniReps community's interest in representational alignment and comparability across subjects, datasets, and models, this post demonstrates: -- a subject-alignment front-end that produces shared latent representations with stable semantics across a population -- a stitched, physics-grounded back-end (PMEM to ELA to PDA) that yields mechanistically interpretable descriptors and shared coordinates -- a robustness-first toolkit that includes consensus alignment, automated selection, uncertainty quantification, diagnostics, and review-ready artefacts +- a subject-alignment front-end that produces shared latent representations with stable semantics across a population, offering several alternative approaches +- a stitched, physics-grounded back-end (PMEM to ELA to PDA) that yields mechanistically interpretable descriptors and shared phase-diagram coordinates derived with our original methodology +- a robustness-first toolkit that includes custom-built consensus alignment, automated parameter selection, uncertainty quantification, diagnostics, and review-ready artefacts --- @@ -69,10 +115,10 @@ The UniReps community prioritises representational alignment and comparability a 1. Preprocess and engineer: ELA-secure detrending, conservative handling of missing data, safe within-subject run concatenation, per-region standardisation. 2. Population-aware alignment and dimensionality reduction: shared latents via SRM, MCCA, or Group PCA or Group ICA with consensus; automatic dimensionality selection. -3. Binarisation: per-latent threshold (median or mean), yielding +/-1 time series. -4. PMEM or Ising fitting: exact (small N), safeguarded pseudo-likelihood, or variational Bayes. -5. Energy-landscape analysis: attractors, barriers, disconnectivity graph, occupancies, kinetics. -6. Phase-diagram analysis: multi-observable placement on a shared reference surface with confidence intervals and near-criticality indices. +3. Binarisation: per-latent threshold (usually median or mean, unless domain-expertise justifies, e.g., percentile-based thresholding), yielding +/-1 time series. +4. PMEM or Ising fitting: exact (small N), safeguarded pseudo-likelihood, or variational Bayes - each enriched with its adequate set of solution-stability and significance/quality assessments. +5. Energy-landscape analysis: attractors, barriers, disconnectivity graph, occupancies, kinetics, and many more descriptors providing mechanistic, biologically meaningful insight into brain dynamics, as well as facilitating direct and intuitive comparisons between subjects/cohorts. +6. Phase-diagram analysis: multi-observable placement on a shared reference surface with our custom cost function, reports on confidence intervals, and near-criticality indices. --- @@ -121,7 +167,7 @@ For ELA, methods must enhance quality without compromising temporal structure. S * Flat-blocks breaking: apply if replacements create long identical runs. * Smoothing: only very mild, primarily cosmetic; avoid aggressive windows that could distort binarisation. -Bandpass filtering can be applied if not already applied to the data - many recording devices perform it automatically. Temporal standardisation and spatial normalisation are not required for ELA itself but are retained for general use; spatial normalisation is applied for the imputation pipeline to align signs and amplitudes. LOESS may shift some series below zero; this is expected and accounted for. All parameterisations are chosen to remain strictly ELA-compatible. +Bandpass filtering can be performed if not already applied to the data - many recording devices perform it automatically. Temporal standardisation and spatial normalisation are not required for ELA itself but are retained for general use; spatial normalisation is applied for the imputation pipeline to align signs and amplitudes. LOESS may shift some series below zero; this is expected and accounted for. All parameterisations are chosen to remain strictly ELA-compatible. {% enddetails %} @@ -131,7 +177,7 @@ Bandpass filtering can be applied if not already applied to the data - many reco Goal: obtain shared, ELA-secure latent components whose semantics are stable across subjects and runs, so downstream binarisation → PMEM → ELA/PDA is directly comparable and computationally tractable. -#### What’s new/strong here (one glance): +#### Novelty factor at a glance: * Pick-and-mix reductions: (Group PCA, Group ICA, SRM, MCCA) with robust tweaks (varimax, multi-restart ICA, PCA-initialised SRM, whitened MCCA). * A population-aware, multi-metric objective (structural + temporal + method-specific) → auto-selection of dimensionality and hyperparameters. @@ -152,11 +198,11 @@ All methods preserve temporal ordering (only linear projections or orthogonal tr * Group PCA (variance capture + varimax): eigenvectors of the average subject covariance; optional varimax keeps components sparse/interpretable without breaking orthogonality. *Extras:* elbow detection, subject-wise EVR, reconstruction error, and post-rotation low-variance pruning. -* Group ICA (shared independent subspaces): subject-wise PCA → concatenation → FastICA with multi-restart selection (best negentropy proxy via kurtosis deviation), independence verification (mean abs(corr), kNN mutual information, squared-corr checks), sign harmonisation of subject contributions before averaging. +* Group ICA (shared independent subspaces): subject-wise PCA → concatenation → FastICA with multi-restart selection (best negentropy proxy via kurtosis deviation), independence verification (mean $$\lvert\mathrm{corr}\rvert$$, kNN mutual information, squared-corr checks), sign harmonisation of subject contributions before averaging. -* SRM (shared timecourses with subject-specific maps): iterative orthogonal subject mappings (W_i) and shared response (S), PCA-based initialisation, Hungarian-matched alignment of mappings across subjects, orthogonality diagnostics, shared variance quantification. +* SRM (shared timecourses with subject-specific maps): iterative orthogonal subject mappings $$(W_i)$$ and shared response $$(S)$$, PCA-based initialisation, Hungarian-matched alignment of mappings across subjects, orthogonality diagnostics, shared variance quantification. -* MCCA (maximising cross-subject correlation): per-subject whitening → SVD on concatenated features (SUMCOR-style) → iterative refinement of subject loadings (a_i). We report cross-subject alignment, canonical correlations to shared response, orthogonality in whitened space, and shared variance in native space. +* MCCA (maximising cross-subject correlation): per-subject whitening → SVD on concatenated features (SUMCOR-style) → iterative refinement of subject loadings $$(a_i)$$. We report cross-subject alignment, canonical correlations to shared response, orthogonality in whitened space, and shared variance in native space. > Why four methods? They trade off interpretability, independence, correlation sharing, and variance capture. We score them with the same unified, ELA-aware metric suite and fuse them, yielding a stable, population-universal latent space. @@ -177,37 +223,53 @@ All methods preserve temporal ordering (only linear projections or orthogonal tr ### 2.3 Metrics & selection (multi-objective, normalised to [0,1]) -Structural fidelity (RSA-style): correlation between original region-by-region correlation structure and that reconstructed from latents; sign preservation weighted by abs(corr); Procrustes disparity; Kruskal stress on inter-region distances. +Structural fidelity (RSA-style): correlation between original region-by-region correlation structure and that reconstructed from latents; sign preservation weighted by $$\lvert\mathrm{corr}\rvert$$; Procrustes disparity; Kruskal stress on inter-region distances. Temporal faithfulness: trustworthiness/continuity of neighbour relations, temporal neighbourhood hits, autocorrelation preservation at task-relevant lags. Method-specific: * PCA: mean subject EVR, reconstruction error. -* ICA: independence (mean abs(corr)↓, MI↓), kurtosis (≠3), sparsity. +* ICA: independence (mean $$\lvert\mathrm{corr}\rvert$$↓, Mutual Information (MI)↓), kurtosis (≠3), sparsity. * SRM: shared alignment (Hungarian-matched), orthogonality, shared variance. * MCCA: cross-subject alignment, shared variance, canonical correlations, orthogonality (whitened). Normalisation uses principled maps (e.g., $$x \mapsto \tfrac{1}{1+x}$$ for “smaller-is-better”, linear $$[-1,1]\to[0,1]$$ for correlations). -Composite score: weighted average (user- or default weights), then auto-optimise (k) and hyperparameters via seeded, parallel grid search. +Composite score: weighted average (user- or default weights), then auto-optimise $$(k)$$ and hyperparameters via seeded, parallel grid search. {% details Click to expand: metric formulas %} Kruskal stress (upper-triangle, variance-matched): + +{% raw %} $$ -\operatorname{Stress}=\sqrt{\frac{\sum_{i0}\sqrt{\frac{\sum_{i @@ -494,35 +710,124 @@ Population-universal latents combined with physics-grounded descriptors provide ## Appendix: Mathematical details -### PMEM objective via pseudo-likelihood +Below are the core mathematical underpinnings of the pseudo‑likelihood and variational‑Bayes alternatives to the exact‑likelihood pairwise maximum‑entropy model (PMEM / Ising), as well as of the relevant auxilliary methods (e.g., for VB, the ARD/shrinkage or convergence diagnostics). -Maximise pseudo-likelihood with L2 regularisation: +--- -$$ -\mathcal{L}_{\mathrm{PL}}(\mathbf{h},\mathbf{J}) -= -\sum_{t,i}\log P\left(s_i^{(t)}\mid \mathbf{s}_{\setminus i}^{(t)}\right) -- -\frac{\lambda_h}{2}\lVert \mathbf{h}\rVert_2^2 -- -\frac{\lambda_J}{2}\lVert \mathbf{J}\rVert_F^2. -$$ +## Notation (common to PL and VB) + +- Binary state $$\mathbf{s}\in\{-1,+1\}^N$$ with samples $$\{\mathbf{s}^{(t)}\}_{t=1}^T$$. +- Parameters $$\theta = \big[h_1,\ldots,h_N,\ \{J_{ij}\}_{i Date: Sat, 1 Nov 2025 12:01:47 +0000 Subject: [PATCH 4/8] Visuals added --- _posts/2025-10-25-phase-diagram-playbook.md | 596 ++++++++++++++---- .../2025-10-25-phase-diagram-playbook.bib | 548 ++++++++++++++++ .../Screenshot 2025-09-08 083629.png | Bin 0 -> 1251577 bytes .../Screenshot 2025-09-08 083648.png | Bin 0 -> 364181 bytes .../Screenshot 2025-09-09 234218.png | Bin 0 -> 615755 bytes .../Screenshot 2025-09-09 234938.png | Bin 0 -> 220233 bytes .../Screenshot 2025-10-22 225317.png | Bin 0 -> 1285613 bytes .../Screenshot 2025-10-26 111451.png | Bin 0 -> 160416 bytes .../Screenshot 2025-10-26 111514.png | Bin 0 -> 548703 bytes .../Screenshot 2025-10-26 111524.png | Bin 0 -> 338177 bytes .../Screenshot 2025-10-26 111548.png | Bin 0 -> 335936 bytes .../Screenshot 2025-10-26 111942.png | Bin 0 -> 394237 bytes .../Screenshot 2025-10-26 180713.png | Bin 0 -> 462966 bytes .../Screenshot 2025-10-26 181009.png | Bin 0 -> 1263398 bytes .../Screenshot 2025-10-26 181039.png | Bin 0 -> 478752 bytes .../Screenshot 2025-10-26 181218.png | Bin 0 -> 1250860 bytes .../Screenshot 2025-10-26 181248.png | Bin 0 -> 470206 bytes .../Screenshot 2025-10-26 181355.png | Bin 0 -> 289748 bytes .../Screenshot 2025-10-26 181438.png | Bin 0 -> 169568 bytes .../Screenshot 2025-10-26 181523.png | Bin 0 -> 270713 bytes .../Screenshot 2025-10-26 183547.png | Bin 0 -> 1263057 bytes .../Screenshot 2025-10-26 183612.png | Bin 0 -> 608878 bytes .../Screenshot 2025-10-26 183651.png | Bin 0 -> 486719 bytes .../Screenshot 2025-10-26 183815.png | Bin 0 -> 623587 bytes 24 files changed, 1011 insertions(+), 133 deletions(-) create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-09-08 083629.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-09-08 083648.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-09-09 234218.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-09-09 234938.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-22 225317.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 111451.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 111514.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 111524.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 111548.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 111942.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 180713.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 181009.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 181039.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 181218.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 181248.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 181355.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 181438.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 181523.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 183547.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 183612.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 183651.png create mode 100644 assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-10-26 183815.png diff --git a/_posts/2025-10-25-phase-diagram-playbook.md b/_posts/2025-10-25-phase-diagram-playbook.md index fc74bb2..08f22e3 100644 --- a/_posts/2025-10-25-phase-diagram-playbook.md +++ b/_posts/2025-10-25-phase-diagram-playbook.md @@ -32,7 +32,9 @@ toc: - name: "4) Pairwise maximum-entropy (Ising) fitting" - name: "5) Energy-Landscape Analysis (ELA): descriptors and kinetics" - name: "6) Phase-Diagram Analysis (PDA): multi-observable placement" + - name: "Results in a word" - name: "Robustness, uncertainty and diagnostics" + - name: "Reproducibility and artefacts" - name: "Limitations and scope" - name: "Outlook" @@ -44,29 +46,29 @@ toc: We present a modular, modality-agnostic workflow that turns heterogeneous whole-brain time series into cohort-comparable, interpretable coordinates on a shared phase diagram, together with energy-landscape descriptors such as attractors, barriers, and kinetics. Key steps: -1) population-universal latent spaces (Shared Response Model - SRM, Multiset Canonical Correlation Analysis - MCCA, Group PCA or Group ICA with consensus and automated dimensionality selection) +1) population-universal latent spaces (Shared Response Model - SRM, Multiset Canonical Correlation Analysis - MCCA, Group PCA or Group ICA with consensus and automated dimensionality selection) 2) per-latent binarisation to the +/-1 format -3) Pairwise Maximum Entropy Model (PMEM) or Ising fitting: exact for small N, pseudo-likelihood, or variational Bayes -4) energy landscape analysis (ELA): minima, disconnectivity, barriers, occupancies, kinetics -5) phase diagram analysis (PDA): novel multi-observable placement on a shared reference surface with uncertainty +3) Pairwise Maximum Entropy Model (PMEM) or Ising fitting: exact for small N, pseudo-likelihood, or variational Bayes +4) energy landscape analysis (ELA): minima, disconnectivity, barriers, occupancies, kinetics +5) phase diagram analysis (PDA): novel multi-observable placement on a shared reference surface with uncertainty Outputs include uncertainty, quality control, and interactive visuals. Methods are user-tweakable, reliable, and reproducible. - --- - ## Introduction #### 1. Big‑picture overview - why shared latents + PMEM → ELA → PDA? Modern whole‑brain recordings are heterogeneous across subjects, sessions, tasks and modalities. If we analyse each participant in their own idiosyncratic space, descriptors of “brain state” are not directly comparable. Our pipeline solves this in two moves: 1. Population‑universal shared latents. We align subjects into a common, low‑dimensional space (SRM / MCCA / Group PCA‑ICA with consensus). Variables have stable meaning across participants and runs, so everything downstream is comparable and reproducible. 2. Physics‑grounded descriptors. On the binarised latents we fit a pairwise maximum‑entropy model (PMEM/Ising), then read out two complementary summaries: + * Energy‑Landscape Analysis (ELA) - an attractor‑and‑barrier view of the fitted Ising energy. It yields minima/basins, disconnectivity graphs, barrier spectra, and kinetic descriptors (basin dwell times, mean first-passage times (MFPTs), committors, relaxation times). This is the mechanistic, state‑space view. * Phase‑Diagram Analysis (PDA) - a macroscopic view that places each subject on the **($$\mu$$, $$\sigma$$)** plane of a disordered (via parametric perturbations) Ising model (SK‑like). In broad outline, it uses multiple observables at once to locate individuals relative to critical boundaries, providing cohort‑comparable coordinates and uncertainty. #### 2. Where the methods come from (intuitive recap) * **PMEM/Ising:** Among all binary models that match the empirical means and pairwise correlations, PMEM has maximum entropy. It is equivalent to the zero‑temperature Ising family used throughout statistical physics. Minimal assumptions; parameters are interpretable as fields $$h_i$$ and couplings $$J_{ij}$$. -* **ELA:** Treat the fitted Ising as an energy landscape: +* **ELA:** Treat the fitted Ising as an energy landscape: + $$ E(\mathbf{s}) = -\sum_i h_i s_i - \tfrac{1}{2}\sum_{i\neq j} J_{ij} s_i s_j $$, @@ -99,7 +101,7 @@ To counteract the influence of initial choice of (hyper)parameters, we quantify ## Motivation and contribution -Reflecting the UniReps community's interest in representational alignment and comparability across subjects, datasets, and models, this post demonstrates: +Comparing whole-brain dynamics across individuals is hard without a common reference that preserves interpretability and quantifies uncertainty. This challenge becomes even more apparent in studies of complex brain processes spanning cognition, sensory integration, and perception; when the data are limited; or when comparing brain dynamics driven by systematically different sub-types of various neurodevelopmental, psychiatric, or neurodegenerative conditions. Aiming to address these challenges and reflecting the UniReps community's interest in representational alignment and comparability across subjects, datasets, and models, this post demonstrates: - a subject-alignment front-end that produces shared latent representations with stable semantics across a population, offering several alternative approaches - a stitched, physics-grounded back-end (PMEM to ELA to PDA) that yields mechanistically interpretable descriptors and shared phase-diagram coordinates derived with our original methodology @@ -109,10 +111,6 @@ Reflecting the UniReps community's interest in representational alignment and co ## Pipeline overview -
-

PIPELINE_OVERVIEW_PLACEHOLDER

-
- 1. Preprocess and engineer: ELA-secure detrending, conservative handling of missing data, safe within-subject run concatenation, per-region standardisation. 2. Population-aware alignment and dimensionality reduction: shared latents via SRM, MCCA, or Group PCA or Group ICA with consensus; automatic dimensionality selection. 3. Binarisation: per-latent threshold (usually median or mean, unless domain-expertise justifies, e.g., percentile-based thresholding), yielding +/-1 time series. @@ -120,34 +118,77 @@ Reflecting the UniReps community's interest in representational alignment and co 5. Energy-landscape analysis: attractors, barriers, disconnectivity graph, occupancies, kinetics, and many more descriptors providing mechanistic, biologically meaningful insight into brain dynamics, as well as facilitating direct and intuitive comparisons between subjects/cohorts. 6. Phase-diagram analysis: multi-observable placement on a shared reference surface with our custom cost function, reports on confidence intervals, and near-criticality indices. +**Data summary** (used for the development and testing of the pipeline; details not central to current discussion in themselves): + +Resting-state fUS from N=8 mice (7 Cre-lox ASD models spanning 4 subtypes; 1 control with no symptomatic manifestation modelled); 54 bilateral regions (27 L/R pairs; whole-brain collection) - unified across all the subjects; two runs per mouse (1494 frames for each recording session; TR ≈ 0.6 s); runs concatenated per subject. + --- ## 1) ELA-secure preprocessing (brief overview) Aim: remove spikes, outliers, and slow global drifts while **preserving the on/off switching structure** that drives binarisation, PMEM fitting, and ELA/PDA. The procedure is modality-agnostic, non-invasive, and parameterised to be reproducible. -* Adaptive per-region parameters are computed from simple statistics and Welch spectra, then re-adapted after each step if requested (robust mode). +* Adaptive per-region parameters are computed from simple statistics and Welch spectra, then re-adapted after each step if requested (robust mode). * Despiking uses derivative-based detection with local, percentile-scaled replacements in short contextual windows; consecutive spikes are handled as blocks. * Outlier removal is IQR-based with the same local, percentile-scaled replacement; an optional second pass is available. -* Population-aware detrending uses a cohort-optimised LOESS trend (fraction selected by stationarity and autocorrelation reduction). The global trend is estimated on the mean signal and scaled per region, which corrects drift without flattening transitions. +* Population-aware detrending uses a cohort-optimised LOESS trend (fraction selected by stationarity and autocorrelation reduction). The global trend is estimated on the mean signal and scaled per region, which corrects drift without flattening transitions. * Optional steps: light smoothing, bandpass filtering, breaking long flat runs, temporal standardisation, and spatial normalisation. * Outputs include per-step amplitude deltas and residual checks; we also report the concordance between pre- and post-detrending binary states to ensure switching patterns are retained. +
+ Five-step preprocessing pipeline panels for one region +
+ Five-step preprocessing for a representative region (Striatum dorsal, R): Original → after despiking + (derivative-based detection with local replacement) → after outlier removal (IQR with local context) → + after universal LOESS detrending (global trend removed, transitions preserved) → after spatial + normalisation to [0, 1]. +
+
+ +
+ Bars showing global linear-trend strength and magnitude across recordings +
+ Cohort-wide evidence for a global trend. Top: absolute linear-trend correlation \(|r|\) for each + recording with a decision threshold (red dashed line). Bottom: relative trend magnitude with its + threshold. Many runs exceed both criteria, motivating a universal detrending step. +
+
+ +
+ Global signal with linear, quadratic and LOESS trends; residuals comparison +
+ Model selection for detrending on an exemplar run. Top: global signal with linear, quadratic, and LOESS + fits (LOESS selected). Bottom: residuals after each method. LOESS yields the most stationary, least + autocorrelated residuals, hence chosen for the universal detrending step. +
+
+ +
+ Example regions: raw vs detrended signals and binary-state rasters +
+ Region-wise example showing that global detrending preserves the on/off switching used downstream. + Left: raw vs detrended signals for dentate gyrus (top) and thalamus (bottom). + Right: binary rasters before/after median thresholding; “Concordance” in the panel titles reports the + fraction of timepoints whose binary state is unchanged by detrending. +
+
+ +
+ Table of global-trend metrics and post-detrending stationarity flags for all recordings +
+ Audit table across all recordings: linear-trend correlation and \(p\)-value, relative trend magnitude, + and stationarity of residuals after linear, quadratic, and LOESS detrending. Most datasets achieve + stationarity only with LOESS, supporting the universal-detrending choice. +
+
-
Example region: Striatum dorsal region (R). Multi panel view of the preprocessing pipeline applied to one regional time series: Original Signal → After Despiking (derivative based spike detection with local percentile scaled replacement) → After Outlier Removal (IQR based with local context) → After Universal Detrending (global LOESS model optimised on the cohort) → After Spatial Normalization (min max to [0,1]). The sequence removes spikes and outliers, corrects slow global drift, and rescales amplitudes while preserving the switching structure required for later binarisation and PMEM, ELA, PDA.
- -
Automatic adaptation and step audit for the same region. The printout reports initial region statistics (median, IQR, std, noise estimate, SNR, main frequency), the adapted parameters chosen for this instance (filter band and order, despike and outlier thresholds and windows, polynomial order and windows for detrending and smoothing), and per step summaries such as max amplitude change. It records that the universal LOESS detrending was used and shows the selected LOESS fraction. These diagnostics make the preprocessing reproducible and provide quality control before alignment and binarisation.
::contentReference[oaicite:0]{index=0} -
Regional examples: dentate gyrus (R) and thalamus (R). Left panels show original versus detrended regional signals after applying the universal global-trend model. Right panels show the resulting binary state rasters using per-region median thresholds; the title reports binary-state concordance between original and detrended signals. These visuals quantify how detrending shifts baselines yet preserves the switching patterns used for PMEM, ELA and downstream binarisation.
- -
Cohort-wide evidence for a global trend. Top: absolute linear-trend correlations (abs(r)) for each recording with a decision threshold at 0.3. Bottom: relative trend magnitudes with a threshold at 0.1. The fact that many recordings exceed these thresholds motivates a universal detrending step before alignment and binarisation.
- -
Detrending model selection on a representative dataset. Top: the global signal overlaid with linear, quadratic and LOESS trends; the preferred method is highlighted as the best. Bottom: residuals after each detrending method. The chosen model is the one that yields residuals that are most stationary and least autocorrelated; here LOESS is selected and its fraction is later optimised across datasets.
- -
Summary table of trend metrics for all recordings. For each dataframe we report r value, p value, relative trend magnitude and whether residuals are stationary after linear, quadratic or LOESS detrending. This audit supports the universal-method choice and sets LOESS parameters used in the preprocessing pipeline.
-::contentReference[oaicite:0]{index=0} - {% details Click to expand: practical notes %} @@ -172,7 +213,6 @@ Bandpass filtering can be performed if not already applied to the data - many re {% enddetails %} --- - ## 2) Population-universal shared latent space Goal: obtain shared, ELA-secure latent components whose semantics are stable across subjects and runs, so downstream binarisation → PMEM → ELA/PDA is directly comparable and computationally tractable. @@ -182,27 +222,73 @@ Goal: obtain shared, ELA-secure latent components whose semantics are stable acr * Pick-and-mix reductions: (Group PCA, Group ICA, SRM, MCCA) with robust tweaks (varimax, multi-restart ICA, PCA-initialised SRM, whitened MCCA). * A population-aware, multi-metric objective (structural + temporal + method-specific) → auto-selection of dimensionality and hyperparameters. * Alignment toolkit (orthogonal Procrustes with column-wise sign fixes, Hungarian matching, and a neuro-Procrustes consensus). -* Synergy-weighted consensus across methods with dominance checks, stability (RV) analysis, and per-component contribution audits. +* Synergy-weighted consensus across methods with dominance checks, stability (RV) analysis, and per-component contribution audits . * Efficient, reproducible compute (SVD on averaged covariances, fast downsampling for temporal metrics, parallel grid search, seeded randomness). -
-

SHARED_COMPONENTS_PLACEHOLDER (e.g., heatmaps of method-specific and consensus components)

-
--- - ### 2.1 Methods (population-aware, ELA-secure) -All methods preserve temporal ordering (only linear projections or orthogonal transforms over channels), and we quantify temporal faithfulness (trustworthiness/continuity, autocorrelation preservation). +All methods preserve temporal ordering (only linear projections or orthogonal transforms over channels), and we quantify temporal faithfulness (trustworthiness/continuity, autocorrelation preservation) . -* Group PCA (variance capture + varimax): eigenvectors of the average subject covariance; optional varimax keeps components sparse/interpretable without breaking orthogonality. +* Group PCA (variance capture + varimax): eigenvectors of the average subject covariance; optional varimax keeps components sparse/interpretable without breaking orthogonality . *Extras:* elbow detection, subject-wise EVR, reconstruction error, and post-rotation low-variance pruning. -* Group ICA (shared independent subspaces): subject-wise PCA → concatenation → FastICA with multi-restart selection (best negentropy proxy via kurtosis deviation), independence verification (mean $$\lvert\mathrm{corr}\rvert$$, kNN mutual information, squared-corr checks), sign harmonisation of subject contributions before averaging. - -* SRM (shared timecourses with subject-specific maps): iterative orthogonal subject mappings $$(W_i)$$ and shared response $$(S)$$, PCA-based initialisation, Hungarian-matched alignment of mappings across subjects, orthogonality diagnostics, shared variance quantification. +* Group ICA (shared independent subspaces): subject-wise PCA → concatenation → FastICA with multi-restart selection (best negentropy proxy via kurtosis deviation), independence verification (mean $$\lvert\mathrm{corr}\rvert$$, kNN mutual information , squared-corr checks), sign harmonisation of subject contributions before averaging. + +* SRM (shared timecourses with subject-specific maps): iterative orthogonal subject mappings $$(W_i)$$ and shared response $$(S)$$, PCA-based initialisation, Hungarian-matched alignment of mappings across subjects, orthogonality diagnostics, shared variance quantification . + +* MCCA (maximising cross-subject correlation): per-subject whitening → SVD on concatenated features (SUMCOR-style) → iterative refinement of subject loadings $$(a_i)$$ . We report cross-subject alignment, canonical correlations to shared response, orthogonality in whitened space, and shared variance in native space. + + +
+ Group PCA scree: individual and cumulative explained variance with elbow and totals +
+ Group PCA scree. Light-blue bars show individual explained-variance ratio (EVR) per + component; the black line is cumulative EVR. The dotted vertical line marks the elbow (here at the 1st + component), and the title reports total variance explained (65.6%). This plot guides the initial range + for dimensionality selection before our multi-metric model choice. +
+
+ + +
+
+ SRM consensus mapping W: region-by-component loadings heatmap + SRM example subject: reduced correlation between latent components +
+
+ SRM latent space. Left: consensus SRM mapping \(W\) (regions × components). + Colours indicate signed loadings (arbitrary overall sign but harmonised across subjects), highlighting + stable spatial patterns shared across the cohort. Right: example subject’s correlation matrix + between SRM latent time series. Light (near-white) off-diagonals indicate low cross-component correlation, + i.e. little superfluous overlap—evidence of efficient representation and dimensionality reduction. +
+
+ + +
+
+ MCCA example subject: reduced correlation between latent components + MCCA subject projection matrix a: region-by-component loadings +
+
+ MCCA latent space. Left: example subject’s correlation matrix between MCCA + components—again, light off-diagonals reflect low redundancy across latents. Right: subject-specific + MCCA projection matrix \(a\) (regions × components), showing how each brain region contributes to each + shared component; structured bands point to interpretable, population-aligned patterns. +
+
-* MCCA (maximising cross-subject correlation): per-subject whitening → SVD on concatenated features (SUMCOR-style) → iterative refinement of subject loadings $$(a_i)$$. We report cross-subject alignment, canonical correlations to shared response, orthogonality in whitened space, and shared variance in native space. > Why four methods? They trade off interpretability, independence, correlation sharing, and variance capture. We score them with the same unified, ELA-aware metric suite and fuse them, yielding a stable, population-universal latent space. @@ -210,20 +296,15 @@ All methods preserve temporal ordering (only linear projections or orthogonal tr ### 2.2 Alignment & sign consistency (critical for comparability) -* Orthogonal Procrustes with column-wise sign checks (flip a component if it anticorrelates with the reference). -* Hungarian matching aligns component order across methods/subjects by maximal absolute correlations. +* Orthogonal Procrustes with column-wise sign checks (flip a component if it anticorrelates with the reference) . +* Hungarian matching aligns component order across methods/subjects by maximal absolute correlations . * Neuro-Procrustes consensus: iterative, order-robust alignment across methods (SVD-based reference) with final sign harmonisation. * Optional biological sign protocol (baseline-anchored flips) to stabilise polarities across datasets. - -
-

ALIGNMENT_FLOW_PLACEHOLDER (schematic of Procrustes → sign fix → Hungarian → consensus)

-
- --- ### 2.3 Metrics & selection (multi-objective, normalised to [0,1]) -Structural fidelity (RSA-style): correlation between original region-by-region correlation structure and that reconstructed from latents; sign preservation weighted by $$\lvert\mathrm{corr}\rvert$$; Procrustes disparity; Kruskal stress on inter-region distances. +Structural fidelity (RSA-style): correlation between original region-by-region correlation structure and that reconstructed from latents; sign preservation weighted by $$\lvert\mathrm{corr}\rvert$$; Procrustes disparity; Kruskal stress on inter-region distances. Temporal faithfulness: trustworthiness/continuity of neighbour relations, temporal neighbourhood hits, autocorrelation preservation at task-relevant lags. @@ -296,9 +377,82 @@ w_m=\frac{\tilde w_m}{\sum_j \tilde w_j}$$ * Dominance (balance of synergy weights): we report normalised Gini, CV, TVD, and min/max ratio (all mapped to [0,1]). {% enddetails %} -
-

CONSENSUS_DIAGNOSTICS_PLACEHOLDER (barplots: component alignment & subject consistency with thresholds)

-
+ +
+ Bar chart of cross-subject component consistency with statistical thresholds +
+ Cross-subject consistency of shared components. Each bar is the mean absolute correlation of the same + component across subjects (higher = more reproducible). Dashed/dotted lines show permutation and 95% CI thresholds. + Components above both guides generalise well across mice and are kept for the consensus latent space. +
+
+ +
+ Bar chart of cross-method alignment quality with thresholds +
+ Alignment quality across methods. Bars show how well each consensus component matches its counterparts + from Group PCA, Group ICA, SRM and MCCA after Procrustes + Hungarian alignment (mean |corr|). Higher values and crossing + the dashed/dotted thresholds indicate robust cross-method agreement, supporting the fused consensus basis. +
+
+ + +
+ Stacked bars showing method contributions to each consensus component +
+ Method contributions to the consensus components. Stacked bars report the weighted influence of each + method (Group PCA / Group ICA / SRM / MCCA) on every consensus component. Balanced contributions mean the final space is + not dominated by a single method and retains structure that is consistent across approaches. +
+
+ + +
+ Heatmap of Group PCA transformation matrix after alignment +
+ Example aligned loadings: Group PCA. Brain regions × components matrix (unit-normalised) after + cross-subject/method alignment. Warmer/colder cells mark stronger positive/negative loadings; light colours near zero + indicate sparse, non-overlapping contributions—useful for efficient representation and reduced redundancy. +
+
+ + +
+ Triangular heatmap of cross-method component correlations after alignment +
+ Cross-method component correlations (post-alignment). Each block compares components across the four + methods. A sharp diagonal with light off-diagonals shows one-to-one matches and little superfluous overlap, validating + that different methods recover consistent latent directions. +
+
+ + +
+ Heatmap of the final consensus transformation matrix +
+ Final consensus transformation. Regions × components loadings that define the population-universal + latent space used for all subjects. The mapping is sign-harmonised and unit-normalised so that latents have consistent + semantics across mice and runs. +
+
+ + +
+ Correlation matrix of consensus component time series for one subject +
+ Consensus latent space — within-subject orthogonality. Correlation matrix of consensus component + time courses for an example mouse. Near-zero off-diagonals (light colours) indicate low redundancy between latents, + which aids binarisation and stabilises the downstream PMEM/ELA/PDA steps. +
+
+ --- @@ -417,10 +571,6 @@ Subject PCA → concatenation → FastICA. Restart with multiple seeds; select t * Diagnostics at each stage: subject EVR, reconstruction error, independence checks, alignment scores, consensus stability (RV), method dominance, and retention rationale for kept/dropped components. * ELA-secure by design: all transformations are linear in space (no temporal warping), detrending was handled upstream, and temporal metrics explicitly guard the switching dynamics used by ELA. -
-

SCREE_AND_VARIANCE_PLACEHOLDER (scree, per-component & cumulative variance; consensus variance explained)

-
- --- ### 2.7 Outputs (what to expect) @@ -441,28 +591,6 @@ Subject PCA → concatenation → FastICA. Restart with multiple seeds; select t * Permutation/phase-randomisation thresholds provide statistical guardrails for declaring alignment/consistency “good enough.” {% enddetails %} ---- - -### References (core methods and metrics) - -* SRM: Chen, R. S., Chen, P.-H., et al. A Reduced-Dimension fMRI Shared Response Model. NeurIPS, 2015. -* MCCA: Kettenring, J. R. Canonical analysis of several sets of variables. Biometrika, 1971. -* CCA: Hotelling, H. Relations Between Two Sets of Variates. Biometrika, 1936. -* Orthogonal Procrustes: Schönemann, P. H. A generalized solution of the orthogonal Procrustes problem. Psychometrika, 1966. -* Hungarian algorithm: Kuhn, H. W. The Hungarian Method for the Assignment Problem. Naval Research Logistics Quarterly, 1955. -* PCA/Varimax: Jolliffe, I. T. Principal Component Analysis; Kaiser, H. F. The Varimax Criterion. Psychometrika, 1958. -* ICA / FastICA: Hyvärinen, A. and Oja, E. Independent Component Analysis: Algorithms and Applications. Neural Networks, 2000. -* Trustworthiness/Continuity: Venna, J. and Kaski, S. Neighborhood Preservation in Nonlinear Projection Methods. 2001. -* Kruskal stress: Kruskal, J. B. Multidimensional scaling by optimizing goodness of fit to a nonmetric hypothesis. Psychometrika, 1964. -* RSA: Kriegeskorte, N. et al. Representational Similarity Analysis. Frontiers in Systems Neuroscience, 2008. -* RV coefficient: Robert, P. and Escoufier, Y. A Unifying Tool for Linear Multivariate Statistical Methods: The RV-Coefficient. 1976. - ---- - -
-

PIPELINE_SUMMARY_PLACEHOLDER (overview from preprocessing → pick-and-mix methods → alignment → consensus → QC)

-
-::contentReference[oaicite:0]{index=0} --- @@ -473,6 +601,22 @@ After alignment and dimensionality reduction, each latent $$x_i(t)$$ is threshol This respects component-specific baselines, keeps PMEM tractable, and standardises inputs for inter-subject comparability. + +
+ Proportion of +1 (active) binary states across latents over time with linear trend, min and max markers +
+ Binarisation sanity check: activity fraction over time. + The blue trace shows, at each time step, the proportion of latents in the +1 state after per-latent + median thresholding. The grey dashed line marks 0.5; orange dotted lines show the observed range + (min ≈ 0.20, max ≈ 0.80). The red dashed line is the fitted linear trend + (+0.052 percentage points per 100 steps; total change ≈ 1.57 pp). Near-stationary behaviour centred + around 0.5 indicates balanced on/off usage and supports downstream PMEM fitting; large drifts would + flag thresholding issues or residual global trends. +
+
+ + --- ## 4) Pairwise maximum-entropy (Ising) fitting @@ -484,7 +628,7 @@ P(\mathbf{s}) \propto E(\mathbf{s}) = -\sum_{i} h_i s_i - \tfrac12 \sum_{i\ne j} J_{ij} s_i s_j $$ -PMEM matches the empirical first and second moments with minimal assumptions while remaining expressive for mesoscopic neural populations (as well as on the scale of entire networks of brain regions, and extending naturally to dynamical systems beyond neuroscience). +PMEM matches the empirical first and second moments with minimal assumptions while remaining expressive for mesoscopic neural populations (as well as on the scale of entire networks of brain regions, and extending naturally to dynamical systems beyond neuroscience) . ### Inference routes (complementary, scale‑aware): * **Exact (small $$N$$)**: Enumerate all $$2^N$$ states to obtain the exact log‑likelihood and moments for gold‑standard checks @@ -539,18 +683,76 @@ PMEM matches the empirical first and second moments with minimal assumptions whi * **Variational Bayes (VB):** Gaussian prior on $$(h,J)$$ with separate precisions for fields/couplings; a quadratic bound on the log‑partition yields closed‑form majorise–minimise updates: + $$ - \Sigma^{-1}=\Lambda_0 + TC_\eta,\qquad - \mu=\theta_0+\Sigma,T\big(\bar{\Phi}-m_\eta\big) - $$ , \qquad where $$m_\eta=\mathbb{E}{p\eta}[\Phi]$$ and $$C_\eta=\operatorname{Cov}{p\eta}(\Phi)$$ are model moments/curvature at the current anchor $$\eta=\mu$$. + \begin{aligned} + \Sigma^{-1} &= \Lambda_0 + T\,C_\eta,\\ + \mu &= \theta_0 + \Sigma\,T\big(\bar{\Phi} - m_\eta\big), + \end{aligned} + $$ + + where + $$ + m_\eta = \mathbb{E}_{p_\eta}[\Phi], + \qquad + C_\eta = \operatorname{Cov}_{p_\eta}(\Phi), + $$ + are the model moments/curvature evaluated at the current anchor $$\eta=\mu$$. + Credible intervals come from $$\Sigma$$; optional Gamma hyper‑priors give ARD‑style shrinkage. + Here are pasting-ready figures + captions with visible text colour. + +--- + +Got it — here are the same two figures with **light, readable captions** (inline styles), in plain HTML for copy–paste. + +--- + + + + +
+ Variational Bayes Ising diagnostics: uncertainty vs magnitude, posterior sd(J) maps, ELBO trajectory, field uncertainties, ARD precision spectrum, data–model probability agreement, CV histogram, fit-quality indices +
+ Variational-Bayes PMEM: uncertainty and fit checks. + Panels summarise one VB run: + (i) posterior uncertainty vs coupling magnitude; + (ii, v) heatmaps of posterior s.d. for couplings (diagonal masked; log-scale variant); + (iii) ELBO trajectory decreasing across iterations (convergence); + (iv) histogram of field uncertainties; + (vi) ARD precision spectrum indicating data-driven shrinkage; + (vii) model-vs-empirical state probabilities (log–log; closer to the diagonal is better); + (viii) histogram of coupling coefficient-of-variation \( \mathrm{CV}=\sigma/|\mu| \); + (ix) two fit-quality indices (moment-matching accuracy). Together these quantify parameter credibility and goodness-of-fit before ELA/PDA. +
+
+ + + +
+ Energy–probability diagnostic: empirical probability vs shifted energy with basin colours, histograms and slope fit +
+ Energy–probability diagnostic. + Empirical pattern probabilities \( P_{\mathrm{emp}}(\sigma) \) vs shifted energies \( E(\sigma)-E_{\min} \). + An approximately linear trend in log-probability vs energy (dashed fit; slope and \( R^2 \) shown) is consistent with Boltzmann structure. + Points are coloured by basin; the circled marker denotes the global minimum. Marginal histograms summarise energy and count distributions. + Deviations at the extremes flag rare states and help identify outliers before landscape and phase-diagram analyses. +
+
+::contentReference[oaicite:0]{index=0} + + ### Fit quality & sanity We report (i) moment matching (means and pairwise correlations), (ii) multi‑information explained and KL‑reduction vs. independence, and (iii) empirical‑vs‑Boltzmann pattern agreement. -For Monte‑Carlo checks we use multi‑chain sampling with **Ř**/effective sample size (ESS) diagnostics and estimate observables (magnetisation $$m$$, Edwards–Anderson $$q$$, spin‑glass and uniform susceptibilities $$\chi_{\mathrm{SG}},\chi_{\mathrm{Uni}}$$, specific heat $$C$$). +For Monte‑Carlo checks we use multi‑chain sampling with **Ř**/effective sample size (ESS) diagnostics and estimate observables (magnetisation $$m$$, Edwards–Anderson $$q$$, spin‑glass and uniform susceptibilities $$\chi_{\mathrm{SG}},\chi_{\mathrm{Uni}}$$, specific heat $$C$$). ### Implementation highlights @@ -569,7 +771,7 @@ $$ induces a rugged energy landscape over $$\{-1,+1\}^N$$. We compute: -* **Attractors and basins:** Local minima are states whose single‑spin flips all increase energy. Every state is assigned to a basin by steepest‑descent (or best‑improving) paths. We summarise basins by occupancies and a disconnectivity graph +* **Attractors and basins:** Local minima are states whose single‑spin flips all increase energy. Every state is assigned to a basin by steepest‑descent (or best‑improving) paths. We summarise basins by occupancies and a disconnectivity graph . * **Barriers and disconnectivity:** The barrier between basins $$(\alpha,\alpha')$$ is the minimum, over all paths connecting them, of the maximum energy along the path; the disconnectivity graph visualises these heights. Denoting the (symmetrised) minimal saddle by $$\overline{E}_{\alpha\alpha'}$$, $$ @@ -580,7 +782,7 @@ $$ * We also estimate a depth threshold (null‑model percentile) to guard against spurious minima. -**Kinetics (Markov view):** Build a single-spin-flip Metropolis chain with proposal “flip one spin uniformly” and transition probability: +**Kinetics (Markov view):** Build a single-spin-flip Metropolis chain with proposal “flip one spin uniformly” and transition probability: $$ p(\mathbf{s}\to\mathbf{s}^{(i)}) = \frac{1}{N}\min\{1,\ \exp\big(E(\mathbf{s})-E(\mathbf{s}^{(i)})\big)\}, @@ -591,69 +793,211 @@ where $$\mathbf{s}^{(i)}$$ is $$\mathbf{s}$$ with spin $$i$$ flipped. This yield **From $$P$$ we derive:** * Stationary distribution $$\pi$$, dwell-time distributions, and basin occupancy. -* Mean first-passage times (MFPT): from a set $$A$$ to $$B$$ via the fundamental matrix $$Z=(I-Q)^{-1}$$ of the transient block. -* Committors $$q_{AB}$$ solving $$(I-Q)q=b$$, where $$b$$ collects transitions into $$B$$. +* Mean first-passage times (MFPT): from a set $$A$$ to $$B$$ via the fundamental matrix $$Z=(I-Q)^{-1}$$ of the transient block . +* Committors $$q_{AB}$$ solving $$(I-Q)q=b$$, where $$b$$ collects transitions into $$B$$ . * Relaxation spectrum (mixing time-scales): non-unit eigenvalues $$\lambda_i(P)$$ with $$\tau_i=-1/\log\|\lambda_i\|$$, and the Kemeny constant (mean mixing time) $$K=\sum_{i\ge2}\frac{1}{1-\lambda_i}$$. **Read-outs:** (i) attractor maps (patterns + labels), (ii) disconnectivity graphs, (iii) barrier distributions, (iv) transition/reachability matrices (one-step and multi-step), and (v) kinetic summaries (MFPT heatmaps, committor fields, relaxation spectra, Kemeny constants). These quantify stability, switching propensity, and heterogeneity of access between states. +Crucially, these mechanistic and interpretable descriptors and metrics provide an additional high-level framework for comparing brain dynamics across different individuals, or even cohorts with systematically divergent patterns of neural activity - a discrete and more intuitive alternative to classic means for unifying/juxtaposing representations in computational systems. -
- -
+
Energy Landscape Analysis (ELA) panel with attractor patterns, 3D energy surface with basins and paths, transition matrices, disconnectivity graph, basin visit counts and basin sizes
Energy-Landscape Analysis (ELA) — summary descriptors. The composite figure illustrates the standard read-outs used downstream of the fitted Ising model:
(A) Local-minimum patterns (binary states for each attractor); (B) 3-D energy surface with labelled minima (white dots) and most-probable transition paths (white arrows); (C) Direct transition counts between minima (Metropolis single-flip kernel); (D) Disconnectivity graph showing barrier heights that separate basins; (E) Basin visit frequencies (empirical occupancy); (F) Basin sizes (number of micro-states per basin in state-space); (G) Direct/indirect transition counts summarising multi-step reachability. Deeper basins and higher barriers indicate more stable, harder-to-leave states; denser transition lanes point to preferred switching routes.
+ + +--- +## 6) Phase‑Diagram Analysis (PDA): multi‑observable placement + +**Goal:** +Place every subject on a *shared* Sherrington–Kirkpatrick‑like $$(\mu,\sigma)$$ phase surface using *multiple* observables at once, with uncertainty, so that cohorts become directly comparable without needing a fixed “healthy baseline”. PDA sits downstream of our shared‑latent → binarisation → Ising (PMEM) fit, and is designed to be robust, auditable, and reproducible from end to end. + +--- + +### 6.1 What PDA estimates (observables and phase coordinates) + +For a fitted Ising model on binary latents $$\mathbf{s}\in\{-1,+1\}^N$$ with fields $$h_i$$ and couplings $$J_{ij}$$, PDA uses macroscopic observables: + +- **Magnetisation** + $$m=\frac{1}{N}\sum_i \langle s_i\rangle$$ + +- **Edwards–Anderson order** + $$q=\frac{1}{N}\sum_i \langle s_i\rangle^2$$ + +- **Spin‑glass susceptibility** (using the eigenvalues $$\{\lambda_k\}$$ of the spin covariance) + $$\chi_{\mathrm{SG}}=\frac{1}{N}\sum_{k=1}^{N}\lambda_k^2$$ + +- **Uniform susceptibility** + $$\chi_{\mathrm{Uni}}=\frac{1}{N}\sum_{i\neq j}\mathrm{Cov}(s_i,s_j)$$ + +- **Specific heat** (from energy variance) + $$C=\frac{\langle E^2\rangle-\langle E\rangle^2}{N},\qquad + E(\mathbf{s})=-\sum_i h_i s_i-\frac{1}{2}\sum_{i\neq j}J_{ij}s_is_j$$ + +In practice, we compute these from Monte‑Carlo samples of the fitted model (with automatic convergence checks). For quick diagnostics, the first four are also obtainable directly from the binarised data. --- -## 6) Phase-Diagram Analysis (PDA): multi-observable placement +### 6.2 The reference phase surface $$(\mu,\sigma)\mapsto\{m,q,\chi_{\mathrm{SG}},\chi_{\mathrm{Uni}},C\}$$ -Each subject is placed on a shared reference phase surface parameterised by mu and sigma via a variance-balanced discrepancy over multiple observables, for example +We construct a *reference* coupling matrix $$J_{\mathrm{ref}}$$ (either *pooled* across the cohort or *control*‑only), then generate a dense grid over target $$(\mu,\sigma)$$ by *affinely transforming the off‑diagonal entries* of $$J_{\mathrm{ref}}$$. Let $$\mu_{\text{old}}$$ and $$\sigma_{\text{old}}$$ be the mean and std of off‑diagonal entries of $$J_{\mathrm{ref}}$$. For a target $$(\mu,\sigma)$$: $$ -\{m,\; q,\; \chi_{\mathrm{SG}},\; \chi_{\mathrm{Uni}},\; C\}. +J_{ij}^{(\mu,\sigma)}= +\begin{cases} +\big(J_{ij}-\mu_{\text{old}}\big)\dfrac{\sigma}{\sigma_{\text{old}}+\varepsilon}+\mu, & i\neq j,\\[6pt] +0, & i=j~, +\end{cases} $$ -We compute the optimum, bootstrap confidence ellipses, and distance-to-criticality, enabling direct cross-subject comparison that is not tied to a single healthy baseline. +with all **fields zeroed** $$h_i\equiv 0$$ (diagonal remains 0) to recover the canonical spin‑glass phase structure. For each grid point we Monte‑Carlo sample the observables above and cache five surfaces $$\{\mathrm{m},\mathrm{q},\chi_{\mathrm{SG}},\chi_{\mathrm{Uni}},C\}$$. -
- -
+**Working vs display grids:** We build a high‑resolution *working* grid used for optimisation/placement and optionally a wider *display* grid for visuals. We automatically pick $$(\mu,\sigma)$$ limits by running quick PL fits per subject to estimate native $$(\hat\mu,\hat\sigma)$$, then expand by a safety factor; we refuse overly coarse grids (e.g., if $$\Delta\mu$$ or $$\Delta\sigma>0.01$$). + +**MC convergence safeguards:** We run multiple chains with increasing sweep budgets until *all* observables reach $$\hat R<1.05$$ and an effective sample size threshold, or a maximum sweep cap is hit (in which case a warning is issued). --- -## Robustness, uncertainty and diagnostics +### 6.3 Multi‑observable placement (cost projection with balanced weights) -- Uncertainty via variational-Bayes posteriors for h and J; bootstrap intervals for mu and sigma and for near-criticality; block bootstrap for autocorrelation -- Convergence checks including MCMC R-hat and effective sample size where applicable, pseudo-likelihood relative-norm stopping, and ELBO improvements for variational Bayes -- Quality-control gates including permutation or null thresholds for spurious minima, component-stability filters, and sensitivity to number of latents and alignment choice -- Ablations: pooled versus subgroup reference surfaces; method toggles among SRM, MCCA, and ICA; median versus mean thresholds +Given a subject’s *observed* $$(m_o,q_o,\chi^{o}_{\mathrm{SG}},\chi^{o}_{\mathrm{Uni}})$$ from their binarised latents, we **project** onto the reference surface by minimising a *variance‑balanced* squared error: + +$$ +\underset{\mu,\sigma}{\arg\min}\;\sum_{k\in\{\mathrm{m},\mathrm{q},\chi_{\mathrm{SG}},\chi_{\mathrm{Uni}}\}} +w_k\big(O_k^{\text{obs}}-\widehat{O}_k(\mu,\sigma)\big)^2, +$$ + +where $$\widehat{O}_k(\mu,\sigma)$$ is obtained by regular‑grid interpolation of the precomputed surfaces and weights $$w_k$$ default to the inverse *range* of each surface (less sensitive than $$1/\mathrm{var}$$). Optimisation uses L‑BFGS‑B on the working grid bounds; we also provide an **iso‑curve** fallback (intersect level sets of $$\chi_{\mathrm{SG}}$$ and $$\chi_{\mathrm{Uni}}$$ with a simple border‑safety check) and a brute‑force grid fallback. + +We return $$(\hat\mu,\hat\sigma)$$, the final cost value, and the method used (“cost_minimisation”, “iso_curves”, or “fallback_grid”). --- -## Interactive figures +### 6.4 Uncertainty, robustness, and diagnostics -- Phase placements with confidence intervals -
- -
+**Bootstrap CIs:** For each subject we run a *circular block bootstrap* along time, refit the Ising per resample, and recompute $$(\mu,\sigma)$$ or $$(m,q,\chi_{\mathrm{SG}},\chi_{\mathrm{Uni}})$$ as needed to report 95% intervals. Specific heat $$C$$ can be bootstrapped likewise via short MC runs per resample. -- Basin visits over time (stripe plot) -
- -
+**Control shrinkage (optional):** When a control is available, we stabilise its estimate by bootstrapping its $$J$$, pooling across the cohort, and forming a convex combination $$J^{\text{ctrl,shrunk}}=(1-\lambda)J^{\text{ctrl}}+\lambda J^{\text{pooled}}$$; we then summarise $$(\mu_c,\sigma_c)$$ from the shrunk $$J$$. -- Barrier distribution and kinetics -
- -
+**Cost bowls:** Around each optimum we display the *local cost landscape* (2‑D filled contour and 3‑D surface) to judge identifiability; narrow, well‑curved bowls suggest precise placement. + +**Group‑level tests:** Small helpers allow groupwise comparisons in $$\sigma$$ (e.g., Welch ANOVA and permutation tests) using the bootstrapped distributions. + +**Critical structure:** We plot *critical contours* (e.g., a fixed fraction of the maximum of an observable) on the display surfaces; a simple near‑criticality index is the minimal Euclidean distance from $$(\hat\mu,\hat\sigma)$$ to the chosen contour. + +--- + +### 6.5 Practical recipe (what the code actually does) + +1) **Prepare data**: shared latents → binarise per latent to $$\pm1$$. +2) **Rough bounds**: quick PL fits to get subject‑wise $$(\hat\mu,\hat\sigma)$$; expand to working ranges; verify resolution is fine enough. +3) **Build reference surface**: choose `reference_mode ∈ {pooled, control}`, set $$h\equiv 0$$, sweep $$(\mu,\sigma)$$ by affine off‑diagonal transforms of $$J_{\mathrm{ref}}$$, run multi‑chain MC with convergence checks, and cache $$\{\mathrm{m},\mathrm{q},\chi_{\mathrm{SG}},\chi_{\mathrm{Uni}},C\}$$ surfaces. +4) **Place subjects**: minimise the balanced multi‑observable cost (or use the iso‑curve / grid fallbacks with border guard). +5) **Uncertainty**: bootstrap along time to report CIs; optionally shrink the control to summarise $$(\mu_c,\sigma_c)$$. +6) **Visuals**: 2‑D contour panels and interactive 3‑D surfaces, with group‑colours and critical lines; “cost bowls” per subject for identifiability. + +--- + +### 6.6 Mathematical and implementation notes (exact to this workflow) + +- **Affine mapping of $$J$$ to $$(\mu,\sigma)$$** modifies *only* off‑diagonals and preserves $$J_{ii}=0$$. This avoids artefactual self‑coupling and keeps the spin‑glass structure intact. Fields $$h$$ are explicitly zeroed for the surface. +- **Observables from data vs model.** Fast “data‑side” $$m,q,\chi$$ provide immediate checks, while MC‑side estimates (including $$C$$) are used to build the surface; both routes are available. +- **Balanced weights** $$w_k$$ default to inverse *range* (normalises sensitivity without over‑penalising heavy‑tailed metrics). Equal weights are also supported. +- **Convergence gating** uses multi‑chain Gelman-Rubin $$\hat R$$ and a conservative ESS check with geometric back‑off of sweeps up to a cap; we report if the cap is reached. +- **Border guard** prevents pathological “corner locking” when intersecting $$\chi$$‑iso‑curves on coarse grids. + +--- + +### 6.7 Interpretation tips + +- **$$\mu$$** (mean coupling) captures net ordering tendency; **$$\sigma$$** (coupling dispersion) captures disorder/glassiness. Movement along $$\sigma$$ at constant $$\mu$$ corresponds to increasing heterogeneity at fixed mean interaction strength. +- **High $$\chi_{\mathrm{SG}}$$** with muted $$m$$ signals a spin‑glass‑like regime (multiple competing basins), while **high $$m$$ with low $$\chi_{\mathrm{SG}}$$** indicates ferromagnetic‑like ordering. +- **Specific heat $$C$$** often peaks near phase boundaries and can indicate broad susceptibility to perturbations in this coarse‑grained description. + +--- + +### 6.8 Reproducibility knobs (defaults) + +- MC: chains = 12, start sweeps = 8k, burn‑in = 1k, cap = 128k, $$\hat R$$ tol = 1.05. +- Working grid: $$140\times140$$ by default; guard: $$\max(\Delta\mu,\Delta\sigma)\le 0.01$$. +- Objective: weights = “balanced” (inverse range), optimiser = L‑BFGS‑B within bounds. +- Bootstrap: circular blocks, user‑set size; control shrinkage parameter $$\lambda\in[0,1]$$. + +--- + +### 6.9 Illustrative pseudocode (orientation only — code is not released here) + +> The snippet below mirrors the sequence used to generate the figures; it is descriptive rather than an API. + +```python +# 1) Build the reference phase surfaces (pooled or control) +phase = build_phase_surfaces( + binaries_pm1 = BINARIES_PM1_OR_01, # dict: subject → DataFrame (±1) + reference = {"mode": "pooled", "subject": None}, # or {"mode": "control","subject": "ID"} + grid_size = 150, # working grid resolution + mc_settings = {"chains": 12, "burn_in": 1000, "start_sweeps": 8000} +) + +# 2) Place subjects via multi-observable cost (balanced weights by default) +positions = place_subjects_on_surface( + binaries_pm1 = BINARIES_PM1_OR_01, + phase = phase, + method = "cost", # or "iso_curves" + weights_mode = "balanced" +) + +# 3) Inspect local identifiability (“cost bowl”) for one subject +w = objective_weights(phase, mode="balanced") +plot_cost_landscape( + subject_id = "SUBJECT_ID", + positions = positions, + phase = phase, + window = 0.06, + steps = 200, + weights = w +) + +``` + +--- + +### 6.10 Caveats specific to PDA + +- PDA assumes an SK‑like parameterisation (coupling distribution matters); it analyses **macrostates** and does not replace ELA’s mechanistic, basin‑level descriptors. +- The choice of reference surface (pooled vs control) can shift placements; we therefore expose the cost bowls and allow both options to be reported. +- Grid resolution and MC budgets matter near sharp boundaries; guards and diagnostics make this explicit. + +
+ +
+ +--- + +## Results in a word +On resting-state functional ultrasound (fUS) recordings (mesoscopic, whole-brain), we observe low placement residuals $$(10^{-6}–10^{-4})$$, tight bootstrap confidence regions, convergent models, and stable ordering under pooled vs subgroup phase references; example estimates span **σ ≈ 0.15–0.32** and **μ ≈ −0.01 to +0.03**. The outputs - susceptibility to perturbations, ordering vs glassiness, transition propensity - form compact, biologically meaningful fingerprints. + +For experimentalists, this is a mechanistic dashboard (what +states exist, how deep, how likely to switch); for theorists, it anchors subjects in a physics-grounded phase +space with interpretable axes. + +Overall, the multi-observable placement and the combination of shared embeddings with ELA/PDA provide reliability-minded, comparable, and interpretable read-outs that support discovery, phenotyping, and model-based hypothesis generation across cohorts, data modalities, tasks, and species. --- +## Robustness, uncertainty and diagnostics + +- Uncertainty via variational-Bayes posteriors for h and J; bootstrap intervals for mu and sigma and for near-criticality; block bootstrap for autocorrelation +- Convergence checks including MCMC R-hat and effective sample size where applicable, pseudo-likelihood relative-norm stopping, and ELBO improvements for variational Bayes +- Quality-control gates including permutation or null thresholds for spurious minima, component-stability filters, and sensitivity to number of latents and alignment choice +- Ablations: pooled versus subgroup reference surfaces; method toggles among SRM, MCCA, and ICA; median versus mean thresholds + +--- ## Reproducibility and artefacts -We operate config-first with deterministic seeds and machine-parsable outputs. +We report key settings and diagnostics to make the computational provenance clear, even though the code is not released with this post. Runs are seed-controlled with machine-parsable configuration files; convergence (e.g., R-hat, ESS) and grid resolution checks are documented in the figure captions and text. -{% highlight yaml %} -# configs/pipeline.yaml +**Example configuration stub (indicative):** + +```yaml +# example-config.yaml seed: 123 preprocess: detrend: conservative @@ -683,13 +1027,7 @@ pda: reports: phase_report: true landscape_report: true -{% endhighlight %} - -Repository layout for this post: -- post file: _posts/2025-10-25-a-shared-coordinate-system.md -- static images: assets/img/a-shared-coordinate-system/… -- plotly HTML: assets/plotly/… -- BibTeX: assets/bibliography/a-shared-coordinate-system.bib + ``` --- @@ -712,7 +1050,7 @@ Population-universal latents combined with physics-grounded descriptors provide Below are the core mathematical underpinnings of the pseudo‑likelihood and variational‑Bayes alternatives to the exact‑likelihood pairwise maximum‑entropy model (PMEM / Ising), as well as of the relevant auxilliary methods (e.g., for VB, the ARD/shrinkage or convergence diagnostics). ---- +{% details Click to expand the entire Appendix %} ## Notation (common to PL and VB) @@ -829,14 +1167,6 @@ $$\tau_h \leftarrow \frac{N/2 + a_h - 1}{\tfrac{1}{2}\big(\lVert \mu_h\rVert_2^2 - Optionally update $$\tau_h,\tau_J$$; check ELBO and relative change. 3. Output $$q(\theta)=\mathcal{N}(\mu,\Sigma)$$ and credible intervals. ---- - -### Acknowledgements - -We thank colleagues at PSNC for discussions and infrastructure support. - ---- - -### References +{% enddetails %} -Rendered from the bibliography file. \ No newline at end of file +--- \ No newline at end of file diff --git a/assets/bibliography/2025-10-25-phase-diagram-playbook.bib b/assets/bibliography/2025-10-25-phase-diagram-playbook.bib index e69de29..bb52b49 100644 --- a/assets/bibliography/2025-10-25-phase-diagram-playbook.bib +++ b/assets/bibliography/2025-10-25-phase-diagram-playbook.bib @@ -0,0 +1,548 @@ +% SRM (shared response model / shared timecourses across subjects) +@inproceedings{NIPS2015_b3967a0e, + author = {Chen, Po-Hsuan (Cameron) and Chen, Janice and Yeshurun, Yaara and Hasson, Uri and Haxby, James and Ramadge, Peter J}, + booktitle = {Advances in Neural Information Processing Systems}, + editor = {C. Cortes and N. Lawrence and D. Lee and M. Sugiyama and R. Garnett}, + pages = {}, + publisher = {Curran Associates, Inc.}, + title = {A Reduced-Dimension fMRI Shared Response Model}, + url = {https://proceedings.neurips.cc/paper_files/paper/2015/file/b3967a0e938dc2a6340e258630febd5a-Paper.pdf}, + volume = {28}, + year = {2015} +} + + +% Hyperalignment (functional alignment across brains) +@article{haxby2011hyperalignment, + title = {A Common, High-Dimensional Model of the Representational Space in Human Ventral Temporal Cortex}, + author = {Haxby, James V and Guntupalli, J Swaroop and Connolly, Andrew C and Halchenko, Yaroslav O and Conroy, Bryan R and Gobbini, M Ida and Hanke, Michael and Ramadge, Peter J}, + journal = {Neuron}, + volume = {72}, + number = {2}, + pages = {404--416}, + year = {2011}, + doi = {10.1016/j.neuron.2011.08.026}, + url = {https://pubmed.ncbi.nlm.nih.gov/22017997/} +} + +% Group-PCA for very large fMRI datasets +@article{SMITH2014738, +title = {Group-PCA for very large fMRI datasets}, +journal = {NeuroImage}, +volume = {101}, +pages = {738-749}, +year = {2014}, +issn = {1053-8119}, +doi = {https://doi.org/10.1016/j.neuroimage.2014.07.051}, +url = {https://www.sciencedirect.com/science/article/pii/S105381191400634X}, +author = {Stephen M. Smith and Aapo Hyvärinen and Gaël Varoquaux and Karla L. Miller and Christian F. Beckmann}, +} + +% Group-ICA (classic group inference with ICA) +%https://doi.org/10.1002/hbm.1048 + +@article{calhoun2001groupica, +author = {Calhoun, V.D. and Adali, T. and Pearlson, G.D. and Pekar, J.J.}, +title = {A method for making group inferences from functional MRI data using independent component analysis}, +journal = {Human Brain Mapping}, +volume = {14}, +number = {3}, +pages = {140-151}, +doi = {https://doi.org/10.1002/hbm.1048}, +url = {https://onlinelibrary.wiley.com/doi/abs/10.1002/hbm.1048}, +eprint = {https://onlinelibrary.wiley.com/doi/pdf/10.1002/hbm.1048}, +year = {2001} +} + + + +% MCCA – original formulation +@article{60b14841-3c7e-3751-88f2-15308f78bf55, + ISSN = {00063444, 14643510}, + URL = {http://www.jstor.org/stable/2334380}, + author = {J. R. Kettenring}, + journal = {Biometrika}, + number = {3}, + pages = {433--451}, + publisher = {[Oxford University Press, Biometrika Trust]}, + title = {Canonical Analysis of Several Sets of Variables}, + urldate = {2025-11-01}, + volume = {58}, + year = {1971} +} + + +% MCCA – neuroimaging application +@article{correa2010mcca, +title = {Multi-set canonical correlation analysis for the fusion of concurrent single trial ERP and functional MRI}, +journal = {NeuroImage}, +volume = {50}, +number = {4}, +pages = {1438-1445}, +year = {2010}, +issn = {1053-8119}, +doi = {https://doi.org/10.1016/j.neuroimage.2010.01.062}, +url = {https://www.sciencedirect.com/science/article/pii/S1053811910000844}, +author = {Nicolle M. Correa and Tom Eichele and Tülay Adalı and Yi-Ou Li and Vince D. Calhoun}, +} + +% MCCA – methodological review +@article{decheveigne2019mcca, +title = {Multiway canonical correlation analysis of brain data}, +journal = {NeuroImage}, +volume = {186}, +pages = {728-740}, +year = {2019}, +issn = {1053-8119}, +doi = {https://doi.org/10.1016/j.neuroimage.2018.11.026}, +url = {https://www.sciencedirect.com/science/article/pii/S1053811918321049}, +author = {Alain {de Cheveigné} and Giovanni M. {Di Liberto} and Dorothée Arzounian and Daniel D.E. Wong and Jens Hjortkjær and Søren Fuglsang and Lucas C. Parra}, +keywords = {EEG, CCA, Generalized CCA, Multiple CCA, Multiway CCA, Multivariate CCA}, +} + +% Orthogonal Procrustes (alignment) +@article{schonemann1966procrustes, +title={A Generalized Solution of the Orthogonal Procrustes Problem}, +volume={31}, +DOI={10.1007/BF02289451}, +number={1}, +journal={Psychometrika}, +author={Schönemann, Peter H.}, +year={1966}, +pages={1–10}} + +% Hungarian algorithm (matching components) +@article{kuhn1955hungarian, +author = {Kuhn, H. W.}, +title = {The Hungarian method for the assignment problem}, +journal = {Naval Research Logistics Quarterly}, +volume = {2}, +number = {1-2}, +pages = {83-97}, +doi = {https://doi.org/10.1002/nav.3800020109}, +url = {https://onlinelibrary.wiley.com/doi/abs/10.1002/nav.3800020109}, +eprint = {https://onlinelibrary.wiley.com/doi/pdf/10.1002/nav.3800020109}, +year = {1955} +} + + + +% Varimax rotation +@article{kaiser1958varimax, +title={The Varimax Criterion for Analytic Rotation in Factor Analysis}, +volume={23}, +DOI={10.1007/BF02289233}, +number={3}, +journal={Psychometrika}, author={Kaiser, Henry F.}, +year={1958}, +pages={187–200}} + + +% FastICA +@rticle{hyvarinen1999fastica, + author={Hyvarinen, A.}, + journal={IEEE Transactions on Neural Networks}, + title={Fast and robust fixed-point algorithms for independent component analysis}, + year={1999}, + volume={10}, + number={3}, + pages={626-634}, + keywords={Robustness;Independent component analysis;Signal processing algorithms;Vectors;Information theory;Entropy;Mutual information;Blind source separation;Feature extraction;Data mining}, + doi={10.1109/72.761722}} + + +% Trustworthiness / continuity (temporal-neighbourhood fidelity) +@article{venna2006localmds, +title = {Local multidimensional scaling}, +journal = {Neural Networks}, +volume = {19}, +number = {6}, +pages = {889-899}, +year = {2006}, +note = {Advances in Self Organising Maps - WSOM’05}, +issn = {0893-6080}, +doi = {https://doi.org/10.1016/j.neunet.2006.05.014}, +url = {https://www.sciencedirect.com/science/article/pii/S0893608006000724}, +author = {Jarkko Venna and Samuel Kaski}, +keywords = {Information visualization, Manifold extraction, Multi-dimensional scaling (MDS), Nonlinear dimensionality reduction, Non-linear projection, Gene expression}, +abstract = {In a visualization task, every nonlinear projection method needs to make a compromise between trustworthiness and continuity. In a trustworthy projection the visualized proximities hold in the original data as well, whereas a continuous projection visualizes all proximities of the original data. We show experimentally that one of the multidimensional scaling methods, curvilinear components analysis, is good at maximizing trustworthiness. We then extend it to focus on local proximities both in the input and output space, and to explicitly make a user-tunable parameterized compromise between trustworthiness and continuity. The new method compares favorably to alternative nonlinear projection methods.} +} + +% Kruskal stress (MDS goodness-of-fit metric) +@article{kruskal1964nmds1, +title={Multidimensional Scaling by Optimizing Goodness of Fit to a Nonmetric Hypothesis}, +volume={29}, +DOI={10.1007/BF02289565}, +number={1}, journal={Psychometrika}, +author={Kruskal, J. B.}, +year={1964}, +pages={1–27}} + +% RV coefficient (matrix similarity / consensus stability) +@article{robert1976rv, + ISSN = {00359254, 14679876}, + URL = {http://www.jstor.org/stable/2347233}, + abstract = {Consider two data matrices on the same sample of n individuals, X(p × n), Y(q × n). From these matrices, geometrical representations of the sample are obtained as two configurations of n points, in Rp and Rq. It is shown that the RV-coefficient (Escoufier, 1970, 1973) can be used as a measure of similarity of the two configurations, taking into account the possibly distinct metrics to be used on them to measure the distances between points. The purpose of this paper is to show that most classical methods of linear multivariate statistical analysis can be interpreted as the search for optimal linear transformations or, equivalently, the search for optimal metrics to apply on two data matrices on the same sample; the optimality is defined in terms of the similarity of the corresponing configurations of points. which, in turn, calls for the maximization of the associated RV-coefficient. The methods studied are principal components, principal components of instrumental variables, multivariate regression, canonical variables, discriminant analysis; they are differentiated by the possible relationships existing between the two data matrices involved and by additional constraints under which the maximum of RV is to be obtained. It is also shown that the RV-coefficient can be used as a measure of goodness of a solution to the problem of discarding variables.}, + author = {P. Robert and Y. Escoufier}, + journal = {Journal of the Royal Statistical Society. Series C (Applied Statistics)}, + number = {3}, + pages = {257--265}, + publisher = {[Royal Statistical Society, Oxford University Press]}, + title = {A Unifying Tool for Linear Multivariate Statistical Methods: The RV- Coefficient}, + urldate = {2025-11-01}, + volume = {25}, + year = {1976} +} + + +% Welch method (power spectra in QC) +@ARTICLE{welch1967psd, + author={Welch, P.}, + journal={IEEE Transactions on Audio and Electroacoustics}, + title={The use of fast Fourier transform for the estimation of power spectra: A method based on time averaging over short, modified periodograms}, + year={1967}, + volume={15}, + number={2}, + pages={70-73}, + keywords={Fast Fourier transforms;Testing;Fourier transforms;Shape;Aging;Time measurement;Demodulation;Stochastic processes;Reactive power}, + doi={10.1109/TAU.1967.1161901}} + + +% LOESS detrending +@article{cleveland1979lowess, + ISSN = {01621459, 1537274X}, + URL = {http://www.jstor.org/stable/2286407}, + abstract = {The visual information on a scatterplot can be greatly enhanced, with little additional cost, by computing and plotting smoothed points. Robust locally weighted regression is a method for smoothing a scatterplot, (xi, yi), i = 1, ⋯, n, in which the fitted value at xk is the value of a polynomial fit to the data using weighted least squares, where the weight for (xi, yi) is large if xi is close to xk and small if it is not. A robust fitting procedure is used that guards against deviant points distorting the smoothed points. Visual, computational, and statistical issues of robust locally weighted regression are discussed. Several examples, including data on lead intoxication, are used to illustrate the methodology.}, + author = {William S. Cleveland}, + journal = {Journal of the American Statistical Association}, + number = {368}, + pages = {829--836}, + publisher = {[American Statistical Association, Taylor & Francis, Ltd.]}, + title = {Robust Locally Weighted Regression and Smoothing Scatterplots}, + urldate = {2025-11-01}, + volume = {74}, + year = {1979} +} + +% kNN-based mutual information (independence checks) +@article{kraskov2004mi, + title = {Estimating mutual information}, + author = {Kraskov, Alexander and St\"ogbauer, Harald and Grassberger, Peter}, + journal = {Phys. Rev. E}, + volume = {69}, + issue = {6}, + pages = {066138}, + numpages = {16}, + year = {2004}, + month = {Jun}, + publisher = {American Physical Society}, + doi = {10.1103/PhysRevE.69.066138}, + url = {https://link.aps.org/doi/10.1103/PhysRevE.69.066138} +} + + +% Maximum entropy principle +@article{jaynes1957maxent, + title = {Information Theory and Statistical Mechanics}, + author = {Jaynes, E. T.}, + journal = {Phys. Rev.}, + volume = {106}, + issue = {4}, + pages = {620--630}, + numpages = {0}, + year = {1957}, + month = {May}, + publisher = {American Physical Society}, + doi = {10.1103/PhysRev.106.620}, + url = {https://link.aps.org/doi/10.1103/PhysRev.106.620} +} + + +% PMEM (pairwise MaxEnt) in neural populations +@article{schneidman2006nature, + title = {Weak Pairwise Correlations Imply Strongly Correlated Network States in a Neural Population}, + author = {Schneidman, Elad and Berry, Michael J and Segev, Ronen and Bialek, William}, + journal = {Nature}, + volume = {440}, + number = {7087}, + pages = {1007--1012}, + year = {2006}, + doi = {10.1038/nature04701}, + url = {https://doi.org/10.1038/nature04701} +} + +% Pseudolikelihood (inverse Ising) +@article{besag1975pl, + ISSN = {00390526, 14679884}, + URL = {http://www.jstor.org/stable/2987782}, + abstract = {A Markovian approach to the specification of spatial stochastic interaction for irregularly distributed data points is reviewed. Three specific methods of statistical analysis are proposed; the first two are generally applicable whilst the third relates only to "normally" distributed variables. Some reservations are expressed and the need for practical investigations is emphasized.}, + author = {Julian Besag}, + journal = {Journal of the Royal Statistical Society. Series D (The Statistician)}, + number = {3}, + pages = {179--195}, + publisher = {[Royal Statistical Society, Wiley]}, + title = {Statistical Analysis of Non-Lattice Data}, + urldate = {2025-11-01}, + volume = {24}, + year = {1975} +} + +% l1-regularized logistic for Ising graph selection +@article{ravikumar2010ising, + ISSN = {00905364, 21688966}, + URL = {http://www.jstor.org/stable/20744454}, + abstract = {We consider the problem of estimating the graph associated with a binary Ising Markov random field. We describe a method based on ℓ₁-regularized logistic regression, in which the neighborhood of any given node is estimated by performing logistic regression subject to an ℓ₁-constraint. The method is analyzed under high-dimensional scaling in which both the number of nodes p and maximum neighborhood size d are allowed to grow as a function of the number of observations n. Our main results provide sufficient conditions on the triple (n, p, d) and the model parameters for the method to succeed in consistently estimating the neighborhood of every node in the graph simultaneously. With coherence conditions imposed on the population Fisher information matrix, we prove that consistent neighborhood selection can be obtained for sample sizes n = Ω(d³ log p) with exponentially decaying error. When these same conditions are imposed directly on the sample matrices, we show that a reduced sample size of n = Ω(d² log p) suffices for the method to estimate neighborhoods consistently. Although this paper focuses on the binary graphical models, we indicate how a generalization of the method of the paper would apply to general discrete Markov random fields.}, + author = {Pradeep Ravikumar and Martin J. Wainwright and John D. Lafferty}, + journal = {The Annals of Statistics}, + number = {3}, + pages = {1287--1319}, + publisher = {Institute of Mathematical Statistics}, + title = {HIGH-DIMENSIONAL ISING MODEL SELECTION USING ℓ₁-REGULARIZED LOGISTIC REGRESSION}, + urldate = {2025-11-01}, + volume = {38}, + year = {2010} +} + +% Advanced mean-field methods (VB context) +@book{opper2001advancedmf, + title = {Advanced Mean Field Methods: Theory and Practice}, + author = {Opper, Manfred and Saad, David}, + publisher = {MIT Press}, + year = {2001}, + isbn = {9780262150539}, + url = {https://mitpress.mit.edu/9780262150539/advanced-mean-field-methods/} +} + +% Metropolis MCMC (used for landscape kinetics) +@article{metropolis1953mcmc, + author = {Metropolis, Nicholas and Rosenbluth, Arianna W. and Rosenbluth, Marshall N. and Teller, Augusta H. and Teller, Edward}, + title = {Equation of State Calculations by Fast Computing Machines}, + journal = {The Journal of Chemical Physics}, + volume = {21}, + number = {6}, + pages = {1087-1092}, + year = {1953}, + month = {06}, + abstract = {A general method, suitable for fast computing machines, for investigating such properties as equations of state for substances consisting of interacting individual molecules is described. The method consists of a modified Monte Carlo integration over configuration space. Results for the two‐dimensional rigid‐sphere system have been obtained on the Los Alamos MANIAC and are presented here. These results are compared to the free volume equation of state and to a four‐term virial coefficient expansion.}, + issn = {0021-9606}, + doi = {10.1063/1.1699114}, + url = {https://doi.org/10.1063/1.1699114}, + eprint = {https://pubs.aip.org/aip/jcp/article-pdf/21/6/1087/18802390/1087_1_online.pdf}, +} + +% Disconnectivity graphs (landscape topology) +@article{becker1997disconnectivity, + author = {Becker, Oren M. and Karplus, Martin}, + title = {The topology of multidimensional potential energy surfaces: Theory and application to peptide structure and kinetics}, + journal = {The Journal of Chemical Physics}, + volume = {106}, + number = {4}, + pages = {1495-1517}, + year = {1997}, + month = {01}, + abstract = {Topological characteristics of multidimensional potential energy surfaces are explored and the full conformation space is mapped on the set of local minima. This map partitions conformation space into energy-dependent or temperature-dependent “attraction basins’’ and generates a “disconnectivity’’ graph that reflects the basin connectivity and characterizes the shape of the multidimensional surface. The partitioning of the conformation space is used to express the temporal behavior of the system in terms of basin-to-basin kinetics instead of the usual state-to-state transitions. For this purpose the transition matrix of the system is expressed in terms of basin-to-basin transitions and the corresponding master equation is solved. As an example, the approach is applied to the tetrapeptide, isobutyryl-(ala)3-NH-methyl (IAN), which is the shortest peptide that can form a full helical turn. A nearly complete list of minima and barriers is available for this system from the work of Czerminiski and Elber. The multidimensional potential energy surface of the peptide is shown to exhibit an overall “funnel’’ shape. The relation between connectivity and spatial proximity in dihedral angle space is examined. It is found that, although the two are similar, closeness in one does not always imply closeness in the other. The basin to basin kinetics is examined using a master equation and the results are interpreted in terms of kinetic connectivity. The conformation space of the peptide is divided up in terms of the surface topography to model its “folding’’ behavior. Even in this very simple system, the kinetics exhibit a “trapping’’ state which appears as a “kinetic intermediate,’’ as in the folding of proteins. The approach described here can be used more generally to classify multidimensional potential energy surfaces and the time development of complex systems.}, + issn = {0021-9606}, + doi = {10.1063/1.473299}, + url = {https://doi.org/10.1063/1.473299}, + eprint = {https://pubs.aip.org/aip/jcp/article-pdf/106/4/1495/19148343/1495_1_online.pdf}, +} + + + +% Energy landscapes pathways/rates +@article{wales2006jpcb, +author = {David J. Wales}, +title = {Energy landscapes: calculating pathways and rates}, +journal = {International Reviews in Physical Chemistry}, +volume = {25}, +number = {1-2}, +pages = {237--282}, +year = {2006}, +publisher = {Taylor \& Francis}, +doi = {10.1080/01442350600676921}, +URL = {https://doi.org/10.1080/01442350600676921}, +eprint = {https://doi.org/10.1080/01442350600676921} +} + +% ELA applied to fMRI (foundational) +@article{watanabe2014ela, +AUTHOR={Watanabe, Takamitsu and Hirose, Satoshi and Wada, Hiroyuki and Imai, Yoshio and Machida, Toru and Shirouzu, Ichiro and Konishi, Seiki and Miyashita, Yasushi and Masuda, Naoki }, +TITLE={Energy landscapes of resting-state brain networks}, +JOURNAL={Frontiers in Neuroinformatics}, +VOLUME={Volume 8 - 2014}, +YEAR={2014}, +URL={https://www.frontiersin.org/journals/neuroinformatics/articles/10.3389/fninf.2014.00012}, +DOI={10.3389/fninf.2014.00012}, +ISSN={1662-5196}, +} + +% PDA / criticality in human data +@article{ezaki2020critical, + title = {Closer to Critical Resting-State Neural Dynamics in Individuals with Higher Fluid Intelligence}, + author = {Ezaki, T., Fonseca dos Reis, E., Watanabe, T. et al.}, + journal = {Communications Biology}, + volume = {3}, + number = {1}, + pages = {52}, + year = {2020}, + doi = {10.1038/s42003-020-0774-y}, + url = {https://www.nature.com/articles/s42003-020-0774-y} +} + +% Kinetic descriptors: MFPTs, fundamental matrix, Kemeny's constant +@book{kemeny1960finite, + title = {Finite Markov Chains}, + author = {Kemeny, John G and Snell, J Laurie}, + publisher = {Van Nostrand}, + year = {1960}, + url = {https://math.dartmouth.edu/~doyle/docs/fmc/fmc.pdf} +} + +% Transition Path Theory (committors) +@article{e2006tpt, + title = {Towards a Theory of Transition Paths}, + author = {E, Weinan and Vanden-Eijnden, Eric}, + journal = {Journal of Statistical Physics}, + volume = {123}, + number = {3}, + pages = {503--523}, + year = {2006}, + doi = {10.1007/s10955-005-9003-9}, + url = {https://link.springer.com/article/10.1007/s10955-005-9003-9} +} + +% Spin-glass background: Edwards–Anderson & SK + textbook +@article{edwards1975ea, + title = {Theory of Spin Glasses}, + author = {Edwards, S F and Anderson, P W}, + journal = {Journal of Physics F: Metal Physics}, + volume = {5}, + number = {5}, + pages = {965--974}, + year = {1975}, + doi = {10.1088/0305-4608/5/5/017}, + url = {https://iopscience.iop.org/article/10.1088/0305-4608/5/5/017} +} +@article{sherrington1975sk, + title = {Solvable Model of a Spin-Glass}, + author = {Sherrington, David and Kirkpatrick, Scott}, + journal = {Phys. Rev. Lett.}, + volume = {35}, + issue = {26}, + pages = {1792--1796}, + numpages = {0}, + year = {1975}, + month = {Dec}, + publisher = {American Physical Society}, + doi = {10.1103/PhysRevLett.35.1792}, + url = {https://link.aps.org/doi/10.1103/PhysRevLett.35.1792} +} + + +% Improved MCMC convergence diagnostics (R-hat / ESS) +@article{vehtari2021rhat, + author = {{Vehtari}, Aki and {Gelman}, Andrew and {Simpson}, Daniel and {Carpenter}, Bob and {B{\"u}rkner}, Paul-Christian}, + title = "Rank-normalization, folding, and localization: An improved R-hat for assessing convergence of MCMC (with Discussion)", + journal = {Bayesian Analysis}, + keywords = {Statistics - Computation, Statistics - Methodology}, + year = 2021, + month = jun, + volume = {16}, + number = {2}, + pages = {667-718}, + doi = {10.1214/20-BA1221}, +archivePrefix = {arXiv}, + eprint = {1903.08008}, + primaryClass = {stat.CO}, + adsurl = {https://ui.adsabs.harvard.edu/abs/2021BayAn..16..667V}, + adsnote = {Provided by the SAO/NASA Astrophysics Data System} +} + + + +% fUS modality: seminal paper +@article{mace2011fus, + title = {Functional Ultrasound Imaging of the Brain}, + author = {Mace, Emilie and Montaldo, Gabriel and Cohen, Ivan and Baulac, Michel and Fink, Mathias and Tanter, Mickael}, + journal = {Nature Methods}, + volume = {8}, + number = {8}, + pages = {662--664}, + year = {2011}, + doi = {10.1038/nmeth.1641}, + url = {https://pubmed.ncbi.nlm.nih.gov/21725300/} +} + +% fUS review & advances +@article{deffieux2021fusreview, +title = {Functional Ultrasound Imaging: A New Imaging Modality for Neuroscience}, +journal = {Neuroscience}, +volume = {474}, +pages = {110-121}, +year = {2021}, +note = {Brain imaging}, +issn = {0306-4522}, +doi = {https://doi.org/10.1016/j.neuroscience.2021.03.005}, +url = {https://www.sciencedirect.com/science/article/pii/S0306452221001214}, +author = {Thomas Deffieux and Charlie Demené and Mickael Tanter}, +keywords = {ultrasound imaging, ultrafast imaging, functional ultrasound imaging, Doppler, ultrasound localization microscopy, functional brain connectivity, neurovascular coupling, neuroimaging, stroke}, +abstract = {Ultrasound sensitivity to slow blood flow motion gained two orders of magnitude in the last decade thanks to the advent of ultrafast ultrasound imaging at thousands of frames per second. In neuroscience, this access to small cerebral vessels flow led to the introduction of ultrasound as a new and full-fledged neuroimaging modality. Much as functional MRI or functional optical imaging, functional Ultrasound (fUS) takes benefit of the neurovascular coupling. Its ease of use, portability, spatial and temporal resolution makes it an attractive tool for functional imaging of brain activity in preclinical imaging. A large and fast-growing number of studies in a wide variety of small to large animal models have demonstrated its potential for neuroscience research. Beyond preclinical imaging, first proof of concept applications in humans are promising and proved a clear clinical interest in particular in human neonates, per-operative surgery, or even for the development of non-invasive brain machine interfaces.} +} + +% fUS neuroimaging overview (Imaging Neuroscience) +@article{montaldo2022fusneuro, + author = "Montaldo, Gabriel and Urban, Alan and Macé, Emilie", + title = "Functional Ultrasound Neuroimaging", + journal= "Annual Review of Neuroscience", + year = "2022", + volume = "45", + number = "Volume 45, 2022", + pages = "491-513", + doi = "https://doi.org/10.1146/annurev-neuro-111020-100706", + url = "https://www.annualreviews.org/content/journals/10.1146/annurev-neuro-111020-100706", + publisher = "Annual Reviews", + issn = "1545-4126", + type = "Journal Article", + keywords = "whole-brain imaging", + keywords = "neurovascular coupling", + keywords = "neuroimaging", + keywords = "functional ultrasound", + abstract = "Functional ultrasound (fUS) is a neuroimaging method that uses ultrasound to track changes in cerebral blood volume as an indirect readout of neuronal activity at high spatiotemporal resolution. fUS is capable of imaging head-fixed or freely behaving rodents and of producing volumetric images of the entire mouse brain. It has been applied to many species, including primates and humans. Now that fUS is reaching maturity, it is being adopted by the neuroscience community. However, the nature of the fUS signal and the different implementations of fUS are not necessarily accessible to nonspecialists. This review aims to introduce these ultrasound concepts to all neuroscientists. We explain the physical basis of the fUS signal and the principles of the method, present the state of the art of its hardware implementation, and give concrete examples of current applications in neuroscience. Finally, we suggest areas for improvement during the next few years.", + } + + + +% fUS localization microscopy breakthrough +@article{renaudin2022fulm, + title = {Functional Ultrasound Localization Microscopy Reveals Brain-wide Neurovascular Activity on a Microscopic Scale}, + author = {Renaudin, Noemi and others}, + journal = {Nature Methods}, + volume = {19}, + pages = {1004--1014}, + year = {2022}, + doi = {10.1038/s41592-022-01549-5}, + url = {https://www.nature.com/articles/s41592-022-01549-5} +} + +% Time-series uncertainty: circular block bootstrap & automatic block length +@incollection{politis1992cbb, + title = {A Circular Block-Resampling Procedure for Stationary Data}, + author = {Politis, Dimitris N and Romano, Joseph P}, + booktitle = {Exploring the Limits of Bootstrap}, + publisher = {Wiley}, + year = {1992}, + url = {https://www.stat.purdue.edu/docs/research/tech-reports/1991/tr91-07.pdf} +} +@article{politis2004blocklength, +author = {Dimitris N. Politis and Halbert White}, +title = {Automatic Block-Length Selection for the Dependent Bootstrap}, +journal = {Econometric Reviews}, +volume = {23}, +number = {1}, +pages = {53--70}, +year = {2004}, +publisher = {Taylor \& Francis}, +doi = {10.1081/ETC-120028836}, +URL = {https://doi.org/10.1081/ETC-120028836}, +eprint = {https://doi.org/10.1081/ETC-120028836} +} diff --git a/assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-09-08 083629.png b/assets/img/2025-10-25-phase-diagram-playbook/Screenshot 2025-09-08 083629.png new file mode 100644 index 0000000000000000000000000000000000000000..642e507efc5e983c2d9d79418bc22275e69711b2 GIT binary patch literal 1251577 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

a*x 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 z zTgg-SZ;t^gpc!*;6q!~DY8&ci>H1w60>eO_A)=rFE%Z4BP@IAI zvBox1Z1=(kvf((RpB0b5eH8wSgp7%oR|o*---ZzZkxz5fHr%>QzCyKv%vBM*wMVVc z=%pnFaq38gIT>bD_|Wih*xWW_Y_~F7QAE~Lj97ghDVQ~kPKI{Yd685wg+lYz_!<&J z6EFYu(HHGPO_>}u(8>cnyOG-j*Buv?)L zH)hmS;J&ykm7nOmYu&x7Hp}g`Y#(FK3b%tJJezfBucId&6wDr?yVb}tl!o`&Gvb8W zI&#c~(e%K?e7e>*eM*aM-mwPOnJDonVVU~!`(whKcV!J2VzvMLOseuaK1}Gg7_#Yz z%FS2rp~q-#TXuvDEB93QlCi~1dfbke&KtsRWq80BE^`{2=n#iJPnG zhu(Jj;$GhrE5mHUeXd?eks5={=BTL(Q`eXDkY|cEI6BzKo>278N5?bFF}kh%ZS^(bUvu zS3Y$wPz*Y-Fbm0_bt#dpkw2nH5yZ87j&p~QXxVGMLJO*LkbQu}4)|$GayGrr{)NoI z6Z90C#eRi>Xo5Qh+MV0)v!3OvQpfg{{97gsk`YMAQ!N5a>2B=|rryg70}(!`%Ps*> z<+F!!z0FD&aEgXl>}D_So{sZEIP<|2k+<(Sj9FlQPfSd#%N2Bb zifZYw{Vad1+nke>6BAf9-DbDo9>;+{dEmi{ra1#D4sq^DG4Qk`^c5FhBy8am(VaYRP|HEzmW0EI9+l0rWUj1~XvD#~R9~gQ2oCU9E1|^2_!$=fR;NF$aga z1t#kwB#UY;V7J4Ulq??8k^bEEchB{E2O8=v zw197!qK#^x-TT=m=)0Cu;_`2rK6jZAhT_nLAGQ9>$?ps!&tkl=cROA@9`Zt8rDHII zhXXrTI@htkRvOdE+F0-=eo&x)M6lOY!JJ&6S{V0e*%{WOYJCct$3=yYs##1|XD