OSCR

Sleep reveals dynamics integrating and segregating movement and stimulus representations in V1.

Code ↔ Paper

22 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 22 matches · 2 of them tie a paragraph to a whole file, not to given lines: weak matches, whose lines are not tinted
  1. [1] § Methods › Stereotactic surgery and data acquisition ↔ preprocessing/old/preprocessing_AnimalMetadataText.m, lines 34–165 · score 0.86 · surgery, anesthetized, anterior, hemisphere, injections, isoflurane
  2. [2] § Methods › Face motion prediction from neuronal activity ↔ processing/summary_processing/movement_visual_stim_interactions/FM_VS_regressed_out_allcells_interaction_v1.m, lines 184–330 · score 0.73 · Reduced Rank Regression, predict face motion, visual stimulation, cross validated, RRR, firing rate
  3. [3] § Methods › Face motion prediction from neuronal activity ↔ processing/summary_processing/movement_visual_stim_interactions/FM_VS_regressed_out_choristers_interaction_v5.m, lines 186–332 · score 0.73 · Reduced Rank Regression, predict face motion, visual stimulation, cross validated, RRR, firing rate
  4. [4] § Methods › Stereotactic surgery and data acquisition ↔ preprocessing/metadata/BWMetadataSystem/bz_AnimalMetadataTextTemplate.m, lines 79–129 · score 0.68 · anterior, hemisphere, DV, surface, AP, ML
  5. [5] § Methods › Up and down state detection ↔ externalPackages/FMAToolbox/Analyses/CoherenceBands.m, the whole file · a weak match · score 0.67 · gamma bands, high gamma, low gamma, delta, 30 Hz
  6. [6] § Methods › Natural visual scenes classification ↔ externalPackages/ndt_1_0_4/classifiers/@poisson_naive_bayes_CL/poisson_naive_bayes_CL.m, lines 1–76 · score 0.66 · Naive Bayes classifier, probability, denote, trained, predictive
  7. [7] § Methods › Face motion recording and extraction ↔ detectors/detectBehavior/detect_pupilDilation/GetPupilDilation.m, lines 1–54 · score 0.64 · pupil diameter, contamination, pulses, frame, eyes, Videos
  8. [8] § Methods › Up and down state detection ↔ detectors/detectEvents/DetectSlowWaves.m, lines 646–756 · score 0.63 · high gamma power, delta peak, LFP, 30 Hz, 0.5 Hz, NREM
  9. [9] § Methods › Sleep state detection ↔ Export2NWB/cell_metrics_2_nwb.ipynb, lines 37–173 · score 0.63 · NREM states, narrow, theta, ratio, detection, LFPs
  10. [10] § Methods › Movement and visual stimuli multiplexing model ↔ processing/model/simple_network_v5.m, lines 44–150 · score 0.63 · sparse stimuli, individual noise, network, connected, weight, overlap
  11. [11] § Methods › Recurrent Neural Network model of feedforward input ↔ processing/model/simple_network_v5.m, lines 44–150 · score 0.62 · independent noise, noise scaled, network, inverse, connected, weight
  12. [12] § Methods › Movement and visual stimuli multiplexing model ↔ processing/model/simple_network_v4.m, lines 73–152 · score 0.62 · sparse stimuli, individual noise, network, connected, weight, overlap
  13. [13] § Methods › Recurrent Neural Network model of feedforward input ↔ processing/model/simple_network_v4.m, lines 73–152 · score 0.62 · independent noise, noise scaled, network, inverse, connected, weight
  14. [14] § Results › The on- and off-manifold subspaces correspond to dense and sparse activity in chorister neurons ↔ processing/summary_processing/population_coupling_subspaces/unit_NREM_subspace_participation_v5.m, lines 86–184 · score 0.61 · subspace participation, cells participated, population coupling, shuffled, PC, NREM
  15. [15] § Methods › Sleep state detection ↔ detectors/detectStates/SleepScoreMaster/SleepScoreMaster.m, lines 1–86 · score 0.60 · state scoring, EMG, theta, band, REM, detection
  16. [16] § Methods › Random subspaces ↔ processing/summary_processing/opto_stimulation_analysis/opto_prediction_index_by_NREM_subspaces_v2.m, lines 135–214 · score 0.58 · sleep subspaces, NREM subspace, random subspaces, fluctuations, repetition, prediction
  17. [17] § Methods › Recurrent Neural Network model of feedforward input ↔ processing/model/RNN_two_inputs_fig3_EFO.py, lines 56–141 · score 0.54 · sine wave, enveloped, Feedforward, phase, weights, amplitude
  18. [18] § Methods › Data analysis ↔ processing/summary_processing/movement_visual_stim_interactions/FM_VS_cross_subspace_prediction_v3_100ms.m, lines 139–237 · score 0.54 · Reduced Rank Regression, face motion prediction, scenes, R2, sleep, subspace
  19. [19] § Methods › Data analysis ↔ processing/summary_processing/movement_visual_stim_interactions/FM_VS_cross_subspace_prediction_v4_100ms.m, lines 136–243 · score 0.54 · Reduced Rank Regression, face motion prediction, scenes, R2, sleep, subspace
  20. [20] § Methods › Reliability index ↔ externalPackages/FMAToolbox/Analyses/PhasePrecession.m, lines 1–80 · score 0.54 · confidence interval, standard deviation, coefficient
  21. [21] § Methods › Natural visual scenes classification ↔ externalPackages/ndt_1_0_4/datasources/@basic_DS/basic_DS.m, lines 1–60 · score 0.53 · Naive Bayes classifier, firing rate, variance, trained
  22. [22] § Results › Intrinsic local circuit dynamics constrain, but do not dictate, movement-evoked activity patterns ↔ processing/helpers/gpr_prediction_subspaces_and_cross_v2.m, the whole file · a weak match · score 0.51 · predictive subspace, cross subspace, random subspaces, PLS, neural, trained

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

MATLAB · 386 lines · 16 KB · no license · 2 matches

  1. clear
  2. %% two-region network simulation
  3. % initialize variables for model
  4. N = 100; % number of units in each region
  5. subN = 5; % number of cells in the sampled subnetwork
  6. n_sparse = 30; % number of cells receiving stimulus input
  7. subn_sparse = 5; % number of cells activated by each stimulus.
  8. subn_sparse_all =2; % number of cells shared across all stimuli
  9. n_slid_window = 2;
  10. nstep = floor((N-n_sparse)/n_slid_window) +1;
  11. ga = 0; % chaos parameter for network
  12. tau = 0.1; % decay time constant of RNNs
  13. dtData = 0.1; % 100ms time step (s) of the simulation
  14. T_pre = 200; % total simulation time
  15. T_image = 200; % total simulation time
  16. T= T_pre+T_image;%+T_post;
  17. t = T/dtData;
  18. nImage = 10; % number of natural images
  19. %NIduration_nbin = 1;
  20. %NIinterval_nbin = 1;
  21. Nrep = 60;%floor(round((T_image/dtData))/nImage/(NIduration_nbin+NIinterval_nbin)); %repetition
  22. tData = linspace(0,T,T/dtData);
  23. % parameters analysis
  24. % run prediction analyses
  25. flag_pred = 1;
  26. % Number of repetitions in the loop
  27. Nrep_loop = 10;
  28. itot=0;
  29. n_rv = 1; %number of repetitions for the random vector
  30. %% defining functions for prediction
  31. %function for predicting natural image
  32. %svm to cross validate predict the natural images
  33. LDAfun = @(XTRAIN,ytrain,XTEST)(predict(fitcdiscr(XTRAIN,ytrain,'DiscrimType','PseudoLinear'),XTEST));
  34. idx_fun = @(x,y)(x-y)/(x+y); %to calculate index
  35. %defining where to save
  36. save_path = 'E:\deOliveira_Kim_2026_datashare\processed_files\';
  37. %% loop starts here
  38. cd(save_path)
  39. % g_array = sort(logspace(-0.9,1.2,40),'ascend');
  40. g_array = fliplr(sort(logspace(0.4,1.7,20),'ascend')); %input scales that will change across
  41. subspace_prediction_flag =1; % run prediction on on/non/off subspaces
  42. for rep = 1:Nrep_loop
  43. tic
  44. R = lognrnd(1, 1, 1, N) ./ 10; % poisson rate for 100 ms bins
  45. spikes = zeros(t, N);
  46. for idx = 1:N
  47. spikes(:, idx) = poissrnd(R(idx), t, 1);
  48. end
  49. % normalize spikes
  50. maxspikes = max(spikes(:));
  51. if maxspikes>0
  52. spikes = spikes/maxspikes;
  53. end
  54. for g = 1:1:length(g_array)
  55. for iW =1:1:nstep
  56. itot = itot+1;
  57. % set up RNN A
  58. Ja = randn(N, N); %connectivity matrix
  59. Ja = ga/sqrt(N) * Ja;
  60. hCa = spikes(1,:); % start from poisson distribution
  61. % generate external inputs to the network, natural image
  62. amp_input = 1/g_array(g);%g_array(g);
  63. amp_noise = 1; % noise or shared input (movment)
  64. %preparing input general white noise
  65. prenoise = randn(1,round(T_pre/dtData)); %3 is the number of blocks (noise,speed,noise)
  66. prenoise = prenoise-min(prenoise(:));
  67. prenoise = amp_noise*prenoise./max(prenoise(:));
  68. %preparing input sparse stimuli
  69. intnoise = randn(1,round(T_image/dtData));
  70. intnoise = intnoise-min(intnoise(:));
  71. intnoise = amp_noise*intnoise/max(intnoise(:));
  72. input_stimuli = zeros(nImage, round(T_image/dtData));
  73. labels = [];
  74. for s =1: Nrep
  75. labels = [labels;randperm(nImage)'];
  76. end
  77. ts_stimuli = randperm(round(T_image/dtData)-1, size(labels,1));
  78. %random_image_all = reshape(random_image', 1, size(random_image,1)*size(random_image,2));
  79. for s=1:length(ts_stimuli)
  80. input_stimuli(labels(s),ts_stimuli(s))= 1;
  81. end
  82. input_stimuli_sum = sum(input_stimuli,1);
  83. %combining everything n*T maxtrix
  84. input_rnn = repmat([prenoise,intnoise],N,1);
  85. input_rnn2 = [zeros(nImage,size(prenoise,2)) amp_input*input_stimuli];
  86. idx_NI = [false(1,size(prenoise,2)) true(1,size( input_stimuli,2)) ];
  87. idx_sleep = [true(1,size(prenoise,2)) false(1,size( input_stimuli,2)) ];
  88. %Input connectivity matrix, or loadings
  89. W_input = randn(N,1);%poissrnd(lambda,N,1);%
  90. W_input = W_input-min(W_input);
  91. W_input = W_input/max(W_input);
  92. W_input = W_input+0.3; %ADDED BY EFO
  93. W_input = sort(W_input/max(W_input),'descend');
  94. W_input(51:100)=0;
  95. % W_input = sort(W_input,'descend');
  96. [C1,I1]= sort(W_input, 'descend');
  97. I_population = I1;
  98. %image input
  99. I_image = I_population((iW-1)*n_slid_window+1:n_sparse+(iW-1)*n_slid_window);
  100. I_image = I_image(randperm(size(I_image,1)));
  101. I_image_all = I_image(end-subn_sparse_all+1:end);
  102. I_image_selective = [];
  103. for s=1:nImage
  104. I_image_selective=[I_image_selective,I_image(randperm(n_sparse-subn_sparse_all,subn_sparse-subn_sparse_all))];
  105. end
  106. I_image_selective = [I_image_selective;repmat(I_image_all,1,nImage)];
  107. W_input4 = zeros(N,nImage);
  108. for s=1:nImage
  109. W_input4(I_image_selective(:,s), s) = randn(1,subn_sparse)*2;
  110. end
  111. W_input4(W_input4>1) = 1;
  112. W_input4(W_input4<-1) = -1;
  113. W_r(itot,1) = n_slid_window*(iW-1)+n_sparse/2; %this is going to be the overlap center of input
  114. SNratio(itot,1:2) = [amp_input, amp_noise];
  115. % generate time series simulated data
  116. Ra = NaN(N, length(tData));
  117. % independent noise scaled inversely with shared-input weights
  118. individual_noise = randn(N,length(tData));
  119. individual_noise = individual_noise-min(individual_noise(:));
  120. individual_noise = individual_noise/max(individual_noise(:));
  121. individual_noise = repmat((1-W_input),1,length(tData)).*individual_noise*amp_noise;
  122. %%
  123. % Running simulation
  124. for tt = 1:length(tData)
  125. Ra(:, tt) = tanh(hCa);
  126. JRa = W_input.*input_rnn(:,tt) + ...
  127. W_input4*input_rnn2(:,tt) + ...
  128. individual_noise(:,tt);
  129. hCa = hCa + dtData*(-hCa + JRa') / tau;
  130. % hCa = dtData*(JRa') / tau;
  131. end
  132. % normalize
  133. Ra = Ra./max(max(Ra));
  134. %saving Ra for posterior analysis
  135. %here, rep is the repetition of simulation, g is the amplitude
  136. %of noise used (SNR), and iW is the image inputs overlap with
  137. %chorister or soloists
  138. simulation(rep,g,iW).Ra = Ra;
  139. simulation(rep,g,iW).info = ['1st dimension of this structure is '...
  140. 'the repetition of simulation, g is the amplitude ',...
  141. 'of noise used (SNR), and iW is the image inputs overlap with ',...
  142. 'chorister or soloists'];
  143. simulation(rep,g,iW).amplitude_input = amp_input;
  144. simulation(rep,g,iW).overlap_soloists = W_r(itot,1);
  145. simulation(rep,g,iW).sparse_inputs = W_input4;
  146. simulation(rep,g,iW).index_sleep = idx_sleep;
  147. simulation(rep,g,iW).index_stim = ts_stimuli+sum(idx_sleep)+1;
  148. simulation(rep,g,iW).image_weights = W_input4;
  149. simulation(rep,g,iW).image_stim_time_index = input_rnn2;
  150. simulation(rep,g,iW).correlated_input_RNN = input_rnn;
  151. %getting PCs from 'sleep' period
  152. Ns = zscore(Ra(:,idx_sleep)');
  153. [Us,Ss,Vs] = svd(Ns,'econ');
  154. %% defining PCs that are on/non/off manifold
  155. pc_indices = get_pcs_asleep(Ns);
  156. num_dim(itot,1:3) = [ length(pc_indices.on_idx),...
  157. length(pc_indices.non_idx),...
  158. length(pc_indices.off_idx)];
  159. if length(pc_indices.on_idx)>0
  160. disp(['num dim on/non/off: ' num2str(num_dim(itot,1)) '/' num2str(num_dim(itot,2)) '/' num2str(num_dim(itot,3))])
  161. end
  162. %% Analysis of current model
  163. Vs_on = [];
  164. Vs_non = [];
  165. Vs_off = [];
  166. if length(pc_indices.on_idx)>0
  167. Vs_on = Vs(:,pc_indices.on_idx);
  168. end
  169. Vs_non = Vs(:, pc_indices.non_idx);
  170. Vs_off = Vs(:, pc_indices.off_idx);
  171. %% getting speed prediction from the model
  172. if flag_pred
  173. Nv = Ra(:,ts_stimuli+sum(idx_sleep)+1)';
  174. mu_sleep = mean(Ra(:,idx_sleep)');
  175. std_sleep = std(Ra(:,idx_sleep)');
  176. Nv_on = []; Nv_non=[]; Nv_off=[];
  177. if size(Vs_on,1)>0
  178. % Nv_on =zscore(Nv')*Vs_on;
  179. Nv_on = ( ( Nv-mu_sleep)./std_sleep ) * Vs_on;
  180. end
  181. if size(Vs_non,1)>0
  182. % Nv_non =zscore(Nv')*Vs_non;
  183. Nv_non = ( ( Nv-mu_sleep)./std_sleep ) * Vs_non; %normalizing to the sleep std and mean
  184. end
  185. if size(Vs_off,1)>0
  186. % Nv_off =zscore(Nv')*Vs_off;
  187. Nv_off = ( ( Nv-mu_sleep)./std_sleep ) * Vs_off;
  188. end
  189. %var_mtx(itot,1:4) = [sum(var(Nv_off)), sum(var(Nv_non)),mean(var(Nv_off)),mean(var(Nv_non))];
  190. var_mtx(itot,1:4) = [sum(var(Nv_on)),sum(var(Nv_non)), sum(var(Nv_off)),sum(var(( ( Nv-mu_sleep)./std_sleep )))];
  191. disp(var_mtx(itot,1:4)) %LATER BREAK IT DOWN IN WHAT IS WHAT
  192. %full rank prediction
  193. performance_pred(itot,:) = cross_validation_chunks(LDAfun,Nv,labels,'fitMeasure','F1_score');
  194. if subspace_prediction_flag==1
  195. % prediction on/non/off
  196. if size(Vs_on,1)>0
  197. performance_on(itot,:) = cross_validation_chunks(LDAfun,Nv_on,labels,'fitMeasure','F1_score');
  198. else
  199. performance_on(itot,:) = nan;
  200. end
  201. if size(Vs_non,1)>0
  202. performance_non(itot,:) = cross_validation_chunks(LDAfun,Nv_non,labels,'fitMeasure','F1_score');
  203. else
  204. performance_non(itot,:) = nan;
  205. end
  206. if size(Vs_off,1)>0
  207. performance_off(itot,:) = cross_validation_chunks(LDAfun,Nv_off,labels,'fitMeasure','F1_score');
  208. else
  209. performance_off(itot,:) = nan;
  210. end
  211. % random vectors to control for number of
  212. % dimensions
  213. for n = 1:n_rv
  214. %defining random vectors
  215. Vrand = orth(randn(size(Vs)));
  216. Vrand_on = Vrand(:, pc_indices.on_idx);
  217. Vrand_non = Vrand(:,pc_indices.non_idx);
  218. Vrand_off = Vrand(:,pc_indices.off_idx);
  219. %normalizing and projecting
  220. Nv_on_rand = ( ( Nv-mu_sleep)./std_sleep ) * Vrand_on; %normalizing to the sleep std and mean
  221. Nv_non_rand = ( ( Nv-mu_sleep)./std_sleep ) * Vrand_non; %normalizing to the sleep std and mean
  222. Nv_off_rand = ( ( Nv-mu_sleep)./std_sleep ) * Vrand_off; %normalizing to the sleep std and mean
  223. %prediction
  224. %on random vectors
  225. if size(Vs_on,1)>0
  226. performance_on_rand(itot,:,n_rv) = cross_validation_chunks(LDAfun,Nv_on_rand,labels,'fitMeasure','F1_score');
  227. else
  228. performance_on_rand(itot,:,n_rv) = nan;
  229. end
  230. %non random vectors
  231. if size(Vs_non,1)>0
  232. performance_non_rand(itot,:,n_rv) = cross_validation_chunks(LDAfun,Nv_non_rand,labels,'fitMeasure','F1_score');
  233. else
  234. performance_non_rand(itot,:,n_rv) = nan;
  235. end
  236. %off random vectors
  237. if size(Vs_off,1)>0
  238. performance_off_rand(itot,:,n_rv) = cross_validation_chunks(LDAfun,Nv_off_rand,labels,'fitMeasure','F1_score');
  239. else
  240. performance_off_rand(itot,:,n_rv) = nan;
  241. end
  242. end
  243. end
  244. end
  245. %saving results in a matrix
  246. if subspace_prediction_flag==1
  247. on_idx = arrayfun(idx_fun,performance_on(itot,:),mean(performance_on_rand(itot,:,:),3));
  248. non_idx = arrayfun(idx_fun,performance_non(itot,:),mean(performance_non_rand(itot,:,:),3));
  249. off_idx = arrayfun(idx_fun,performance_off(itot,:),mean(performance_off_rand(itot,:,:),3));
  250. mtx(itot,:)= [1/g_array(g), round(W_r(itot,1)), ...
  251. mean(on_idx), mean(non_idx), mean(off_idx), mean(performance_pred(itot,:))];
  252. disp(['input amp: ' num2str(mtx(itot,1)), ' soloist overlap: ' num2str(mtx(itot,2)), ' on idx: ' num2str(mtx(itot,3)),...
  253. ' non idx: ' num2str(mtx(itot,4)), ' off idx: ' num2str(mtx(itot,5)), ' full rank prediction: ' num2str(mtx(itot,6))])
  254. else
  255. mtx(itot,:)= [1/g_array(g), round(W_r(itot,1)), mean(performance_pred(itot,:))];
  256. disp(['input amp: ' num2str(mtx(itot,1)), ' soloist overlap: ' num2str(mtx(itot,2)),...
  257. ' full rank prediction: ' num2str(mtx(itot,3))])
  258. end
  259. [r3]= corr(abs(Vs(:,1)),abs(Vs(:,end)));
  260. cor_mtx(itot,2) = r3;
  261. end
  262. end
  263. % save tmp12_1_no_off
  264. t_elap= toc;
  265. disp(['Simulation and analysis time for repetition ' num2str(rep) ': ' num2str(toc) ' s'])
  266. end
  267. %pred(:,1) = mean([performance_pred1(:,:)],2);
  268. %pred(:,2) = mean([performance_pred2(:,:)],2);
  269. pred(:,3) = mean(performance_pred,2);
  270. if subspace_prediction_flag==1
  271. p_off=mean(performance_off,2);
  272. p_non=mean(performance_non,2);
  273. p_on=mean(performance_on,2);
  274. p_off_r=mean(performance_off_rand,2);
  275. p_non_r=mean(performance_non_rand,2);
  276. pIndex_off=(mean(performance_off,2)-mean(performance_off_rand,2))./(mean(performance_off,2)+mean(performance_off_rand,2));
  277. %pIndex_on=(mean(performance_on,2)-mean(performance_on_rand,2))./(mean(performance_on,2)+mean(performance_on_rand,2));
  278. pIndex_non=(mean(performance_non,2)-mean(performance_non_rand,2))./(mean(performance_non,2)+mean(performance_non_rand,2));
  279. %pIndex_off_non = (mean(performance_off,2)-mean(performance_non,2))./(mean(performance_off,2)+mean(performance_non,2));
  280. end
  281. var_off = var_mtx(:,3)./var_mtx(:,4);
  282. var_non = var_mtx(:,2)./var_mtx(:,4);
  283. n_var_off = normalize(var_off,'range',[0,1]);
  284. n_var_non = normalize(var_non,'range',[0,1]);
  285. SNratio(:,3) = SNratio(:,1)./SNratio(:,2);
  286. rW_r = W_r(:,1);%round(W_r(:,1)*10)/10;
  287. u_W_r = unique(rW_r);
  288. u_snr = unique(SNratio(:,3));
  289. for k=1:length(u_W_r)
  290. for m=1:length(u_snr)
  291. row = find(SNratio(:,3) == u_snr(m) & rW_r == u_W_r(k));
  292. tableP(k,m) = nanmean(pred(row,3));
  293. if subspace_prediction_flag==1
  294. tableoff(k,m) = nanmean(pIndex_off(row));
  295. tablenon(k,m)=nanmean(pIndex_non(row));
  296. tablePoff(k,m) = nanmean(p_off(row));
  297. tablePnon(k,m)=nanmean(p_non(row));
  298. end
  299. tableVoff(k,m) = nanmean(var_off(row));
  300. tableVnon(k,m)=nanmean(var_non(row));
  301. tableVoffN(k,m) = nanmean(n_var_off(row));
  302. tableVnonN(k,m)=nanmean(n_var_non(row));
  303. n_table(k,m) = length(row);
  304. s_table(k,m) = u_snr(m);
  305. w_table(k,m) = u_W_r(k);
  306. %row = find(SNratio(:,3) == u_snr(m) & rW_r == u_W_r(k) & num_dim(:,3);
  307. end
  308. end
  309. save('SN_v5_EFO.mat','-v7.3')

simple_network_v5.m at commit 8c45860, no license · at the source

Overview

Authors: Eliezyer Fermino de Oliveira1, Soyoun Kim1, Tian Season Qiu1, Adrien Peyrache2, Renata Batista-Brito1,3,4,5, Lucas Sjulson1,3
  1. Dominick P. Purpura Department of Neuroscience, Albert Einstein College of Medicine,Bronx, NY USA
  2. Montreal Neurological Institute, McGill University,Montreal, QC Canada
  3. Department of Psychiatry and Behavioral Sciences, Albert Einstein College of Medicine,Bronx, NY USA
  4. Department of Genetics, Albert Einstein College of Medicine,Bronx, NY USA
  5. Present Address: Nash Family Department of Neuroscience, Icahn School of Medicine at Mount Sinai,New York City, USA
Journal: Nature communications, volume 17, issue 1, article 8911
Dates: received 17 April 2026; accepted 26 June 2026; published online 21 July 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1038/s41467-026-75347-4 · PMID 42481470 · PMCID PMC13503742 · OpenAlex W7169870840
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: mouse (organism), systems (subfield)
Methods: Connectivity, Statistics, Smoothing, state filtering, decompositions, Machine learning, Preprocessing, Spectral & time-frequency, fMRI & imaging, Single-unit activity, calcium imaging, Physiology & signal measures
Keywords: Sensorimotor processing, Computational neuroscience, Neuronal physiology
MeSH: Primary Visual Cortex*, Sleep*, Visual Cortex*, Animals, Male, Mice, Mice, Inbred C57BL, Movement, Neurons, Photic Stimulation (* major topic)
Topic: Sleep and Wakefulness Research (Cognitive Neuroscience, Neuroscience), according to OpenAlex
Citations: not cited yet (Europe PMC); 59 references in the paper

Abstract

The primary visual cortex (V1) encodes multidimensional representations of ongoing movements, raising the question of how these signals are organized and interact with sensory representations within the same population. Here we addressed this question by using extracellular recordings in deep layers of mouse V1 to explore the relationship of movement and stimulus representations to intrinsic local circuit dynamics observed during non-REM (NREM) sleep. NREM revealed low-dimensional dynamics corresponding to an “on-manifold” subspace associated with the intrinsic manifold and an “off-manifold” subspace comprising dimensions suppressed by intrinsic dynamics, with remaining dimensions forming an “unstructured” subspace not systematically related to these dynamics. Movement and stimulus representations are both concentrated on-manifold, where they interact additively. However, stimulus representations are also concentrated off-manifold, where interference from movement-evoked activity is minimized. Off-manifold coding comprises population-sparse stimulus-evoked activity in chorister neurons, revealing an unexpected link between dimensionality, chorister/soloist cells, and sparse coding. Our findings suggest that intrinsic dynamics constrain neuronal activity in V1 and provide a structured substrate balancing the integration and segregation of movement and stimulus representations.

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

cortex-lab/phy

License: BSD-3-Clause
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 807cf1825c16a3d95cb591091c291bad6803e81d, 26 September 2026
Languages: Python (150), Shell (2), JavaScript (2)
Size: 276 files, 154 scripts
Software Heritage: archived
Found in: the text, “Stereotactic surgery and data acquisition”
Holds: README, license file, environment (pyproject.toml, uv.lock, deprecated/environment.yml, deprecated/requirements-dev.txt, deprecated/requirements.txt, deprecated/setup.cfg, deprecated/setup.py), tests, continuous integration, documentation
Not found: CITATION.cff
Tools: Phy (98 files), NumPy (67 files), Matplotlib (8 files), SciPy (2 files), imageio (1 file), Pillow (1 file), scikit-learn (1 file), UMAP (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
156 files

buzsakilab/buzcode

License: GPL-3.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 0969ddf7f55ccaca8c71969bee4b21f310840047, 27 August 2026
Languages: MATLAB (1980), C (29), C/C++ (15), Jupyter (5), C++ (1)
Size: 3,062 files, 2,030 scripts
Software Heritage: archived
Found in: the text, “Data analysis”
Holds: README, license file, tests, documentation, 4 notebooks
Not found: CITATION.cff, environment file, continuous integration
Tools: EEGLAB (172 files), Statistics and Machine Learning Toolbox (97 files), Chronux (74 files), Signal Processing Toolbox (64 files), CircStat (41 files), Image Processing Toolbox (12 files), FieldTrip (9 files), Matplotlib (5 files), NumPy (5 files), Optimization Toolbox (4 files), Parallel Computing Toolbox (4 files), Neurodata Without Borders (PyNWB, MatNWB) (3 files), SciPy (3 files), boundedline (2 files), scikit-image (2 files), export_fig (1 file), Curve Fitting Toolbox (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
2,000 files

joao-semedo/communication-subspace

License: MIT
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: fd0e408ba2244d9369bda59f326480386c770e5c, 27 September 2019
Languages: MATLAB (24)
Size: 27 files, 24 scripts
Software Heritage: archived
Found in: the text, “Data analysis”
Holds: README, license file
Not found: CITATION.cff, environment file, tests, continuous integration, documentation
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
26 files

SjulsonLab/deOliveira_Kim_SleepV1_2026

License: none: the authors keep all their rights
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 8c4586062b140d0d52ab3227c0866c33b1a21bf9, 3 May 2026
Languages: MATLAB (86), Python (2)
Size: 92 files, 88 scripts
Software Heritage: not archived
Found in: “Code availability”
Holds: README
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: Statistics and Machine Learning Toolbox (70 files), NumPy (2 files), PyTorch (2 files), scikit-learn (2 files), SciPy (2 files), Signal Processing Toolbox (1 file), Matplotlib (1 file), Numba (1 file), pandas (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
89 files

Zenodo 20024211

License: CC-BY-4.0
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Size: 1 file
Software Heritage: not checked
Found in: “Code availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: Statistics and Machine Learning Toolbox (70 files), NumPy (2 files), PyTorch (2 files), scikit-learn (2 files), SciPy (2 files), Signal Processing Toolbox (1 file), Matplotlib (1 file), Numba (1 file), pandas (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
  • 27 September 2026: the link answers (HTTP 200)
89 files
At the source:

Code availability

The code used to reproduce the analyses presented in this manuscript is publicly available on GitHub at: https://github.com/SjulsonLab/deOliveira_Kim_SleepV1_2026. An archived version of the repository is also available on Zenodo at: 10.5281/zenodo.20024211.

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:

  • 5 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 2,352 scripts, each with its path and the digest of its content;
  • 22 matches between paragraphs of the paper and lines of the code (method lexical-v1);
  • neither the text of the paper nor the code itself.

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

Data

Datasets cited

Data availability

The datasets generated and/or analyzed during the current study have been deposited in the Zenodo database under accession code 20013296 (https://doi.org/10.5281/zenodo.20013296).

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

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 6 authors, 3 keywords, 10 MeSH terms, 7 funders, 59 references.

Cite

This paper

de Oliveira, E. F., Kim, S., Qiu, T. S., Peyrache, A., Batista-Brito, R., & Sjulson, L. (2026). Sleep reveals dynamics integrating and segregating movement and stimulus representations in V1. Nature communications, 17(1), 8911. https://doi.org/10.1038/s41467-026-75347-4

BibTeX

@article{deoliveira2026sleep,
author = {de Oliveira, Eliezyer Fermino and Kim, Soyoun and Qiu, Tian Season and Peyrache, Adrien and Batista-Brito, Renata and Sjulson, Lucas},
title = {{Sleep reveals dynamics integrating and segregating movement and stimulus representations in V1}},
journal = {Nature communications},
year = {2026},
month = jul,
volume = {17},
number = {1},
pages = {8911},
publisher = {Nature Publishing Group},
issn = {2041-1723},
doi = {10.1038/s41467-026-75347-4},
url = {https://doi.org/10.1038/s41467-026-75347-4},
pmid = {42481470},
pmcid = {PMC13503742}
}

RIS

TY - JOUR
AU - de Oliveira, Eliezyer Fermino
AU - Kim, Soyoun
AU - Qiu, Tian Season
AU - Peyrache, Adrien
AU - Batista-Brito, Renata
AU - Sjulson, Lucas
TI - Sleep reveals dynamics integrating and segregating movement and stimulus representations in V1
T2 - Nature communications
J2 - Nat Commun
PY - 2026
DA - 2026/07/21
VL - 17
IS - 1
SP - 8911
SN - 2041-1723
PB - Nature Publishing Group
DO - 10.1038/s41467-026-75347-4
UR - https://doi.org/10.1038/s41467-026-75347-4
LA - en
ER -

CSL-JSON

{
"id": "10.1038/s41467-026-75347-4",
"type": "article-journal",
"title": "Sleep reveals dynamics integrating and segregating movement and stimulus representations in V1",
"container-title": "Nature communications",
"author": [
{
"family": "de Oliveira",
"given": "Eliezyer Fermino"
},
{
"family": "Kim",
"given": "Soyoun"
},
{
"family": "Qiu",
"given": "Tian Season"
},
{
"family": "Peyrache",
"given": "Adrien"
},
{
"family": "Batista-Brito",
"given": "Renata"
},
{
"family": "Sjulson",
"given": "Lucas"
}
],
"container-title-short": "Nat Commun",
"volume": "17",
"issue": "1",
"page": "8911",
"DOI": "10.1038/s41467-026-75347-4",
"PMID": "42481470",
"PMCID": "PMC13503742",
"ISSN": "2041-1723",
"publisher": "Nature Publishing Group",
"URL": "https://doi.org/10.1038/s41467-026-75347-4",
"language": "en",
"issued": {
"date-parts": [
[
2026,
7,
21
]
]
}
}

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-02357-2 [code]
Experience reorganizes content-specific memory traces in macaques.
Journal: Nature neuroscience
In common: Phy, Chronux, export_fig, 17 other tools, 5 references
[2] doi:10.1038/s41467-026-73106-z [code]
Respiratory pauses highlight sleep architecture in mice.
Journal: Nature communications
In common: Neurodata Without Borders (PyNWB, MatNWB), Chronux, export_fig, 14 other tools, mouse, 2 references
[3] doi:10.1016/j.celrep.2026.117646 [code]
Medial entorhinal-hippocampal desynchronization parallels the emergence of memory impairment in a mouse model of Alzheimer's disease pathology.
Journal: Cell reports
In common: Neurodata Without Borders (PyNWB, MatNWB), Chronux, export_fig, 15 other tools, systems, mouse, 1 reference
[4] doi:10.1016/j.neuron.2026.03.034 [code]
Dentate gyrus interneurons modulate winner-take-all network dynamics in freely behaving mice.
Journal: Neuron
In common: Chronux, boundedline, CircStat, 13 other tools, systems, mouse, 2 references
[5] doi:10.1523/jneurosci.2001-25.2026 [code]
Dynamics of Dentate Gyrus Place Cells and Dentate Spikes during Spatial and Nonspatial Changes in Environments.
Journal: The Journal of neuroscience : the official journal of the Society for Neuroscience
In common: Phy, Chronux, export_fig, 12 other tools, systems, 1 reference
[6] doi:10.1038/s41593-026-02232-0 [code]
Entorhinal cortex represents task-relevant remote locations independently of CA1.
Journal: Nature neuroscience
In common: Phy, Neurodata Without Borders (PyNWB, MatNWB), CircStat, 13 other tools, systems, mouse, 1 reference
[7] doi:10.1038/s41467-026-71725-0 [code]
Interactions across hemispheres in prefrontal cortex reflect global cognitive processing.
Journal: Nature communications
In common: export_fig, Optimization Toolbox, Parallel Computing Toolbox, 8 other tools, 7 references
[8] doi:10.1016/j.patter.2026.101590 [code]
Density-based longitudinal neuron tracking in high-density electrophysiological recordings.
Journal: Patterns (New York, N.Y.)
In common: Phy, CircStat, imageio, 12 other tools, 1 reference
[9] doi:10.1038/s41467-026-71151-2 [code]
Common and distinct neural correlates of social interaction processing and theory of mind in narratives.
Journal: Nature communications
In common: boundedline, Optimization Toolbox, UMAP, 12 other tools
[10] doi:10.1371/journal.pbio.3003915 [code]
Noise-invariant representations of sound emerge along the canonical cortical hierarchy.
Journal: PLoS biology
In common: Curve Fitting Toolbox, Optimization Toolbox, UMAP, 10 other tools, mouse, 2 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.

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.