Phase similarity between similar objects indicates representational merging across retrieval training but not sleep.
The 16 matches
- [1] § Materials and Methods › Data analysis › Representational change analyses › Source localisation ↔ scripts/phase_paper/dnap_class_32_source_reconstruction.py, lines 220–301 · score 0.88 · unit noise gain, rank deficiency, LCMV filters, beamforming, covariance, inverse
- [2] § Materials and Methods › Data analysis › EEG preprocessing ↔ scripts/sigma_paper/04_dnap_sigma_sleep-yasa.py, lines 46–82 · score 0.85 · linked mastoid, pre processed, miscellaneous, bandwidth, resampled, E1
- [3] § Materials and Methods › Data analysis › Representational change analyses › Linear modelling ↔ scripts/phase_paper/dnap_class_15_L-IR-DR_models.Rmd, lines 599–722 · score 0.83 · 0–400 ms, 400–700 ms, Treatment contrast, delta, beta, model
- [4] § Results › Only the retrieval training intervention induces further representational merging of similar objects in the alpha band › Intervention shift linear mixed-effects modelling ↔ scripts/phase_paper/dnap_class_15_L-IR-DR_models.Rmd, lines 487–597 · score 0.82 · 0–400 ms, 400–700 ms, Treatment contrast, delta, beta, fitted
- [5] § Materials and Methods › Data analysis › EEG preprocessing ↔ scripts/phase_paper/dnap_class_01_preproc.py, lines 441–519 · score 0.81 · AutoReject, bandwidth, resampled, ECG, EMG1, EMG2
- [6] § Results › Encoding-driven representational merging of similar objects in theta-band phase › Encoding shift linear mixed-effects modelling ↔ scripts/phase_paper/dnap_class_15_L-IR-DR_models.Rmd, lines 599–722 · score 0.77 · 0–400 ms, 400–700 ms, bounds, delta, beta, interaction
- [7] § Results › Item-level behavioural accuracy to similar-lure objects is predicted by representational merging in the retrieval training intervention ↔ scripts/phase_paper/dnap_class_21_IR-DR_models_items.Rmd, lines 91–133 · score 0.71 · correctly classified, lure accuracy, 400–700 ms, CI, bins, predicted
- [8] § Materials and Methods › Data analysis › Behaviour modelling ↔ scripts/phase_paper/dnap_class_15_L-IR-DR_models.Rmd, lines 111–183 · score 0.65 · treatment contrast, lme4, delayed recognition accuracy, outliers, modelling, confidence
- [9] § Materials and Methods › Data analysis › EEG phase similarity ↔ scripts/phase_paper/dnap_class_02_read-in_complex.py, lines 173–232 · score 0.62 · 2–30 Hz, 100–700 ms, Morlet, epoch, 100 ms, EEG
- [10] § Materials and Methods › Data analysis › EEG phase similarity ↔ scripts/phase_paper/dnap_class_23_read-in_complex_avg.py, lines 170–234 · score 0.62 · 2–30 Hz, 100–700 ms, Morlet, epoch, 100 ms, EEG
- [11] § Materials and Methods › Data analysis › Representational change analyses › Source localisation ↔ scripts/phase_paper/dnap_class_32_source_reconstruction.py, lines 220–301 · score 0.62 · inverse solution, LCMV filter, sensor, occipital, phase
- [12] § Materials and Methods › Data analysis › Representational change analyses › Source localisation ↔ scripts/phase_paper/dnap_class_33_phase_itpc_source.py, lines 339–381 · score 0.59 · Harvard Oxford atlas, MNI, space, brain, filter, phase
- [13] § Materials and Methods › Data analysis › Representational change analyses › Cluster-based permutation tests ↔ scripts/phase_paper/dnap_class_04_phase_same-sim.py, lines 709–772 · score 0.52 · mne.stats.spatio_temporal_cluster_test, tailed, sanity, permutation, phase
- [14] § Materials and Methods › Data analysis › Representational change analyses › Cluster-based permutation tests ↔ scripts/phase_paper/dnap_class_24_phase_same-rand_avg.py, lines 523–561 · score 0.52 · mne.stats.spatio_temporal_cluster_test, tailed, sanity, permutation, phase
- [15] § Results › Encoding-driven representational merging of similar objects in theta-band phase › Encoding shift source localisation ↔ scripts/phase_paper/dnap_class_36_phase_L-to-IR_graphs_source.py, lines 263–306 · score 0.52 · Harvard Oxford, glass brain, atlas, cluster
- [16] § Results › Encoding-driven representational merging of similar objects in theta-band phase › Encoding shift source localisation ↔ scripts/phase_paper/dnap_class_33_phase_itpc_source.py, lines 339–381 · score 0.52 · Harvard Oxford, glass brain, atlas
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 Markdown · 722 lines · 27 KB · no license · 4 matches
- ---
- title: "dnap_class_exploration"
- output: html_document
- date: "2024-07-30"
- ---
- ```{r setup, include=FALSE}
- knitr::opts_chunk$set(echo = TRUE)
- library(dplyr)
- pacman::p_load(tidyverse, tidymodels, lme4, effects, car, emmeans, ggeffects, performance, stringr, ggpubr, rstatix, gridExtra, sjPlot, lmerTest)
- ```
- ```{r read in data }
- dnap_class1 <- read.csv("D:/DNap/Scripts/classified/data/dnap_class_all.csv")
- dnap_class_lir1 <- read.csv("D:/DNap/Scripts/classified/data/dnap_class_all_l-ir.csv")
- # fix
- dnap_class <- dnap_class1 %>%
- mutate(id_cond_phase = paste0(ID, condition, phase)) %>%
- mutate(KSS = case_when(
- id_cond_phase == "26wakeir" ~ 3,
- TRUE ~ KSS
- ))
- dnap_class_lir <- dnap_class_lir1 %>%
- mutate(id_cond = paste0(ID, condition)) %>%
- mutate(KSS = case_when(
- id_cond == "26wake" ~ 3,
- TRUE ~ KSS
- )) %>%
- rename(l = z_phase_sim_l,
- ir = z_phase_sim_ir) %>%
- pivot_longer(cols = c("l", "ir"), names_to = "phase", values_to = "z_phase_sim")
- ```
- ```{r outlier KD function}
- # outlier detection function
- outlierKD <- function(dt, var) {
- var_name <- eval(substitute(var),eval(dt))
- tot <- sum(!is.na(var_name))
- na1 <- sum(is.na(var_name))
- m1 <- mean(var_name, na.rm = T)
- par(mfrow=c(2, 2), oma=c(0,0,3,0))
- boxplot(var_name, main="With outliers")
- hist(var_name, main="With outliers", xlab=NA, ylab=NA)
- outlier <- boxplot.stats(var_name)$out
- mo <- mean(outlier)
- var_name <- ifelse(var_name %in% outlier, NA, var_name)
- boxplot(var_name, main="Without outliers")
- hist(var_name, main="Without outliers", xlab=NA, ylab=NA)
- title("Outlier Check", outer=TRUE)
- na2 <- sum(is.na(var_name))
- message("Outliers identified: ", na2 - na1, " from ", tot, " observations")
- message("Proportion (%) of outliers: ", (na2 - na1) / tot*100)
- message("Mean of the outliers: ", mo)
- m2 <- mean(var_name, na.rm = T)
- message("Mean without removing outliers: ", m1)
- message("Mean if we remove outliers: ", m2)
- response <- readline(prompt="Do you want to remove outliers and to replace with NA? [yes/no]: ")
- if(response == "y" | response == "yes"){
- dt[as.character(substitute(var))] <- invisible(var_name)
- assign(as.character(as.list(match.call())$dt), dt, envir = .GlobalEnv)
- message("Outliers successfully removed", "\n")
- return(invisible(dt))
- } else{
- message("Nothing changed", "\n")
- return(invisible(var_name))
- }
- }
- ```
- ```{r outliers IR DR}
- # IR to DR
- dnap_no_out <- dnap_class
- outlierKD(dnap_no_out, z_phase_sim)
- outlierKD(dnap_no_out, cat_acc_score)
- #outlierKD(dnap_no_out, dprime)
- dnap_no_outliers <- dnap_no_out %>%
- na.omit(z_phase_sim, cat_acc_score)
- ```
- ```{r outliers L IR }
- # L to IR
- dnap_no_out_lir <- dnap_class_lir
- outlierKD(dnap_no_out_lir, z_phase_sim)
- outlierKD(dnap_no_out_lir, cat_acc_score)
- dnap_no_outliers_lir <- dnap_no_out_lir %>%
- na.omit(z_phase_sim, cat_acc_score)
- ```
- ```{r dprime model }
- # select relevant scores
- dnap_dprime1 <- dnap_class %>%
- select(ID, condition, phase, dprime) %>%
- distinct() %>%
- pivot_wider(names_from = "phase", values_from = "dprime", names_prefix = "dprime_" ) %>%
- mutate(condition = case_when(
- condition == "nap" ~ "Sleep",
- condition == "restudy" ~ "Restudy",
- condition == "retrieval" ~ "Retrieval",
- condition == "wake" ~ "Wake"
- ))
- dnap_dprime <- dnap_dprime1
- # remove outliers
- outlierKD(dnap_dprime, dprime_ir)
- # dr has no outliers
- # reorder condition order
- cond_order = c("Retrieval", "Restudy", "Sleep", "Wake")
- dnap_dprime$condition <- factor(dnap_dprime$condition, levels = cond_order)
- # modelling
- dnap_dprime.lmm <- lmer(dprime_dr ~ condition + dprime_ir + (1|ID), data=dnap_dprime)
- Anova(dnap_dprime.lmm)
- #plotting
- dnap_dprime.plot <- Effect(c("condition"), dnap_dprime.lmm, confidence.level=.83) %>%
- as_tibble()
- (dnap_dprime.plot1 <- ggplot(dnap_dprime.plot,
- aes(x=condition, y=fit, ymin=lower, ymax=upper,
- colour=condition, fill=condition)) +
- geom_point(size=4, shape=15) +
- geom_errorbar(width=0.5, linewidth=1.2) +
- xlab("Condition") + ylab("Delayed Recognition Accuracy") +
- theme(
- legend.position = "None") +
- theme_bw()+
- theme(axis.title.x = element_text(size=16),
- axis.title.y = element_text(size=16),
- axis.text.x = element_text(size=12),
- axis.text.y = element_text(size=12),
- strip.text.x = element_text(size = 16)) +
- theme(
- panel.grid.major = element_blank(),
- panel.grid.minor = element_blank(),
- panel.background = element_blank()) +
- scale_fill_manual(values = c("#440154FF", "#33638DFF", "#55C667FF", "#DCE319FF")) +
- scale_colour_manual(values = c("#440154FF", "#33638DFF", "#55C667FF", "#DCE319FF")) +
- theme(
- legend.position = "None"))
- ggsave("D:/DNap/Scripts/classified/plots/R_plots/dprime_plot.png", plot = dnap_dprime.plot1, width = 19, height = 13, units = "cm")
- save_plot("D:/DNap/Scripts/classified/plots/R_plots/svg/dprime_plot.svg", fig=dnap_dprime.plot1, width = 16, height = 10)
- # treatment contrasts
- #set contrasts for the models
- dnap_dprime_contr <- dnap_dprime
- dnap_dprime_contr$condition <- as.factor(dnap_dprime_contr$condition)
- # check what the contrasts are numbered
- contrasts(dnap_dprime_contr$condition)
- # retreival = 1
- # restudy = 2
- # sleep = 3
- # wake = 4
- contrasts(dnap_dprime_contr$condition) = contr.treatment(4, base=3) # set ret as the control
- dnap_dprime_contr.lmm <- lmer(dprime_dr ~ condition + dprime_ir + (1|ID), data=dnap_dprime_contr)
- summary(dnap_dprime_contr.lmm)
- ```
- ```{r time bin exploration setup }
- setwd("D:/DNap/EEG")
- bounds <- read.table("iaf_long.txt", header = TRUE) %>%
- rename(ID = subj,
- condition = cond) %>%
- mutate(condition = case_when(
- condition == "res" ~ "restudy",
- condition == "ret" ~ "retrieval",
- condition == "nap" ~ "nap",
- condition == "wak" ~ "wake"
- )) %>%
- pivot_wider(names_from = measure, values_from = value) %>%
- select(-paf, -cog, -u_alpha_upper, -u_alpha_lower, -l_alpha_upper, -l_alpha_lower) %>%
- mutate(id_cond = paste0(ID, condition)) %>%
- filter(!id_cond %in% c("5wake", "30nap"))
- dnap_bounds <- left_join(dnap_no_outliers, bounds) %>%
- mutate(across(ends_with(c("_lower", "_upper")), as.numeric)) %>%
- mutate_at(vars(ends_with("_lower")), floor) %>%
- mutate_at(vars(ends_with("_upper")), round) %>%
- mutate(band = case_when(
- frequency >= theta_lower & frequency <= theta_upper ~ "theta",
- frequency >= alpha_lower & frequency <= alpha_upper ~ "alpha",
- frequency >= beta_lower & frequency <= beta_upper ~ "beta",
- frequency < theta_lower ~ "delta"
- )) %>%
- na.omit(band) %>%
- select(-alpha_lower:-alphabeta_upper) %>%
- mutate(time_win = case_when(
- time_start == 0 ~ "prestim",
- time_start < 401 & time_start > 0 ~ "early",
- time_start > 401 ~ "late"
- ))
- dnap_base <- dnap_bounds %>%
- group_by(ID, phase, condition, band, time_win) %>%
- mutate(phase_mean = mean(z_phase_sim)) %>%
- select(ID, phase, condition, band, time_win, phase_mean, lure_category, cat_acc_score, dprime, KSS) %>%
- distinct() %>%
- ungroup() %>%
- pivot_wider(names_from = phase, values_from = c("phase_mean", "cat_acc_score", "dprime", "KSS"), names_sep = "_") %>%
- mutate(phase_diff = phase_mean_dr - phase_mean_ir) %>%
- distinct() %>%
- select(-phase_mean_ir, -phase_mean_dr, -KSS_ir) %>%
- na.omit()
- ```
- ```{r lure cat exploration setup }
- dnap_models <- dnap_base %>%
- pivot_wider(names_from = "time_win", values_from = "phase_diff") %>%
- pivot_wider(names_from = "band", values_from = c("prestim", "early", "late"), names_sep = "_")
- ```
- ```{r lure category behaviour exploration model}
- dnap_beh_lurecat <- dnap_models %>%
- select(ID, condition, lure_category, cat_acc_score_ir, cat_acc_score_dr) %>%
- mutate(cat_acc_score_time = cat_acc_score_dr - cat_acc_score_ir) %>%
- mutate(condition = case_when(
- condition == "nap" ~ "Sleep",
- condition == "restudy" ~ "Restudy",
- condition == "retrieval" ~ "Retrieval",
- condition == "wake" ~ "Wake",
- )) %>%
- mutate(lure_category = case_when(
- lure_category == "old" ~ "Original",
- lure_category == "new - similar" ~ "Similar",
- lure_category == "new - different" ~ "Different",
- ))
- # set order for conditions and lure categories
- cond_order = c("Retrieval", "Restudy", "Sleep", "Wake")
- dnap_beh_lurecat$condition <- factor(dnap_beh_lurecat$condition, levels = cond_order)
- ### difference score
- dnap_lurecat_diff.lmm <- lmer(cat_acc_score_time ~ condition * lure_category + (1|ID), data=dnap_beh_lurecat)
- Anova(dnap_lurecat_diff.lmm)
- # plot cond * lure_cat
- dnap_lurecat_diff.plot <- Effect(c("condition", "lure_category"), dnap_lurecat_diff.lmm, confidence.level=.83) %>%
- as_tibble()
- (dnap_lurecat_diff.plot1 <- ggplot(dnap_lurecat_diff.plot,
- aes(x=lure_category, y=fit,
- colour=lure_category, fill=lure_category, shape=lure_category)) +
- geom_point(size=4.5) +
- geom_errorbar(size=1, width=0.5, aes(ymin=lower, ymax=upper)) +
- #geom_hline(yintercept=0, linetype=2) +
- xlab("Lure Category") + ylab("Recognition Accuracy Change (%)") +
- labs(fill = "Lure Category",
- colour = "Lure Category",
- shape = "Lure Category") +
- facet_wrap(~condition, ncol=4) +
- theme_bw()+
- theme(plot.title = element_text(hjust = 0.5, size=22),
- axis.title.y = element_text(size=22),
- axis.text.y = element_text(size=22),
- strip.text.x = element_text(size = 22),
- legend.text=element_text(size=22),
- legend.title=element_text(size=22),
- axis.title.x=element_blank(),
- axis.text.x=element_blank(),
- axis.ticks.x=element_blank()) +
- #theme_apa() +
- #theme(panel.spacing = unit(1, "lines")) +
- theme(
- panel.grid.major = element_blank(),
- panel.grid.minor = element_blank(),
- #panel.background = element_blank()
- ) +
- theme(
- legend.position = "bottom") +
- scale_colour_manual(values = c("#440154FF", "#33638DFF", "#55C667FF"))) #, "#DCE319FF"
- ggsave("D:/DNap/Scripts/classified/plots/R_plots/cond_lure-acc_diff_plot.png", plot=dnap_lurecat_diff.plot1, width = 12, height = 7, units = "in")
- save_plot("D:/DNap/Scripts/classified/plots/R_plots/svg/cond_lure-acc_diff_plot.svg", fig=dnap_lurecat_diff.plot1, width = 24, height = 14)
- #treatment contrasts
- # object_type*condition
- dnap_beh_lurecat_con <- dnap_beh_lurecat
- dnap_beh_lurecat_con$obj_cond <- interaction(dnap_beh_lurecat_con$lure_category, dnap_beh_lurecat_con$condition)
- levels(dnap_beh_lurecat_con$obj_cond) #check levels
- # set base, one condition at a time
- dnap_beh_lurecat_con$obj_cond <- relevel(dnap_beh_lurecat_con$obj_cond, ref = "Similar.Sleep")
- # model
- dnap_lurecat_diff_con.lmm <- lmer(cat_acc_score_time ~ obj_cond + (1|ID), data=dnap_beh_lurecat_con)
- summary(dnap_lurecat_diff_con.lmm)
- ```
- ```{r ratio setup and model - all}
- ## overall average setup
- dnap_ratio_all <- left_join(dnap_no_outliers, bounds) %>%
- filter(frequency >= 4,
- time_start >= 200) %>%
- group_by(ID, phase, condition) %>%
- mutate(phase_mean = mean(z_phase_sim)) %>%
- select(ID, phase, condition, phase_mean, lure_category, cat_acc_score, KSS) %>%
- distinct() %>%
- ungroup() %>%
- pivot_wider(names_from = phase, values_from = c("phase_mean", "cat_acc_score", "KSS"), names_sep = "_") %>%
- mutate(phase_diff = phase_mean_dr - phase_mean_ir) %>%
- distinct() %>%
- select(-phase_mean_ir, -phase_mean_dr, -KSS_ir) %>%
- na.omit() %>%
- rename(acc_ir = cat_acc_score_ir,
- acc_dr = cat_acc_score_dr) %>%
- mutate(lure_category = case_when(
- lure_category == "old" ~ "old",
- lure_category == "new - similar" ~ "sim",
- lure_category == "new - different" ~ "diff"
- )) %>%
- pivot_wider(names_from = "lure_category", values_from = c("acc_ir", "acc_dr"), names_sep = "_") %>%
- mutate(sd_ratio_ir = acc_ir_sim - acc_ir_diff,
- sd_ratio_dr = acc_dr_sim - acc_dr_diff,
- sd_ratio_diff = sd_ratio_dr - sd_ratio_ir,
- condition = case_when(
- condition == "retrieval" ~ "Retrieval",
- condition == "restudy" ~ "Restudy",
- condition == "wake" ~ "Wake",
- condition == "nap" ~ "Sleep"
- ))
- # #check multicolinearity with vif() # good
- # #vif(dnap_ratio_all.lmm)
- # model with difference score
- cond_order_diff = c("Wake", "Retrieval", "Sleep", "Restudy")
- dnap_ratio_all$condition <- factor(dnap_ratio_all$condition, levels = cond_order_diff)
- # just behaviour ***
- dnap_ratio_all_diff.lmm <- lmer(sd_ratio_diff ~ condition + (1|ID), data = dnap_ratio_all)
- Anova(dnap_ratio_all_diff.lmm)
- dnap_ratio_all_diff.plot <- Effect(c("condition"), dnap_ratio_all_diff.lmm, confidence.level=.83) %>%
- as_tibble()
- (dnap_ratio_all_diff.plot1 <- ggplot(dnap_ratio_all_diff.plot,
- aes(x=condition, y=fit, colour = condition)) +
- geom_point() +
- geom_errorbar(aes(ymin=lower, ymax=upper), width=0.3) +
- geom_hline(yintercept=0, linetype=2) +
- xlab("Condition") + ylab("Similar:Different Lure Accuracy") +
- theme_bw()+
- theme(
- legend.position = "None",
- text = element_text(size = 20)) +
- scale_colour_manual(values = c("#440154FF", "#33638DFF", "#55C667FF", "#DCE319FF")))
- ggsave("D:/DNap/Scripts/classified/plots/R_plots/cond_lure-ratio_diff_plot.png", plot=dnap_ratio_all_diff.plot1, width = 8, height = 6, units = "in")
- save_plot("D:/DNap/Scripts/classified/plots/R_plots/svg/cond_lure-ratio_diff_plot.svg", fig=dnap_ratio_all_diff.plot1, width = 16, height = 12)
- # treatment contrasts
- #set contrasts for the models
- dnap_ratio_all$condition <- as.factor(dnap_ratio_all$condition)
- # check what the contrasts are numbered
- contrasts(dnap_ratio_all$condition)
- # wake = 1
- # retrieval = 2
- # sleep = 3
- # resudy = 4
- contrasts(dnap_ratio_all$condition) = contr.treatment(4, base=1) # set wake as the control
- dnap_ratio_all_diff.lmm <- lmer(sd_ratio_diff ~ condition + (1|ID), data = dnap_ratio_all)
- summary(dnap_ratio_all_diff.lmm)
- ```
- ```{r behaviour descriptives }
- # ratio
- dnap_ratio_all_avgs <- dnap_ratio_all %>%
- group_by(condition) %>%
- na.omit(sd_ratio_ir, sd_ratio_dr, sd_ratio_diff) %>%
- mutate(mean_ratio_ir = mean(sd_ratio_ir),
- sd_ratio_ir = sd(sd_ratio_ir),
- mean_ratio_dr = mean(sd_ratio_dr),
- sd_ratio_dr = sd(sd_ratio_dr),
- mean_ratio_diff = mean(sd_ratio_diff),
- sd_ratio_diff = sd(sd_ratio_diff)) %>%
- select(condition, mean_ratio_ir, sd_ratio_ir, mean_ratio_dr, sd_ratio_dr, mean_ratio_diff, sd_ratio_diff) %>%
- distinct() %>%
- mutate(across(where(is.numeric), round, 2))
- # similar and different lure accuracy separated
- dnap_accuracy_avg <- dnap_models %>%
- select(condition, lure_category, cat_acc_score_ir, cat_acc_score_dr) %>%
- filter(lure_category != "old") %>%
- mutate(cat_acc_score_diff = cat_acc_score_dr - cat_acc_score_ir) %>%
- group_by(condition, lure_category) %>%
- mutate(mean_acc_ir = mean(cat_acc_score_ir),
- sd_acc_ir = sd(cat_acc_score_ir),
- mean_acc_dr = mean(cat_acc_score_dr),
- sd_acc_dr = sd(cat_acc_score_dr),
- mean_acc_diff = mean(cat_acc_score_diff),
- sd_acc_diff = sd(cat_acc_score_diff),
- lure_category = case_when(
- lure_category == "new - similar" ~ "sim",
- lure_category == "new - different" ~ "diff"
- )) %>%
- ungroup() %>%
- select(condition, lure_category, mean_acc_ir, sd_acc_ir, mean_acc_dr, sd_acc_dr, mean_acc_diff, sd_acc_diff) %>%
- distinct() %>%
- pivot_wider(names_from = "lure_category", values_from = c("mean_acc_ir", "sd_acc_ir", "mean_acc_dr", "sd_acc_dr", "mean_acc_diff", "sd_acc_diff"), names_sep = "_")%>%
- mutate(across(where(is.numeric), round, 2))
- dnap_accuracy_avg_sim <- dnap_accuracy_avg %>%
- mutate(acc_ir = paste0(mean_acc_ir_sim, " (", sd_acc_ir_sim, ")"),
- acc_dr = paste0(mean_acc_dr_sim, " (", sd_acc_dr_sim, ")"),
- acc_diff = paste0(mean_acc_diff_sim, " (", sd_acc_diff_sim, ")")) %>%
- select(condition, starts_with("acc_"))
- dnap_accuracy_avg_diff <- dnap_accuracy_avg %>%
- mutate(acc_ir = paste0(mean_acc_ir_diff, " (", sd_acc_ir_diff, ")"),
- acc_dr = paste0(mean_acc_dr_diff, " (", sd_acc_dr_diff, ")"),
- acc_diff = paste0(mean_acc_diff_diff, " (", sd_acc_diff_diff, ")")) %>%
- select(condition, starts_with("acc_"))
- ```
- model with only retrieval condition, late alpha subject level
- ```{r retreival only models for late alpha }
- dnap_ratio_broad_ret <- dnap_models %>%
- select(-dprime_ir, -dprime_dr) %>%
- rename(acc_ir = cat_acc_score_ir,
- acc_dr = cat_acc_score_dr) %>%
- mutate(lure_category = case_when(
- lure_category == "old" ~ "old",
- lure_category == "new - similar" ~ "sim",
- lure_category == "new - different" ~ "diff"
- )) %>%
- pivot_wider(names_from = "lure_category", values_from = c("acc_ir", "acc_dr"), names_sep = "_") %>%
- mutate(sd_ratio_ir = acc_ir_sim - acc_ir_diff,
- sd_ratio_dr = acc_dr_sim - acc_dr_diff,
- sd_ratio_diff = sd_ratio_dr - sd_ratio_ir) %>%
- filter(condition == "retrieval")
- # difference score
- #late_alpha does not predict accuracy for similar lures
- dnap_ret_sim_late_ratio_diff.lmm <- lm(sd_ratio_diff ~ late_alpha, data = dnap_ratio_broad_ret)
- Anova(dnap_ret_sim_late_ratio_diff.lmm)
- ```
- ```{r model phase per cond, band, and time window bin }
- dnap_base_ch <- dnap_bounds %>%
- group_by(ID, phase, condition, band, time_win, ch_name) %>%
- mutate(phase_mean = mean(z_phase_sim)) %>%
- select(ID, phase, condition, band, time_win, ch_name, phase_mean, KSS) %>%
- distinct() %>%
- ungroup() %>%
- pivot_wider(names_from = phase, values_from = c("phase_mean", "KSS"), names_sep = "_") %>%
- mutate(phase_diff = phase_mean_dr - phase_mean_ir) %>%
- distinct() %>%
- select(-phase_mean_ir, -phase_mean_dr, -KSS_ir) %>%
- na.omit() %>%
- filter(time_win != "prestim") %>%
- mutate(time_win = case_when(
- time_win == "early" ~ "Early (0-0.4s)",
- time_win == "late" ~ "Late (0.4-0.7s)"),
- band = case_when(
- band == "delta" ~ "Delta",
- band == "theta" ~ "Theta",
- band == "alpha" ~ "Alpha",
- band == "beta" ~ "Beta"
- ))
- dnap_base_ch_ret <- dnap_base_ch %>%
- filter(condition == "retrieval")
- band_order <- c("Delta", "Theta", "Alpha", "Beta")
- dnap_base_ch_ret$band <- factor(dnap_base_ch_ret$band, levels = band_order)
- dnap.band_time_predict <- lmer(phase_diff ~ band * time_win + (1|ID) + (1|ch_name), data = dnap_base_ch_ret)
- Anova(dnap.band_time_predict)
- #make table
- anova_tab <- Anova(dnap.band_time_predict)
- anova_df <- as.data.frame(anova_tab) %>%
- mutate(
- Chisq = ifelse(Chisq >= 0.005,
- format(round(Chisq, 2), nsmall = 2, scientific = FALSE),
- format(signif(Chisq, 1), scientific = FALSE)),
- `Pr(>Chisq)` = case_when(
- round(`Pr(>Chisq)`, 3) == 0 ~ "<.001",
- TRUE ~ sub("^0\\.", ".", format(round(`Pr(>Chisq)`, 3), nsmall = 3))
- )
- )
- # time*band
- dnap.band_time_predict.plot <- Effect(c("band","time_win"), dnap.band_time_predict,confidence.level=.83) %>%
- as_tibble()
- (dnap.band_time_predict.plot1 <- ggplot(dnap.band_time_predict.plot,
- aes(x=band, y=fit, colour=band)) +
- geom_point(size = 3) +
- geom_errorbar(aes(ymin=lower, ymax=upper), width = 0.2) +
- facet_wrap(~time_win) +
- xlab("Band") + ylab("Phase Similarity Shift") +
- theme_bw() +
- theme(
- legend.position = "none",
- text = element_text(size = 20)) +
- scale_colour_manual(values = c("#440154FF", "#33638DFF", "#55C667FF", "#DCE319FF")))
- ggsave("D:/DNap/Scripts/classified/plots/R_plots/phase_sim_bands_time_ret_model_plot.png", plot = dnap.band_time_predict.plot1, width = 8, height = 6, units = "in")
- save_plot("D:/DNap/Scripts/classified/plots/R_plots/svg/phase_sim_bands_time_ret_model_plot.svg", fig = dnap.band_time_predict.plot1, width = 16, height = 12)
- # band
- dnap.band_predict.plot <- Effect(c("band"), dnap.band_time_predict,confidence.level=.83) %>%
- as_tibble()
- (dnap.band_predict.plot1 <- ggplot(dnap.band_predict.plot,
- aes(x=band, y=fit, colour=band)) +
- geom_point(size = 3) +
- geom_errorbar(aes(ymin=lower, ymax=upper), width = 0.2) +
- xlab("Band") + ylab("Phase Similarity Shift") +
- theme_bw() +
- theme(
- legend.position = "none",
- text = element_text(size = 20)) +
- scale_colour_manual(values = c("#440154FF", "#33638DFF", "#55C667FF", "#DCE319FF")))
- ggsave("D:/DNap/Scripts/classified/plots/R_plots/phase_sim_bands_ret_model_plot.png", plot = dnap.band_predict.plot1, width = 8, height = 6, units = "in")
- save_plot("D:/DNap/Scripts/classified/plots/R_plots/svg/phase_sim_bands_ret_model_plot.svg", fig = dnap.band_predict.plot1, width = 16, height = 12)
- ## treatment contrasts
- # band
- dnap_base_ch_ret$band <- as.factor(dnap_base_ch_ret$band)
- contrasts(dnap_base_ch_ret$band) = contr.treatment(4, base=3) # set each band as the control
- # check what the contrasts are numbered
- contrasts(dnap_base_ch_ret$band)
- # delta = 1
- # theta = 2
- # alpha = 3
- # beta = 4
- # model
- dnap.band_time_predict_con1 <- lmer(phase_diff ~ band + (1|ID) + (1|ch_name), data = dnap_base_ch_ret)
- summary(dnap.band_time_predict_con1)
- # band*time
- dnap_base_ch_ret_con <- dnap_base_ch_ret
- dnap_base_ch_ret_con$band_time <- interaction(dnap_base_ch_ret_con$time_win, dnap_base_ch_ret_con$band)
- levels(dnap_base_ch_ret_con$band_time) #check levels
- # set base, one condition at a time
- # dnap_base_ch_ret_con$band_time <- relevel(dnap_base_ch_ret_con$band_time, ref = "Early (0-0.4s).Alpha")
- dnap_base_ch_ret_con$band_time <- relevel(dnap_base_ch_ret_con$band_time, ref = "Late (0.4-0.7s).Alpha")
- # model
- dnap.band_time_predict_con2.lmm <- lmer(phase_diff ~ band_time + (1|ID) + (1|ch_name), data = dnap_base_ch_ret_con)
- summary(dnap.band_time_predict_con2.lmm)
- ```
- ```{r does band and time predict phase similarity L to IR }
- dnap_cond_predict_lir <- left_join(dnap_no_outliers_lir, bounds) %>%
- mutate(across(ends_with(c("_lower", "_upper")), as.numeric)) %>%
- mutate_at(vars(ends_with("_lower")), floor) %>%
- mutate_at(vars(ends_with("_upper")), round) %>%
- mutate(band = case_when(
- frequency >= theta_lower & frequency <= theta_upper ~ "theta",
- frequency >= alpha_lower & frequency <= alpha_upper ~ "alpha",
- frequency >= beta_lower & frequency <= beta_upper ~ "beta",
- frequency < theta_lower ~ "delta"
- )) %>%
- na.omit(band) %>%
- select(-alpha_lower:-alphabeta_upper) %>%
- mutate(time_win = case_when(
- time_start == 0 ~ "prestim",
- time_start < 401 & time_start > 0 ~ "early",
- time_start > 401 ~ "late"
- )) %>%
- filter(time_win != "prestim") %>%
- group_by(ID, phase, band, time_win, ch_name) %>%
- mutate(z_phase_mean = mean(z_phase_sim)) %>%
- ungroup() %>%
- select(ID, phase, band, time_win, z_phase_mean, ch_name) %>%
- distinct() %>%
- pivot_wider(names_from = phase, values_from = z_phase_mean) %>%
- mutate(phase_diff = ir-l) %>%
- select(-l, -ir) %>%
- mutate(time_win = case_when(
- time_win == "early" ~ "Early (0-0.4s)",
- time_win == "late" ~ "Late (0.4-0.7s)"),
- band = case_when(
- band == "delta" ~ "Delta",
- band == "theta" ~ "Theta",
- band == "alpha" ~ "Alpha",
- band == "beta" ~ "Beta"
- ))
- time_order <- c("Early (0-0.4s)", "Late (0.4-0.7s)")
- band_order <- c("Delta", "Theta", "Alpha", "Beta")
- dnap_cond_predict_lir$time_win <- factor(dnap_cond_predict_lir$time_win, levels = time_order)
- dnap_cond_predict_lir$band <- factor(dnap_cond_predict_lir$band, levels = band_order)
- dnap.cond_predict_lir <- lmer(phase_diff ~ band * time_win + (1|ID) + (1|ch_name), data = dnap_cond_predict_lir)
- Anova(dnap.cond_predict_lir)
- #make table
- anova_tab <- Anova(dnap.cond_predict_lir)
- anova_df <- as.data.frame(anova_tab) %>%
- mutate(
- Chisq = ifelse(Chisq >= 0.005,
- format(round(Chisq, 2), nsmall = 2, scientific = FALSE),
- format(signif(Chisq, 1), scientific = FALSE)),
- `Pr(>Chisq)` = case_when(
- round(`Pr(>Chisq)`, 3) == 0 ~ "<.001",
- TRUE ~ sub("^0\\.", ".", format(round(`Pr(>Chisq)`, 3), nsmall = 3))
- )
- )
- dnap.cond_predict_lir_time.plot <- Effect(c("band", "time_win"), dnap.cond_predict_lir, confidence.level=.83) %>%
- as_tibble()
- (dnap.cond_predict_lir_time.plot1 <- ggplot(dnap.cond_predict_lir_time.plot,
- aes(x=band, y=fit, colour=band)) +
- geom_point(size = 3) +
- geom_errorbar(aes(ymin=lower, ymax=upper), width = 0.2) +
- xlab("Band") + ylab("Phase Similarity Shift") +
- facet_wrap(~time_win) +
- theme_bw() +
- theme(
- legend.position = "none",
- text = element_text(size = 20)) +
- scale_colour_manual(values = c("#440154FF", "#33638DFF", "#55C667FF", "#DCE319FF")))
- ggsave("D:/DNap/Scripts/classified/plots/R_plots/phase_sim_time_bands_l-to-ir_model_plot.png", plot = dnap.cond_predict_lir_time.plot1, width = 8, height = 6, units = "in")
- save_plot("D:/DNap/Scripts/classified/plots/R_plots/svg/phase_sim_time_bands_l-to-ir_model_plot.svg", fig = dnap.cond_predict_lir_time.plot1, width = 16, height = 12)
- # band
- dnap.cond_predict_lir.plot <- Effect(c("band"), dnap.cond_predict_lir, confidence.level=.83) %>%
- as_tibble()
- (dnap.cond_predict_lir.plot1 <- ggplot(dnap.cond_predict_lir.plot,
- aes(x=band, y=fit, colour=band)) +
- geom_point(size = 3) +
- geom_errorbar(aes(ymin=lower, ymax=upper), width = 0.2) +
- xlab("Band") + ylab("Phase Similarity Shift") +
- theme_bw() +
- theme(
- legend.position = "none",
- text = element_text(size = 20)) +
- scale_colour_manual(values = c("#440154FF", "#33638DFF", "#55C667FF", "#DCE319FF")))
- ggsave("D:/DNap/Scripts/classified/plots/R_plots/phase_sim_bands_l-to-ir_model_plot.png", plot = dnap.cond_predict_lir.plot1, width = 8, height = 6, units = "in")
- save_plot("D:/DNap/Scripts/classified/plots/R_plots/svg/phase_sim_bands_l-to-ir_model_plot.svg", fig = dnap.cond_predict_lir.plot1, width = 16, height = 12)
- ## treatment contrasts
- # band
- dnap_cond_predict_lir$band <- as.factor(dnap_cond_predict_lir$band)
- contrasts(dnap_cond_predict_lir$band) = contr.treatment(4, base=3) # set each band as the control
- # check what the contrasts are numbered
- contrasts(dnap_cond_predict_lir$band)
- # delta = 1
- # theta = 2
- # alpha = 3
- # beta = 4
- # model
- dnap.cond_predict_lir_con <- lmer(phase_diff ~ band + (1|ID) + (1|ch_name), data = dnap_cond_predict_lir)
- summary(dnap.cond_predict_lir_con)
- # band*time
- dnap_cond_predict_lir_con <- dnap_cond_predict_lir
- dnap_cond_predict_lir_con$band_time <- interaction(dnap_cond_predict_lir_con$time_win, dnap_cond_predict_lir_con$band)
- levels(dnap_cond_predict_lir_con$band_time) #check levels
- # set base, one condition at a time
- # dnap_cond_predict_lir_con$band_time <- relevel(dnap_cond_predict_lir_con$band_time, ref = "Early (0-0.4s).Beta")
- dnap_cond_predict_lir_con$band_time <- relevel(dnap_cond_predict_lir_con$band_time, ref = "Late (0.4-0.7s).Alpha")
- # model
- dnap.band_time_predict_lir_con2.lmm <- lmer(phase_diff ~ band_time + (1|ID) + (1|ch_name), data = dnap_cond_predict_lir_con)
- summary(dnap.band_time_predict_lir_con2.lmm)
- ```
dnap_class_15_L-IR-DR_models.Rmd, no license · at the source
Overview
- School of Psychology, Adelaide University, Adelaide, South Australia, Australia
- School of Psychology and Neuroscience, Centre for Neurotechnology, University of Glasgow, Glasgow, United Kingdom
- Department of Psychology, New York University, New York City, NY, United States
Abstract
Retrieval training (i.e., cued recall) is theorised to induce rapid memory consolidation, similarly to sleep. Across consolidation, related neural representations become increasingly similar; yet, representational change has never been directly compared between sleep and retrieval training to test similarities in their underlying mechanisms. In this study, 30 subjects (27F, 18–34, M = 22.17) completed 4 separate sessions in which they (1) learnt object–word pairs, followed by (2) immediate recognition testing, (3) one of four 120-min interventions (retrieval training, restudy, sleep, or wake), and (4) delayed recognition testing. We compared EEG phase similarity between similar and different objects to assess the time, frequency, and anatomical distribution of representational similarity across encoding (learning to immediate recognition), and each intervention (immediate to delayed recognition). We hypothesised that EEG phase patterns for similar objects would become more similar (i.e., representational merging) across retrieval training and sleep interventions, and predict a greater endorsement of similar-object lures. We found increased representational similarity between similar objects across encoding in the theta-band and occipital sources. Crucially, additional representational merging was only observed across the retrieval training intervention, in the alpha-band and parieto-occipital sources. Despite retrieval training leading to reduced performance in discriminating similar-objects lures, greater representational merging across retrieval training predicted greater discrimination of similar-object lures. Together, these findings suggest that sleep and retrieval training induce different memory transformations across equivalent timescales. Retrieval training may generally provoke rapid gist extraction, with greater neocortical integration supporting episodic discrimination. Conversely, sleep may selectively maintain short-term task-relevant episodic and semantic details.
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 16 matches between paragraphs and lines of code.
OSF mygh9
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
- 27 September 2026: the link answers (HTTP 200)
52 files
- scripts/
lpc_paper/ , Python, 393 lines01_dnap_rep_lpc_preproc. py - scripts/
lpc_paper/ , Python, 103 lines02_dnap_rep_iaf.py - scripts/
lpc_paper/ , Python, 163 lines03_dnap_rep_lpc_erp.py - scripts/
lpc_paper/ , R, 440 lines04_dnap_rep_erp_make_df. Rmd - scripts/
lpc_paper/ , R, 374 lines05_dnap_rep_erp_modellin g.Rmd - scripts/
lpc_paper/ , R, 214 lines06_dnap_rep_erp_gaplot.R md - scripts/
phase_paper/ , Python, 519 lines, 1 matchdnap_class_01_preproc.py - scripts/
phase_paper/ , Python, 233 lines, 1 matchdnap_class_02_read-in_co mplex.py - scripts/
phase_paper/ , Python, 956 linesdnap_class_03_phase_same -rand.py - scripts/
phase_paper/ , Python, 1,032 lines, 1 matchdnap_class_04_phase_same -sim.py - scripts/
phase_paper/ , Python, 828 linesdnap_class_05_phase_L-to -IR.py - scripts/
phase_paper/ , Python, 307 linesdnap_class_06_phase_L-to -IR_rand-perms.py - scripts/
phase_paper/ , Python, 1,179 linesdnap_class_07_phase_L-to -IR_graphs.py - scripts/
phase_paper/ , Python, 154 linesdnap_class_08_phase_L-to -IR_export.py - scripts/
phase_paper/ , Python, 789 linesdnap_class_09_phase_IR-t o-DR.py - scripts/
phase_paper/ , Python, 272 linesdnap_class_10_phase_IR-t o-DR_rand-perms.py - scripts/
phase_paper/ , Python, 1,034 linesdnap_class_11_phase_IR-t o-DR_graphs.py - scripts/
phase_paper/ , Python, 153 linesdnap_class_12_phase_IR-t o-DR_export.py - scripts/
phase_paper/ , R, 78 linesdnap_class_13_make_L-IR_ df.Rmd - scripts/
phase_paper/ , R, 84 linesdnap_class_14_make_IR-DR _df.Rmd - scripts/
phase_paper/ , R, 722 lines, 4 matchesdnap_class_15_L-IR-DR_mo dels.Rmd - scripts/
phase_paper/ , Python, 577 linesdnap_class_16_phase_IR-t o-DR_items.py - scripts/
phase_paper/ , Python, 241 linesdnap_class_17_phase_IR-t o-DR_rand-perms_items.py - scripts/
phase_paper/ , Python, 187 linesdnap_class_18_phase_IR-t o-DR_graphs_items.py - scripts/
phase_paper/ , Python, 208 linesdnap_class_19_phase_IR-t o-DR_export_items.py - scripts/
phase_paper/ , R, 100 linesdnap_class_20_make_IR-to -DR_df_items.Rmd - scripts/
phase_paper/ , R, 155 lines, 1 matchdnap_class_21_IR-DR_mode ls_items.Rmd - scripts/
phase_paper/ , Python, 680 linesdnap_class_22_preproc_av g.py - scripts/
phase_paper/ , Python, 235 lines, 1 matchdnap_class_23_read-in_co mplex_avg.py - scripts/
phase_paper/ , Python, 849 lines, 1 matchdnap_class_24_phase_same -rand_avg.py - scripts/
phase_paper/ , Python, 1,017 linesdnap_class_25_phase_same -sim_avg.py - scripts/
phase_paper/ , Python, 828 linesdnap_class_26_phase_L-to -IR_avg.py - scripts/
phase_paper/ , Python, 302 linesdnap_class_27_phase_L-to -IR_rand-perms_avg.py - scripts/
phase_paper/ , Python, 1,178 linesdnap_class_28_phase_L-to -IR_graphs_avg.py - scripts/
phase_paper/ , Python, 789 linesdnap_class_29_phase_IR-t o-DR_avg.py - scripts/
phase_paper/ , Python, 272 linesdnap_class_30_phase_IR-t o-DR_rand-perms_avg.py - scripts/
phase_paper/ , Python, 810 linesdnap_class_31_phase_IR-t o-DR_graphs_avg.py - scripts/
phase_paper/ , Python, 301 lines, 2 matchesdnap_class_32_source_rec onstruction.py - scripts/
phase_paper/ , Python, 579 lines, 2 matchesdnap_class_33_phase_itpc _source.py - scripts/
phase_paper/ , Python, 884 linesdnap_class_34_phase_L-to -IR_source.py - scripts/
phase_paper/ , Python, 398 linesdnap_class_35_phase_L-to -IR_rand-perms_source.py - scripts/
phase_paper/ , Python, 476 lines, 1 matchdnap_class_36_phase_L-to -IR_graphs_source.py - scripts/
phase_paper/ , Python, 844 linesdnap_class_37_phase_IR-t o-DR_source.py - scripts/
phase_paper/ , Python, 257 linesdnap_class_38_phase_IR-t o-DR_rand-perms_source.p y - scripts/
phase_paper/ , Python, 517 linesdnap_class_39_phase_IR-t o-DR_graphs_source.py - scripts/
sigma_paper/ , Python, 448 lines01_dnap_sigma_preproc.py - scripts/
sigma_paper/ , Python, 109 lines02_dnap_sigma_iaf.py - scripts/
sigma_paper/ , Python, 376 lines03_dnap_sigma_tfr.py - scripts/
sigma_paper/ , Python, 357 lines, 1 match04_dnap_sigma_sleep-yasa .py - scripts/
sigma_paper/ , R, 509 lines05_dnap_sigma_make_df.Rm d - scripts/
sigma_paper/ , R, 732 lines06_dnap_sigma_analysis.R md - README.txt, Text, 58 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:
- 1 repository of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 51 scripts, each with its path and the digest of its content;
- 16 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 and Code Availability
The data and code used to produce all reported analyses are publicly available on Open Science Framework: 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, 27 September 2026: the first record
Recorded: type, language, journal, volume, pages, dates, 5 authors, 6 keywords, 118 references.
Cite
This paper
Caldwell, H. B., Chatburn, A., Lushington, K., Hanslmayr, S., & Michelmann, S. (2026). Phase similarity between similar objects indicates representational merging across retrieval training but not sleep. Imaging neuroscience (Cambridge, Mass.), 4, IMAG.a.1321. https://
BibTeX
@article{caldwell2026pha
author = {Caldwell, Hayley Bree and Chatburn, Alex and Lushington, Kurt and Hanslmayr, Simon and Michelmann, Sebastian},
title = {{Phase similarity between similar objects indicates representational merging across retrieval training but not sleep}},
journal = {Imaging neuroscience (Cambridge, Mass.)},
year = {2026},
month = jul,
volume = {4},
pages = {IMAG.a.1321},
publisher = {MIT Press},
issn = {2837-6056},
doi = {10.1162/
url = {https://
pmid = {42549201},
pmcid = {PMC13430988}
}
RIS
TY - JOUR
AU - Caldwell, Hayley Bree
AU - Chatburn, Alex
AU - Lushington, Kurt
AU - Hanslmayr, Simon
AU - Michelmann, Sebastian
TI - Phase similarity between similar objects indicates representational merging across retrieval training but not sleep
T2 - Imaging neuroscience (Cambridge, Mass.)
J2 - Imaging Neurosci (Camb)
PY - 2026
DA - 2026/
VL - 4
SP - IMAG.a.1321
SN - 2837-6056
PB - MIT Press
DO - 10.1162/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1162/
"type": "article-journal",
"title": "Phase similarity between similar objects indicates representational merging across retrieval training but not sleep",
"container-title": "Imaging neuroscience (Cambridge, Mass.)",
"author": [
{
"family": "Caldwell",
"given": "Hayley Bree"
},
{
"family": "Chatburn",
"given": "Alex"
},
{
"family": "Lushington",
"given": "Kurt"
},
{
"family": "Hanslmayr",
"given": "Simon"
},
{
"family": "Michelmann",
"given": "Sebastian"
}
],
"container-title-short":
"volume": "4",
"page": "IMAG.a.1321",
"DOI": "10.1162/
"PMID": "42549201",
"PMCID": "PMC13430988",
"ISSN": "2837-6056",
"publisher": "MIT Press",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
7,
31
]
]
}
}
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.1093/nc/niag029 [code]
- A data-driven approach to identifying and evaluating connectivity-based neural correlates of conscious visual perception.Journal: Neuroscience of consciousnessIn common: autoreject, Pingouin, easystats, 15 other tools, cognitive, 2 references
- [2] doi:10.1038/s41597-026-07350-9 [code]
- An open multi-center MEG-EEG dataset for studying conscious visual perception.Journal: Scientific dataIn common: autoreject, Pingouin, easystats, 13 other tools, EEG
- [3] doi:10.1016/j.isci.2026.116586 [code]
- Condition-specific neural signatures of reactivation during post-retrieval rest: An EEG study.Journal: iScienceIn common: MNE-Python, seaborn, scikit-learn, 4 other tools, EEG, cognitive, 8 references
- [4] doi:10.1038/s41597-026-07377-y [code]
- An open-access multi-site fMRI dataset for investigating conscious visual perception.Journal: Scientific dataIn common: autoreject, Pingouin, easystats, 13 other tools
- [5] doi:10.1162/imag.a.1245 [code]
- Towards precision EEG connectomics: Evaluating the benefits of dense sampling.Journal: Imaging neuroscience (Cambridge, Mass.)In common: autoreject, Pingouin, rstatix, 12 other tools, EEG
- [6] doi:10.1093/cercor/bhag113 [code]
- Long-term reliability and stability of parameterized resting state EEG: evidence from a five-year follow-up.Journal: Cerebral cortex (New York, N.Y. : 1991)In common: easystats, broom, emmeans, 11 other tools, EEG, 2 references
- [7] doi:10.1038/s41467-026-74824-0 [code]
- Learning regularities in noise engages both neural predictive activity and representational changes.Journal: Nature communicationsIn common: autoreject, Pingouin, easystats, 10 other tools, cognitive, 2 references
- [8] doi:10.1038/s41598-026-41129-7 [code]
- Non-linear relationships between auditory mismatch responses and the inharmonicity of complex sounds.Journal: Scientific reportsIn common: autoreject, broom, emmeans, 9 other tools, EEG, cognitive, 3 references
- [9] doi:10.34133/csbj.0042 [code]
- Using Steady-State Visual Evoked Potentials to Characterize Wide-Ranging Retinopathy Linked to &
lt;i& gt;CRB1& lt;/ i& gt;: Implications for Clinical Trials. Journal: Computational and structural biotechnology journalIn common: Pingouin, easystats, car, 12 other tools, EEG - [10] doi:10.1073/pnas.2603114123 [code]
- The human hippocampus can pattern separate memories by meaning.Journal: Proceedings of the National Academy of Sciences of the United States of AmericaIn common: rstatix, easystats, broom, 10 other tools, cognitive, 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.
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: 1 repository of the authors' code, each at its verified commit and with its license, 51 scripts, and 16 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:b94d3ceac1899233…
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
[.
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.
