Replay of procedural memory is independent of the hippocampus.
The 19 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 › LFP analysis ↔ preprocessing/LFP_spindle_processing.ipynb, lines 1–125 · score 0.92 · spindle events, Gaussian window, upper threshold, lower threshold, LFP, Hilbert
- [2] § Methods › Video-tracking analysis ↔ preprocessing/predictor_feature_extraction.ipynb, lines 197–264 · score 0.77 · Hausdorff distances, movement variability, Tracking points, radius, trajectories, segmented
- [3] § Methods › LFP analysis ↔ preprocessing/LFP_spindle_processing.ipynb, lines 1–125 · score 0.71 · Event duration, LFP, Hilbert, envelope, Gaussian, peak
- [4] § Methods › Statistical analysis ↔ ED_5/ED5_plots.ipynb, lines 159–259 · score 0.68 · pairwise PERMANOVA, signed rank, posthocs, Bonferroni, Wilcoxon, Shapiro
- [5] § Methods › Statistical analysis ↔ ED_6/ED6_plots.ipynb, lines 505–605 · score 0.68 · pairwise PERMANOVA, signed rank, posthocs, Bonferroni, Wilcoxon, Shapiro
- [6] § Results › DLS is required for a multistep procedural memory task ↔ figure1/Fig1_plots.ipynb, lines 431–485 · score 0.67 · Tukey HSD, way ANOVA, eta squared, variance, Cohen, Boxplots
- [7] § Methods › Statistical analysis ↔ ED_8/Utilities/utils.py, lines 12–69 · score 0.66 · canonical mode, variance explained, bootstrap, redundancy, CCA, component
- [8] § Methods › PP-Seq replay detection ↔ src/PPSeq.jl, lines 43–102 · score 0.66 · collapsed Gibbs sampling, PP Seq, likelihood, posterior, probabilistic, latent
- [9] § Methods › LFP analysis ↔ ED_6/ED6_plots.ipynb, lines 11–79 · score 0.64 · frequency band, spectral power, LFP, transform, spindle, 0.5 Hz
- [10] § Results › DLS is required for a multistep procedural memory task ↔ ED_1/ED1_plots.ipynb, lines 107–170 · score 0.61 · way ANOVA, post hoc, eta squared, Tukey, Cohen, DLS
- [11] § Methods › LFP analysis ↔ ED_5/ED5_plots.ipynb, lines 11–99 · score 0.56 · sleep state, LFP, velocity, ratio, NREM, broadband
- [12] § Results › An unsupervised approach for replay detection ↔ src/PPSeq.jl, lines 43–102 · score 0.55 · collapsed Gibbs sampling, latent events, PP Seq, spikes, model
- [13] § Results › Procedural memory formation and replay are independent of the hippocampus ↔ figure5/Fig5_plots.ipynb, lines 255–332 · score 0.54 · pairwise PERMANOVA, warp factors, Bonferroni, boxplots, permutation, reverse
- [14] § Methods › Tissue processing and image analysis ↔ code/@BT/BT.m, lines 1–47 · score 0.53 · scanImage, BakingTray, wrapper, microscope, serial
- [15] § Results › Procedural memory formation and replay are independent of the hippocampus ↔ ED_5/ED5_plots.ipynb, lines 159–259 · score 0.53 · pairwise PERMANOVA, warp factors, Bonferroni, R2, boxplots, permutation
- [16] § Methods › LFP analysis ↔ preprocessing/predictor_feature_extraction.ipynb, lines 13–121 · score 0.52 · tracking points, noisy, camera, Epochs, split, movement
- [17] § Methods › PP-Seq replay detection ↔ src/model/model.jl, lines 148–198 · score 0.51 · background firing, firing rate, width, log, model, Seq
- [18] § Methods › PP-Seq replay detection ↔ src/utils/config.jl, the whole file · a weak match · score 0.51 · background firing, firing rate, width, spikes, Seq, neuron
- [19] § Methods › Bayesian decoders ↔ preprocessing/PPseq_awake_postprocess.ipynb, lines 312–420 · score 0.50 · tracking position, task space, radius, bins, port, spiking
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
Jupyter notebook · 538 lines · 20 KB · MIT · 3 matches
- # %% [markdown]
- # # import
- # %%
- from Utilities.utils import *
- # Get the current working directory
- current_working_dir = os.path.join(Path(os.getcwd()).parent,'data')
- ED7_data_dict = load_h5(os.path.join(current_working_dir,r"ED7_data.h5"))
- # %% [markdown]
- # # figure A
- # %%
- data= ED7_data_dict['spectrogram_data']
- log_power = data["log_power"]
- frequencies = data["frequencies"]
- times = data["times"]
- t_points_cut = data["t_points_cut"]
- delta_cut = data["delta_cut"]
- theta_r_cut = data["theta_r_cut"]
- average_velocity_cut = data["average_velocity_cut"]
- nrem_spans = data["nrem_spans"]
- rem_spans = data["rem_spans"]
- spectrogram_params = data["spectrogram_params"]
- span_params = data["span_params"]
- # Figure
- fig, [ax, ax1, ax2, ax3] = plt.subplots(4, 1, figsize=(5, 8))
- # --- Spectrogram ---
- im = ax.imshow(
- log_power,
- aspect="auto",
- origin="lower",
- cmap=spectrogram_params["cmap"],
- extent=[
- 0,
- times.max(),
- frequencies.min(),
- frequencies.max()
- ],
- vmin=spectrogram_params["vmin"],
- vmax=spectrogram_params["vmax"]
- )
- ax.set_ylabel("Frequency (Hz)")
- ax.set_xlabel("Time (s)")
- ax.set_title("Spectrogram of LFP Data")
- ax.set_ylim(*spectrogram_params["freq_ylim"])
- # --- Delta ---
- ax1.plot(
- t_points_cut,
- delta_cut / np.std(delta_cut),
- c="k"
- )
- ax1.set_title("blue = NREM | red = REM")
- ax1.set_ylabel("delta power")
- # --- Theta ratio ---
- ax2.plot(
- t_points_cut,
- theta_r_cut / np.std(theta_r_cut),
- c="k"
- )
- ax2.set_ylabel("theta power (relative to broadband)")
- # --- Movement ---
- ax3.plot(
- t_points_cut,
- average_velocity_cut / np.std(average_velocity_cut),
- c="k"
- )
- ax3.set_xlabel("time (10s of seconds)")
- ax3.set_ylabel("movement")
- # --- Sleep state shading ---
- axs = [ax1, ax2, ax3]
- shade_spans(
- axs,
- nrem_spans,
- color=span_params["nrem_color"],
- bin_width=span_params["bin_width"],
- alpha=span_params["alpha"]
- )
- shade_spans(
- axs,
- rem_spans,
- color=span_params["rem_color"],
- bin_width=span_params["bin_width"],
- alpha=span_params["alpha"]
- )
- plt.tight_layout()
- plt.show()
- # %% [markdown]
- # # figure B
- # %%
- nrem_reactivations_per_min = ED7_data_dict['nrem_master']['reactivations_per_min']
- rem_reactivations_per_min = ED7_data_dict['rem_master']['reactivations_per_min']
- # replace nan values with 0
- nrem_reactivations_per_min = [0 if np.isnan(item) else item for item in nrem_reactivations_per_min]
- rem_reactivations_per_min = [0 if np.isnan(item) else item for item in rem_reactivations_per_min]
- ## PLOT
- fig, ax = plt.subplots(figsize=(2, 5))
- ax.plot(np.zeros(len(nrem_reactivations_per_min)), nrem_reactivations_per_min, 'o', color = '#69BD45')
- ax.boxplot(nrem_reactivations_per_min, positions=[0.3], widths=0.1, patch_artist=True, boxprops=dict(facecolor='#69BD45', color='#69BD45'), medianprops=dict(color='#EE7832'))
- ax.plot(np.ones(len(rem_reactivations_per_min)), rem_reactivations_per_min, 'o', color = '#33495C')
- ax.boxplot(rem_reactivations_per_min, positions=[0.7], widths=0.1, patch_artist=True, boxprops=dict(facecolor='#33495C', color='#33495C'), medianprops=dict(color='#EE7832'))
- ax.set_ylabel('Reactivations per minute')
- ax.set_title('nrem vs rem')
- ## STATS
- a = [x for x in nrem_reactivations_per_min if not np.isnan(x)]
- b = [x for x in rem_reactivations_per_min if not np.isnan(x)]
- print(scipy.stats.shapiro(a))
- print(scipy.stats.shapiro(b))
- # p is not greater than 0.05 for both, so we reject the null hypothesis that the data is normally distributed
- # non parametric t test, using scipy Wilcoxon Rank-Sum test
- print(scipy.stats.wilcoxon(a, b))
- effect_size(x=a, y=b, test='wilcoxon')
- # %% [markdown]
- # # figure C
- # %%
- nrem_event_lens = ED7_data_dict['nrem_master']['event_lens']
- rem_event_lens = ED7_data_dict['rem_master']['event_lens']
- nrem_event_lens = [np.nanmean(item) for item in nrem_event_lens]
- rem_event_lens = [np.nanmean(item) for item in rem_event_lens]
- ### PLOT
- fig, ax = plt.subplots(figsize=(2, 5))
- ax.plot(np.zeros(len(nrem_event_lens)), nrem_event_lens, 'o', color = '#69BD45')
- ax.boxplot(nrem_event_lens, positions=[0.3], widths=0.1, patch_artist=True, boxprops=dict(facecolor='#69BD45', color='#69BD45'), medianprops=dict(color='#EE7832'))
- ax.plot(np.ones(len(rem_event_lens)), rem_event_lens, 'o', color = '#32495C')
- ax.boxplot([x for x in rem_event_lens if not np.isnan(x)], positions=[0.7], widths=0.1, patch_artist=True, boxprops=dict(facecolor='#32495C', color='#32495C'), medianprops=dict(color='#EE7832'))
- ax.set_ylabel('Reactivations event lengths (s)')
- ax.set_title('nrem vs rem')
- ### STATS
- a = [x for x in nrem_event_lens if not np.isnan(x)]
- b = [x for x in rem_event_lens if not np.isnan(x)]
- print(scipy.stats.shapiro(a))
- print(scipy.stats.shapiro(b))
- # p is greater than 0.05 for both, so we fail to reject the null hypothesis that the data is normally distributed
- print(scipy.stats.wilcoxon(nrem_event_lens, rem_event_lens,nan_policy='omit'))
- print(effect_size(x=nrem_event_lens, y=rem_event_lens, test='wilcoxon'))
- # %% [markdown]
- # # figure D
- # %%
- bins_ = [0.1, 0.2, 1,2, 5, 10,20,40]
- animals_list = ED7_data_dict['nrem_master']['animals']
- nrem_f_warp_factors, nrem_r_warp_factors, nrem_forward_total, nrem_reverse_total = extract_mean_warps(pd.DataFrame(ED7_data_dict['nrem_master']['regression']), bins_,animals_list)
- nrem_proportion_forward_v_reverse = np.array(nrem_forward_total)/np.array(nrem_reverse_total)
- rem_f_warp_factors, rem_r_warp_factors, rem_forward_total, rem_reverse_total = extract_mean_warps(pd.DataFrame(ED7_data_dict['rem_master']['regression']), bins_,animals_list)
- rem_proportion_forward_v_reverse = np.array(rem_forward_total)/np.array(rem_reverse_total)
- ############################################################### PLOT
- fig,ax = plt.subplots(1, 1,figsize=(10, 5))
- color_ = '#69BD45'
- plot_warp_factors(ax, nrem_f_warp_factors, nrem_r_warp_factors, bins_, color_)
- color_ = '#32495C'
- plot_warp_factors(ax, rem_f_warp_factors, rem_r_warp_factors, bins_, color_)
- ax.set_title('nrem vs rem')
- plt.show()
- ## STATS
- print(scipy.stats.shapiro([item for sublist in nrem_f_warp_factors for item in sublist]))
- print(scipy.stats.shapiro([item for sublist in nrem_r_warp_factors for item in sublist]))
- print(scipy.stats.shapiro([item for sublist in rem_f_warp_factors for item in sublist]))
- print(scipy.stats.shapiro([item for sublist in rem_r_warp_factors for item in sublist]))
- print('----------------------------')
- print('permanova - forward reverse')
- print('----------------------------')
- permanova_forward_vs_reverse(nrem_f_warp_factors, nrem_r_warp_factors)
- print('-------------------')
- permanova_forward_vs_reverse(rem_f_warp_factors, rem_r_warp_factors)
- print('----------------------------')
- print('permanova - group differences')
- print('----------------------------')
- # PERMANOVA late vs early diff
- el_grouping = group_difference_permanova(nrem_f_warp_factors, nrem_f_warp_factors, rem_f_warp_factors, rem_f_warp_factors)
- print('----------------------------')
- print('posthoc - group differences')
- print('----------------------------')
- # Combine:
- combined_data = np.vstack([
- np.asarray(nrem_f_warp_factors),
- np.asarray(nrem_r_warp_factors),
- np.asarray(rem_f_warp_factors),
- np.asarray(rem_r_warp_factors)
- ])
- combined_labels = np.array(el_grouping)
- feature_results = pairwise_permanova_by_feature(
- combined_data,
- combined_labels,
- method='bonferroni',
- permutations=10000
- )
- print("Significant feature-wise pairwise PERMANOVA results (α=0.05):")
- for res in feature_results:
- p = res["p_value"]
- if p < 0.05:
- stars = '***' if p < 0.001 else '**' if p < 0.01 else '*'
- print(f"Feature {res['feature']}: {res['group1']} vs {res['group2']}")
- print(f" statistic = {res['test_stat']:.4f}, p (corr.) = {p:.4g} {stars}")
- print(f"R2 = {res['R2']}")
- print("---")
- #### PLOT inset
- fig, ax = plt.subplots(figsize=(2, 4))
- ax.plot(np.zeros(len(nrem_proportion_forward_v_reverse)),nrem_proportion_forward_v_reverse,'o', color = '#69BD45')
- ax.boxplot([x for x in nrem_proportion_forward_v_reverse if not np.isnan(x)], positions=[0.3], widths=0.1, patch_artist=True, boxprops=dict(facecolor='#69BD45', color='#69BD45'), medianprops=dict(color='#EE7832'))
- ax.plot(np.ones(len(rem_proportion_forward_v_reverse)),rem_proportion_forward_v_reverse,'o', color = '#32495C')
- ax.boxplot([x for x in rem_proportion_forward_v_reverse if not np.isnan(x)], positions=[0.7], widths=0.1, patch_artist=True, boxprops=dict(facecolor='#32495C', color='#32495C'), medianprops=dict(color='#EE7832'))
- ax.set_title('nrem vs rem')
- plt.show()
- ### STATS for inset
- print('Inset: Difference from expected ------------------------')
- # Perform one-sample t-test
- statistic, p_value = ttest_1samp(nrem_proportion_forward_v_reverse, 1.0)
- # Print the test statistic and p-value
- print("Test statistic:", statistic)
- print("P-value:", p_value)
- print(effect_size(x=nrem_proportion_forward_v_reverse,test='one_sample_ttest',popmean = 1))
- print('--------------------')
- # Perform one-sample t-test
- statistic, p_value = ttest_1samp(rem_proportion_forward_v_reverse, 1.0, nan_policy="omit")
- # Print the test statistic and p-value
- print("Test statistic:", statistic)
- print("P-value:", p_value)
- rem_proportion_forward_v_reverse_nanr = rem_proportion_forward_v_reverse[~np.isnan(rem_proportion_forward_v_reverse)]
- print(effect_size(x=rem_proportion_forward_v_reverse_nanr,test='one_sample_ttest',popmean = 1))
- print('----------------------')
- print('Inset: comparison forward/reverse ------------------------')
- print(scipy.stats.shapiro(nrem_proportion_forward_v_reverse))
- print(scipy.stats.shapiro(rem_proportion_forward_v_reverse))
- # not all normal so use wilcoxn signed rank
- print(scipy.stats.wilcoxon(nrem_proportion_forward_v_reverse, rem_proportion_forward_v_reverse,nan_policy='omit'))
- print(effect_size(x=nrem_proportion_forward_v_reverse, y=rem_proportion_forward_v_reverse, test='wilcoxon'))
- # %% [markdown]
- # # figure E
- # %%
- group1_data, group2_data = plot_decay(ED7_data_dict['nrem_master']['binned_rate'] ,ED7_data_dict['nrem_master']['bins_relative_so'],ED7_data_dict['rem_master']['binned_rate'] ,ED7_data_dict['rem_master']['bins_relative_so'], '#69BD45','#32495C','nrem vs rem')
- plt.show()
- print('-----------------------------------------')
- ###################### STATS for inset
- ###################### STATS
- df1 = pd.DataFrame(group1_data)
- df2 = pd.DataFrame(group2_data)
- # Fit linear regression for Group 1
- model_group1 = sm.OLS.from_formula('y ~ x', data=df1).fit()
- model_group2 = sm.OLS.from_formula('y ~ x', data=df2).fit()
- print('PLOT 2:')
- # Print the summary of each model
- print("Group 1 (NREM):")
- # print(model_group1.summary())
- print('model p value (f statistic) = ')
- print(model_group1.f_pvalue)
- print('r2 = ')
- print(model_group1.rsquared)
- print("Group 2 (REM):")
- # print(model_group1.summary())
- print('model p value (f statistic) = ')
- print(model_group2.f_pvalue)
- print('r2 = ')
- print(model_group2.rsquared)
- ## STATS
- # Combine the data into one DataFrame
- data = pd.concat([df1, df2], axis=0)
- # Create a grouping variable
- groups = np.array(['nrem'] * len(df1) + ['rem'] * len(df2))
- # Perform MANOVA
- manova = MANOVA.from_formula('x + y ~ groups', data=data)
- # Print the MANOVA results
- print(manova.mv_test())
- # Compute partial eta-squared
- eta_squared = compute_partial_eta_squared(manova.mv_test())
- print("Partial eta-squared for each effect:", eta_squared)
- # %% [markdown]
- # # figure F
- # %%
- fig,[ax,ax2] = plt.subplots(1, 2,figsize=(10, 4))
- all_chunk_reverse_start_mean, all_chunk_forward_start_mean, all_chunk_reverse_end_mean, all_chunk_forward_end_mean = extract_start_end_points(pd.DataFrame(ED7_data_dict['rem_master']['start_end']))
- plot_start_end_times(all_chunk_reverse_start_mean,all_chunk_forward_start_mean,all_chunk_reverse_end_mean,all_chunk_forward_end_mean,ax,ax2,'REM','#32495C')
- fig,[ax,ax2] = plt.subplots(1, 2,figsize=(10, 4))
- all_chunk_reverse_start_mean, all_chunk_forward_start_mean, all_chunk_reverse_end_mean, all_chunk_forward_end_mean = extract_start_end_points(pd.DataFrame(ED7_data_dict['nrem_master']['start_end']))
- plot_start_end_times(all_chunk_reverse_start_mean,all_chunk_forward_start_mean,all_chunk_reverse_end_mean,all_chunk_forward_end_mean,ax,ax2,'NREM','#69BD45')
- plt.show()
- #### STATS
- nrem_all_chunk_reverse_start_mean, nrem_all_chunk_forward_start_mean, nrem_all_chunk_reverse_end_mean, nrem_all_chunk_forward_end_mean = extract_start_end_points(pd.DataFrame(ED7_data_dict['nrem_master']['start_end']))
- rem_all_chunk_reverse_start_mean, rem_all_chunk_forward_start_mean, rem_all_chunk_reverse_end_mean, rem_all_chunk_forward_end_mean = extract_start_end_points(pd.DataFrame(ED7_data_dict['rem_master']['start_end']))
- group1 = [x for x in nrem_all_chunk_reverse_start_mean if not np.isnan(x)]
- group2 = [x for x in nrem_all_chunk_forward_start_mean if not np.isnan(x)]
- group3 = [x for x in nrem_all_chunk_reverse_end_mean if not np.isnan(x)]
- group4 = [x for x in nrem_all_chunk_forward_end_mean if not np.isnan(x)]
- group5 = [x for x in rem_all_chunk_reverse_start_mean if not np.isnan(x)]
- group6 = [x for x in rem_all_chunk_forward_start_mean if not np.isnan(x)]
- group7 = [x for x in rem_all_chunk_reverse_end_mean if not np.isnan(x)]
- group8 = [x for x in rem_all_chunk_forward_end_mean if not np.isnan(x)]
- for group in [group1, group2, group3, group4, group5, group6, group7, group8]:
- print(scipy.stats.shapiro(group))
- df_nrem = pd.DataFrame({
- 'group': ['late'] * len(nrem_all_chunk_forward_start_mean),
- 'forward_start': nrem_all_chunk_forward_start_mean,
- 'forward_end': nrem_all_chunk_forward_end_mean,
- 'reverse_start': nrem_all_chunk_reverse_start_mean,
- 'reverse_end': nrem_all_chunk_reverse_end_mean,
- })
- df_rem = pd.DataFrame({
- 'group': ['early'] * len(rem_all_chunk_forward_start_mean),
- 'forward_start': rem_all_chunk_forward_start_mean,
- 'forward_end': rem_all_chunk_forward_end_mean,
- 'reverse_start': rem_all_chunk_reverse_start_mean,
- 'reverse_end': rem_all_chunk_reverse_end_mean,
- })
- print('_____________________________________________________________________________________________')
- # 1. Concatenate and clean
- df = pd.concat([df_nrem, df_rem], ignore_index=True)
- df_clean = df.dropna(subset=['forward_start','forward_end','reverse_start','reverse_end']).reset_index(drop=True)
- # 2. Build your feature matrix
- X = df_clean[['forward_start','forward_end','reverse_start','reverse_end']].values
- # 3. Compute Euclidean distances
- dist_array = squareform(pdist(X, metric='euclidean'))
- # 4. Create DistanceMatrix with simple integer-string IDs (0,1,2,…)
- ids = [str(i) for i in range(len(df_clean))]
- dm = DistanceMatrix(dist_array, ids=ids)
- # 5. Extract grouping as a plain list (length N)
- grouping = df_clean['group'].tolist()
- # 6. Run PERMANOVA
- result = permanova(distance_matrix=dm,
- grouping=grouping,
- permutations=999)
- print(result)
- #Compute R² manually (effect size)
- # ss_total = sum of squared distances / n
- D = dm.data # <-- this is the fix
- n = len(grouping)
- ss_total = np.sum(D**2) / n
- # ss_between: sum of squared group means
- group_labels = np.array(grouping)
- unique_groups = np.unique(group_labels)
- ss_between = 0
- for g in unique_groups:
- idx = np.where(group_labels == g)[0]
- Di = D[np.ix_(idx, idx)]
- ss_between += len(idx) * (Di.mean() ** 2)
- r2 = ss_between / ss_total
- print(f"PERMANOVA effect size R²: {r2:.5f}")
- # %% [markdown]
- # # figure G
- # %%
- rem_counts = collapse(convert_word_keys_to_numeric(ED7_data_dict['rem_master']['coactive_freqs']))
- nrem_counts = collapse(convert_word_keys_to_numeric(ED7_data_dict['nrem_master']['coactive_freqs']))
- colors = {"nrem": "#727272", "rem": "#74C269"}
- offset = 0.2
- # PLOT
- # ============================================================
- fig, (ax1, ax2) = plt.subplots(
- 1, 2, figsize=(4, 5),
- gridspec_kw={'width_ratios': [2, 10]}
- )
- # Left panel: coactive = 1 (median)
- for counts, color, off in [
- (rem_counts, colors["rem"], offset),
- (nrem_counts, colors["nrem"], -offset)
- ]:
- plot_group(ax1, counts, ['1'], off, color, np.median)
- ax1.set_xlim(0.5, 1.5)
- ax1.set_ylim(0, 1)
- ax1.set_ylabel('relative frequency')
- # Right panel: coactive >= 2 (mean)
- keys = [str(i) for i in range(2, 7)]
- for counts, color, off in [
- (rem_counts, colors["rem"], offset),
- (nrem_counts, colors["nrem"], -offset)
- ]:
- plot_group(ax2, counts, keys, off, color, np.mean)
- ax2.set_xlabel('number of coactive events')
- ax2.set_ylim(0, 0.4)
- plt.tight_layout()
- plt.show()
- # ============================================================
- # STATS
- # ============================================================
- permanova_coactive_freqs(convert_word_keys_to_numeric(ED7_data_dict['nrem_master']['coactive_freqs']), convert_word_keys_to_numeric(ED7_data_dict['rem_master']['coactive_freqs']))
- # %% [markdown]
- # # figure H
- # %%
- # PLOT
- plot_ordered_misrodered(ED7_data_dict['nrem_master']['ordered_misordered'],'nrem','ordered/misordered proportion')
- plot_ordered_misrodered(ED7_data_dict['rem_master']['ordered_misordered'],'rem','ordered/misordered proportion')
- # STATS
- list1 = [float(item[0]) for item in ED7_data_dict['nrem_master']['ordered_misordered']]
- list2 = [float(item[1]) for item in ED7_data_dict['nrem_master']['ordered_misordered']]
- list1= [x for x in list1 if not np.isnan(x)]
- list2= [x for x in list2 if not np.isnan(x)]
- permutation_test(list1, list2)
- print(f'cohens d = {cohens_d(list1, list2)}')
- print('------------------')
- list3 = [float(item[0]) for item in ED7_data_dict['rem_master']['ordered_misordered']]
- list4 = [float(item[1]) for item in ED7_data_dict['rem_master']['ordered_misordered']]
- list3= [x for x in list3 if not np.isnan(x)]
- list4= [x for x in list4 if not np.isnan(x)]
- permutation_test(list3, list4)
- print(f'cohens d = {cohens_d(list3, list4)}')
- # test for normality
- print('------------------')
- print(scipy.stats.shapiro(list1))
- print(scipy.stats.shapiro(list2))
- print(scipy.stats.shapiro(list3))
- print(scipy.stats.shapiro(list4))
- print('------------------')
- # parmanova between groups
- permanova_ordered_misordered(ED7_data_dict['nrem_master']['ordered_misordered'], ED7_data_dict['rem_master']['ordered_misordered'])
- # %% [markdown]
- # # figure I
- # %%
- plot_ordered_misrodered(ED7_data_dict['nrem_master']['task_nontask'],'nrem','task related/unrelated proportion')
- plot_ordered_misrodered(ED7_data_dict['rem_master']['task_nontask'],'rem','task related/unrelated proportion')
- # STATS
- list1 = [float(item[0]) for item in ED7_data_dict['nrem_master']['task_nontask']]
- list2 = [float(item[1]) for item in ED7_data_dict['nrem_master']['task_nontask']]
- list1= [x for x in list1 if not np.isnan(x)]
- list2= [x for x in list2 if not np.isnan(x)]
- permutation_test(list1, list2)
- print(f'cohens d = {cohens_d(list1, list2)}')
- print('------------------')
- list3 = [float(item[0]) for item in ED7_data_dict['rem_master']['task_nontask']]
- list4 = [float(item[1]) for item in ED7_data_dict['rem_master']['task_nontask']]
- list3= [x for x in list3 if not np.isnan(x)]
- list4= [x for x in list4 if not np.isnan(x)]
- permutation_test(list3, list4)
- print(f'cohens d = {cohens_d(list3, list4)}')
- # test for normality
- print(scipy.stats.shapiro(list1))
- print(scipy.stats.shapiro(list2))
- print(scipy.stats.shapiro(list3))
- print(scipy.stats.shapiro(list4))
- #permanova for nrem vs rem
- permanova_ordered_misordered(ED7_data_dict['rem_master']['task_nontask'], ED7_data_dict['rem_master']['task_nontask'])
- # %% [markdown]
- # # figure J
- # %%
- awake_seqbyseq_neuron_involvements = ED7_data_dict['neuron_involvement_master']['awake_seqbyseq_neuron_involvements']
- fig, ax = plt.subplots(1, 1,figsize=(5, 5))
- nrem_awake_sleep_relationship = return_binned_neuron_awake_sleep_rel(awake_seqbyseq_neuron_involvements,ED7_data_dict['nrem_master']['sleep_seqbyseq_neuron_involvements'])
- plot_awake_sleep_relationship(nrem_awake_sleep_relationship,'#69BD45',ax)
- rem_awake_sleep_relationship = return_binned_neuron_awake_sleep_rel(awake_seqbyseq_neuron_involvements,ED7_data_dict['rem_master']['sleep_seqbyseq_neuron_involvements'])
- plot_awake_sleep_relationship(rem_awake_sleep_relationship,'#32495C',ax)
- ax.set_title('nrem vs rem')
- ## STATS
- m =manova_groups_neuron_involvement(nrem_awake_sleep_relationship,rem_awake_sleep_relationship)
- eta_squared = compute_partial_eta_squared(m)
- print("Partial eta-squared for each effect:", eta_squared)
- # %%
- # %%
- # %%
ED5_plots.ipynb at commit 2e1ef18, under MIT · at the source
Overview
- Sainsbury Wellcome Centre for Neural Circuits and Behaviour, University College London,London, UK
- Gatsby Computational Neuroscience Unit, University College London,London, UK
Abstract
Sleep is crucial for consolidating all forms of memory and a core mechanism underlying this process is offline replay. Current models propose that replay originates in the hippocampus and triggers reactivation across cortical and subcortical networks. However, conflicting evidence about the role of the hippocampus in offline consolidation of nondeclarative memories raises the question of whether hippocampal replay drives their consolidation. Here we show that replay occurs in the dorsal striatum during offline consolidation of a procedural memory in mice, independently of the hippocampus, and that its content predicts subsequent performance improvements. Neural sequences linked to salient behavioral events were prioritized for replay, with positive and negative behavioral outcomes having opposing effects on individual replay events. All features of replay persisted despite complete bilateral hippocampal lesions. These findings demonstrate that procedural replay occurs independently of the hippocampus, indicating that replay-driven memory consolidation can operate through parallel, independent mechanisms.
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 19 matches between paragraphs and lines of code.
SainsburyWellcomeCentre/BakingTray
50eb5ca97a7477d768e10154413a4bf8103e2c59, 7 September 2026Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
334 files
- ExampleCodeSnippets/
AcquisitionAutoResume/ , MATLAB, 13 linesabortOnFrame.m - ExampleCodeSnippets/
PI_Build_Example_C863.m , MATLAB, 67 lines - ExampleCodeSnippets/
Prior_Basic.m , MATLAB, 460 lines - ExampleCodeSnippets/
Zaber_Build_Example.m , MATLAB, 62 lines - ExampleCodeSnippets/
example_connect_Soloist. , MATLAB, 26 linesm - ExampleConfigFiles/
ScanImage/ , MATLAB, 157 linesMachine_Data_File_LinSca n_SIMULATED.m - ExampleConfigFiles/
componentSettings.m , MATLAB, 144 lines - addBTtopath.m, MATLAB, 4 lines
- code/
+BakingTray/ , MATLAB, 69 lines+acq/ estimateFinishedTime.m - code/
+BakingTray/ , MATLAB, 19 lines+channelChooser/ loadEmissionSpectrum.m - code/
+BakingTray/ , MATLAB, 52 lines+channelChooser/ loadExcitationSpectrum.m - code/
+BakingTray/ , MATLAB, 23 lines+channelChooser/ readSettings.m - code/
+BakingTray/ , MATLAB, 498 lines+gui/ @acquisition_view/ acquisition_view.m - code/
+BakingTray/ , MATLAB, 148 lines+gui/ @acquisition_view/ areaSelector.m - code/
+BakingTray/ , MATLAB, 98 lines+gui/ @acquisition_view/ bake_callback.m - code/
+BakingTray/ , MATLAB, 280 lines+gui/ @acquisition_view/ buildFigure.m - code/
+BakingTray/ , MATLAB, 42 lines+gui/ @acquisition_view/ getThresholdAndOverlayGr id.m - code/
+BakingTray/ , MATLAB, 39 lines+gui/ @acquisition_view/ imageZoomHandler.m - code/
+BakingTray/ , MATLAB, 70 lines+gui/ @acquisition_view/ overlayBoundingBoxesOnIm age.m - code/
+BakingTray/ , MATLAB, 30 lines+gui/ @acquisition_view/ overlayLastBoundingBoxes .m - code/
+BakingTray/ , MATLAB, 54 lines+gui/ @acquisition_view/ overlayPointsOnImage.m - code/
+BakingTray/ , MATLAB, 72 lines+gui/ @acquisition_view/ overlaySlideFrostedAreaO nImage.m - code/
+BakingTray/ , MATLAB, 58 lines+gui/ @acquisition_view/ overlayStageBoundariesOn Image.m - code/
+BakingTray/ , MATLAB, 50 lines+gui/ @acquisition_view/ overlayStagePositionOnIm age.m - code/
+BakingTray/ , MATLAB, 68 lines+gui/ @acquisition_view/ overlayThreshBorderOnIma ge.m - code/
+BakingTray/ , MATLAB, 119 lines+gui/ @acquisition_view/ overlayTileGridOnImage.m - code/
+BakingTray/ , MATLAB, 19 lines+gui/ @acquisition_view/ pause_callback.m - code/
+BakingTray/ , MATLAB, 51 lines+gui/ @acquisition_view/ removeOverlays.m - code/
+BakingTray/ , MATLAB, 37 lines+gui/ @acquisition_view/ setChannelToView.m - code/
+BakingTray/ , MATLAB, 27 lines+gui/ @acquisition_view/ setDepthToView.m - code/
+BakingTray/ , MATLAB, 37 lines+gui/ @acquisition_view/ setupListeners.m - code/
+BakingTray/ , MATLAB, 73 lines+gui/ @acquisition_view/ spawnTilePickerWindow.m - code/
+BakingTray/ , MATLAB, 76 lines+gui/ @acquisition_view/ startPreviewScan.m - code/
+BakingTray/ , MATLAB, 53 lines+gui/ @acquisition_view/ stop_callback.m - code/
+BakingTray/ , MATLAB, 41 lines+gui/ @acquisition_view/ updateBakeButtonState.m - code/
+BakingTray/ , MATLAB, 47 lines+gui/ @acquisition_view/ updateSectionImage.m - code/
+BakingTray/ , MATLAB, 23 lines+gui/ @acquisition_view/ zoomOutToShowSlide.m - code/
+BakingTray/ , MATLAB, 449 lines+gui/ @laser_view/ laser_view.m - code/
+BakingTray/ , MATLAB, 58 lines+gui/ @prepare_view/ autoTrim.m - code/
+BakingTray/ , MATLAB, 401 lines+gui/ @prepare_view/ buildWindow.m - code/
+BakingTray/ , MATLAB, 66 lines+gui/ @prepare_view/ executeJogMotion.m - code/
+BakingTray/ , MATLAB, 30 lines+gui/ @prepare_view/ isSafeToMove.m - code/
+BakingTray/ , MATLAB, 13 lines+gui/ @prepare_view/ positionNextToBakingTray View.m - code/
+BakingTray/ , MATLAB, 505 lines+gui/ @prepare_view/ prepare_view.m - code/
+BakingTray/ , MATLAB, 44 lines+gui/ @prepare_view/ private/ hMover_KeyPress.m - code/
+BakingTray/ , MATLAB, 31 lines+gui/ @prepare_view/ resetBladeIfNeeded.m - code/
+BakingTray/ , MATLAB, 32 lines+gui/ @prepare_view/ stopAllAxes.m - code/
+BakingTray/ , MATLAB, 49 lines+gui/ @prepare_view/ takeNslices.m - code/
+BakingTray/ , MATLAB, 25 lines+gui/ @prepare_view/ takeOneSlice.m - code/
+BakingTray/ , MATLAB, 52 lines+gui/ @prepare_view/ toggleEnable.m - code/
+BakingTray/ , MATLAB, 212 lines+gui/ @view/ buildWindow.m - code/
+BakingTray/ , MATLAB, 17 lines+gui/ @view/ displayMessage.m - code/
+BakingTray/ , MATLAB, 36 lines+gui/ @view/ enableDisableThisView.m - code/
+BakingTray/ , MATLAB, 34 lines+gui/ @view/ importFrameSizeSettings. m - code/
+BakingTray/ , MATLAB, 122 lines+gui/ @view/ loadRecipe.m - code/
+BakingTray/ , MATLAB, 48 lines+gui/ @view/ newSample.m - code/
+BakingTray/ , MATLAB, 178 lines+gui/ @view/ populateRecipePanel.m - code/
+BakingTray/ , MATLAB, 8 lines+gui/ @view/ startChannelChooserGUI.m - code/
+BakingTray/ , MATLAB, 16 lines+gui/ @view/ startLaserGUI.m - code/
+BakingTray/ , MATLAB, 21 lines+gui/ @view/ startPrepareGUI.m - code/
+BakingTray/ , MATLAB, 50 lines+gui/ @view/ startPreviewSampleGUI.m - code/
+BakingTray/ , MATLAB, 43 lines+gui/ @view/ updateAllRecipeEditBoxes AndStatusText.m - code/
+BakingTray/ , MATLAB, 34 lines+gui/ @view/ updateRecipePropertyInRe cipeClass.m - code/
+BakingTray/ , MATLAB, 72 lines+gui/ @view/ updateStatusText.m - code/
+BakingTray/ , MATLAB, 61 lines+gui/ @view/ updateTileSizeLabelText. m - code/
+BakingTray/ , MATLAB, 409 lines+gui/ @view/ view.m - code/
+BakingTray/ , MATLAB, 39 lines+gui/ child_view.m - code/
+BakingTray/ , MATLAB, 58 lines+gui/ newGenericGUIFigureWindo w.m - code/
+BakingTray/ , MATLAB, 28 lines+gui/ newGenericGUIPanel.m - code/
+BakingTray/ , MATLAB, 638 lines+gui/ questdlgchckbox.m - code/
+BakingTray/ , MATLAB, 70 lines+settings/ dummy.m - code/
+BakingTray/ , MATLAB, 35 lines+settings/ installLocation.m - code/
+BakingTray/ , MATLAB, 63 lines+settings/ parseComPort.m - code/
+BakingTray/ , MATLAB, 157 lines+settings/ private/ componentSettings_empty. m - code/
+BakingTray/ , MATLAB, 23 lines+settings/ private/ defaultRecipe.m - code/
+BakingTray/ , MATLAB, 59 lines+settings/ private/ default_BT_Settings.m - code/
+BakingTray/ , MATLAB, 73 lines+settings/ readComponentSettings.m - code/
+BakingTray/ , MATLAB, 35 lines+settings/ readDefaultRecipe.m - code/
+BakingTray/ , MATLAB, 200 lines+settings/ readRecipe.m - code/
+BakingTray/ , MATLAB, 247 lines+settings/ readSystemSettings.m - code/
+BakingTray/ , MATLAB, 43 lines+settings/ settingsLocation.m - code/
+BakingTray/ , MATLAB, 84 lines+slack/ MakeSlackAttachment.m - code/
+BakingTray/ , MATLAB, 110 lines+slack/ SendSlackNotification.m - code/
+BakingTray/ , MATLAB, 56 lines+slack/ notify.m - code/
+BakingTray/ , MATLAB, 11 lines+slack/ private/ http_createHeader.m - code/
+BakingTray/ , MATLAB, 62 lines+slack/ private/ http_paramsToString.m - code/
+BakingTray/ , MATLAB, 32 lines+slack/ private/ jsonopt.m - code/
+BakingTray/ , MATLAB, 515 lines+slack/ private/ loadjson.m - code/
+BakingTray/ , MATLAB, 512 lines+slack/ private/ loadubjson.m - code/
+BakingTray/ , MATLAB, 33 lines+slack/ private/ mergestruct.m - code/
+BakingTray/ , MATLAB, 433 lines+slack/ private/ savejson.m - code/
+BakingTray/ , MATLAB, 497 lines+slack/ private/ saveubjson.m - code/
+BakingTray/ , MATLAB, 371 lines+slack/ private/ urlread2.m - code/
+BakingTray/ , MATLAB, 40 lines+slack/ private/ varargin2struct.m - code/
+BakingTray/ , MATLAB, 55 lines+utils/ addLaserCalib.m - code/
+BakingTray/ , MATLAB, 20 lines+utils/ centerFigureInScreen.m - code/
+BakingTray/ , MATLAB, 56 lines+utils/ clearSerial.m - code/
+BakingTray/ , MATLAB, 145 lines+utils/ doesPathContainAnAcquisi tion.m - code/
+BakingTray/ , MATLAB, 61 lines+utils/ fitSigmoidToData.m - code/
+BakingTray/ , MATLAB, 342 lines+utils/ generateSupportReport.m - code/
+BakingTray/ , MATLAB, 210 lines+utils/ getGitInfo.m - code/
+BakingTray/ , MATLAB, 43 lines+utils/ listLaserCalib.m - code/
+BakingTray/ , MATLAB, 168 lines+utils/ measureSurfaceHeight.m - code/
+BakingTray/ , MATLAB, 68 lines+utils/ messageWindow.m - code/
+BakingTray/ , MATLAB, 57 lines+utils/ readAcqLogFile.m - code/
+BakingTray/ , MATLAB, 56 lines+utils/ readSectionLogFile.m - code/
+BakingTray/ , MATLAB, 62 lines+utils/ returnDiskSpace.m - code/
+BakingTray/ , MATLAB, 274 lines+utils/ turbo.m - code/
+BakingTray/ , MATLAB, 76 lines+utils/ wavelength2rgb.m - code/
+BakingTray/ , MATLAB, 209 lines+yaml/ DateTime.m - code/
+BakingTray/ , MATLAB, 34 lines+yaml/ ReadYaml.m - code/
+BakingTray/ , MATLAB, 178 lines+yaml/ ReadYamlRaw.m - code/
+BakingTray/ , MATLAB, 95 lines+yaml/ Tests/ selftest_yamlmatlab.m - code/
+BakingTray/ , MATLAB, 351 lines+yaml/ Tests/ test_ReadYaml.m - code/
+BakingTray/ , MATLAB, 57 lines+yaml/ Tests/ test_WriteYaml.m - code/
+BakingTray/ , MATLAB, 227 lines+yaml/ WriteYaml.m - code/
+BakingTray/ , MATLAB, 39 lines+yaml/ datadump.m - code/
+BakingTray/ , MATLAB, 72 lines+yaml/ deflateimports.m - code/
+BakingTray/ , MATLAB, 80 lines+yaml/ doinheritance.m - code/
+BakingTray/ , MATLAB, 39 lines+yaml/ dosubstitution.m - code/
+BakingTray/ , MATLAB, 28 lines+yaml/ extras/ GetYamlVals.m - code/
+BakingTray/ , MATLAB, 13 lines+yaml/ extras/ TimeVals2Cell.m - code/
+BakingTray/ , MATLAB, 4 lines+yaml/ iscolumnvector.m - code/
+BakingTray/ , MATLAB, 4 lines+yaml/ ismymatrix.m - code/
+BakingTray/ , MATLAB, 4 lines+yaml/ isord.m - code/
+BakingTray/ , MATLAB, 4 lines+yaml/ isrowvector.m - code/
+BakingTray/ , MATLAB, 4 lines+yaml/ issingle.m - code/
+BakingTray/ , MATLAB, 4 lines+yaml/ kwd_parent.m - code/
+BakingTray/ , MATLAB, 103 lines+yaml/ makematrices.m - code/
+BakingTray/ , MATLAB, 26 lines+yaml/ merge_struct.m - code/
+BakingTray/ , MATLAB, 90 lines+yaml/ mergeimports.m - code/
+BakingTray/ , MATLAB, 97 lines@channelChooser/ buildFigure.m - code/
+BakingTray/ , MATLAB, 164 lines@channelChooser/ channelChooser.m - code/
+BakingTray/ , MATLAB, 44 lines@channelChooser/ determineChansToSave.m - code/
+BakingTray/ , MATLAB, 120 lines@channelChooser/ determineLaserWavelength .m - code/
+BakingTray/ , MATLAB, 14 lines@channelChooser/ plotChanBand.m - code/
+BakingTray/ , MATLAB, 24 lines@channelChooser/ plotEmissionSpectrum.m - code/
+BakingTray/ , MATLAB, 28 lines@channelChooser/ plotExcitationSpectrum.m - code/
+BakingTray/ , MATLAB, 43 linesgetObject.m - code/
@BT/ , MATLAB, 976 lines, 1 matchBT.m - code/
@BT/ , MATLAB, 26 linesabortSlicing.m - code/
@BT/ , MATLAB, 42 linesapplyLaserCalibrationToS canner.m - code/
@BT/ , MATLAB, 42 linesattachCutter.m - code/
@BT/ , MATLAB, 47 linesattachLaser.m - code/
@BT/ , MATLAB, 103 linesattachMotionAxes.m - code/
@BT/ , MATLAB, 75 linesattachRecipe.m - code/
@BT/ , MATLAB, 42 linesattachScanner.m - code/
@BT/ , MATLAB, 459 linesbake.m - code/
@BT/ , MATLAB, 30 linescheckAttachedStages.m - code/
@BT/ , MATLAB, 250 linescheckIfAcquisitionIsPoss ible.m - code/
@BT/ , MATLAB, 108 linescheckIfCuttingIsPossible .m - code/
@BT/ , MATLAB, 67 linesconvertImageCoordsToStag ePosition.m - code/
@BT/ , MATLAB, 50 linesconvertStagePositionToIm ageCoords.m - code/
@BT/ , MATLAB, 47 linesdefineSavePath.m - code/
@BT/ , MATLAB, 22 linesdisplayMessage.m - code/
@BT/ , MATLAB, 73 linesestimateTimeRemaining.m - code/
@BT/ , MATLAB, 62 linesgenAutoTrimSequence.m - code/
@BT/ , MATLAB, 172 linesgetNextROIs.m - code/
@BT/ , MATLAB, 54 linesgetThreshold.m - code/
@BT/ , MATLAB, 146 linesinitialisePreviewImageDa ta.m - code/
@BT/ , MATLAB, 38 lineslogPositionToPositionArr ay.m - code/
@BT/ , MATLAB, 60 linesplaceNewTilesInPreviewDa ta.m - code/
@BT/ , MATLAB, 124 linespopulateCurrentTilePatte rn.m - code/
@BT/ , MATLAB, 31 linespreAllocateTileBuffer.m - code/
@BT/ , MATLAB, 93 linesprivate/ bakeCleanupFun.m - code/
@BT/ , MATLAB, 123 linesprivate/ resume_GUI_helper.m - code/
@BT/ , MATLAB, 35 linesrenewLaserConnection.m - code/
@BT/ , MATLAB, 24 linesreportAcquisitionSize.m - code/
@BT/ , MATLAB, 354 linesresumeAcquisition.m - code/
@BT/ , MATLAB, 149 linesreturnPreviewStructure.m - code/
@BT/ , MATLAB, 110 linesrunTileScan.m - code/
@BT/ , MATLAB, 28 linesslack.m - code/
@BT/ , MATLAB, 280 linessliceSample.m - code/
@BT/ , MATLAB, 149 linestakeRapidPreview.m - code/
@BT/ , MATLAB, 19 linestilesRemaining.m - code/
BTresources/ , MATLAB, 215 linesLimitFigSize.m - code/
BTresources/ , MATLAB, 97 linesNumTiles.m - code/
BTresources/ , MATLAB, 64 linesTileStepSize.m - code/
BTresources/ , MATLAB, 172 linesaffineMatGen.m - code/
BTresources/ , MATLAB, 104 linesassessAverage.m - code/
BTresources/ , MATLAB, 91 linesplotboxpos.m - code/
BTresources/ , MATLAB, 43 linesprettyTime.m - code/
BTresources/ , MATLAB, 150 linespreviewFilesToStack.m - code/
BTresources/ , MATLAB, 271 lineswizard.m - code/
BTresources/ , MATLAB, 198 lineswizardpage.m - code/
BakingTray.m , MATLAB, 129 lines - code/
autoROI/ , MATLAB, 33 lines+autoROI/ +autothresh/ batchDir.m - code/
autoROI/ , MATLAB, 71 lines+autoROI/ +autothresh/ plot.m - code/
autoROI/ , MATLAB, 393 lines+autoROI/ +autothresh/ run.m - code/
autoROI/ , MATLAB, 240 lines+autoROI/ +batchtest/ evaluatePerformance.m - code/
autoROI/ , MATLAB, 77 lines+autoROI/ +batchtest/ runEvaluation.m - code/
autoROI/ , MATLAB, 37 lines+autoROI/ +evaluate/ areTestStructuresEqual.m - code/
autoROI/ , MATLAB, 130 lines+autoROI/ +evaluate/ compareResults.m - code/
autoROI/ , MATLAB, 151 lines+autoROI/ +evaluate/ genComparisonTable.m - code/
autoROI/ , MATLAB, 154 lines+autoROI/ +evaluate/ genSummaryTable.m - code/
autoROI/ , MATLAB, 26 lines+autoROI/ +evaluate/ getSummaryTable.m - code/
autoROI/ , MATLAB, 258 lines+autoROI/ +evaluate/ plotResults.m - code/
autoROI/ , MATLAB, 21 lines+autoROI/ +evaluate/ printFileNamesAsDoubleCo lumnTable.m - code/
autoROI/ , MATLAB, 8 lines+autoROI/ +evaluate/ private/ plotSettings.m - code/
autoROI/ , MATLAB, 63 lines+autoROI/ +evaluate/ report_auto_thresh_notes .m - code/
autoROI/ , MATLAB, 38 lines+autoROI/ +groundTruth/ genBordersForAllInDir.m - code/
autoROI/ , MATLAB, 108 lines+autoROI/ +groundTruth/ genGroundTruthBorders.m - code/
autoROI/ , MATLAB, 98 lines+autoROI/ +groundTruth/ previewMatFilesToImStack .m - code/
autoROI/ , MATLAB, 67 lines+autoROI/ +groundTruth/ removeSmallestBorder.m - code/
autoROI/ , MATLAB, 55 lines+autoROI/ +groundTruth/ replaceRecipe.m - code/
autoROI/ , MATLAB, 47 lines+autoROI/ +groundTruth/ stackToGroundTruth.m - code/
autoROI/ , MATLAB, 46 lines+autoROI/ +plotting/ bt_auto_compare.m - code/
autoROI/ , MATLAB, 97 lines+autoROI/ +plotting/ overlayTileGrid.m - code/
autoROI/ , MATLAB, 60 lines+autoROI/ +plotting/ showBoundingBoxesForSect ion.m - code/
autoROI/ , MATLAB, 81 lines+autoROI/ +plotting/ viewStackResult.m - code/
autoROI/ , MATLAB, 256 lines+autoROI/ +test/ evaluateROIs.m - code/
autoROI/ , MATLAB, 36 lines+autoROI/ +test/ getAllFirstImages.m - code/
autoROI/ , MATLAB, 55 lines+autoROI/ +test/ printNonPStack.m - code/
autoROI/ , MATLAB, 22 lines+autoROI/ +test/ private/ handle_runDir.m - code/
autoROI/ , MATLAB, 150 lines+autoROI/ +test/ runOnAllInDir.m - code/
autoROI/ , MATLAB, 177 lines+autoROI/ +test/ runOnStackStruct.m - code/
autoROI/ , MATLAB, 56 lines+autoROI/ +tools/ fixMicsPix.m - code/
autoROI/ , MATLAB, 204 lines+autoROI/ +tools/ getGitInfo.m - code/
autoROI/ , MATLAB, 39 lines+autoROI/ +tools/ reportRecipeName.m - code/
autoROI/ , MATLAB, 60 lines+autoROI/ +tools/ resizeAllInDir.m - code/
autoROI/ , MATLAB, 62 lines+autoROI/ +tools/ resizePStack.m - code/
autoROI/ , MATLAB, 184 lines+autoROI/ binarizeImage.m - code/
autoROI/ , MATLAB, 94 lines+autoROI/ boundingBoxToTiledBox.m - code/
autoROI/ , MATLAB, 127 lines+autoROI/ findTissueAtROIedges.m - code/
autoROI/ , MATLAB, 31 lines+autoROI/ genOverlapStack.m - code/
autoROI/ , MATLAB, 149 lines+autoROI/ getBoundingBoxes.m - code/
autoROI/ , MATLAB, 95 lines+autoROI/ getForegroundBackgroundP ixels.m - code/
autoROI/ , MATLAB, 48 lines+autoROI/ getSubImageUsingBounding Box.m - code/
autoROI/ , MATLAB, 291 lines+autoROI/ mergeOverlapping.m - code/
autoROI/ , MATLAB, 58 lines+autoROI/ obtainCleanBackgroundSD. m - code/
autoROI/ , MATLAB, 41 lines+autoROI/ overlayBoundingBox.m - code/
autoROI/ , MATLAB, 44 lines+autoROI/ overlayBoundingBoxes.m - code/
autoROI/ , MATLAB, 95 lines+autoROI/ readSettings.m - code/
autoROI/ , MATLAB, 11 lines+autoROI/ removeCornerEdgeArtifact s.m - code/
autoROI/ , MATLAB, 36 lines+autoROI/ rescaleAndFilterImage.m - code/
autoROI/ , MATLAB, 79 lines+autoROI/ shiftROIsBasedOnStageFro ntLeft.m - code/
autoROI/ , MATLAB, 45 lines+autoROI/ validateBoundingBox.m - code/
autoROI/ , MATLAB, 450 linesautoROI.m - code/
components/ , MATLAB, 31 lines@recipe/ autoSetCutSize.m - code/
components/ , MATLAB, 47 lines@recipe/ checkIfAcquisitionIsPoss ible.m - code/
components/ , MATLAB, 37 lines@recipe/ estimatedSizeOnDisk.m - code/
components/ , MATLAB, 643 lines@recipe/ recipe.m - code/
components/ , MATLAB, 27 lines@recipe/ recipe2struct.m - code/
components/ , MATLAB, 86 lines@recipe/ recordScannerSettings.m - code/
components/ , MATLAB, 57 lines@recipe/ saveRecipe.m - code/
components/ , MATLAB, 19 lines@recipe/ setCurrentPositionAsCutt ingPosition.m - code/
components/ , MATLAB, 14 lines@recipe/ setCurrentPositionAsFron tLeft.m - code/
components/ , MATLAB, 34 lines@recipe/ setFrontLeftFromVentralM idLine.m - code/
components/ , MATLAB, 228 lines@recipe/ tilePattern.m - code/
components/ , MATLAB, 66 lines@recipe/ writeFullRecipeForAcquis ition.m - code/
components/ , MATLAB, 223 linescutting/ FaulhaberMCDC.m - code/
components/ , MATLAB, 114 linescutting/ JaneliaLeicaController.m - code/
components/ , MATLAB, 157 linescutting/ SWCserialCutter.m - code/
components/ , MATLAB, 59 linescutting/ buildCutterComponent.m - code/
components/ , MATLAB, 148 linescutting/ cutter.m - code/
components/ , MATLAB, 59 linescutting/ dummyCutter.m - code/
components/ , MATLAB, 76 lineslaser/ buildLaserComponent.m - code/
components/ , MATLAB, 539 lineslaser/ chameleon.m - code/
components/ , MATLAB, 199 lineslaser/ dummyLaser.m - code/
components/ , MATLAB, 435 lineslaser/ laser.m - code/
components/ , MATLAB, 511 lineslaser/ maitai.m - code/
components/ , MATLAB, 353 lineslaser/ tiberius.m - code/
components/ , MATLAB, 117 lineslogger/ bkFileLogger.m - code/
components/ , MATLAB, 200 lineslogger/ loghandler.m - code/
components/ , MATLAB, 464 linesmotion/ AMS_SIN11.m - code/
components/ , MATLAB, 34 linesmotion/ AVS_100_25.m - code/
components/ , MATLAB, 588 linesmotion/ BSC201_APT.m - code/
components/ , MATLAB, 68 linesmotion/ C663.m - code/
components/ , MATLAB, 90 linesmotion/ C863.m - code/
components/ , MATLAB, 153 linesmotion/ C891.m - code/
components/ , MATLAB, 42 linesmotion/ DRV014.m - code/
components/ , MATLAB, 272 linesmotion/ analog_controller.m - code/
components/ , MATLAB, 220 linesmotion/ buildMotionComponent.m - code/
components/ , MATLAB, 287 linesmotion/ dummy_linearcontroller.m - code/
components/ , MATLAB, 20 linesmotion/ dummy_linearstage.m - code/
components/ , MATLAB, 541 linesmotion/ ensemble.m - code/
components/ , MATLAB, 458 linesmotion/ genericPIcontroller.m - code/
components/ , MATLAB, 23 linesmotion/ genericPIstage.m - code/
components/ , MATLAB, 23 linesmotion/ genericPriorstage.m - code/
components/ , MATLAB, 22 linesmotion/ genericStage.m - code/
components/ , MATLAB, 460 linesmotion/ genericZaberController.m - code/
components/ , MATLAB, 34 linesmotion/ generic_AeroTechZJack.m - code/
components/ , MATLAB, 25 linesmotion/ haydon43K4U.m - code/
components/ , MATLAB, 566 linesmotion/ linearcontroller.m - code/
components/ , MATLAB, 109 linesmotion/ linearstage.m - code/
components/ , MATLAB, 539 linesmotion/ singleAxisPriorControlle r.m - code/
components/ , MATLAB, 544 linesmotion/ soloist.m - code/
components/ , MATLAB, 25 linesscanning/ +SIBT/ closeAllHistogramWindows .m - code/
components/ , MATLAB, 30 linesscanning/ +SIBT/ get_hSICtl_from_base.m - code/
components/ , MATLAB, 28 linesscanning/ +SIBT/ get_hSI_from_base.m - code/
components/ , MATLAB, 807 linesscanning/ @SIBT/ SIBT.m - code/
components/ , MATLAB, 47 linesscanning/ @SIBT/ applyLaserCalibration.m - code/
components/ , MATLAB, 130 linesscanning/ @SIBT/ applyScanSettings.m - code/
components/ , MATLAB, 102 linesscanning/ @SIBT/ applyZstackSettingsFromR ecipe.m - code/
components/ , MATLAB, 76 linesscanning/ @SIBT/ armScanner.m - code/
components/ , MATLAB, 119 linesscanning/ @SIBT/ doScanSettingsMatchRecip e.m - code/
components/ , MATLAB, 9 linesscanning/ @SIBT/ moveFastZTo.m - code/
components/ , MATLAB, 22 linesscanning/ @SIBT/ private/ default_SIBT_settings.m - code/
components/ , MATLAB, 94 linesscanning/ @SIBT/ private/ readSIBTsettings.m - code/
components/ , MATLAB, 68 linesscanning/ @SIBT/ returnScanSettings.m - code/
components/ , MATLAB, 162 linesscanning/ @SIBT/ setImageSize.m - code/
components/ , MATLAB, 183 linesscanning/ @SIBT/ tileAcqDone.m - code/
components/ , MATLAB, 142 linesscanning/ @dummyScanner/ acquireTile.m - code/
components/ , MATLAB, 144 linesscanning/ @dummyScanner/ attachPreviewStack.m - code/
components/ , MATLAB, 47 linesscanning/ @dummyScanner/ createFigureWindow.m - code/
components/ , MATLAB, 387 linesscanning/ @dummyScanner/ dummyScanner.m - code/
components/ , MATLAB, 97 linesscanning/ @dummyScanner/ initiateTileScan.m - code/
components/ , MATLAB, 62 linesscanning/ @dummyScanner/ private/ writeSignedTiff.m - code/
components/ , MATLAB, 46 linesscanning/ @dummyScanner/ readFrameSizeSettings.m - code/
components/ , MATLAB, 27 linesscanning/ @dummyScanner/ returnDefaultScanSetting s.m - code/
components/ , MATLAB, 78 linesscanning/ buildScannerComponent.m - code/
components/ , MATLAB, 400 linesscanning/ scanner.m - diagnostic/
BT_timer.m , MATLAB, 84 lines - diagnostic/
lookForDuplicateTilesInC , MATLAB, 50 linesache.m - diagnostic/
measureTilingAccuracy.m , MATLAB, 34 lines - diagnostic/
measuring_xy_accuracy/ , MATLAB, 168 lines+mxy/ @camera/ camera.m - diagnostic/
measuring_xy_accuracy/ , MATLAB, 34 lines+mxy/ focusNamedFig.m - diagnostic/
measuring_xy_accuracy/ , MATLAB, 30 lines+mxy/ plotResults.m - diagnostic/
measuring_xy_accuracy/ , MATLAB, 36 lines+mxy/ testBlockingMotion.m - diagnostic/
measuring_xy_accuracy/ , MATLAB, 152 lines@pos_tester/ pos_tester.m - diagnostic/
measuring_xy_accuracy/ , MATLAB, 25 linesanalyseIm.m - diagnostic/
minimalBake.m , MATLAB, 103 lines - diagnostic/
minimalBakeWithGUI.m , MATLAB, 121 lines - diagnostic/
setupStressTest.m , MATLAB, 189 lines - diagnostic/
stage_motion_times/ , MATLAB, 112 linesacquireAnalogWaveform.m - diagnostic/
stage_motion_times/ , MATLAB, 70 linessoftwareTimedMotionTime. m - diagnostic/
stressTestTilePreviewBuf , MATLAB, 246 linesfer.m - diagnostic/
stressTestTileScanning.m , MATLAB, 89 lines - diagnostic/
trigViaAPI_test.m , MATLAB, 129 lines - tests/
BT_build_tests.m , MATLAB, 132 lines - tests/
BT_recipe_tests.m , MATLAB, 126 lines - tests/
recipe_tests.m , MATLAB, 165 lines - LICENSE, License, 165 lines
- readme.md, Text, 45 lines
Zenodo 363160
Availability: 1 check, the latest on 27 September 2026: the link is dead (HTTP 404)
- 27 September 2026: the link is dead (HTTP 404)
lindermanlab/ppseq.jl
e89078ccd100be5ddaf7b0ece014b98926f2a40b, 18 July 2023Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
25 files
- demo/
songbird-distributed-mcm , Jupyter, 115 linesc.ipynb - demo/
songbird-masked.ipynb , Jupyter, 260 lines - demo/
songbird.ipynb , Jupyter, 242 lines - src/
PPSeq.jl , Julia, 102 lines, 2 matches - src/
algorithms/ , Julia, 118 linesannealed_gibbs.jl - src/
algorithms/ , Julia, 209 linesdistributed_gibbs.jl - src/
algorithms/ , Julia, 87 lineseasy_sample.jl - src/
algorithms/ , Julia, 88 lineseasy_sample_masked.jl - src/
algorithms/ , Julia, 418 linesgibbs.jl - src/
algorithms/ , Julia, 572 linesmasked_gibbs.jl - src/
algorithms/ , Julia, 197 linessplit_merge.jl - src/
model/ , Julia, 132 linesadd_remove.jl - src/
model/ , Julia, 135 linesdistributed.jl - src/
model/ , Julia, 209 linesevents.jl - src/
model/ , Julia, 125 linesmasked_probabilities.jl - src/
model/ , Julia, 337 lines, 1 matchmodel.jl - src/
model/ , Julia, 306 linesprobabilities.jl - src/
model/ , Julia, 350 linesstructs.jl - src/
utils/ , Julia, 15 linesanalysis.jl - src/
utils/ , Julia, 72 lines, 1 matchconfig.jl - src/
utils/ , Julia, 178 linesdistributions.jl - src/
utils/ , Julia, 21 linesmisc.jl - src/
utils/ , Julia, 165 linesvisualization.jl - LICENSE, License, 21 lines
- README.md, Text, 24 lines
stephensonjoneslab/thompson_et_al_2026
2e1ef18164faa4129eec848de30814e796d2712f, 8 May 2026Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
45 files
- ED_1/
ED1_plots.ipynb , Jupyter, 654 lines, 1 match - ED_1/
Utilities/ , Python, 220 linesutils.py - ED_10/
ED10_plots.ipynb , Jupyter, 610 lines - ED_10/
Utilities/ , Python, 898 linesutils.py - ED_2/
ED2_plots.ipynb , Jupyter, 319 lines - ED_2/
Utilities/ , Python, 63 linesutils.py - ED_3/
ED3_plots.ipynb , Jupyter, 312 lines - ED_3/
Utilities/ , Python, 261 linesutils.py - ED_4/
ED4_plots.ipynb , Jupyter, 419 lines - ED_4/
Utilities/ , Python, 1,045 linesutils.py - ED_5/
ED5_plots.ipynb , Jupyter, 538 lines, 3 matches - ED_5/
Utilities/ , Python, 1,026 linesutils.py - ED_6/
ED6_plots.ipynb , Jupyter, 871 lines, 2 matches - ED_6/
Utilities/ , Python, 980 linesutils.py - ED_7/
ED7_plots.ipynb , Jupyter, 587 lines - ED_7/
Utilities/ , Python, 489 linesutils.py - ED_8/
ED8_plots.ipynb , Jupyter, 55 lines - ED_8/
Utilities/ , Python, 204 lines, 1 matchutils.py - ED_9/
ED9_plots.ipynb , Jupyter, 619 lines - ED_9/
Utilities/ , Python, 194 linesutils.py - S_1/
S1_plots.ipynb , Jupyter, 99 lines - S_1/
Utilities/ , Python, 85 linesutils.py - S_2/
S2_plots.ipynb , Jupyter, 312 lines - S_2/
Utilities/ , Python, 232 linesutils.py - figure1/
Fig1_plots.ipynb , Jupyter, 571 lines, 1 match - figure1/
Utilities/ , Python, 380 linesutils.py - figure2/
Fig2_plots.ipynb , Jupyter, 580 lines - figure2/
Utilities/ , Python, 661 linesutils.py - figure3/
Fig3_plots.ipynb , Jupyter, 382 lines - figure3/
Utilities/ , Python, 984 linesutils.py - figure4/
Fig4_plots.ipynb , Jupyter, 148 lines - figure4/
Utilities/ , Python, 457 linesutils.py - figure5/
Fig5_plots.ipynb , Jupyter, 462 lines, 1 match - figure5/
Utilities/ , Python, 1,507 linesutils.py - preprocessing/
LFP_processing.ipynb , Jupyter, 125 lines - preprocessing/
LFP_spindle_processing.i , Jupyter, 154 lines, 2 matchespynb - preprocessing/
PPseq_awake_postprocess. , Jupyter, 875 lines, 1 matchipynb - preprocessing/
PPseq_sleep_postprocess. , Jupyter, 203 linesipynb - preprocessing/
SWR_detection.ipynb , Jupyter, 45 lines - preprocessing/
Utilities/ , Python, 194 linesswr_detection.py - preprocessing/
Utilities/ , Python, 1,013 linesutils.py - preprocessing/
Utilities/ , Python, 1,791 linesutils_feature_extraction .py - preprocessing/
predictor_feature_extrac , Jupyter, 395 lines, 2 matchestion.ipynb - LICENSE, License, 21 lines
- README.md, Text, 80 lines
Code availability
The analysis code is publicly available at https://
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:
- 4 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 398 scripts, each with its path and the digest of its content;
- 19 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
- zenodo:20055819, at Zenodo; found in “Data availability”
Data availability
The data that support the findings of this study are available via Zenodo at 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 2, 28 September 2026
- Publisher: n/a → Nature Portfolio
Version 1, 27 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 13 authors, 2 keywords, 8 MeSH terms, 2 funders, 73 references.
Cite
This paper
Thompson, E. J., Rollik, L. B., Waked, B., Mills, G., Pati, S., Kaur, J., Geva, B., Li, H., Carrasco-Davis, R., George, T., Domine, C., Dorrell, W., & Stephenson-Jones, M. (2026). Replay of procedural memory is independent of the hippocampus. Nature neuroscience, 29(9), 2237-2248. https://
BibTeX
@article{thompson2026rep
author = {Thompson, Emmett J. and Rollik, Lars B. and Waked, Benjamin and Mills, Georgina and Pati, Sthitapranjya and Kaur, Jasvin and Geva, Ben and Li, Haoyu and Carrasco-Davis, Rodrigo and George, Tom and Domine, Clementine and Dorrell, William and Stephenson-Jones, Marcus},
title = {{Replay of procedural memory is independent of the hippocampus}},
journal = {Nature neuroscience},
year = {2026},
month = jul,
volume = {29},
number = {9},
pages = {2237--2248},
publisher = {Nature Portfolio},
issn = {1097-6256},
doi = {10.1038/
url = {https://
pmid = {42493550},
pmcid = {PMC13533836}
}
RIS
TY - JOUR
AU - Thompson, Emmett J.
AU - Rollik, Lars B.
AU - Waked, Benjamin
AU - Mills, Georgina
AU - Pati, Sthitapranjya
AU - Kaur, Jasvin
AU - Geva, Ben
AU - Li, Haoyu
AU - Carrasco-Davis, Rodrigo
AU - George, Tom
AU - Domine, Clementine
AU - Dorrell, William
AU - Stephenson-Jones, Marcus
TI - Replay of procedural memory is independent of the hippocampus
T2 - Nature neuroscience
J2 - Nat Neurosci
PY - 2026
DA - 2026/
VL - 29
IS - 9
SP - 2237
EP - 2248
SN - 1097-6256
PB - Nature Portfolio
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"type": "article-journal",
"title": "Replay of procedural memory is independent of the hippocampus",
"container-title": "Nature neuroscience",
"author": [
{
"family": "Thompson",
"given": "Emmett J."
},
{
"family": "Rollik",
"given": "Lars B."
},
{
"family": "Waked",
"given": "Benjamin"
},
{
"family": "Mills",
"given": "Georgina"
},
{
"family": "Pati",
"given": "Sthitapranjya"
},
{
"family": "Kaur",
"given": "Jasvin"
},
{
"family": "Geva",
"given": "Ben"
},
{
"family": "Li",
"given": "Haoyu"
},
{
"family": "Carrasco-Davis",
"given": "Rodrigo"
},
{
"family": "George",
"given": "Tom"
},
{
"family": "Domine",
"given": "Clementine"
},
{
"family": "Dorrell",
"given": "William"
},
{
"family": "Stephenson-Jones",
"given": "Marcus"
}
],
"container-title-short":
"volume": "29",
"issue": "9",
"page": "2237-2248",
"DOI": "10.1038/
"PMID": "42493550",
"PMCID": "PMC13533836",
"ISSN": "1097-6256",
"publisher": "Nature Portfolio",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
7,
23
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1038/s41593-026-02232-0 [code]
- Entorhinal cortex represents task-relevant remote locations independently of CA1.Journal: Nature neuroscienceIn common: Pingouin, h5py, Pillow, 9 other tools, mouse, 9 references
- [2] doi:10.1038/s41593-026-02357-2 [code]
- Experience reorganizes content-specific memory traces in macaques.Journal: Nature neuroscienceIn common: Image Processing Toolbox, Statistics and Machine Learning Toolbox, seaborn, 5 other tools, 5 references
- [3] doi:10.1016/j.isci.2026.117375 [code]
- Motor priming is associated with widespread recruitment into neural ensembles and more rapid ensemble transitions.Journal: iScienceIn common: scikit-posthocs, Pingouin, h5py, 9 other tools
- [4] doi:10.1038/s41467-026-77318-1 [code]
- Offline generative network reconfiguration guides insight-like accelerated learning by assimilation into schema in rats.Journal: Nature communicationsIn common: Statistics and Machine Learning Toolbox, seaborn, scikit-learn, 3 other tools, 6 references
- [5] doi:10.7554/elife.108023 [code]
- Challenges in replay detection by TDLM in post-encoding resting state.Journal: eLifeIn common: statsmodels, Statistics and Machine Learning Toolbox, seaborn, 5 other tools, 5 references
- [6] doi: [code]
- Real-time closed-loop feedback system for mouse mesoscale cortical signal and movement controlJournal: eLifeIn common: Pingouin, h5py, Pillow, 7 other tools, mouse, 2 references
- [7] doi:10.1038/s41467-026-75662-w [code]
- Distinct Roles of Deep and Superficial Cortical Layers in Tone Prediction, Comparison, and Adaptation in Human Auditory Cortices.Journal: Nature communicationsIn common: scikit-posthocs, Pingouin, Pillow, 8 other tools, cognitive
- [8] doi:10.1038/s41467-026-74823-1 [code]
- Cerebellar activity is triggered by reach endpoint during learning of a complex locomotor task.Journal: Nature communicationsIn common: scikit-posthocs, Pingouin, h5py, 7 other tools, mouse, 1 reference
- [9] doi:10.1093/sleep/zsag168 [code]
- Deltas' and spindles' cross-area synchronization and ripple subtypes.Journal: SleepIn common: Image Processing Toolbox, Statistics and Machine Learning Toolbox, scikit-learn, 3 other tools, 5 references
- [10] doi:10.1038/s41467-026-76581-6 [code]
- Thalamocortical bursts encode reward contingencies and drive associative learning.Journal: Nature communicationsIn common: h5py, Pillow, Image Processing Toolbox, 6 other tools, mouse, 3 references
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: 4 repositories of the authors' code, each at its verified commit and with its license, 398 scripts, and 19 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:ca6bbb9c4e0c85aa…
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.
