OSCR

Long-term memory reorganization of navigational episodes.

Code ↔ Paper

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

The 5 matches
  1. [1] § Methods › Statistical analysis ↔ Analysis/OSF_BZT_retro_correlation_regression_models_171125.R, lines 264–330 · score 0.69 · 6–10000, pairwise contrasts, pairwise comparisons, cross, slopes, regression
  2. [2] § Methods › Statistical analysis ↔ Analysis/OSF_BZT_retro_ebbinghaus_simulation_171125.R, lines 130–204 · score 0.61 · Post hoc, SS, marginal, residual, sum, prediction
  3. [3] § Results › Memory of real-world navigational episodes also depends on time-independent factors ↔ Analysis/OSF_BZT_retro_generalized_additive_model_161125.R, lines 46–115 · score 0.60 · generalized additive model, zoo visitors, education, GAM, age, target placement
  4. [4] § Methods › Statistical analysis ↔ Analysis/OSF_BZT_retro_ebbinghaus_simulation_171125.R, lines 130–204 · score 0.55 · post hoc, simulated, marginal, Ebbinghaus, minutes, pairwise
  5. [5] § Results › Memory of real-world navigational episodes transforms nonlinearly across decades ↔ Analysis/OSF_BZT_retro_correlation_regression_models_171125.R, lines 264–330 · score 0.51 · regression models, Pairwise comparisons, slopes, fitting, power, zoo visit

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 · 444 lines · 17 KB · no license · 2 matches

  1. # ------------------------------------------------------------------------------
  2. # :::::::::::: libraries :::::::::::::::::::::::::::::::::::::::::::::::::::::::
  3. # ------------------------------------------------------------------------------
  4. # data
  5. library(readxl)
  6. library(officer)
  7. library(tidyverse)
  8. # statistic
  9. library(effectsize)
  10. library(emmeans)
  11. library(rstatix)
  12. library(diffcor)
  13. # Model
  14. library(afex)
  15. library(splines)
  16. library(mgcv)
  17. # ------------------------------------------------------------------------------
  18. # :::::::::::::::::::::::: Read in Data ::::::::::::::::::::::::::::::::::::::::
  19. # ------------------------------------------------------------------------------
  20. # questionnaire
  21. qn_zVisit <- read_excel("C:/.../OSF_BZT_retro_zooVisit_data.xlsx", col_names = TRUE)
  22. # Target placement data
  23. data_distance <- read_excel("C:/.../OSF_BZT_retro_targetPlacement_accuracyScore_data.xlsx", col_names = TRUE)
  24. # Direction-Pointing data (without North)
  25. data_deviation <- read_excel("C:/..../OSF_BZT_retro_directionPointing_data.xlsx", col_names = TRUE)
  26. # ------------------------------------------------------------------------------
  27. # ::::::::::::::::::::: Data preparation :::::::::::::::::::::::::::::::::::::::
  28. # ------------------------------------------------------------------------------
  29. # aggregate experimental data per id and group
  30. data_dist <- data_distance %>% group_by(id,zooVisit) %>% summarise(
  31. zscore_dist = mean(z_as*-1,na.rm = TRUE), .groups = "drop")
  32. data_dist$id <- as.double(data_dist$id)
  33. data_dev <- data_deviation %>% group_by(id, zooVisit) %>% summarise(
  34. zscore_dev_b = mean(deviation_zscore_pointing_arrow, na.rm = TRUE),
  35. zscore_dev_ub = mean(deviation_zscore_pointing_video, na.rm = TRUE),
  36. .groups = "drop")
  37. # Merge datasets
  38. data_merged <- reduce(list(qn_zVisit, data_dev, data_dist), full_join, by = c("id", "zooVisit"))
  39. # select data
  40. data_visitor <- subset(data_merged, data_merged$zooVisit==1) # subset zoo-visitor
  41. # ------------------------------------------------------------------------------
  42. # :::::::::::::::::::: Pairwise Correlation & correlation matrix :::::::::::::::
  43. # ------------------------------------------------------------------------------
  44. # pairwise correlations
  45. # direction-pointing with arrow vs. direction-pointing with video
  46. cor_devb_devub <- cor.test(data_visitor$zscore_dev_b,data_visitor$zscore_dev_ub,
  47. method=c( "spearman"))
  48. # target placement vs. direction-pointing with video
  49. cor_dist_devub <- cor.test(data_visitor$zscore_dev_ub,data_visitor$zscore_dist,
  50. method=c( "spearman"))
  51. # target placement vs. direction-pointing with arrow
  52. cor_dist_devb <- cor.test(data_visitor$zscore_dev_b,data_visitor$zscore_dist,
  53. method=c( "spearman"))
  54. # Get correlation matrix
  55. # select data
  56. cor_zooVisit <- data_visitor %>%
  57. dplyr::select(zscore_dev_ub,zscore_dev_b,zscore_dist,time_last_zooVisit_days)
  58. corr.mat <- cor_mat(round(cor_zooVisit), method = "spearman",
  59. alternative = "two.sided", conf.level = 0.95)
  60. corrp.mat <- cor_pmat(round(cor_zooVisit), method = "spearman", conf.level = 0.95)
  61. print(corr.mat)
  62. print(corrp.mat)
  63. # Comparison of correlations
  64. n_obs = 104
  65. # last visit
  66. diffcor.dep(corr.mat$time_last_zooVisit_days[1], corr.mat$time_last_zooVisit_days[2],
  67. cor_devb_devub[["estimate"]][["rho"]], n_obs, cor.names = NULL,
  68. alternative = c( "two.sided"), digit = 3)
  69. diffcor.dep(corr.mat$time_last_zooVisit_days[1], corr.mat$time_last_zooVisit_days[3],
  70. cor_dist_devub[["estimate"]][["rho"]], n_obs, cor.names = NULL,
  71. alternative = c( "two.sided"), digit = 3)
  72. diffcor.dep(corr.mat$time_last_zooVisit_days[3], corr.mat$time_last_zooVisit_days[2],
  73. cor_dist_devb[["estimate"]][["rho"]], n_obs, cor.names = NULL,
  74. alternative = c( "two.sided"), digit = 3)
  75. # ------------------------------------------------------------------------------
  76. # :::::::::::::::::::::: Model memory consolidation ::::::::::::::::::::::::::::
  77. # ------------------------------------------------------------------------------
  78. # ------------------------------------------------------------------------------
  79. # Prepare data for models
  80. # ------------------------------------------------------------------------------
  81. prepare_model_data <- function(df, zscore_var, knots_vec) {
  82. df %>%
  83. dplyr::select(id, zscore = {{zscore_var}}, time_last_zooVisit_days) %>%
  84. na.omit() %>%
  85. list(knots = knots_vec)
  86. }
  87. data_list <- list(
  88. devub = prepare_model_data(data_visitor, zscore_dev_ub, c(180, 2000, 4000, 7500)),
  89. devb = prepare_model_data(data_visitor, zscore_dev_b, c(180, 1000, 2000, 6500)),
  90. dist = prepare_model_data(data_visitor, zscore_dist, c(180, 1000, 4000, 6000))
  91. )
  92. # ------------------------------------------------------------------------------
  93. # LOOCV Function
  94. # ------------------------------------------------------------------------------
  95. run_loocv_models <- function(data, knots) {
  96. models <- list(
  97. linear = function(train) lm(zscore ~ time_last_zooVisit_days, data = train),
  98. log = function(train) lm(zscore ~ log(time_last_zooVisit_days), data = train),
  99. exp = function(train) lm(log(zscore + 2) ~ time_last_zooVisit_days, data = train),
  100. power = function(train) lm(log(zscore + 2) ~ log(time_last_zooVisit_days), data = train),
  101. quadratic = function(train) lm(zscore ~ poly(time_last_zooVisit_days, 2, raw = TRUE), data = train),
  102. cubic = function(train) lm(zscore ~ poly(time_last_zooVisit_days, 3, raw = TRUE), data = train),
  103. spline = function(train) lm(zscore ~ bs(time_last_zooVisit_days, knots = knots), data = train),
  104. gam = function(train) gam(zscore ~ s(time_last_zooVisit_days), data = train)
  105. )
  106. evaluate_model <- function(model_name, model_fun) {
  107. fit_full <- tryCatch(model_fun(data), error = function(e) NULL)
  108. loocv_errors <- sapply(1:nrow(data), function(i) {
  109. test <- data[i, ]
  110. train <- data[-i, ]
  111. fit <- tryCatch(model_fun(train), error = function(e) NULL)
  112. if (is.null(fit)) return(NA)
  113. pred <- tryCatch(predict(fit, newdata = test), error = function(e) NA)
  114. if (is.na(pred)) return(NA)
  115. pred_adj <- if (model_name %in% c("exp", "power")) exp(pred) - 2 else pred
  116. (pred_adj - test$zscore)^2
  117. })
  118. mse <- mean(loocv_errors, na.rm = TRUE)
  119. rmse <- sqrt(mse)
  120. residuals <- tryCatch({
  121. full_pred <- predict(fit_full)
  122. full_pred_adj <- if (model_name %in% c("exp", "power")) exp(full_pred) - 2 else full_pred
  123. full_pred_adj - data$zscore
  124. }, error = function(e) rep(NA, nrow(data)))
  125. rse <- sqrt(mean(residuals^2, na.rm = TRUE))
  126. mod_summary <- tryCatch(summary(fit_full), error = function(e) NULL)
  127. r2 <- if (!is.null(mod_summary)) mod_summary$r.squared else NA
  128. r2_adj <- if (!is.null(mod_summary)) mod_summary$adj.r.squared else NA
  129. fstat <- if (!is.null(mod_summary) && !is.null(mod_summary$fstatistic)) mod_summary$fstatistic else NA
  130. fval <- if (!is.null(fstat)) unname(fstat["value"]) else NA
  131. df1 <- if (!is.null(fstat)) fstat["numdf"] else NA
  132. df2 <- if (!is.null(fstat)) fstat["dendf"] else NA
  133. pval <- if (!is.na(fval) && !is.na(df1) && !is.na(df2)) pf(fval, df1, df2, lower.tail = FALSE) else NA
  134. data.frame(
  135. model = model_name,
  136. AIC = round(tryCatch(AIC(fit_full), error = function(e) NA), 4),
  137. BIC = round(tryCatch(BIC(fit_full), error = function(e) NA), 4),
  138. RSE = round(rse, 4),
  139. MSE = round(mse, 4),
  140. RMSE = round(rmse, 4),
  141. R2 = if (!is.null(r2) && is.numeric(r2)) round(r2, 4) else NA,
  142. R2_adj = if (!is.null(r2_adj) && is.numeric(r2_adj)) round(r2_adj, 4) else NA,
  143. F_value = round(fval, 4),
  144. p_value = signif(pval, 4)
  145. )
  146. }
  147. results <- do.call(rbind, Map(evaluate_model, names(models), models))
  148. return(results)
  149. }
  150. # ------------------------------------------------------------------------------
  151. # run datasets
  152. # ------------------------------------------------------------------------------
  153. results_dist <- run_loocv_models(data_list$dist[[1]], data_list$dist$knots)
  154. results_dev_b <- run_loocv_models(data_list$devb[[1]], data_list$devb$knots)
  155. results_dev_ub <- run_loocv_models(data_list$devub[[1]], data_list$devub$knots)
  156. # ------------------------------------------------------------------------------
  157. # Results
  158. # ------------------------------------------------------------------------------
  159. # Combined results
  160. all_results <- rbind(results_dist, results_dev_b, results_dev_ub)
  161. print(all_results)
  162. # ------------------------------------------------------------------------------
  163. # ::::::::::: Get best model according to AIC ::::::::::::::::::::::::::::::::::
  164. # ------------------------------------------------------------------------------
  165. # Best model AIC
  166. best_aic_dist <- results_dist[which.min(results_dist$AIC), ]
  167. best_aic_dev_b <- results_dev_b[which.min(results_dev_b$AIC), ]
  168. best_aic_dev_ub <- results_dev_ub[which.min(results_dev_ub$AIC), ]
  169. print(best_aic_dist)
  170. print(best_aic_dev_b)
  171. print(best_aic_dev_ub)
  172. # ------------------------------------------------------------------------------
  173. # Addition: generalize additive model (for R2 and test statistic)
  174. # ------------------------------------------------------------------------------
  175. gam_devub.fit <- gam((data_visitor$zscore_dev_ub) ~ s(data_visitor$time_last_zooVisit_days))
  176. summary(gam_devub.fit)
  177. print(gam_devub.fit)
  178. gam_devb.fit <- gam((data_visitor$zscore_dev_b) ~ s(data_visitor$time_last_zooVisit_days))
  179. summary(gam_devb.fit)
  180. print(gam_devb.fit)
  181. gam_dist.fit <- gam((data_visitor$zscore_dist) ~ s(data_visitor$time_last_zooVisit_days))
  182. summary(gam_dist.fit)
  183. print(gam_dist.fit)
  184. # ------------------------------------------------------------------------------
  185. # :::::::::::::::: Task comparison per model :::::::::::::::::::::::::::::::::::
  186. # ------------------------------------------------------------------------------
  187. # Reshape data for comparison
  188. data_visitor_response <- pivot_longer(data_visitor,
  189. cols = c('zscore_dist', 'zscore_dev_ub', 'zscore_dev_b'),
  190. names_to = 'task',
  191. values_to = 'response')
  192. # Prepare the data for modeling
  193. data_visitor_allTasks <- data_visitor_response %>% dplyr::select( id, response,
  194. task, time_last_zooVisit_days)
  195. data_visitor_allTasks <- na.omit(data_visitor_allTasks)
  196. # ------------------------------------------------------------------------------
  197. # Fit models
  198. # ------------------------------------------------------------------------------
  199. # Power-transformed model
  200. power_all.fit <- lm(log(response + 2) ~ task * log(time_last_zooVisit_days), data = data_visitor_allTasks)
  201. anova_power <- anova(power_all.fit)
  202. omega_squared(power_all.fit, partial = FALSE)
  203. anova_power
  204. # ------------------------------------------------------------------------------
  205. # Trends per task
  206. # ------------------------------------------------------------------------------
  207. decay_rates <- emtrends( power_all.fit,specs = ~ task,var = "log(time_last_zooVisit_days)")
  208. decay_sum <- summary(decay_rates)
  209. decay_sum <- decay_sum %>%
  210. mutate(
  211. estimate = `log(time_last_zooVisit_days).trend`,
  212. t_value = estimate / SE,
  213. p_value = 2 * pt(abs(t_value), df, lower.tail = FALSE),
  214. r_effect = sqrt((t_value^2) / (t_value^2 + df))
  215. )
  216. decay_sum
  217. # ------------------------------------------------------------------------------
  218. # Comparison of slopes
  219. # ------------------------------------------------------------------------------
  220. # compare pairs of regression curves
  221. emtrends_power <- pairs(emtrends(power_all.fit,specs=pairwise~task,var="time_last_zooVisit_days"))
  222. # Pairwise comparison of slopes
  223. pairs_slopes <- pairs(emtrends_power)
  224. print(pairs_slopes)
  225. # ------------------------------------------------------------------------------
  226. # ::::::::::::: pairwise contrasts between tasks :::::::::::::::::::::::::::::::
  227. # ------------------------------------------------------------------------------
  228. # Define time grid (every 10 days from 6 to 10,000)
  229. time_points <- seq(6, 10000, by = 10)
  230. # Define levels
  231. tasks <- levels(data_visitor_allTasks$task)
  232. # Data with timepoint and task
  233. newdata <- expand.grid(
  234. time_last_zooVisit_days = time_points,
  235. task = tasks
  236. )
  237. newdata$log_time <- log(newdata$time_last_zooVisit_days)
  238. # Emmeans per combination
  239. emm_list <- emmeans(
  240. object = power_all.fit,
  241. specs = ~ task | time_last_zooVisit_days,
  242. at = list(time_last_zooVisit_days = time_points)
  243. )
  244. # Pairwise contrasts per timepoint
  245. contrast_results <- summary(pairs(emm_list), infer = TRUE)
  246. # Prepare dataframe and extract timepoints
  247. all_results <- as.data.frame(contrast_results) %>%
  248. mutate(
  249. time_last_zooVisit_days = as.numeric(as.character(time_last_zooVisit_days))
  250. )
  251. # Filter for significant contrasts
  252. significant_results <- all_results %>%
  253. filter(p.value < 0.05)
  254. # For each contrast, identify the earliest day from which it remains significant
  255. significant_summary <- significant_results %>%
  256. group_by(contrast) %>%
  257. summarise(
  258. first_signif_day = min(time_last_zooVisit_days),
  259. last_signif_day = max(time_last_zooVisit_days)
  260. )
  261. print(significant_summary)
  262. # Output
  263. print(significant_results[, c("time_last_zooVisit_days", "contrast", "estimate", "p.value")])
  264. # ------------------------------------------------------------------------------
  265. # Crossing mean of control group (zoo-naive)
  266. # ------------------------------------------------------------------------------
  267. # Mean & SD (Attention: lower value => upper SD)
  268. calculate_mean_and_upper_sd <- function(data, zscore_col, group_var) {
  269. mean_val <- mean(data[[zscore_col]][data[[group_var]] == 2], na.rm = TRUE)
  270. sd_val <- sd(data[[zscore_col]][data[[group_var]] == 2], na.rm = TRUE)
  271. upper_sd_val <- mean_val - sd_val # Attention
  272. return(list(mean = mean_val, upper_sd = upper_sd_val))
  273. }
  274. # z-scores
  275. zscore_vars <- c("zscore_dev_ub", "zscore_dev_b", "zscore_dist")
  276. result_list <- list()
  277. # run function
  278. for (zscore_var in zscore_vars) {
  279. result_list[[zscore_var]] <- calculate_mean_and_upper_sd(data_merged, zscore_var, "zooVisit")
  280. }
  281. # ------------------------------------------------------------------------------
  282. # Power-Regressions per z-score
  283. # ------------------------------------------------------------------------------
  284. calculate_time_values <- function(data, zscore_col, mean_value, upper_sd_value) {
  285. # Power Regression
  286. power_fit <- lm(log(get(zscore_col) + 2) ~ log(time_last_zooVisit_days), data = data)
  287. # Coefficients
  288. beta_0 <- coef(power_fit)[1]
  289. beta_1 <- coef(power_fit)[2]
  290. # How many days to reach mean of control group
  291. time_for_mean <- exp((log(mean_value + 2) - beta_0) / beta_1)
  292. # How many days to reach SD of control group
  293. time_for_upper_sd <- exp((log(upper_sd_value + 2) - beta_0) / beta_1)
  294. # years
  295. time_for_mean_years <- time_for_mean / 365
  296. time_for_upper_sd_years <- time_for_upper_sd / 365
  297. # Return list of results
  298. return(list(
  299. beta_0 = beta_0,
  300. beta_1 = beta_1,
  301. time_for_mean_days = time_for_mean,
  302. time_for_upper_sd_days = time_for_upper_sd,
  303. time_for_mean_years = time_for_mean_years,
  304. time_for_upper_sd_years = time_for_upper_sd_years
  305. ))
  306. }
  307. # calculation per z-score
  308. time_values_list <- list()
  309. # run datasets
  310. for (zscore_var in zscore_vars) {
  311. time_values_list[[zscore_var]] <- calculate_time_values(data_visitor, zscore_var,
  312. result_list[[zscore_var]]$mean,
  313. result_list[[zscore_var]]$upper_sd)
  314. }
  315. # Results
  316. time_values_list
  317. # ------------------------------------------------------------------------------
  318. # Get values for three decades per equation/ z-score
  319. # ------------------------------------------------------------------------------
  320. # get list of timepoints
  321. timepoint_list <- list(time_last_zooVisit_days = seq(0.1, 365 * 30, by = 365 / 4))
  322. # get list of variables
  323. zscore_columns <- c("zscore_dev_ub", "zscore_dev_b", "zscore_dist")
  324. # table of results
  325. result_table <- data.frame(
  326. time_last_zooVisit_days = timepoint_list$time_last_zooVisit_days,
  327. zscore_dev_ub = NA,
  328. zscore_dev_b = NA,
  329. zscore_dist = NA
  330. )
  331. # get results per z-score
  332. for (i in 1:length(zscore_columns)) {
  333. zscore_col <- zscore_columns[i]
  334. # Fit model
  335. power.fit <- lm(log(get(zscore_col) + 2) ~ log(time_last_zooVisit_days), data = data_visitor)
  336. # calculate estimated means
  337. emmeans_result <- emmeans(power.fit, ~ time_last_zooVisit_days, at = timepoint_list)
  338. # get mean and upper and lower CL
  339. summary_result <- summary(emmeans_result)
  340. # table
  341. result_table[[zscore_col]] <- paste(
  342. round(summary_result$emmean, 3),
  343. "(",
  344. round(summary_result$lower.CL, 3),
  345. "-",
  346. round(summary_result$upper.CL, 3),
  347. ")"
  348. )
  349. }
  350. # prepare word document
  351. doc <- read_docx()
  352. doc <- doc %>%
  353. body_add_table(value = result_table, style = "table_template")
  354. print(doc, target = "OSF_BZT_retro_zscore_results_30years.docx")

OSF_BZT_retro_correlation_regression_models_171125.R, no license · at the source

Overview

Authors: Deetje Iggena1,2,3, Thereza Schmelter4, Patrizia M. Maier1,2, Khaled Reguieg4, Carsten Finke1,2, Kristian Hildebrand4, Christoph J. Ploner1
  1. Department of Neurology, Charité-Universitätsmedizin Berlin,Berlin, Germany
  2. Berlin School of Mind and Brain, Humboldt-Universität zu Berlin,Berlin, Germany
  3. Berlin Institute of Health at Charité-Universitätsmedizin Berlin,Berlin, Germany
  4. Berlin University of Applied Sciences,Berlin, Germany
Journal: Nature human behaviour, volume 10, issue 7, pages 1327-1339
Dates: received 10 April 2025; accepted 9 April 2026; published online 18 May 2026; in print 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1038/s41562-026-02472-x · PMID 42151554 · PMCID PMC13388105 · OpenAlex W4409125915
Open access: hybrid, a free copy (OpenAlex)
Status: code verified
Categories: human (organism), cognitive (subfield)
Methods: Statistics, Machine learning, Preprocessing, Connectivity, Physiology & signal measures
Keywords: Cognitive neuroscience, Spatial memory, Human behaviour, Consolidation, Long-term memory
MeSH: Memory, Long-Term*, Spatial Memory*, Spatial Navigation*, Humans (* major topic)
Topic: Intelligent Tutoring Systems and Adaptive Learning (Artificial Intelligence, Computer Science), according to OpenAlex
Citations: not cited yet (Europe PMC); 44 references in the paper

Abstract

During navigation, the brain builds representations of self-motion and of environmental information for future action. The classic view suggests that these representations consolidate and eventually stabilize. However, there are no data on their fate at extended memory delays. Here we investigated memory of real-world navigational episodes across memory delays of up to three decades. We show that memory of the spatial aspects of these episodes do not achieve a stable state but rather continue to transform for many years. Our data suggest that at any given point in time, spatial memory of navigational episodes is a changing combination of episode-independent schematic information and several interacting spatial representations directly related to a navigational episode, which may show distinct temporal trajectories. Consistent with recent accounts of memory reorganization, we further show that neither current theories of systems consolidation nor classic models of forgetting fully explain spatial memory performance at extended memory delays.

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 5 matches between paragraphs and lines of code.

OSF sb65k

License: none: the authors keep all their rights
State: the link answers, verified on 28 September 2026
Evidence: files inventoried
Languages: R (6), MATLAB (2)
Size: 22 files, 8 scripts
Software Heritage: not checked
Found in: “Code availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: tidyverse (6 files), easystats (4 files), emmeans (4 files), rstatix (3 files), mgcv (2 files), afex (1 file), cowplot (1 file), ggplot2 (1 file), Statistics and Machine Learning Toolbox (1 file)
Availability: 1 check, the latest on 28 September 2026: the link answers (HTTP 200)
  • 28 September 2026: the link answers (HTTP 200)
8 files
At the source: osf.io/sb65k/

Code availability

The R and MATLAB code of this study are available via OSF at https://osf.io/sb65k/.

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

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;
  • 8 scripts, each with its path and the digest of its content;
  • 5 matches between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

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

Data

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

Data availability

The data and R code of this study are available via OSF at https://osf.io/sb65k/.

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 2, 28 September 2026

  • Publisher: n/a → Nature Portfolio

Version 1, 28 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 7 authors, 5 keywords, 4 MeSH terms, 3 funders, 42 references.

Cite

This paper

Iggena, D., Schmelter, T., Maier, P. M., Reguieg, K., Finke, C., Hildebrand, K., & Ploner, C. J. (2026). Long-term memory reorganization of navigational episodes. Nature human behaviour, 10(7), 1327-1339. https://doi.org/10.1038/s41562-026-02472-x

BibTeX

@article{iggena2026long,
author = {Iggena, Deetje and Schmelter, Thereza and Maier, Patrizia M. and Reguieg, Khaled and Finke, Carsten and Hildebrand, Kristian and Ploner, Christoph J.},
title = {{Long-term memory reorganization of navigational episodes}},
journal = {Nature human behaviour},
year = {2026},
month = may,
volume = {10},
number = {7},
pages = {1327--1339},
publisher = {Nature Portfolio},
issn = {2397-3374},
doi = {10.1038/s41562-026-02472-x},
url = {https://doi.org/10.1038/s41562-026-02472-x},
pmid = {42151554},
pmcid = {PMC13388105}
}

RIS

TY - JOUR
AU - Iggena, Deetje
AU - Schmelter, Thereza
AU - Maier, Patrizia M.
AU - Reguieg, Khaled
AU - Finke, Carsten
AU - Hildebrand, Kristian
AU - Ploner, Christoph J.
TI - Long-term memory reorganization of navigational episodes
T2 - Nature human behaviour
J2 - Nat Hum Behav
PY - 2026
DA - 2026/05/18
VL - 10
IS - 7
SP - 1327
EP - 1339
SN - 2397-3374
PB - Nature Portfolio
DO - 10.1038/s41562-026-02472-x
UR - https://doi.org/10.1038/s41562-026-02472-x
LA - en
ER -

CSL-JSON

{
"id": "10.1038/s41562-026-02472-x",
"type": "article-journal",
"title": "Long-term memory reorganization of navigational episodes",
"container-title": "Nature human behaviour",
"author": [
{
"family": "Iggena",
"given": "Deetje"
},
{
"family": "Schmelter",
"given": "Thereza"
},
{
"family": "Maier",
"given": "Patrizia M."
},
{
"family": "Reguieg",
"given": "Khaled"
},
{
"family": "Finke",
"given": "Carsten"
},
{
"family": "Hildebrand",
"given": "Kristian"
},
{
"family": "Ploner",
"given": "Christoph J."
}
],
"container-title-short": "Nat Hum Behav",
"volume": "10",
"issue": "7",
"page": "1327-1339",
"DOI": "10.1038/s41562-026-02472-x",
"PMID": "42151554",
"PMCID": "PMC13388105",
"ISSN": "2397-3374",
"publisher": "Nature Portfolio",
"URL": "https://doi.org/10.1038/s41562-026-02472-x",
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
18
]
]
}
}

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/braincomms/fcag255 [code]
Impaired consolidation of spatial memory during sleep in patients with leucine-rich glioma-inactivated 1-associated limbic encephalitis.
Journal: Brain communications
In common: afex, rstatix, emmeans, 2 other tools, cognitive, 1 reference, author Carsten Finke
[2] doi:10.1111/psyp.70265 [code]
Neurocognitive Dynamics of Translating Information From a Spatial Map Into Action.
Journal: Psychophysiology
In common: mgcv, easystats, emmeans, 4 other tools, cognitive, 1 reference
[3] doi:10.1162/imag.a.1313 [code]
Functional specialization of angular gyrus and precuneus subregions for perspective-guided autobiographical memory retrieval.
Journal: Imaging neuroscience (Cambridge, Mass.)
In common: afex, easystats, emmeans, 2 other tools, cognitive, 2 references
[4] 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 consciousness
In common: afex, easystats, emmeans, 4 other tools, cognitive
[5] doi:10.1126/sciadv.aec9291 [code]
Computational mechanisms of perception in autism revealed using games inspired by rodent operant tasks.
Journal: Science advances
In common: afex, rstatix, easystats, 3 other tools, cognitive
[6] 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 America
In common: afex, rstatix, easystats, 3 other tools, cognitive
[7] doi:10.1016/j.isci.2026.116047 [code]
Deciding to simulate: Cognitive mechanisms of predicting the decisions of others.
Journal: iScience
In common: afex, rstatix, easystats, 3 other tools, cognitive
[8] 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 science
In common: afex, rstatix, easystats, 3 other tools, cognitive
[9] doi:10.1371/journal.pbio.3003767 [code]
Ultrasound neuromodulation reveals distinct roles of the dorsal anterior cingulate cortex and anterior insula in learning.
Journal: PLoS biology
In common: afex, mgcv, emmeans, 3 other tools, cognitive
[10] doi:10.1371/journal.pone.0355165 [code]
Pupillary dynamics during hands-off L2 driving and transitions of control under high cognitive load.
Journal: PloS one
In common: mgcv, easystats, emmeans, 3 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.

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.