Skip to content

Pre-specified MTL-PFC directed flow across the catFR1 cohort; compare_networks estimator option - #13

Merged
Autoplectic merged 2 commits into
mainfrom
catfr-directed-flow
Nov 9, 2026
Merged

Autoplectic merged 2 commits into
mainfrom
catfr-directed-flow

Conversation

@Autoplectic

@Autoplectic Autoplectic commented Nov 6, 2026 •

Copy link
Copy Markdown
Member

A pre-specified test of directed information flow between the medial temporal lobe and prefrontal cortex, across every eligible catFR1 subject, during encoding and retrieval. Also closes the open issues from the earlier catFR work. Full write-up in reports/catfr_directed_flow.md.

Changes

  • compare_networks(estimator=...): the layers' estimator is now an option. The default stays Miller-Madow, so existing results are unchanged; the setting is recorded in the dataset attributes, and there's a new test.
  • examples/catfr/flow.py:
    • prepare streams every eligible session (download, epoch, delete) into encoding and retrieval HFA epochs.
    • analyze tests MTL→PFC and PFC→MTL at 20, 40, 100 and 200 ms, conditioned on the target's past and LTC. Each edge is tested for existence (against a shuffled-source surrogate) and for a condition contrast, paired across subjects, with Benjamini-Hochberg over the 8 tests per layer.
    • --demean removes each condition's mean time course first.
  • common.retrieval_windows / prepare.prepare_phases: pre-recall and deliberation windows that never share samples, and retrieval epochs now store their start times.
  • cohort.py: --estimator and --tag options.
  • validation/synergy_null.py: checks the calibration of compare_networks on many random splits of one condition.

Findings

  • No memory-related directed MTL-PFC flow. Neither phase shows a condition difference in any layer: 88 subjects for recalled vs forgotten words, 56 for pre-recall vs deliberation. In the pre-specified analysis, intrinsic flow also doesn't exceed the shuffled-source surrogate.
  • Shared flow is present throughout: in both directions, at every lag, in both phases (q < 0.01).
  • Overlapping windows created a false synergy result. The first retrieval run tiled deliberation windows every 0.8 s, so they overlapped. Duplicated samples inflated the bias-corrected synergy estimates and produced a strong apparent recall effect (q < 0.001 in 7 of 8 tests). Non-overlapping windows remove it.
  • A shared-flow recall effect was not coupling. One shared-flow retrieval contrast (PFC→MTL at 200 ms) came from both regions following the same pre-recall trajectory; it disappears once each condition's mean time course is removed.
  • Exploratory, not pre-specified: after removing the mean time courses, intrinsic flow exceeds the surrogate in 3 of 8 encoding tests, by about 0.0001 bits.

Open issues closed

  • Memory contrast rerun with Chao-Wang-Jost: baseline synergy is about 4× lower, and there's still no effect (every q ≥ 0.31).
  • Synergistic null excess: Miller-Madow synergy put 7.0% of 1,000 null-split p-values below 0.05. An independent exact test reproduces those p-values (correlation 0.998), and the statistic is deterministic and order-independent, so the test is exact and the excess is chance. Chao-Wang-Jost synergy is nominal but usually clipped to zero at about 85 trials per group.
  • dit's prng keyword: rather than fixing the alias upstream (Accept the deprecated prng keyword in total_correlation_ksg dit#324, closed), infoflow uses rng= everywhere (Use dit's rng keyword for surrogates and Markov-order selection #14).

Tests

Full suite: 278 passed, 10 skipped (optional extras not installed). ty, ruff check and ruff format are clean.

Made with Cursor

compare_networks gains an estimator option (default Miller-Madow). flow.py
streams every eligible session into encoding and retrieval HFA epochs and tests
MTL->PFC and PFC->MTL at 20-200 ms against a shuffled-source surrogate and
between conditions, paired across subjects. Retrieval deliberation windows no
longer overlap (overlap inflated bias-corrected synergy) and epochs store their
start times. synergy_null.py checks the comparison's calibration on 1000 random
splits. Report: no memory-related directed flow; shared flow present
throughout.
@Autoplectic
Autoplectic merged commit 8060f3e into main Nov 9, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant