Ultrasound neuromodulation reveals distinct roles of the dorsal anterior cingulate cortex and anterior insula in learning.
The 15 matches · 1 of them tie a paragraph to a whole file, not to given lines: a weak match, whose lines are not tinted
- [1] § Methods › Computational modeling and model comparison ↔ analyses/cbm/mgngtus_cbm06c_model_recovery_eval.m, lines 343–383 · score 0.78 · inverse confusion matrix, forward confusion matrix, model recovery, diagonal probabilities, permutation, simulated
- [2] § Methods › Computational modeling and model comparison ↔ analyses/cbm/mgngtus_cbm02_fit.m, lines 159–259 · score 0.73 · hierarchical Bayesian inference, protected exceedance probability, model frequency, CBM, fitted
- [3] § Methods › Computational modeling and model comparison ↔ analyses/cbm/mgngtus_cbm03a_eval_fit.m, lines 260–340 · score 0.70 · Bayesian model selection, protected exceedance probability, model frequency, CBM, weighted, fitted
- [4] § Results › Pavlovian biases in responding and learning in the sham session ↔ analyses/regression/01_mgngtus_regression.R, lines 285–326 · score 0.68 · stronger outcome, logistic regression, response repetitions, valenced outcomes, mixed, interaction
- [5] § Methods › Computational modeling and model comparison ↔ analyses/regression/functions/00_mgngtus_functions_regression.R, lines 3712–3753 · score 0.68 · bootstrapped confidence intervals, replacement, Cohen, Hedges, iteration, vector
- [6] § Results › Computational modeling of the sham data ↔ analyses/figures/mgngtus_figureS6.m, lines 354–436 · score 0.67 · Bayesian model selection, protected exceedance probability, model frequency, S6, sham
- [7] § Methods › Computational modeling and model comparison ↔ analyses/cbm/helpers/mgngtus_cbm_wrapper_sim.m, lines 1–39 · score 0.66 · hierarchical Bayesian, step ahead predictions, action probabilities, simulate, Go, model
- [8] § Results › Computational modeling of the sham data ↔ analyses/figures/mgngtus_figure2.m, lines 480–563 · score 0.64 · Bayesian model selection, protected exceedance probability, model frequency, Figure 2, sham
- [9] § Results › Sonication effects on Go/NoGo choices ↔ analyses/regression/01_mgngtus_regression.R, lines 285–326 · score 0.64 · logistic regression model, block half, response repetitions, cue valence, mixed, interaction
- [10] § Results › Pavlovian biases in responding and learning in the sham session ↔ analyses/cbm/mgngtus_cbm02_fit.m, lines 159–259 · score 0.61 · hierarchical Bayesian inference, protected exceedance probability, model frequency, fitting, sham
- [11] § Methods › Computational modeling and model comparison ↔ analyses/cbm/mgngtus_cbm06a_parameter_recovery.m, lines 469–528 · score 0.58 · ground truth, fitting parameter, permuting, permutation, correlated, simulated
- [12] § Methods › Computational modeling and model comparison ↔ analyses/cbm/models/mgngtus_cbm_mod09.m, the whole file · a weak match · score 0.56 · neutral outcomes, prediction errors, feedback sensitivity, NoGo, zero, punishment
- [13] § Results › Pavlovian biases in responding and learning in the sham session ↔ analyses/cbm/helpers/mgngtus_cbm_wrapper_sim.m, lines 1–39 · score 0.54 · hierarchical Bayesian inference, step ahead predictions, log, error, Probability, feedback
- [14] § Results › Sonication effects on response repetitions/switches ↔ analyses/regression/01_mgngtus_regression.R, lines 328–367 · score 0.53 · logistic regression model, response repetitions, learning bias, dACC, aIns, NoGo
- [15] § Methods › Regression analyses ↔ analyses/regression/01_mgngtus_regression.R, lines 92–131 · score 0.52 · logistic regression models, fit mixed
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
R · 508 lines · 23 KB · MIT · 4 matches
- #!/usr/bin/env Rscript
- # ============================================================================ #
- ## 01_mgngtus_regression.R
- ## MGNG-TUS study: Fit mixed-effects logistic/linear regression models to behaviour (responses, repetitions, RTs).
- ## Copyright (C) Johannes Algermissen, University of Oxford, Oxford, UK, 2024-2025.
- rm(list = ls())
- # ============================================================================ #
- #### Set directories, load packages and custom functions: ####
- ## Set codeDir:
- currDir <- dirname(rstudioapi::getSourceEditorContext()$path)
- helperDir <- file.path(currDir, "helpers")
- source(file.path(helperDir, "set_dirs.R")) # Load packages and options settings
- ## Load directories:
- rootDir <- dirname(dirname(currDir))
- dirs <- set_dirs(rootDir)
- ## Load packages:
- source(file.path(dirs$helperDir, "package_manager.R")) # Load packages and options settings
- # ------------------------------------------------- #
- ## Load custom functions:
- source(file.path(dirs$funcDir, "00_mgngtus_functions_regression.R")) # Load functions
- # ============================================================================ #
- #### 01a) Read in behavioral data: ####
- ## Sham:
- data1 <- read_behavior(file.path(dirs$rawDataDir, "1_sham"))
- table(data1$subjectID, data1$stim_ID)
- data1 <- wrapper_preprocessing(data1)
- data1$sonication_n <- 1
- ## dACC:
- data2 <- read_behavior(file.path(dirs$rawDataDir, "2_dacc"))
- table(data2$subjectID, data2$stim_ID)
- table(data2$stim_ID)
- data2 <- wrapper_preprocessing(data2)
- data2$sonication_n <- 2
- table(data2$cueRep_n)
- table(data2$subject_n, data2$cueRep_n)
- ## aIns:
- data3 <- read_behavior(file.path(dirs$rawDataDir, "3_ai"))
- table(data3$subjectID, data3$stim_ID)
- data3 <- wrapper_preprocessing(data3)
- data3$sonication_n <- 3
- ## Concatenate:
- data <- rbind(data1, data2, data3)
- data$sonication_f <- factor(data$sonication_n, levels = c(1, 2, 3), labels = c("sham", "dACC", "aIns"))
- data$sonication_short_f <- data$sonication_f
- ## Inspect:
- length(unique(data$subID))
- table(data$subID, data$sonication_f)
- table(data$subID, data$cue_n)
- table(data$subID, data$cueRep_n)
- # ============================================================================ #
- #### 01b) Exclude subjects with incomplete sessions or outlier behaviour: ####
- length(unique(data$subID))
- table(data$subID, data$sonication_f)
- incompleteSubs <- c("JIJS1080", "KYJF0110", "MRMO0104", "NACA0882")
- outlierSubs <- c("EEMR0429")
- excludeSubs <- sort(unique(c(incompleteSubs, outlierSubs)))
- data <- subset(data, !(subID %in% excludeSubs))
- table(data$subID, data$sonication_f)
- length(unique(data$subID))
- # ============================================================================ #
- #### 01c) Exclude excessive cue repetitions: ####
- data <- subset(data, cueRep_n %in% 1:20)
- # ============================================================================ #
- #### 01d) Inspect cell sizes: ####
- ### Subjects:
- length(unique(data$subject_n))
- table(data$subject_n)
- # --> unequal numbers because not all sessions finished
- ### Sonication sessions:
- table(data$sonication_f)
- table(data$subID, data$sonication_f)
- # --> several subjects with empty sessions
- ### Cue counts:
- table(data$cue_n)
- table(data$subID, data$cue_n)
- # --> most cues 60 times (3 session x 20 cue repetitions)
- # --> but some cues less/more often...?!?
- ## Cue repetitions:
- table(data$cueRep_n)
- table(data$subID, data$cueRep_n)
- # --> most cue position 48 times (3 session x 16 cues)
- # --> but some cue repetitions less often, sometimes cue repetitions 21-23...?!?
- ## Outcomes:
- sum(is.na(data$outcome_n)) # 300 x NA
- table(data[is.na(data$outcome_n), "subID"])
- # JAKA0154 SINB0180 SKKY0189 SSHW0093
- # 60 60 120 60
- table(data[is.na(data$outcome_n), "subID"], data[is.na(data$outcome_n), "sonication_f"])
- # JAKA0154 0 60 0
- # SINB0180 0 0 60
- # SKKY0189 0 60 60
- # SSHW0093 0 60 0
- ## --> checked in raw data: verum NaN; always at the end of session
- data[is.na(data$outcome_n), c("subID", "sonication_f", "trialnr_n", "cue_n", "cueRep_n", "reqAction_n", "valence_n", "response_n", "ACC_n", "RT_n", "validity_n", "outcome_n")]
- ## Check validity:
- round(tapply(data$validity_n, data$subID, mean, na.rm = T), 4) # 0.8125
- # ============================================================================ #
- #### 01e) Select data, standardize variables, add age, gender, session number: ####
- modData <- select_standardize(data)
- modData <- add_demographics(modData) # add age and gender
- modData <- add_session_order(modData) # add session order
- # ============================================================================ #
- # ============================================================================ #
- # ============================================================================ #
- # ============================================================================ #
- #### 02a) Fit mixed-effects logistic regression models on RESPONSES: ####
- # ---------------------------------------------------------------------------- #
- ### Select formula:
- ## 2-way interactions:
- formula <- "response_n ~ reqAction_f * valence_f + (reqAction_f * valence_f|subject_f)"
- ## 3-way interaction:
- formula <- "response_n ~ reqAction_f * valence_f * sonication_f + (reqAction_f * valence_f * sonication_f|subject_f)"
- ## 4-way interaction:
- formula <- "response_n ~ reqAction_f * valence_f * sonication_f * firstHalfBlock_f + (reqAction_f * valence_f * sonication_f * firstHalfBlock_f|subject_f)"
- ## Interactions with age and gender:
- formula <- "response_n ~ reqAction_f * valence_f * age_z + reqAction_f * valence_f * gender_f + (reqAction_f * valence_f|subject_f)"
- formula <- "response_n ~ reqAction_f * valence_f * sonication_f * age_z + reqAction_f * valence_f * sonication_f * gender_f + (reqAction_f * valence_f * sonication_f|subject_f)"
- ## Interactions with session ID:
- formula <- "response_n ~ reqAction_f * valence_f * session_f + (reqAction_f * valence_f * session_f|subject_f)"
- ## Interactions with session order:
- formula <- "response_n ~ reqAction_f * valence_f * sonOrder_f + (reqAction_f * valence_f|subject_f)"
- formula <- "response_n ~ reqAction_f * valence_f * sonication_f * sonOrder_f + (reqAction_f * valence_f * sonication_f|subject_f)"
- ## Effect of cue set:
- formula <- "response_n ~ cue_set_f + (cue_set_f|subject_f)"
- formula <- "response_n ~ session_f * block_f + (session_f * block_f|subject_f)"
- # ---------------------------------------------------------------------------- #
- ### Fit or read existing model back in:
- mod <- fit_lmem(formula)
- quickCI(mod, nRound = 3)
- # mod <- fit_lmem(formula, useLRT = T) # for LRTs; very slow
- ## Plots:
- plot(effect("reqAction_f:valence_f", mod))
- plot(effect("reqAction_f:valence_f", mod, x.var = "valence_f"))
- plot(effect("reqAction_f:valence_f", mod), multiline = T, lwd = 4, colors = c("#007174", "#c93d21"))
- plot(effect("valence_f:sonication_f", mod), multiline = T, lwd = 4, colors = c("#007174", "#c93d21"))
- plot(effect("reqAction_f:valence_f:sonication_f", mod))
- plot(effect("reqAction_f:valence_f:sonication_f", mod), multiline = T)
- plot(effect("reqAction_f:valence_f:sonication_f", mod), multiline = T, lwd = 4, colors = c("#B2182B", "#2166AC"))
- plot(effect("reqAction_f:valence_f:sonication_f:firstHalfBlock_f", mod), multiline = T, lwd = 4, colors = c("#B2182B", "#2166AC"))
- plot(effect("reqAction_f:age_z", mod), multiline = T, lwd = 4, colors = c("#B2182B", "#2166AC"))
- plot(effect("reqAction_f:gender_f", mod), multiline = T, lwd = 4, colors = c("#B2182B", "#2166AC"))
- plot(effect("session_f", mod), multiline = T, lwd = 4)
- plot(effect("reqAction_f:session_f", mod), multiline = T, lwd = 4)
- plot(effect("sonOrder_f", mod), multiline = T, lwd = 4)
- plot(effect("reqAction_f:sonOrder_f", mod), multiline = T, lwd = 4)
- plot(effect("sonication_f:sonOrder_f", mod), multiline = T, lwd = 4)
- plot(effect("reqAction_f:sonication_f:sonOrder_f", mod), multiline = T, lwd = 4)
- plot(effect("cue_set_f", mod), multiline = T, lwd = 4)
- plot(effect("session_f:block_f", mod), multiline = T, lwd = 4)
- plot(effect("session_f:block_f", mod, x.var = "session_f"), multiline = T, lwd = 4)
- # ============================================================================ #
- #### 02b) Fit logistic regression models to responses manually & separately per cue condition: ####
- # ---------------------------------------------------------------------------- #
- ### Select cue conditions:
- selData <- droplevels(modData) ## all data
- selData <- droplevels(subset(modData, reqAction_f == "Go"))
- selData <- droplevels(subset(modData, reqAction_f == "NoGo"))
- selData <- droplevels(subset(modData, reqAction_f == "Go" & valence_f == "Win"))
- selData <- droplevels(subset(modData, reqAction_f == "Go" & valence_f == "Avoid"))
- selData <- droplevels(subset(modData, reqAction_f == "NoGo" & valence_f == "Win"))
- selData <- droplevels(subset(modData, reqAction_f == "NoGo" & valence_f == "Avoid"))
- ## Inspect:
- table(selData$reqAction_f)
- table(selData$valence_f)
- table(selData$reqAction_f, selData$valence_f)
- # ---------------------------------------------------------------------------- #
- ### Select block half:
- selData <- droplevels(subset(selData, firstHalfBlock_f == "first"))
- selData <- droplevels(subset(selData, firstHalfBlock_f == "second"))
- ## Inspect:
- table(selData$firstHalfBlock_f)
- # ---------------------------------------------------------------------------- #
- ### Select sonication conditions:
- selData <- droplevels(subset(selData, sonication_f == "sham"))
- selData <- droplevels(subset(selData, sonication_f %in% c("sham", "dACC")))
- selData <- droplevels(subset(selData, sonication_f %in% c("sham", "aIns")))
- ## Inspect:
- table(selData$sonication_f)
- # ---------------------------------------------------------------------------- #
- ### Select formula:
- ## Sonication main effect:
- formula <- "response_n ~ sonication_f + (sonication_f|subject_f)"
- ## 2-way interactions:
- formula <- "response_n ~ reqAction_f * valence_f + (reqAction_f * valence_f|subject_f)"
- formula <- "response_n ~ valence_f * sonication_f + (valence_f * sonication_f|subject_f)"
- formula <- "response_n ~ sonication_f * firstHalfBlock_f + (sonication_f * firstHalfBlock_f|subject_f)"
- ## 3-way interactions:
- formula <- "response_n ~ valence_f * sonication_f * firstHalfBlock_f + (valence_f * sonication_f * firstHalfBlock_f|subject_f)"
- # ---------------------------------------------------------------------------- #
- ### Fit manually:
- mod <- glmer(formula = formula, data = selData, family = binomial(),
- control = glmerControl(optCtrl = list(maxfun = 1e+9), calc.derivs = F, optimizer = c("bobyqa")))
- summary(mod, correlation = F); beep()
- quickCI(mod)
- Anova(mod, type = "3")
- # ---------------------------------------------------------------------------- #
- ### Plot:
- plot(effect("reqAction_f:valence_f", mod), multiline = T, lwd = 4, colors = c("#007174", "#c93d21"))
- plot(effect("sonication_f", mod), multiline = T, lwd = 4)
- plot(effect("valence_f:sonication_f", mod, x.var = "sonication_f"), multiline = T, lwd = 4, colors = c("#007174", "#c93d21"))
- plot(effect("sonication_f:firstHalfBlock_f", mod, x.var = "firstHalfBlock_f"), multiline = T, lwd = 4, colors = c("grey90", "#D3436EFF", "#FEBA80FF"))
- plot(effect("sonication_f:firstHalfBlock_f", mod, x.var = "firstHalfBlock_f"), multiline = T, lwd = 4, colors = c("grey90", "#D3436EFF"))
- plot(effect("sonication_f:firstHalfBlock_f", mod, x.var = "firstHalfBlock_f"), multiline = T, lwd = 4, colors = c("grey90", "#FEBA80FF"))
- plot(effect("valence_f:sonication_f:firstHalfBlock_f", mod, x.var = "valence_f"), multiline = T, lwd = 4)
- plot(effect("valence_f:sonication_f:firstHalfBlock_f", mod, x.var = "firstHalfBlock_f"), multiline = T, lwd = 4, colors = c("#007174", "#c93d21"))
- # ---------------------------------------------------------------------------- #
- ### Post-hoc z-tests with emmeans:
- emmeans(mod, specs = pairwise ~ valence_f | reqAction_f,
- interaction = "pairwise", regrid = "response", adjust = "none")
- emmeans(mod, specs = pairwise ~ reqAction_f | valence_f,
- interaction = "pairwise", regrid = "response", adjust = "none")
- emmeans(mod, specs = pairwise ~ sonication_f | reqAction_f,
- interaction = "pairwise", regrid = "response", adjust = "none")
- emmeans(mod, specs = pairwise ~ sonication_f | valence_f,
- interaction = "pairwise", regrid = "response", adjust = "none")
- emmeans(mod, specs = pairwise ~ sonication_f | firstHalfBlock_f,
- interaction = "pairwise", regrid = "response", adjust = "none")
- ## Sonication effect given required action x valence x block half combination:
- emmeans(mod, specs = pairwise ~ sonication_f | valence_f:reqAction_f:firstHalfBlock_f,
- regrid = "response", interaction = "pairwise", adjust = "none")
- emmeans(mod, specs = pairwise ~ sonication_f | valence_f:reqAction_f:firstHalfBlock_f,
- interaction = "pairwise", adjust = "none")
- ## Difference in Valence effect between sonications given reqAction level:
- emmeans(mod, specs = pairwise ~ valence_f:sonication_f | reqAction_f,
- regrid = "response", interaction = "pairwise", adjust = "none")
- emmeans(mod, specs = pairwise ~ reqAction_f:sonication_f | valence_f,
- regrid = "response", interaction = "pairwise", adjust = "none")
- # ============================================================================ #
- # ============================================================================ #
- # ============================================================================ #
- # ============================================================================ #
- #### 03a) Fit mixed-effects logistic regression models to RESPONSE REPETITIONS: ####
- # ---------------------------------------------------------------------------- #
- ### Select formula:
- ## Learning bias: stronger outcome effect for Go than NoGo (trials are valenced outcomes only):
- formula <- "repeat_n ~ outcome_last_rel_f * response_last_f + (outcome_last_rel_f * response_last_f|subject_f)"
- ## Persistence bias: main effect of cue valence:
- formula <- "repeat_n ~ valence_f + (valence_f|subject_f)"
- ## Interactions with age and gender:
- formula <- "repeat_n ~ outcome_last_rel_f * response_last_f * age_z + outcome_last_rel_f * response_last_f * gender_f + (outcome_last_rel_f * response_last_f|subject_f)"
- formula <- "repeat_n ~ outcome_last_rel_f * response_last_f * sonication_f * age_z + outcome_last_rel_f * response_last_f * sonication_f * gender_f + (outcome_last_rel_f * response_last_f * sonication_f|subject_f)"
- formula <- "repeat_n ~ valence_f * age_z + valence_f * gender_f + (valence_f|subject_f)"
- formula <- "repeat_n ~ valence_f * sonication_f * age_z + valence_f * sonication_f * gender_f + (valence_f * sonication_f|subject_f)"
- ## Interactions with session ID:
- formula <- "repeat_n ~ outcome_last_rel_f * response_last_f * session_f + (outcome_last_rel_f * response_last_f * session_f|subject_f)"
- formula <- "repeat_n ~ valence_f * session_f + (valence_f * session_f|subject_f)"
- ## Interactions with session order:
- formula <- "repeat_n ~ sonOrder_f + (1|subject_f)"
- formula <- "repeat_n ~ outcome_last_rel_f * response_last_f * sonOrder_f + (outcome_last_rel_f * response_last_f|subject_f)"
- formula <- "repeat_n ~ valence_f * sonOrder_f + (valence_f|subject_f)"
- formula <- "repeat_n ~ valence_f * sonication_f * sonOrder_f + (valence_f * sonication_f|subject_f)"
- ## Effect of cue set:
- formula <- "repeat_n ~ cue_set_f + (cue_set_f|subject_f)"
- formula <- "repeat_n ~ session_f * block_f + (session_f * block_f|subject_f)"
- # ---------------------------------------------------------------------------- #
- ### Fit model automatically or read past fit back in:
- mod <- fit_lmem(formula)
- # ============================================================================ #
- #### 03b) Fit logistic regression model to response repetitions manually & separately per condition: ####
- # ---------------------------------------------------------------------------- #
- ### Select task conditions:
- selData <- droplevels(modData) # all data
- ## For learning bias:
- selData <- droplevels(subset(modData, salience_last_f == "salient"))
- ## For learning bias modulation by sonication:
- selData <- droplevels(subset(modData, (outcome_last_all_f == "rewarded" & response_last_f == "Go") | (outcome_last_all_f == "punished" & response_last_f == "NoGo")))
- ## Inspect:
- table(selData$outcome_last_all_f)
- table(selData$response_last_f)
- table(selData$outcome_last_all_f, selData$response_last_f)
- # ---------------------------------------------------------------------------- #
- ### Select sonication conditions:
- selData <- droplevels(subset(selData, sonication_f == "sham"))
- selData <- droplevels(subset(selData, sonication_f %in% c("sham", "dACC")))
- selData <- droplevels(subset(selData, sonication_f %in% c("sham", "aIns")))
- ## Inspect:
- table(selData$sonication_f)
- # ---------------------------------------------------------------------------- #
- ### Select formula:
- ## Learning bias: only after salient outcomes:
- formula <- "repeat_n ~ outcome_last_rel_f * response_last_f + (outcome_last_rel_f * response_last_f|subject_f)"
- ## Learning bias modulated by TUS aIns: only rewarded Gos & punished NoGos:
- formula <- "repeat_n ~ sonication_f * outcome_last_rel_f + (sonication_f * outcome_last_rel_f|subject_f)"
- ## Persistence bias: all outcomes/conditions:
- formula <- "repeat_n ~ sonication_f * valence_f + (sonication_f * valence_f|subject_f)"
- # ---------------------------------------------------------------------------- #
- ### Fit manually:
- mod <- glmer(formula = formula, data = selData, family = binomial(),
- control = glmerControl(optCtrl = list(maxfun = 1e+9), calc.derivs = F, optimizer = c("bobyqa")))
- summary(mod); beep()
- Anova(mod, type = "3")
- quickCI(mod)
- # ---------------------------------------------------------------------------- #
- ### Plot:
- plot(effect("outcome_last_rel_f", mod), multiline = T, lwd = 4)
- plot(effect("response_last_f", mod), multiline = T, lwd = 4)
- plot(effect("outcome_last_rel_f:response_last_f", mod, x.var = "response_last_f"), multiline = T, lwd = 4, colors = c("#007174", "#c93d21"))
- plot(effect("sonication_f", mod), multiline = T, lwd = 4)
- plot(effect("valence_f", mod), multiline = T, lwd = 4)
- plot(effect("sonication_f:valence_f", mod), multiline = T, lwd = 4)
- plot(effect("age_z", mod), multiline = T, lwd = 4)
- plot(effect("gender_f", mod), multiline = T, lwd = 4)
- plot(effect("outcome_last_rel_f:age_z", mod), multiline = T, lwd = 4, colors = c("#B2182B", "#2166AC"))
- plot(effect("response_last_f:age_z", mod), multiline = T, lwd = 4, colors = c("#B2182B", "#2166AC"))
- plot(effect("session_f", mod), multiline = T, lwd = 4)
- plot(effect("outcome_last_rel_f:session_f", mod), multiline = T, lwd = 4)
- plot(effect("response_last_f:session_f", mod), multiline = T, lwd = 4)
- plot(effect("sonOrder_f", mod), multiline = T, lwd = 4)
- plot(effect("sonication_f:sonOrder_f", mod), multiline = T, lwd = 4)
- plot(effect("outcome_last_rel_f:response_last_f:sonOrder_f", mod), multiline = T, lwd = 4)
- plot(effect("valence_f:sonOrder_f", mod), multiline = T, lwd = 4)
- plot(effect("valence_f:sonication_f:sonOrder_f", mod), multiline = T, lwd = 4)
- plot(effect("cue_set_f", mod), multiline = T, lwd = 4)
- plot(effect("session_f:block_f", mod), multiline = T, lwd = 4)
- plot(effect("session_f:block_f", mod, x.var = "session_f"), multiline = T, lwd = 4)
- # ---------------------------------------------------------------------------- #
- ### Post-hoc z-tests with emmeans:
- emmeans(mod, specs = pairwise ~ sonication_f,
- interaction = "pairwise", regrid = "response", adjust = "none")
- emmeans(mod, specs = pairwise ~ sonication_f | outcome_last_rel_f,
- interaction = "pairwise", regrid = "response", adjust = "none")
- emmeans(mod, specs = pairwise ~ sonication_f | valence_f,
- interaction = "pairwise", regrid = "response", adjust = "none")
- # ============================================================================ #
- # ============================================================================ #
- # ============================================================================ #
- # ============================================================================ #
- #### 04a) Fit mixed-effects linear regression models to RTs: ####
- ## Select sonication conditions:
- selData <- modData # all data
- selData <- droplevels(subset(modData, sonication_f == "sham"))
- selData <- droplevels(subset(modData, sonication_f %in% c("sham", "dACC")))
- selData <- droplevels(subset(modData, sonication_f %in% c("sham", "aIns")))
- ## Inspect:
- table(selData$sonication_f)
- length(unique(selData$subID))
- table(selData$subID)
- ## Inspect outliers:
- sum(selData$RT_n < 0.2, na.rm = T)
- tapply(selData$RTcleaned_n, selData$response_f, mean, na.rm = T)
- tapply(selData$RTcleaned_n, selData$reqAction_f, mean, na.rm = T)
- tapply(selData$RTcleaned_n, selData$valence_f, mean, na.rm = T)
- densityplot(selData$RTcleaned_z)
- # ---------------------------------------------------------------------------- #
- ### Select formula:
- ## 2-way interactions:
- formula <- "RTcleaned_z ~ reqAction_f * valence_f + (reqAction_f * valence_f|subject_f)"
- ## 3-way interaction:
- formula <- "RTcleaned_z ~ reqAction_f * valence_f * sonication_f + (reqAction_f * valence_f * sonication_f|subject_f)"
- # ---------------------------------------------------------------------------- #
- ### Fit linear regression or read in past fit:
- mod <- fit_lmem(formula)
- quickCI(mod, nRound = 3)
- mod <- fit_lmem(formula, useLRT = T)
- # ---------------------------------------------------------------------------- #
- ### Fit manually:
- mod <- lmer(formula = formula, data = selData,
- control = lmerControl(optCtrl = list(maxfun = 1e+9), calc.derivs = F, optimizer = c("bobyqa")))
- summary(mod, correlation = F); beep()
- quickCI(mod)
- Anova(mod, type = "3")
- # ---------------------------------------------------------------------------- #
- ### Plot:
- plot(effect("reqAction_f", mod), multiline = T, lwd = 4)
- plot(effect("valence_f", mod), multiline = T, lwd = 4)
- plot(effect("sonication_f", mod), multiline = T, lwd = 4)
- plot(effect("reqAction_f:valence_f", mod), multiline = T, lwd = 4, colors = c("#007174", "#c93d21"))
- plot(effect("reqAction_f:sonication_f", mod), multiline = T, lwd = 4, colors = c("#B2182B", "#2166AC"))
- plot(effect("valence_f:sonication_f", mod), multiline = T, lwd = 4, colors = c("#007174", "#c93d21"))
- plot(effect("reqAction_f:valence_f:sonication_f", mod), multiline = T, lwd = 4, colors = c("#B2182B", "#2166AC"))
- # ---------------------------------------------------------------------------- #
- ### Post-hoc z-tests with emmeans:
- emmeans(mod, specs = pairwise ~ valence_f | reqAction_f,
- interaction = "pairwise", djust = "none")
- emmeans(mod, specs = pairwise ~ reqAction_f | valence_f,
- interaction = "pairwise", djust = "none")
- emmeans(mod, specs = pairwise ~ sonication_f | reqAction_f,
- interaction = "pairwise", djust = "none")
- emmeans(mod, specs = pairwise ~ sonication_f | valence_f,
- interaction = "pairwise", djust = "none")
- emmeans(mod, specs = pairwise ~ valence_f:sonication_f | reqAction_f,
- interaction = "pairwise", adjust = "none")
- emmeans(mod, specs = pairwise ~ reqAction_f:sonication_f | valence_f,
- interaction = "pairwise", adjust = "none")
- # END OF FILE.
01_mgngtus_regression.R at commit eaa1a08, under MIT · at the source
Overview
- School of Psychology, University of Plymouth, Plymouth, United Kingdom
- Brain Research Imaging Center (BRIC), University of Plymouth, Plymouth, United Kingdom
- Department of Experimental Psychology, University of Oxford, Oxford, United Kingdom
- Radboud University, Donders Institute for Brain, Cognition and Behaviour, Nijmegen, The Netherlands
Abstract
Pavlovian biases reflect how evolutionarily hard-wired tendencies—automatic approach toward reward cues and withdrawal from threat cues—can interfere with flexible, goal-directed action. Such biases arise through three mechanisms: (a) anticipated rewards energize action while anticipated punishments suppress it (response bias), (b) agents learn differently from actions than from inactions (learning bias), and (c) reward/
Reproduced under the paper's license (CC BY), from the paper cited above.
Repositories
Its files are read in the Code ↔ Paper reader above, with 15 matches between paragraphs and lines of code.
johalgermissen/mgng_tus_dacc_ains
eaa1a081215b5a33882d49d6a6ddbc97f073e892, 2 April 2026Availability: 1 check, the latest on 28 September 2026: the link answers
- 28 September 2026: the link answers
83 files
- analyses/
cbm/ , R, 403 lines04_mgngtus_params.R - analyses/
cbm/ , MATLAB, 384 lineshelpers/ boundedline.m - analyses/
cbm/ , MATLAB, 126 lineshelpers/ custom_barplot.m - analyses/
cbm/ , MATLAB, 109 lineshelpers/ custom_lineplot.m - analyses/
cbm/ , MATLAB, 67 lineshelpers/ format_paramNames.m - analyses/
cbm/ , MATLAB, 22 lineshelpers/ log1p_exp.m - analyses/
cbm/ , MATLAB, 191 lineshelpers/ mgngtus_aggregate_empiri cal_data.m - analyses/
cbm/ , MATLAB, 279 lineshelpers/ mgngtus_aggregate_simula ted_data.m - analyses/
cbm/ , MATLAB, 58 lineshelpers/ mgngtus_cbm_compute_logl ik.m - analyses/
cbm/ , MATLAB, 66 lineshelpers/ mgngtus_cbm_init_paramNa mes.m - analyses/
cbm/ , MATLAB, 84 lineshelpers/ mgngtus_cbm_load_model.m - analyses/
cbm/ , MATLAB, 86 lineshelpers/ mgngtus_cbm_save_param.m - analyses/
cbm/ , MATLAB, 38 lineshelpers/ mgngtus_cbm_set_config.m - analyses/
cbm/ , MATLAB, 214 lines, 2 matcheshelpers/ mgngtus_cbm_wrapper_sim. m - analyses/
cbm/ , MATLAB, 179 lineshelpers/ mgngtus_custom_corrplot. m - analyses/
cbm/ , MATLAB, 37 lineshelpers/ mgngtus_get_priors.m - analyses/
cbm/ , MATLAB, 114 lineshelpers/ mgngtus_parameter_constr aints.m - analyses/
cbm/ , MATLAB, 233 lineshelpers/ mgngtus_plot_param.m - analyses/
cbm/ , MATLAB, 19 lineshelpers/ none.m - analyses/
cbm/ , MATLAB, 18 lineshelpers/ sigmoid.m - analyses/
cbm/ , MATLAB, 55 lineshelpers/ sim_subj.m - analyses/
cbm/ , MATLAB, 42 lineshelpers/ transform_parameters.m - analyses/
cbm/ , MATLAB, 62 lineshelpers/ visualise_priors.m - analyses/
cbm/ , MATLAB, 61 lineshelpers/ visualise_transformation s.m - analyses/
cbm/ , MATLAB, 71 lineshelpers/ withinSE.m - analyses/
cbm/ , MATLAB, 87 linesmgngtus_cbm01_prepareDat a.m - analyses/
cbm/ , MATLAB, 308 lines, 2 matchesmgngtus_cbm02_fit.m - analyses/
cbm/ , MATLAB, 340 lines, 1 matchmgngtus_cbm03a_eval_fit. m - analyses/
cbm/ , MATLAB, 162 linesmgngtus_cbm03b_eval_para m.m - analyses/
cbm/ , MATLAB, 173 linesmgngtus_cbm03c_eval_para m_sonication.m - analyses/
cbm/ , MATLAB, 68 linesmgngtus_cbm04a_loop_sim. m - analyses/
cbm/ , MATLAB, 422 linesmgngtus_cbm04b_plot_beha viour.m - analyses/
cbm/ , MATLAB, 317 linesmgngtus_cbm04c_plot_pSta y_out_sonication.m - analyses/
cbm/ , MATLAB, 66 linesmgngtus_cbm05_save_param .m - analyses/
cbm/ , MATLAB, 578 lines, 1 matchmgngtus_cbm06a_parameter _recovery.m - analyses/
cbm/ , MATLAB, 256 linesmgngtus_cbm06b_model_rec overy_fit.m - analyses/
cbm/ , MATLAB, 383 lines, 1 matchmgngtus_cbm06c_model_rec overy_eval.m - analyses/
cbm/ , MATLAB, 98 linesmgngtus_cbm_set_dirs.m - analyses/
cbm/ , MATLAB, 136 linesmodSims/ mgngtus_cbm_mod01_modSim .m - analyses/
cbm/ , MATLAB, 140 linesmodSims/ mgngtus_cbm_mod02_modSim .m - analyses/
cbm/ , MATLAB, 144 linesmodSims/ mgngtus_cbm_mod03_modSim .m - analyses/
cbm/ , MATLAB, 169 linesmodSims/ mgngtus_cbm_mod04_modSim .m - analyses/
cbm/ , MATLAB, 167 linesmodSims/ mgngtus_cbm_mod05_modSim .m - analyses/
cbm/ , MATLAB, 183 linesmodSims/ mgngtus_cbm_mod06_modSim .m - analyses/
cbm/ , MATLAB, 185 linesmodSims/ mgngtus_cbm_mod07_modSim .m - analyses/
cbm/ , MATLAB, 191 linesmodSims/ mgngtus_cbm_mod08_modSim .m - analyses/
cbm/ , MATLAB, 194 linesmodSims/ mgngtus_cbm_mod09_modSim .m - analyses/
cbm/ , MATLAB, 84 linesmodels/ mgngtus_cbm_mod01.m - analyses/
cbm/ , MATLAB, 88 linesmodels/ mgngtus_cbm_mod02.m - analyses/
cbm/ , MATLAB, 95 linesmodels/ mgngtus_cbm_mod03.m - analyses/
cbm/ , MATLAB, 112 linesmodels/ mgngtus_cbm_mod04.m - analyses/
cbm/ , MATLAB, 117 linesmodels/ mgngtus_cbm_mod05.m - analyses/
cbm/ , MATLAB, 133 linesmodels/ mgngtus_cbm_mod06.m - analyses/
cbm/ , MATLAB, 138 linesmodels/ mgngtus_cbm_mod07.m - analyses/
cbm/ , MATLAB, 143 linesmodels/ mgngtus_cbm_mod08.m - analyses/
cbm/ , MATLAB, 147 lines, 1 matchmodels/ mgngtus_cbm_mod09.m - analyses/
cbm/ , MATLAB, 92 linesosaps/ mgngtus_cbm_mod01_osap.m - analyses/
cbm/ , MATLAB, 96 linesosaps/ mgngtus_cbm_mod02_osap.m - analyses/
cbm/ , MATLAB, 102 linesosaps/ mgngtus_cbm_mod03_osap.m - analyses/
cbm/ , MATLAB, 120 linesosaps/ mgngtus_cbm_mod04_osap.m - analyses/
cbm/ , MATLAB, 125 linesosaps/ mgngtus_cbm_mod05_osap.m - analyses/
cbm/ , MATLAB, 141 linesosaps/ mgngtus_cbm_mod06_osap.m - analyses/
cbm/ , MATLAB, 143 linesosaps/ mgngtus_cbm_mod07_osap.m - analyses/
cbm/ , MATLAB, 148 linesosaps/ mgngtus_cbm_mod08_osap.m - analyses/
cbm/ , MATLAB, 151 linesosaps/ mgngtus_cbm_mod09_osap.m - analyses/
figures/ , R, 161 linesmgngtus_figure1.R - analyses/
figures/ , MATLAB, 563 lines, 1 matchmgngtus_figure2.m - analyses/
figures/ , MATLAB, 565 linesmgngtus_figure3.m - analyses/
figures/ , MATLAB, 119 linesmgngtus_figure4.m - analyses/
figures/ , R, 166 linesmgngtus_figureS3.R - analyses/
figures/ , MATLAB, 146 linesmgngtus_figureS4.m - analyses/
figures/ , MATLAB, 134 linesmgngtus_figureS5.m - analyses/
figures/ , MATLAB, 436 lines, 1 matchmgngtus_figureS6.m - analyses/
regression/ , R, 508 lines, 4 matches01_mgngtus_regression.R - analyses/
regression/ , R, 647 lines02_mgngtus_plot.R - analyses/
regression/ , R, 161 lines03_mgngtus_export2cbm.R - analyses/
regression/ , R, 221 lines05_mgngtus_params_visual isations.R - analyses/
regression/ , R, 314 lines06_mgngtus_power.R - analyses/
regression/ , R, 4,032 lines, 1 matchfunctions/ 00_mgngtus_functions_reg ression.R - analyses/
regression/ , R, 177 lineshelpers/ package_manager.R - analyses/
regression/ , R, 73 lineshelpers/ set_dirs.R - LICENSE, License, 21 lines
- README.md, Text, 25 lines
Zenodo 19386479
Availability: 1 check, the latest on 28 September 2026: the link answers (HTTP 200)
- 28 September 2026: the link answers (HTTP 200)
83 files
- analyses/
cbm/ , R, 403 lines04_mgngtus_params.R - analyses/
cbm/ , MATLAB, 384 lineshelpers/ boundedline.m - analyses/
cbm/ , MATLAB, 126 lineshelpers/ custom_barplot.m - analyses/
cbm/ , MATLAB, 109 lineshelpers/ custom_lineplot.m - analyses/
cbm/ , MATLAB, 67 lineshelpers/ format_paramNames.m - analyses/
cbm/ , MATLAB, 22 lineshelpers/ log1p_exp.m - analyses/
cbm/ , MATLAB, 191 lineshelpers/ mgngtus_aggregate_empiri cal_data.m - analyses/
cbm/ , MATLAB, 279 lineshelpers/ mgngtus_aggregate_simula ted_data.m - analyses/
cbm/ , MATLAB, 58 lineshelpers/ mgngtus_cbm_compute_logl ik.m - analyses/
cbm/ , MATLAB, 66 lineshelpers/ mgngtus_cbm_init_paramNa mes.m - analyses/
cbm/ , MATLAB, 84 lineshelpers/ mgngtus_cbm_load_model.m - analyses/
cbm/ , MATLAB, 86 lineshelpers/ mgngtus_cbm_save_param.m - analyses/
cbm/ , MATLAB, 38 lineshelpers/ mgngtus_cbm_set_config.m - analyses/
cbm/ , MATLAB, 214 lineshelpers/ mgngtus_cbm_wrapper_sim. m - analyses/
cbm/ , MATLAB, 179 lineshelpers/ mgngtus_custom_corrplot. m - analyses/
cbm/ , MATLAB, 37 lineshelpers/ mgngtus_get_priors.m - analyses/
cbm/ , MATLAB, 114 lineshelpers/ mgngtus_parameter_constr aints.m - analyses/
cbm/ , MATLAB, 233 lineshelpers/ mgngtus_plot_param.m - analyses/
cbm/ , MATLAB, 19 lineshelpers/ none.m - analyses/
cbm/ , MATLAB, 18 lineshelpers/ sigmoid.m - analyses/
cbm/ , MATLAB, 55 lineshelpers/ sim_subj.m - analyses/
cbm/ , MATLAB, 42 lineshelpers/ transform_parameters.m - analyses/
cbm/ , MATLAB, 62 lineshelpers/ visualise_priors.m - analyses/
cbm/ , MATLAB, 61 lineshelpers/ visualise_transformation s.m - analyses/
cbm/ , MATLAB, 71 lineshelpers/ withinSE.m - analyses/
cbm/ , MATLAB, 87 linesmgngtus_cbm01_prepareDat a.m - analyses/
cbm/ , MATLAB, 308 linesmgngtus_cbm02_fit.m - analyses/
cbm/ , MATLAB, 340 linesmgngtus_cbm03a_eval_fit. m - analyses/
cbm/ , MATLAB, 162 linesmgngtus_cbm03b_eval_para m.m - analyses/
cbm/ , MATLAB, 173 linesmgngtus_cbm03c_eval_para m_sonication.m - analyses/
cbm/ , MATLAB, 68 linesmgngtus_cbm04a_loop_sim. m - analyses/
cbm/ , MATLAB, 422 linesmgngtus_cbm04b_plot_beha viour.m - analyses/
cbm/ , MATLAB, 317 linesmgngtus_cbm04c_plot_pSta y_out_sonication.m - analyses/
cbm/ , MATLAB, 66 linesmgngtus_cbm05_save_param .m - analyses/
cbm/ , MATLAB, 578 linesmgngtus_cbm06a_parameter _recovery.m - analyses/
cbm/ , MATLAB, 256 linesmgngtus_cbm06b_model_rec overy_fit.m - analyses/
cbm/ , MATLAB, 383 linesmgngtus_cbm06c_model_rec overy_eval.m - analyses/
cbm/ , MATLAB, 98 linesmgngtus_cbm_set_dirs.m - analyses/
cbm/ , MATLAB, 136 linesmodSims/ mgngtus_cbm_mod01_modSim .m - analyses/
cbm/ , MATLAB, 140 linesmodSims/ mgngtus_cbm_mod02_modSim .m - analyses/
cbm/ , MATLAB, 144 linesmodSims/ mgngtus_cbm_mod03_modSim .m - analyses/
cbm/ , MATLAB, 169 linesmodSims/ mgngtus_cbm_mod04_modSim .m - analyses/
cbm/ , MATLAB, 167 linesmodSims/ mgngtus_cbm_mod05_modSim .m - analyses/
cbm/ , MATLAB, 183 linesmodSims/ mgngtus_cbm_mod06_modSim .m - analyses/
cbm/ , MATLAB, 185 linesmodSims/ mgngtus_cbm_mod07_modSim .m - analyses/
cbm/ , MATLAB, 191 linesmodSims/ mgngtus_cbm_mod08_modSim .m - analyses/
cbm/ , MATLAB, 194 linesmodSims/ mgngtus_cbm_mod09_modSim .m - analyses/
cbm/ , MATLAB, 84 linesmodels/ mgngtus_cbm_mod01.m - analyses/
cbm/ , MATLAB, 88 linesmodels/ mgngtus_cbm_mod02.m - analyses/
cbm/ , MATLAB, 95 linesmodels/ mgngtus_cbm_mod03.m - analyses/
cbm/ , MATLAB, 112 linesmodels/ mgngtus_cbm_mod04.m - analyses/
cbm/ , MATLAB, 117 linesmodels/ mgngtus_cbm_mod05.m - analyses/
cbm/ , MATLAB, 133 linesmodels/ mgngtus_cbm_mod06.m - analyses/
cbm/ , MATLAB, 138 linesmodels/ mgngtus_cbm_mod07.m - analyses/
cbm/ , MATLAB, 143 linesmodels/ mgngtus_cbm_mod08.m - analyses/
cbm/ , MATLAB, 147 linesmodels/ mgngtus_cbm_mod09.m - analyses/
cbm/ , MATLAB, 92 linesosaps/ mgngtus_cbm_mod01_osap.m - analyses/
cbm/ , MATLAB, 96 linesosaps/ mgngtus_cbm_mod02_osap.m - analyses/
cbm/ , MATLAB, 102 linesosaps/ mgngtus_cbm_mod03_osap.m - analyses/
cbm/ , MATLAB, 120 linesosaps/ mgngtus_cbm_mod04_osap.m - analyses/
cbm/ , MATLAB, 125 linesosaps/ mgngtus_cbm_mod05_osap.m - analyses/
cbm/ , MATLAB, 141 linesosaps/ mgngtus_cbm_mod06_osap.m - analyses/
cbm/ , MATLAB, 143 linesosaps/ mgngtus_cbm_mod07_osap.m - analyses/
cbm/ , MATLAB, 148 linesosaps/ mgngtus_cbm_mod08_osap.m - analyses/
cbm/ , MATLAB, 151 linesosaps/ mgngtus_cbm_mod09_osap.m - analyses/
figures/ , R, 161 linesmgngtus_figure1.R - analyses/
figures/ , MATLAB, 563 linesmgngtus_figure2.m - analyses/
figures/ , MATLAB, 565 linesmgngtus_figure3.m - analyses/
figures/ , MATLAB, 119 linesmgngtus_figure4.m - analyses/
figures/ , R, 166 linesmgngtus_figureS3.R - analyses/
figures/ , MATLAB, 146 linesmgngtus_figureS4.m - analyses/
figures/ , MATLAB, 134 linesmgngtus_figureS5.m - analyses/
figures/ , MATLAB, 436 linesmgngtus_figureS6.m - analyses/
regression/ , R, 508 lines01_mgngtus_regression.R - analyses/
regression/ , R, 647 lines02_mgngtus_plot.R - analyses/
regression/ , R, 161 lines03_mgngtus_export2cbm.R - analyses/
regression/ , R, 221 lines05_mgngtus_params_visual isations.R - analyses/
regression/ , R, 314 lines06_mgngtus_power.R - analyses/
regression/ , R, 4,032 linesfunctions/ 00_mgngtus_functions_reg ression.R - analyses/
regression/ , R, 177 lineshelpers/ package_manager.R - analyses/
regression/ , R, 73 lineshelpers/ set_dirs.R - LICENSE, License, 21 lines
- README.md, Text, 25 lines
The paper's code and data availability statement is in the Data section.
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:
- 2 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 162 scripts, each with its path and the digest of its content;
- 15 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
Datasets cited
Data Availability
The data files are available as .csv and .mat files on the OSF repository https://
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, 28 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 6 authors, 10 MeSH terms, 5 funders, 89 references.
Cite
This paper
Koutsoumpari, N., Algermissen, J., Yaakub, S. N., den Ouden, H. E., Bault, N., & Fouragnan, E. (2026). Ultrasound neuromodulation reveals distinct roles of the dorsal anterior cingulate cortex and anterior insula in learning. PLoS biology, 24(5), e3003767. https://
BibTeX
@article{koutsoumpari202
author = {Koutsoumpari, Nomiki and Algermissen, Johannes and Yaakub, Siti Nurbaya and den Ouden, Hanneke EM and Bault, Nadege and Fouragnan, Elsa},
title = {{Ultrasound neuromodulation reveals distinct roles of the dorsal anterior cingulate cortex and anterior insula in learning}},
journal = {PLoS biology},
year = {2026},
month = may,
volume = {24},
number = {5},
pages = {e3003767},
publisher = {PLOS},
issn = {1544-9173},
doi = {10.1371/
url = {https://
pmid = {42085365},
pmcid = {PMC13143107}
}
RIS
TY - JOUR
AU - Koutsoumpari, Nomiki
AU - Algermissen, Johannes
AU - Yaakub, Siti Nurbaya
AU - den Ouden, Hanneke EM
AU - Bault, Nadege
AU - Fouragnan, Elsa
TI - Ultrasound neuromodulation reveals distinct roles of the dorsal anterior cingulate cortex and anterior insula in learning
T2 - PLoS biology
J2 - PLoS Biol
PY - 2026
DA - 2026/
VL - 24
IS - 5
SP - e3003767
SN - 1544-9173
PB - PLOS
DO - 10.1371/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1371/
"type": "article-journal",
"title": "Ultrasound neuromodulation reveals distinct roles of the dorsal anterior cingulate cortex and anterior insula in learning",
"container-title": "PLoS biology",
"author": [
{
"family": "Koutsoumpari",
"given": "Nomiki"
},
{
"family": "Algermissen",
"given": "Johannes"
},
{
"family": "Yaakub",
"given": "Siti Nurbaya"
},
{
"family": "den Ouden",
"given": "Hanneke EM"
},
{
"family": "Bault",
"given": "Nadege"
},
{
"family": "Fouragnan",
"given": "Elsa"
}
],
"container-title-short":
"volume": "24",
"issue": "5",
"page": "e3003767",
"DOI": "10.1371/
"PMID": "42085365",
"PMCID": "PMC13143107",
"ISSN": "1544-9173",
"publisher": "PLOS",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
5
]
]
}
}
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.1371/journal.pbio.3003979 [code]
- Impaired midfrontal‑motor theta phase synchronization characterizes maladaptive motivational behavior in people with obsessive‑compulsive disorder.Journal: PLoS biologyIn common: afex, boundedline, psych, 7 other tools, 7 references
- [2] doi:10.1038/s41467-026-72934-3 [code]
- Multi-focal ultrasound neuromodulation to the dorsal anterior cingulate cortex disrupts behavioural and neural pain processing.Journal: Nature communicationsIn common: car, emmeans, lme4, 3 other tools, other, 4 references, 2 authors
- [3] doi:10.1126/sciadv.aec9291 [code]
- Computational mechanisms of perception in autism revealed using games inspired by rodent operant tasks.Journal: Science advancesIn common: afex, psych, car, 7 other tools, cognitive
- [4] doi:10.1371/journal.pone.0353990 [code]
- Positive mood enhances accessibility of unrelated concepts in the first language but not in the foreign language.Journal: PloS oneIn common: afex, psych, car, 6 other tools, cognitive, 1 reference
- [5] doi:10.1038/s41467-026-74565-0 [code]
- The functional neurobiology of dispositions towards negative emotions.Journal: Nature communicationsIn common: afex, boundedline, psych, 5 other tools, cognitive, 1 reference
- [6] doi:10.1093/bioinformatics/btag592 [code]
- Network-based stratification of allele-specific expression reveals patient subgroups in Huntington's disease.Journal: Bioinformatics (Oxford, England)In common: mgcv, car, emmeans, 6 other tools
- [7] doi:10.1016/j.neuroimage.2026.122115 [code]
- Midfrontal theta power relates to response speeding following frustrative nonreward.Journal: NeuroImageIn common: psych, car, emmeans, 6 other tools, cognitive
- [8] doi:10.1073/pnas.2606871123 [code]
- Oxytocin modulates the neurocomputational mechanisms engaged in learning rank relationships in social networks.Journal: Proceedings of the National Academy of Sciences of the United States of AmericaIn common: psych, car, emmeans, 6 other tools
- [9] doi:10.1016/j.nicl.2026.104012 [code]
- Structural-functional multilayer brain network properties and outcome of combined repetitive transcranial magnetic stimulation and psychotherapy for obsessive-compulsive disorder.Journal: NeuroImage. ClinicalIn common: afex, psych, car, 5 other tools, other
- [10] doi:10.1192/bjp.2026.10664 [code]
- Early effects of a novel 5-HT&
lt;sub& gt;4& lt;/ sub& gt;R agonist (PF-04995274) and the SSRI citalopram on emotional cognition in unmedicated depression: RESTAND study. Journal: The British journal of psychiatry : the journal of mental scienceIn common: afex, car, emmeans, 5 other tools, cognitive
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.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 2 repositories of the authors' code, each at its verified commit and with its license, 162 scripts, and 15 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:5c28c8a815807c35…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
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.
