OSCR

ICU Delirium as a Failure of Predictive Synchronization: A Two-Agent Active Inference Model.

Code ↔ Paper

39 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 39 matches
  1. [1] § 3. The Predictive Synchronization Hypothesis › 3.5. Results › 3.5.1. Statistical Approach ↔ DELIRIUM/pomdp_delirium/analysis/reviewer_response.py, lines 1–51 · score 0.92 · sustained joint threshold, genuine binary outcome, logistic regression, report Spearman, cluster, linear
  2. [2] § 3. The Predictive Synchronization Hypothesis › 3.6. Model Comparison: Ablation Study ↔ DELIRIUM/pomdp_delirium/inference/causal_feedback.py, lines 1–47 · score 0.86 · Persistent de synchronization, active inference sense, causal feedback, prior belief distribution, precision rigidity, confused
  3. [3] § 3. The Predictive Synchronization Hypothesis › 3.4. Mathematical Structure of the Simulation › 3.4.7. Desynchronization Pressure ↔ DELIRIUM/pomdp_delirium/inference/causal_feedback.py, lines 1–47 · score 0.81 · increasingly peaked, causal feedback, prior belief distribution, Precision rigidity, degrade, confidence
  4. [4] § 3. The Predictive Synchronization Hypothesis › 3.5. Results › 3.5.2. Result 1: Phenotypic Gradient in Delirium Rate ↔ DELIRIUM/pomdp_delirium/analysis/reviewer_response.py, lines 1–51 · score 0.81 · Logistic regression, linear relationship, binary outcome, monotonicity, discriminating, genuine
  5. [5] § 3. The Predictive Synchronization Hypothesis › 3.6. Model Comparison: Ablation Study ↔ DELIRIUM/pomdp_delirium/simulation/loop.py, lines 198–243 · score 0.77 · implementing precision rigidity, causal feedback, prior sharpening, Full model, prior belief, M3
  6. [6] § 3. The Predictive Synchronization Hypothesis › 3.4. Mathematical Structure of the Simulation › 3.4.7. Desynchronization Pressure ↔ DELIRIUM/pomdp_delirium/agents/agents.py, lines 46–168 · score 0.75 · high probability states, probability mass, belief update, power, peaked, propagates
  7. [7] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture › 3.3.3. Patients’ Transition Matrix and Preference Vector ↔ DELIRIUM/pomdp_delirium/world/generative_models.py, lines 399–414 · score 0.73 · bright_blue, dim_warm, log preferences, nature, alarm, sound
  8. [8] § 3. The Predictive Synchronization Hypothesis › 3.4. Mathematical Structure of the Simulation › 3.4.7. Desynchronization Pressure ↔ DELIRIUM/pomdp_delirium/agents/agents.py, lines 46–168 · score 0.73 · increasingly peaked, MAP state, Precision rigidity, prior belief, sharpens, causal
  9. [9] § 3. The Predictive Synchronization Hypothesis › 3.5. Results ↔ DELIRIUM/pomdp_delirium/simulation/loop.py, lines 245–279 · score 0.72 · symmetric metric, patient surprisal, room surprisal, room observations, Predictive synchronization, SI
  10. [10] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture › 3.3.6. Room’s Transition Matrix ↔ DELIRIUM/pomdp_delirium/inference/hierarchical.py, lines 1–35 · score 0.70 · latent patient parameters, cognitive plasticity, emotional reactivity, room agent, dynamics, transition
  11. [11] § 3. The Predictive Synchronization Hypothesis › 3.8. Robustness and Sensitivity of the Simulation Results › 3.8.2. Sensitivity of Causal Feedback Parameters ↔ DELIRIUM/pomdp_delirium/inference/causal_feedback.py, lines 99–124 · score 0.70 · history window, sharpening strength, prior sharpening, nats, Feedback, threshold
  12. [12] § 3. The Predictive Synchronization Hypothesis › 3.5. Results › 3.5.1. Statistical Approach ↔ DELIRIUM/pomdp_delirium/analysis/reviewer_response.py, lines 102–156 · score 0.69 · logistic regression, higher delirium, binary outcome, classes, curve, discriminates
  13. [13] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture › 3.3.6. Room’s Transition Matrix ↔ DELIRIUM/pomdp_delirium/agents/agents.py, lines 179–202 · score 0.69 · latent patient parameters, cognitive plasticity, emotional reactivity, room agent, transition, cycle
  14. [14] § 3. The Predictive Synchronization Hypothesis › 3.4. Mathematical Structure of the Simulation › 3.4.4. Level-2 Belief Update ( Inference) ↔ DELIRIUM/pomdp_delirium/inference/hierarchical.py, lines 163–268 · score 0.69 · reliability weight, log space, Bayesian update, Inference, Belief
  15. [15] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture ↔ DELIRIUM/pomdp_delirium/inference/core.py, lines 1–18 · score 0.68 · policy selection, expected free energy, active inference, computable, variational, synchronization
  16. [16] § 3. The Predictive Synchronization Hypothesis › 3.4. Mathematical Structure of the Simulation › 3.4.5. Level-3 Action Selection ↔ DELIRIUM/pomdp_delirium/agents/agents.py, lines 327–354 · score 0.66 · adaptive temperature, early cycles, exploitation, uncertainty, exploration, personalized
  17. [17] § 3. The Predictive Synchronization Hypothesis › 3.5. Results › 3.5.5. Result 4: Is the Primary Informative Metric ↔ DELIRIUM/pomdp_delirium/inference/core.py, lines 241–264 · score 0.65 · negative log probabilities, patient surprisal, belief distribution, commensurable, nats, room
  18. [18] § 3. The Predictive Synchronization Hypothesis › 3.4. Mathematical Structure of the Simulation › 3.4.2. Level-1 Belief Update (State Inference) ↔ DELIRIUM/pomdp_delirium/inference/core.py, lines 25–60 · score 0.63 · log prior, log likelihood, VMP, softmax, discrete, posterior
  19. [19] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture › 3.3.3. Patients’ Transition Matrix and Preference Vector ↔ DELIRIUM/pomdp_delirium/world/spaces.py, lines 92–98 · score 0.62 · bright_blue, dim_warm, nature, alarm, sound, patient
  20. [20] § 3. The Predictive Synchronization Hypothesis › 3.4. Mathematical Structure of the Simulation ↔ DELIRIUM/pomdp_delirium/simulation/loop.py, lines 198–243 · score 0.61 · incoming observations, causal feedback, prior beliefs, loop, pressure, sharpens
  21. [21] § 3. The Predictive Synchronization Hypothesis › 3.6. Model Comparison: Ablation Study ↔ DELIRIUM/pomdp_delirium/simulation/cohort.py, lines 135–211 · score 0.59 · room acts randomly, delirium rates, M0, M1, variant, seeds
  22. [22] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture › 3.3.3. Patients’ Transition Matrix and Preference Vector ↔ DELIRIUM/pomdp_delirium/agents/agents.py, lines 1–39 · score 0.58 · micro actions, patient agent, hidden state, orienting, passive, startling
  23. [23] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture › 3.3.4. The ICU Room ↔ DELIRIUM/pomdp_delirium/inference/hierarchical.py, lines 55–141 · score 0.57 · cognitive plasticity, emotional reactivity, threatening, infers, inference, room
  24. [24] § 3. The Predictive Synchronization Hypothesis › 3.1. Delirium as a Failure of Predictive Synchronization ↔ DELIRIUM/pomdp_delirium/main.py, lines 1–31 · score 0.57 · early warning signal, de synchronization, generative model, hypothesis, Failure, agent
  25. [25] § 3. The Predictive Synchronization Hypothesis › 3.2. Synchronization Is Operationalized as Surprisal ↔ DELIRIUM/pomdp_delirium/world/observations.py, lines 25–74 · score 0.57 · likelihood matrix, internal states, room actions, hidden state, probability, patient
  26. [26] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture › 3.3.1. The Patient ↔ DELIRIUM/pomdp_delirium/world/spaces.py, lines 48–50 · score 0.57 · emotional precision, amygdala, HPA, moderate, minimal, spiked
  27. [27] § 3. The Predictive Synchronization Hypothesis › 3.4. Mathematical Structure of the Simulation › 3.4.1. Variational Free Energy (VFE) ↔ DELIRIUM/pomdp_delirium/inference/core.py, lines 88–115 · score 0.57 · posterior belief, prior beliefs, variational, VFE, Energy, inference
  28. [28] § 3. The Predictive Synchronization Hypothesis › 3.4. Mathematical Structure of the Simulation › 3.4.1. Variational Free Energy (VFE) ↔ DELIRIUM/pomdp_delirium/inference/core.py, lines 1–18 · score 0.56 · variational free energy, Active inference, minimize, VFE, agents
  29. [29] § 3. The Predictive Synchronization Hypothesis › 3.2. Synchronization Is Operationalized as Surprisal ↔ DELIRIUM/pomdp_delirium/inference/core.py, lines 241–264 · score 0.56 · negative log probabilities, belief distribution, hidden state, commensurable, surprise, room
  30. [30] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture › 3.3.1. The Patient ↔ DELIRIUM/pomdp_delirium/world/generative_models.py, lines 67–145 · score 0.56 · active inference, sharply, generative model, threat, weighted, likelihood
  31. [31] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture › 3.3.3. Patients’ Transition Matrix and Preference Vector ↔ DELIRIUM/pomdp_delirium/inference/core.py, lines 118–174 · score 0.56 · preference vector, transition matrix, hidden state, agent
  32. [32] § 3. The Predictive Synchronization Hypothesis › 3.4. Mathematical Structure of the Simulation › 3.4.2. Level-1 Belief Update (State Inference) ↔ DELIRIUM/pomdp_delirium/inference/core.py, lines 25–60 · score 0.56 · variational message passing, VMP, beliefs, Inference
  33. [33] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture ↔ DELIRIUM/pomdp_delirium/main.py, lines 1–31 · score 0.55 · bidirectionally coupled POMDP, preference, ICU, agents, cycle, model
  34. [34] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture › 3.3.4. The ICU Room ↔ DELIRIUM/pomdp_delirium/world/spaces.py, lines 1–37 · score 0.55 · dimensional space, room maintains, hidden state, ICU, patient
  35. [35] § 3. The Predictive Synchronization Hypothesis › 3.4. Mathematical Structure of the Simulation › 3.4.2. Level-1 Belief Update (State Inference) ↔ DELIRIUM/pomdp_delirium/inference/hierarchical.py, lines 163–268 · score 0.55 · log likelihood, state inference, numerically, posterior, cycle, Belief
  36. [36] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture › 3.3.4. The ICU Room ↔ DELIRIUM/pomdp_delirium/agents/agents.py, lines 179–202 · score 0.54 · cognitive plasticity, emotional reactivity, inference, ICU, room, patient
  37. [37] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture ↔ DELIRIUM/pomdp_delirium/inference/core.py, lines 118–174 · score 0.51 · preference vector, transition matrix, likelihood, agents
  38. [38] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture › 3.3.1. The Patient ↔ DELIRIUM/pomdp_delirium/world/generative_models.py, lines 67–145 · score 0.50 · emotional precision, threat, spiked, modulated, elevated, weight
  39. [39] § 3. The Predictive Synchronization Hypothesis › 3.3. Agent Architecture › 3.3.4. The ICU Room ↔ DELIRIUM/pomdp_delirium/agents/agents.py, lines 1–39 · score 0.50 · room configuration, room agent, hidden state, monitoring, sensors, sound

Paper

Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

Python · 295 lines · 9.6 KB · MIT · 9 matches

  1. """
  2. inference/core.py
  3. =================
  4. Core active inference computations for both agents.
  5. Functions:
  6. belief_update -- VFE minimization via softmax (variational inference)
  7. compute_vfe -- Variational Free Energy F = -accuracy + complexity
  8. compute_efe -- Expected Free Energy G for policy selection
  9. select_action -- Softmax policy selection from EFE values
  10. kl_divergence -- KL(Q_P || Q_R) synchronization metric
  11. mutual_information -- MI between two belief distributions
  12. """
  13. import numpy as np
  14. from typing import List, Optional
  15. EPS = 1e-16
  16. # ---------------------------------------------------------------------------
  17. # Belief updating (VFE minimization)
  18. # ---------------------------------------------------------------------------
  19. def belief_update(obs: int,
  20. A: np.ndarray,
  21. qs_prior: np.ndarray,
  22. n_iter: int = 16) -> np.ndarray:
  23. """
  24. Update belief Q(s) given observation obs and prior Q(s).
  25. Implements variational message passing: iteratively updates Q(s)
  26. to minimise VFE = -E_Q[ln P(o|s)] + KL[Q(s)||prior].
  27. This is the standard active inference belief update, equivalent to
  28. a softmax on log-likelihood + log-prior (single-step approximation).
  29. Args:
  30. obs: observed index (integer)
  31. A: likelihood matrix P(o|s), shape (n_obs, n_states)
  32. qs_prior: prior belief Q(s), shape (n_states,)
  33. n_iter: VMP iterations (16 is sufficient for these matrix sizes)
  34. Returns:
  35. qs_post: posterior belief Q(s), shape (n_states,)
  36. """
  37. # Log-likelihood of observation under each state
  38. ln_likelihood = np.log(A[obs] + EPS) # shape (n_states,)
  39. ln_prior = np.log(qs_prior + EPS) # shape (n_states,)
  40. # Iterative VMP (converges fast for discrete POMDP)
  41. qs = qs_prior.copy()
  42. for _ in range(n_iter):
  43. ln_qs = ln_likelihood + ln_prior
  44. # Softmax normalization
  45. ln_qs -= ln_qs.max()
  46. qs = np.exp(ln_qs)
  47. qs /= qs.sum()
  48. return qs
  49. def predict_next_state(qs: np.ndarray,
  50. B: np.ndarray,
  51. action: int) -> np.ndarray:
  52. """
  53. Predictive prior for next time step:
  54. Q(s') = sum_s B(s'|s,a) Q(s)
  55. Args:
  56. qs: current belief, shape (n_states,)
  57. B: transition matrix, shape (n_states, n_states, n_actions)
  58. action: chosen action index
  59. Returns:
  60. qs_pred: predicted belief at t+1, shape (n_states,)
  61. """
  62. qs_pred = B[:, :, action] @ qs
  63. qs_pred = np.clip(qs_pred, EPS, None)
  64. qs_pred /= qs_pred.sum()
  65. return qs_pred
  66. # ---------------------------------------------------------------------------
  67. # Free energy quantities
  68. # ---------------------------------------------------------------------------
  69. def compute_vfe(obs: int,
  70. qs: np.ndarray,
  71. A: np.ndarray,
  72. qs_prior: np.ndarray) -> float:
  73. """
  74. Variational Free Energy:
  75. F = -E_Q[ln P(o|s)] (negative accuracy)
  76. + KL[Q(s) || Q_prior] (complexity)
  77. Lower F = better fit between model and observation.
  78. High F = the agent is surprised — cannot explain the observation.
  79. Args:
  80. obs: observed index
  81. qs: posterior belief Q(s)
  82. A: likelihood P(o|s)
  83. qs_prior: prior belief
  84. Returns:
  85. F: scalar free energy
  86. """
  87. # Accuracy: expected log-likelihood
  88. accuracy = float(qs @ np.log(A[obs] + EPS))
  89. # Complexity: KL divergence Q(s) || prior
  90. complexity = float(np.sum(qs * (np.log(qs + EPS) - np.log(qs_prior + EPS))))
  91. return -accuracy + complexity
  92. def compute_efe(A: np.ndarray,
  93. B: np.ndarray,
  94. qs: np.ndarray,
  95. C: np.ndarray,
  96. action: int,
  97. use_epistemic: bool = True) -> float:
  98. """
  99. Expected Free Energy for a single action:
  100. G(a) = -E[ln P(o)] - MI(o; s | a) [pragmatic + epistemic]
  101. Decomposes into:
  102. Pragmatic value: E_Q(s')[E_Q(o|s')[C(o)]] (preference satisfaction)
  103. Epistemic value: E_Q(s')[H[P(o|s')]] - H[E_Q(s')[P(o|s')]]
  104. (expected information gain about hidden states)
  105. Lower G = better action (more likely to be selected).
  106. Args:
  107. A: likelihood P(o|s), shape (n_obs, n_states)
  108. B: transition matrix, shape (n_states, n_states, n_actions)
  109. qs: current belief Q(s), shape (n_states,)
  110. C: log-preference vector, shape (n_obs,) or (n_states,)
  111. action: action index to evaluate
  112. use_epistemic: if True, include epistemic (information gain) term
  113. Returns:
  114. G: scalar EFE (lower = preferred)
  115. """
  116. # Predicted state at next step under this action
  117. qs_next = predict_next_state(qs, B, action) # shape (n_states,)
  118. # Predicted observation distribution: P(o) = sum_s A(o|s) Q(s')
  119. po = A @ qs_next # shape (n_obs,)
  120. po = np.clip(po, EPS, None)
  121. po /= po.sum()
  122. # Pragmatic value: expected preference satisfaction
  123. if C.shape[0] == A.shape[0]: # C over observations
  124. pragmatic = float(po @ C)
  125. else: # C over states (room agent)
  126. pragmatic = float(qs_next @ C)
  127. # Epistemic value: expected information gain (Bayesian surprise reduction)
  128. epistemic = 0.0
  129. if use_epistemic:
  130. # H[P(o)] — entropy of predicted observation distribution
  131. H_po = -float(np.sum(po * np.log(po + EPS)))
  132. # E_Q(s')[H[P(o|s')]] — expected entropy of likelihood columns
  133. H_Aos = -np.sum(A * np.log(A + EPS), axis=0) # shape (n_states,)
  134. E_H_Aos = float(qs_next @ H_Aos)
  135. # MI = H[P(o)] - E[H[P(o|s')]]
  136. epistemic = H_po - E_H_Aos
  137. # G = -(pragmatic + epistemic): lower is better
  138. return -(pragmatic + epistemic)
  139. def select_action(A: np.ndarray,
  140. B: np.ndarray,
  141. qs: np.ndarray,
  142. C: np.ndarray,
  143. n_actions: int,
  144. temperature: float = 1.0,
  145. use_epistemic: bool = True,
  146. rng: Optional[np.random.Generator] = None) -> int:
  147. """
  148. Select action by computing EFE for all actions and sampling
  149. from softmax distribution (stochastic policy).
  150. Args:
  151. temperature: controls exploration (higher = more uniform)
  152. rng: random generator (if None, uses argmin — greedy)
  153. Returns:
  154. chosen action index
  155. """
  156. G = np.array([
  157. compute_efe(A, B, qs, C, a, use_epistemic=use_epistemic)
  158. for a in range(n_actions)
  159. ])
  160. if rng is None:
  161. return int(np.argmin(G))
  162. # Softmax policy: pi(a) ∝ exp(-G(a) / temperature)
  163. log_pi = -G / temperature
  164. log_pi -= log_pi.max()
  165. pi = np.exp(log_pi)
  166. pi /= pi.sum()
  167. return int(rng.choice(n_actions, p=pi))
  168. # ---------------------------------------------------------------------------
  169. # Synchronization metrics
  170. # ---------------------------------------------------------------------------
  171. def sync_room_to_patient(Q_R: np.ndarray, true_state: int) -> float:
  172. """
  173. Synchronization of room toward patient:
  174. S_{R->P} = -ln Q_R(true_state)
  175. Measures how well the room predicts the patient's true hidden state.
  176. Low surprisal = good prediction = room is synchronized with patient.
  177. High surprisal = room model has diverged from patient's true state.
  178. """
  179. p = float(np.clip(Q_R[true_state], EPS, None))
  180. return -np.log(p)
  181. def sync_patient_to_room(vfe_p: float) -> float:
  182. """
  183. Synchronization of patient toward room (PROXY):
  184. S_{P->R} = VFE_P
  185. DEPRECATED proxy: conflates accuracy and complexity terms.
  186. Use sync_patient_to_room_true() for the commensurable version.
  187. """
  188. return vfe_p
  189. def sync_patient_to_room_true(Q_P: np.ndarray,
  190. A_R: np.ndarray,
  191. obs_r: int) -> float:
  192. """
  193. True symmetric S_{P->R}: patient surprisal at room observation.
  194. S_{P->R}^{true} = -ln P(o_R | Q_P)
  195. = -ln sum_s Q_P(s) * A_R[o_R, s]
  196. Commensurable with S_{R->P} = -ln Q_R(s*):
  197. Both are negative log-probabilities of an observation
  198. under a belief distribution.
  199. Args:
  200. Q_P: patient belief over hidden states (n_states,)
  201. A_R: room likelihood matrix P(o_R|s), shape (n_obs_room, n_states)
  202. obs_r: room observation index at this cycle
  203. Returns:
  204. S_{P->R}^{true} in nats (>= 0)
  205. """
  206. p_obs = float(np.dot(Q_P, A_R[obs_r]))
  207. p_obs = max(p_obs, EPS)
  208. return -np.log(p_obs)
  209. def synchronization_index(s_r2p: float, s_p2r: float,
  210. s_r2p_max: float = 6.0,
  211. s_p2r_max: float = 6.0) -> float:
  212. """
  213. Composite synchronization index in [0, 1].
  214. Synchronization is defined as the capacity of each agent to predict
  215. the states of the other:
  216. - Room predicts patient: S_{R->P} = -ln Q_R(true_state)
  217. - Patient predicts room: S_{P->R} = VFE_P
  218. Both terms are surprisal measures: lower = better prediction = more sync.
  219. The index inverts and normalizes both so that 1.0 = perfect sync.
  220. SI = 0.5 * (1 - S_{R->P}/max) + 0.5 * (1 - S_{P->R}/max)
  221. """
  222. r2p_norm = 1.0 - min(s_r2p / s_r2p_max, 1.0)
  223. p2r_norm = 1.0 - min(s_p2r / s_p2r_max, 1.0)
  224. return 0.5 * r2p_norm + 0.5 * p2r_norm
  225. def bidirectional_desync(s_r2p: float, s_p2r: float) -> float:
  226. """
  227. Raw bidirectional de-synchronization score (lower = more synchronized):
  228. D = S_{R->P} + S_{P->R}
  229. Used as primary delirium criterion input.
  230. """
  231. return s_r2p + s_p2r

core.py at commit a000de7, under MIT · at the source

Overview

Authors: Luca M Possati1
  1. Faculty of Behavioural, Management and Social Sciences, Philosophy Section, University of Twente, Drienerlolaan 5, 7522 NB Enschede, The Netherlands
Institutions: University of Twente (Netherlands)
Journal: Entropy (Basel, Switzerland), volume 28, issue 6, article 702
Dates: received 20 April 2026; accepted 16 June 2026; published online 17 June 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.3390/e28060702 · PMID 42352212 · PMCID PMC13298327 · OpenAlex W7165049308
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: human (organism), other condition (population)
Methods: Machine learning, Connectivity, Statistics, Physiology & signal measures, Smoothing, state filtering, decompositions
Keywords: ICU delirium, active inference, free-energy principle, design, human-technology interaction
Topic: Intensive Care Unit Cognitive Disorders (Critical Care and Intensive Care Medicine, Medicine), according to OpenAlex
Citations: not cited yet (Europe PMC); 41 references in the paper

Abstract

This paper presents a computational model of delirium in the Intensive Care Unit (ICU), in which delirium is defined as the endpoint of a self-reinforcing cycle of predictive failure between two bidirectionally coupled agents: the patient and the ICU room environment. Drawing on the active inference framework and the free energy principle, the paper proposes that delirium is not a property of the patient in isolation but a relational phenomenon that emerges when the environment persistently fails to predict the patient’s internal state. This failure triggers a causal feedback mechanism in which desynchronization pressure progressively sharpens the patient’s prior beliefs—implementing precision rigidity in the correct active inference sense: not a brain overwhelmed by noise but a brain locked into a state that incoming observations can no longer update. The model is implemented as a two-agent POMDP in which both agents maintain generative models and continuously attempt to predict each other’s states. The room agent (R)—understood as the environment-side sensing–inference–actuation loop, whether instantiated by clinical staff or by an automated monitoring system—infers the patient (P)’s latent parameters (θcog,θemo) over time and builds a progressively personalized generative model of the patient. Synchronization is operationalized via two commensurable directional surprisal metrics: SR→P=−lnQR(s*), the room’s surprisal at the patient’s true state, and SP→R=−lnP(oR∣QP), the patient’s surprisal at the room’s observations. A systematic ablation study across four model variants shows that room inference is the architectural component necessary to reproduce the synchronization–delirium relationship: when the room infers, the association between synchronization and declared delirium is strong and stable, whereas a non-inferring room collapses to ceiling delirium rates and a weak association. θ learning and the prior-sharpening feedback do not increase the strength of this association; instead they shape the phenotypic gradient, reducing ceiling effects in vulnerable phenotypes and amplifying the separation between them. The model is presented as a computational hypothesis generator rather than a calibrated clinical predictor, and its implications for ICU design are discussed.

Reproduced under the paper's license (CC BY), from the paper cited above.

Repository

Its files are read in the Code ↔ Paper reader above, with 39 matches between paragraphs and lines of code.

DesignAInf/DELIRIUM-AND-SYNCHRONIZATION

License: MIT
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: a000de7edfd8ca377dca975a659e6a02010dcd19, 9 June 2026
Languages: Python (19)
Size: 49 files, 19 scripts
Software Heritage: not archived
Found in: the text, “3.5. Results”
Holds: README, environment (DELIRIUM/pomdp_delirium/requirements.txt, DELIRIUM/pomdp_delirium/setup.py)
Not found: license file, CITATION.cff, tests, continuous integration, documentation
Tools: NumPy (13 files), Matplotlib (3 files), scikit-learn (1 file), SciPy (1 file), statsmodels (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
20 files

Tracing map

Proposed by the machine: these links were found in the paper and verified at the source, without human review. The map will receive a Zenodo DOI once one of the paper's authors has validated it with their ORCID.

What the map holds:

  • 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 19 scripts, each with its path and the digest of its content;
  • 39 matches between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.

Data

No dataset and no data link were found in the paper.

Data Availability Statement

Data is contained within the article.

Reproduced under the paper's license (CC BY), from the paper cited above.

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 1 author, 5 keywords, 31 references.

Cite

This paper

Possati, L. M. (2026). ICU Delirium as a Failure of Predictive Synchronization: A Two-Agent Active Inference Model. Entropy (Basel, Switzerland), 28(6), 702. https://doi.org/10.3390/e28060702

BibTeX

@article{possati2026icu,
author = {Possati, Luca M},
title = {{ICU Delirium as a Failure of Predictive Synchronization: A Two-Agent Active Inference Model}},
journal = {Entropy (Basel, Switzerland)},
year = {2026},
month = jun,
volume = {28},
number = {6},
pages = {702},
publisher = {Multidisciplinary Digital Publishing Institute (MDPI)},
issn = {1099-4300},
doi = {10.3390/e28060702},
url = {https://doi.org/10.3390/e28060702},
pmid = {42352212},
pmcid = {PMC13298327}
}

RIS

TY - JOUR
AU - Possati, Luca M
TI - ICU Delirium as a Failure of Predictive Synchronization: A Two-Agent Active Inference Model
T2 - Entropy (Basel, Switzerland)
J2 - Entropy (Basel)
PY - 2026
DA - 2026/06/17
VL - 28
IS - 6
SP - 702
SN - 1099-4300
PB - Multidisciplinary Digital Publishing Institute (MDPI)
DO - 10.3390/e28060702
UR - https://doi.org/10.3390/e28060702
LA - en
ER -

CSL-JSON

{
"id": "10.3390/e28060702",
"type": "article-journal",
"title": "ICU Delirium as a Failure of Predictive Synchronization: A Two-Agent Active Inference Model",
"container-title": "Entropy (Basel, Switzerland)",
"author": [
{
"family": "Possati",
"given": "Luca M"
}
],
"container-title-short": "Entropy (Basel)",
"volume": "28",
"issue": "6",
"page": "702",
"DOI": "10.3390/e28060702",
"PMID": "42352212",
"PMCID": "PMC13298327",
"ISSN": "1099-4300",
"publisher": "Multidisciplinary Digital Publishing Institute (MDPI)",
"URL": "https://doi.org/10.3390/e28060702",
"language": "en",
"issued": {
"date-parts": [
[
2026,
6,
17
]
]
}
}

The tracing map gets a citation of its own once an author has validated it and it has a DOI.

Similar papers

The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.

[1] doi:10.1038/s41467-026-74358-5 [code]
Brain-inspired spatial intelligence for embodied agents.
Journal: Nature communications
In common: scikit-learn, SciPy, Matplotlib, 1 other tool, 2 references
[2] doi:10.1038/s41467-026-76841-5 [code]
Stable clique membership in male mouse societies requires oxytocin-enabled social sensory states.
Journal: Nature communications
In common: statsmodels, scikit-learn, SciPy, 2 other tools, 1 reference
[3] doi:10.1038/s41467-026-74824-0 [code]
Learning regularities in noise engages both neural predictive activity and representational changes.
Journal: Nature communications
In common: statsmodels, scikit-learn, SciPy, 2 other tools, 1 reference
[4] doi:10.1038/s41467-026-74357-6 [code]
Hippocampo-neocortical interaction as compressive retrieval-augmented generation.
Journal: Nature communications
In common: statsmodels, scikit-learn, SciPy, 2 other tools, 1 reference
[5] doi:10.1038/s41598-026-53525-0 [code]
Timing-induced illusory percepts of pitch.
Journal: Scientific reports
In common: SciPy, Matplotlib, NumPy, 2 references
[6] doi:10.1371/journal.pcbi.1014340 [code]
pyhgf: A neural network library for predictive coding.
Journal: PLoS computational biology
In common: scikit-learn, SciPy, Matplotlib, 1 other tool, 1 reference
[7] doi:10.1038/s41467-026-73994-1 [code]
Prediction error correlates in the striosome-dopamine circuit emerge from information gain.
Journal: Nature communications
In common: statsmodels, SciPy, Matplotlib, 1 other tool, 1 reference
[8] doi:10.1016/j.ibneur.2026.05.013 [code]
Anticipatory slow potentials before auditory feedback show posterior predominance but limited condition effects in speech-in-noise.
Journal: IBRO neuroscience reports
In common: statsmodels, SciPy, Matplotlib, 1 other tool, 1 reference
[9] doi:10.3390/e28070738 [code]
Probabilistic Forecasting and Information-Theoretic Analysis of Multivariate fMRI Dynamics.
Journal: Entropy (Basel, Switzerland)
In common: statsmodels, scikit-learn, Matplotlib, 1 other tool, 1 reference
[10] doi:10.1016/j.neuroimage.2026.122171 [code]
A conserved node degree-based backbone and flexible hub organization of brain connectome during naturalistic movie watching.
Journal: NeuroImage
In common: scikit-learn, SciPy, Matplotlib, 1 other tool, 1 reference

Contribute

The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.

Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

Discussion, reproductions, activity

Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.

Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.