A prefrontal cortex-lateral hypothalamus circuit controls stress-driven increased food intake.
The 1 match
- [1] § Method › In vivo electrophysiology recordings › Recording single-unit activity of prefrontal cortical neurons ↔ preprocessing/kwik2dat.m, lines 1 to 24 · score 0.57 · Open Ephys, Analog, GUI, synchronized, TTL, filtered · Report a mismatch
Paper
Loaded from Europe PMC by your browser; OSCR does not store it: doi.org · Europe PMC
The paper is loaded when this pane is shown.
The authors' code
MATLAB · 327 lines · 12 KB · no license · 1 match
- function kwik2dat(kwik_path,save_path,sync_channels,sync_input,local_copy,subtract_light)
- % kwik2dat(kwik_path,save_path,sync_channel,sync_input)
- % IN PROGRESS NOTES: started to set up to load in chunks (by channel for
- % filtering/downsampling LFP, but then this couldn't do CAR...) didn't
- % finish
- %
- % Converts kwik format recorded from open-ephys into flat binary
- % Splits signal in two: one 500 Hz low-pass LFP(lfp.dat),
- % one cross-channel median subtracted spike (spikes.dat)
- % Also saves sync channel and parameters/header info
- %
- % kwk_path - path with kwik files
- % save_path - path to save the converted data
- %
- % sync_channels - TTL channels with synchronization input to save
- % (NOTE: input TTL channel as 1-indexed like in GUI, not 0-indexed like in
- % saved data)
- % sync_input - 'ttl' or 'adc', depending on digital/analog in of sync
- % local_copy - true/false, copies data to temporary local folder for faster reading
- % Kwik files from open ephys:
- % .raw.kwd: continuous data from all channels
- % .kwe: event data
- %% Make save directory
- if ~exist(save_path,'dir');
- mkdir(save_path)
- end
- %% Get filenames for each experiment in path
- kwd_dir = dir([kwik_path filesep '*.kwd']);
- kwd_filename = [kwik_path filesep kwd_dir(1).name];
- kwe_dir = dir([kwik_path filesep '*.kwe']);
- kwe_filename = [kwik_path filesep kwe_dir(1).name];
- settings_dir = dir([kwik_path filesep '*.xml']);
- settings_filename = [kwik_path filesep settings_dir(1).name];
- % Get index of electrophysiology channels in recordings
- kwik_settings = xml2struct(settings_filename);
- ephys_ch = find(cellfun(@(x) any(strfind(x.Attributes.name,'CH')), ...
- kwik_settings.SETTINGS.SIGNALCHAIN.PROCESSOR{1}.CHANNEL_INFO.CHANNEL));
- n_chan = length(ephys_ch);
- % Get sample rate and gain
- rec_info_locationInKWD = '/recordings/0';
- rec_info = h5info(kwd_filename,rec_info_locationInKWD);
- sample_rate_idx = cellfun(@(x) strcmp(x,'sample_rate'),{rec_info.Attributes.Name});
- sample_rate = double(rec_info.Attributes(sample_rate_idx).Value);
- ch_gain = cellfun(@(x) str2num(x.Attributes.gain), ...
- kwik_settings.SETTINGS.SIGNALCHAIN.PROCESSOR{1}.CHANNEL_INFO.CHANNEL(ephys_ch));
- if length(unique(ch_gain)) == 1
- ch_gain = unique(ch_gain);
- else
- error('Gains set differently for different channel: no contingency for this in param file yet')
- end
- % Location in the H5 file where the recordings are
- locationInKWD = '/recordings/0/data';
- % Load header info
- info = h5info(kwd_filename,locationInKWD);
- %% If local_copy selected, move data to temporary local drive for loading
- if local_copy
- disp('Copying data to local drive...')
- temp_path = 'C:\temp';
- temp_filename = [temp_path filesep kwd_dir(1).name];
- if ~exist(temp_path,'dir')
- mkdir(temp_path)
- end
- copyfile(kwd_filename,temp_filename);
- disp('Done');
- % set data filename to the local filename
- kwd_filename = temp_filename;
- end
- %% Save synchronization input as .mat
- disp('Getting and saving sync...');
- switch sync_input
- case 'ttl'
- % If sync was recorded as TTL through digital input
- kwe_channels_loc = '/event_types/TTL/events/user_data/event_channels';
- kwe_sample_stamp_loc = '/event_types/TTL/events/time_samples';
- kwe_value_loc = '/event_types/TTL/events/user_data/eventID';
- kwe_sample_rate_loc = '/recordings/0';
- ttl_channels = h5read(raw_kwd_filename,kwe_channels_loc);
- ttl_samplestamp = h5read(raw_kwd_filename,kwe_sample_stamp_loc);
- ttl_values = h5read(raw_kwd_filename,kwe_value_loc);
- ttl_sample_rate = double(h5readatt(raw_kwd_filename,kwe_sample_rate_loc,'sample_rate'));
- % Save seperately all TTL events that belong to the specified sync channel
- sync = struct('timestamps',cell(size(sync_channels)), ...
- 'values',cell(size(sync_channels)));
- for curr_sync = 1:length(sync_channels)
- sync_events = ttl_channels == (sync_channels(curr_sync)-1);
- sync(curr_sync).timestamps = double(ttl_samplestamp(sync_events))/ttl_sample_rate;
- sync(curr_sync).values = logical(ttl_values(sync_events));
- end
- sync_save_filename = [save_path filesep 'sync.mat'];
- save(sync_save_filename,'sync');
- case 'adc'
- % If sync was recorded through analog input
- sync = struct('timestamps',cell(size(sync_channels)), ...
- 'values',cell(size(sync_channels)));
- for curr_sync = 1:length(sync_channels)
- % Find the sync ADC channel index
- recorded_sync_ch = find(cellfun(@(x) strcmp(['ADC' num2str(sync_channels(curr_sync))],x.Attributes.name), ...
- kwik_settings.SETTINGS.SIGNALCHAIN.PROCESSOR{1}.CHANNEL_INFO.CHANNEL));
- % Load in the corresponding trace
- sync_trace = h5read(kwd_filename, locationInKWD,[recorded_sync_ch,1],[1,Inf]);
- % Binarize the sync trace based on half-max
- sync_trace = sync_trace >= max(sync_trace/2);
- sync_samplestamp = find((~sync_trace(1:end-1) & sync_trace(2:end)) | ...
- (sync_trace(1:end-1) & ~sync_trace(2:end)))+1;
- sync(curr_sync).timestamps = sync_samplestamp/sample_rate;
- sync(curr_sync).values = sync_trace(sync_samplestamp);
- end
- sync_save_filename = [save_path filesep 'sync.mat'];
- save(sync_save_filename,'sync');
- end
- %% Filter and save spikes and LFP
- % Load in each channel separately (because probably too large to load in at
- % once, can be faster if multiple but easier to just to all channels
- % individually for now)
- % NOTE: this involves a lot of tricks in writing the file, because it
- % writes in column order but should be written in row-order. This means
- % that the first sample for each channel is written separately, then all
- % other samples are written after n delayed bytes (and int16 = 2 bytes)
- %%%% Could alternatively make downsampled LFP signal first and then load
- %%%% back in and filter, but stuff from higher frequencies would be aliased
- %%%% in then
- disp('Loading channels, preprocessing, saving...');
- if local_copy
- lfp_save_filename = [temp_path filesep 'lfp.dat'];
- spikes_save_filename = [temp_path filesep 'spikes.dat'];
- else
- lfp_save_filename = [save_path filesep 'lfp.dat'];
- spikes_save_filename = [save_path filesep 'spikes.dat'];
- end
- lfp_fid = fopen(lfp_save_filename, 'w');
- spikes_fid = fopen(spikes_save_filename, 'w');
- % Figure out memory situation
- dmem = memory;
- memToLeaveFree = 4 * 2^30; % num of GB to keep free
- memToAllocate = dmem.MemAvailableAllArrays - memToLeaveFree;
- memToAllocate = max(0, memToAllocate);
- nint16s = memToAllocate/2;
- n_samples = info.Dataspace.Size(2);
- load_chans_n = floor(nint16s/n_samples);
- %%%%% AT THE MOMENT THE FILE WRITING ISNT SET UP FOR CHUNKS: SO JUST DO ALL
- load_chans_n = n_chan;
- %%%%%
- split_chans_n = [0,ceil(linspace(floor(n_chan/load_chans_n)-1,n_chan,floor(n_chan/load_chans_n)))];
- load_chans = mat2cell(ephys_ch,1,diff(split_chans_n));
- for curr_chan_chunk = 1:length(load_chans)
- curr_chans = load_chans{curr_chan_chunk};
- disp(['Channels ' num2str(curr_chans(1)) '-' num2str(curr_chans(end))]);
- curr_dat = h5read(kwd_filename,locationInKWD,[curr_chans(1),1],[length(curr_chans),Inf]);
- %%%%%%%%%%% TESTING
- if subtract_light
- disp('Subtracting mean-estimated light artifacts...');
- % get response to light onset/offset for each light
- exposure_time = mean([median(diff(sync(3).timestamps)),median(diff(sync(4).timestamps))]);
- surround_samples = -1:(floor(exposure_time*sample_rate)-1);
- % Define light sync channels
- light_sync = [3,4];
- % Go through illum 1/2 onset/offset, subtract
- for curr_sync = light_sync
- for curr_state = 0:1
- for curr_chan = 1:size(curr_dat,1)
- curr_chan_dat = curr_dat(curr_chan,:);
- % Define and pull samples
- pull_samples = bsxfun(@plus,round(sample_rate* ....
- sync(curr_sync).timestamps(sync(curr_sync).values == curr_state))',surround_samples);
- curr_samples = curr_chan_dat(pull_samples);
- % Get the mean light response, normalized to pre-light
- curr_artifact = int16(nanmean(bsxfun(@minus,curr_samples,curr_samples(:,surround_samples == -1)),1));
- curr_subtract = bsxfun(@minus,curr_samples,curr_artifact);
- % Replace values
- curr_chan_dat(pull_samples) = curr_subtract;
- curr_dat(curr_chan,:) = curr_chan_dat;
- end
- end
- end
- end
- %%%%%%%%%%% TESTING
- % Split the signal in two:
- % 1) LFP (low-pass filtered and downsampled)
- disp('Filtering, downsampling, saving LFP...');
- fprintf('%2d',0);
- lfp_cutoff = 500;
- [b, a] = butter(3, lfp_cutoff/sample_rate, 'low');
- lfp_downsamp = (sample_rate/lfp_cutoff)/2;
- % filter by channel individually to avoid increasing data size
- dat_lfp = zeros(length(curr_chans),ceil(n_samples/lfp_downsamp),'int16');
- for filt_chan = 1:length(curr_chans)
- curr_lfp = filter(b,a,single(curr_dat(filt_chan,:)'))';
- curr_lfp = curr_lfp(1:lfp_downsamp:end);
- dat_lfp(filt_chan,:) = int16(curr_lfp);
- clear curr_lfp
- fprintf('%c%c%2d',8,8,floor(100*filt_chan/length(curr_chans)));
- end
- fwrite(lfp_fid,dat_lfp,'int16');
- %%% Use this stuff later for chunking
- %fseek(lfp_fid,(curr_chan(1)-1)*2,'bof');
- %fwrite(lfp_fid,dat_lfp(:,1),'int16');
- %fwrite(lfp_fid,dat_lfp(:,2:end),'int16',(n_chan-1)*2);
- clear dat_lfp
- % 2) Spikes with median across channels subtracted
- disp('Subtracting common median and saving spikes...')
- fprintf('%2d',0);
- % (do this in chunks: median can destroy memory)
- max_t = 1e6;
- n_chunks = ceil(size(curr_dat,2)/max_t);
- t_chunks = round(linspace(1,size(curr_dat,2),n_chunks+1));
- for curr_chunk = 1:n_chunks
- curr_t = t_chunks(curr_chunk):t_chunks(curr_chunk+1);
- % Get channel offset by median across time
- curr_chunk_offset = median(curr_dat(:,curr_t),2);
- % Remove channel offset for chunk
- curr_dat(:,curr_t) = bsxfun(@minus,curr_dat(:,curr_t),curr_chunk_offset);
- % Get and remove median across channels
- curr_chunk_median = median(curr_dat(:,curr_t),1);
- curr_dat(:,curr_t) = bsxfun(@minus,curr_dat(:,curr_t),curr_chunk_median);
- % Add back offset so there aren't jumps if median drifts
- curr_dat(:,curr_t) = bsxfun(@plus,curr_dat(:,curr_t),curr_chunk_offset);
- fprintf('%c%c%2d',8,8,floor(100*curr_chunk/n_chunks));
- end
- fwrite(spikes_fid,curr_dat,'int16');
- %%% Use this stuff later for chunking
- %fseek(spikes_fid,(curr_chan(1)-1)*2,'bof');
- %fwrite(spikes_fid,curr_dat(:,1),'int16');
- %fwrite(spikes_fid,curr_dat(:,2:end),'int16',(n_chan-1)*2);
- end
- fclose(lfp_fid);
- fclose(spikes_fid);
- disp('Done');
- %% Save parameters/header information in separate file
- params = {'raw_path',['''' kwik_path '''']; ...
- 'n_channels',num2str(length(ephys_ch)); ...
- 'sample_rate',num2str(sample_rate); ...
- 'gain',num2str(ch_gain); ...
- 'lfp_cutoff',num2str(lfp_cutoff)};
- param_filename = [save_path filesep 'dat_params.txt'];
- formatSpec = '%s = %s\r\n';
- fid = fopen(param_filename,'w');
- for curr_param = 1:size(params,1)
- fprintf(fid,formatSpec,params{curr_param,:});
- end
- fclose(fid);
- %% If local copy, move local processed to server, delete local data copy
- if local_copy
- disp('Moving local copy to server...')
- movefile(lfp_save_filename,[save_path filesep 'lfp.dat']);
- movefile(spikes_save_filename,[save_path filesep 'spikes.dat']);
- delete(temp_filename)
- disp('Done')
- end
kwik2dat.m at commit fcea2b2, no license · at the source
Overview
- Department of Translational Neuroscience, Brain Center, UMC Utrecht, Utrecht University, Utrecht, The Netherlands
- Department of Human Genetics, Center for Neurogenomics and Cognitive Research, Amsterdam University Medical Center, Amsterdam, The Netherlands
Abstract
Stress can drive overconsumption of high-fat foods. The medial prefrontal cortex (mPFC) is implicated in such stress-eating, but the underlying circuit mechanisms remain unclear. Here, we show that mPFC projections to the lateral hypothalamus (LHA) are required for stress-induced fat intake in male mice. We find that mPFC-LHA stimulation in sated states increases fat intake. Social stress acutely engages mPFC-LHA neurons, and inhibiting this pathway selectively prevents stress-driven excess fat intake. Circuit mapping shows that mPFC neurons innervate GABAergic and glutamatergic LHA (LHAVGLUT2) neurons, but that social stress preferentially engages mPFC-LHAVGLUT2 neurons and causes plasticity at mPFC-LHAVGLUT2 synapses. Specifically, stress weakens mPFC synapses onto LHAVGLUT2 neurons that curtail food intake, while strengthening mPFC synapses onto midbrain-projecting LHAVGLUT2 neurons linked to stress-eating. We show that LHAVGLUT2 neurons are required downstream mPFC targets for transforming stress into heightened fat intake. Overall, we identify the mPFC-LHA as a multi-branched network, indispensable for stress-eating.
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 1 match between paragraphs and lines of code.
cortex-lab/spikes
fcea2b20e736b533e5baf612752b66121a691128, 4 February 2024Availability: 2 checks, the latest on 3 November 2026: the link answers
- 3 November 2026: the link answers
- 30 September 2026: the link answers
105 files
- analysis/
WithinRanges.m , MATLAB, 105 lines - analysis/
clusterAverage.m , MATLAB, 27 lines - analysis/
computeRawRMS.m , MATLAB, 37 lines - analysis/
computeSpikeWidths.m , MATLAB, 30 lines - analysis/
eventLockedAvg.m , MATLAB, 61 lines - analysis/
findTempForEachClu.m , MATLAB, 26 lines - analysis/
getWaveForms.m , MATLAB, 68 lines - analysis/
helpers/ , MATLAB, 205 linesCCG.m - analysis/
helpers/ , MATLAB, 29 linesCCGBinContents.m - analysis/
helpers/ , C, 207 linesCCGHeart.c - analysis/
helpers/ , MATLAB, 205 linesCCG_mine.m - analysis/
helpers/ , MATLAB, 53 linesCanonCor2.m - analysis/
helpers/ , MATLAB, 23 linesbest_fit_line.m - analysis/
helpers/ , MATLAB, 11 linesclip.m - analysis/
helpers/ , MATLAB, 9 linescountUnique.m - analysis/
helpers/ , MATLAB, 31 lineseventTrigTrace.m - analysis/
helpers/ , C, 292 lineshistdiff.c - analysis/
helpers/ , MATLAB, 24 lineshistdiff.m - analysis/
helpers/ , C, 303 lineshistdiffMulti.c - analysis/
helpers/ , MATLAB, 9 linesmyGaussWin.m - analysis/
helpers/ , MATLAB, 114 linesnanconv.m - analysis/
helpers/ , MATLAB, 83 linesschmitt.m - analysis/
helpers/ , MATLAB, 16 linesschmittTimes.m - analysis/
kernel/ , MATLAB, 51 linesKernelEventSeries.m - analysis/
kernel/ , MATLAB, 109 linesKernelModel.m - analysis/
kernel/ , MATLAB, 30 linesKernelModelToeplitz.m - analysis/
kilosortPredictData.m , MATLAB, 102 lines - analysis/
ksDriftmap.m , MATLAB, 82 lines - analysis/
lfpBandPower.m , MATLAB, 61 lines - analysis/
makeAllBA.m , MATLAB, 70 lines - analysis/
myACG.m , MATLAB, 70 lines - analysis/
psthAndBA.m , MATLAB, 36 lines - analysis/
psthByDepth.m , MATLAB, 51 lines - analysis/
psthRasterAndCounts.m , MATLAB, 44 lines - analysis/
readDat.m , MATLAB, 25 lines - analysis/
replaceMissingSitesP3.m , MATLAB, 38 lines - analysis/
rocArea.m , MATLAB, 44 lines - analysis/
slidingChoiceProbability , MATLAB, 44 lines.m - analysis/
sparseNoiseRF.m , MATLAB, 218 lines - analysis/
spikeTrigLFP.m , MATLAB, 39 lines - analysis/
templatePositionsAmplitu , MATLAB, 82 linesdes.m - analysis/
timestampsToBinned.m , MATLAB, 34 lines - analysis/
trueSpikeSNR.m , MATLAB, 109 lines - exampleScript.m, MATLAB, 148 lines
- preprocessing/
applyCARtoDat.m , MATLAB, 76 lines - preprocessing/
applyCorrection.m , MATLAB, 9 lines - preprocessing/
extractMedianWFs.m , MATLAB, 55 lines - preprocessing/
extractSyncChannel.m , MATLAB, 16 lines - preprocessing/
extractSyncChannelFromFi , MATLAB, 45 linesle.m - preprocessing/
helpers/ , MATLAB, 17 linesfindMinDiffs.m - preprocessing/
helpers/ , MATLAB, 12 linestotalMinDiffs.m - preprocessing/
imecPhase3/ , MATLAB, 20 linesextractSyncChan.m - preprocessing/
imecPhase3/ , MATLAB, 23 linesmakeForPRBimecP3.m - preprocessing/
imecPhase3/ , MATLAB, 69 linessplitGLXBinFile.m - preprocessing/
kwik2dat.m , MATLAB, 327 lines, 1 match - preprocessing/
loadSync.m , MATLAB, 60 lines - preprocessing/
makeChanMapFromSGLMeta.m , MATLAB, 52 lines - preprocessing/
makeCorrection.m , MATLAB, 47 lines - preprocessing/
oe2dat.m , MATLAB, 157 lines - preprocessing/
phyHelpers/ , MATLAB, 29 linesaddGainToParamsPy.m - preprocessing/
phyHelpers/ , MATLAB, 24 linesgetMetaFname.m - preprocessing/
phyHelpers/ , MATLAB, 62 linesloadAllKsDir.m - preprocessing/
phyHelpers/ , MATLAB, 96 linesloadKSdir.m - preprocessing/
phyHelpers/ , MATLAB, 48 linesloadParamsPy.m - preprocessing/
phyHelpers/ , MATLAB, 20 linesmakeAmplitudesTSV.m - preprocessing/
phyHelpers/ , MATLAB, 27 linesreadClusterGroupsCSV.m - preprocessing/
phyHelpers/ , MATLAB, 55 linessparsePCs.m - preprocessing/
phyHelpers/ , MATLAB, 23 linessparsePCsTopPC.m - preprocessing/
phyHelpers/ , MATLAB, 15 lineswriteBordersCSV.m - preprocessing/
phyHelpers/ , MATLAB, 29 lineswritePhyTSV.m - preprocessing/
phyHelpers/ , MATLAB, 21 lineswriteToParamsPy.m - preprocessing/
readSpikeGLXmeta.m , MATLAB, 88 lines - preprocessing/
spikeGLXdigitalParse.m , MATLAB, 43 lines - preprocessing/
text2struct.m , MATLAB, 24 lines - preprocessing/
xml2struct.m , MATLAB, 183 lines - visualization/
+ks/ , MATLAB, 69 linescomputeAndPlotWFampHist. m - visualization/
computeWFampsOverDepth.m , MATLAB, 15 lines - visualization/
evRastersGUI.m , MATLAB, 763 lines - visualization/
eventsAlignedRasters.m , MATLAB, 58 lines - visualization/
eventsAlignedRasters2.m , MATLAB, 45 lines - visualization/
eventsAlignedRastersWith , MATLAB, 92 linesGrouping.m - visualization/
helpers/ , MATLAB, 5,902 linescolorcet.m - visualization/
helpers/ , MATLAB, 12 linescolormap_BlueWhiteRed.m - visualization/
helpers/ , MATLAB, 9 linescolormap_RedWhiteBlue.m - visualization/
helpers/ , MATLAB, 6 linescolormap_greyZero_blackr ed.m - visualization/
helpers/ , MATLAB, 26 linesgetOr.m - visualization/
helpers/ , MATLAB, 24 linesmakepretty.m - visualization/
helpers/ , MATLAB, 19 linesrasterize.m - visualization/
movieWithTracesSpikes.m , MATLAB, 469 lines - visualization/
plotAsPhase3.m , MATLAB, 68 lines - visualization/
plotAsProbe.m , MATLAB, 39 lines - visualization/
plotDriftmap.m , MATLAB, 120 lines - visualization/
plotLFPpower.m , MATLAB, 49 lines - visualization/
plotPSTHbyDepth.m , MATLAB, 38 lines - visualization/
plotUnitScatter.m , MATLAB, 132 lines - visualization/
plotWFampCDFs.m , MATLAB, 30 lines - visualization/
plotWaveform.m , MATLAB, 32 lines - visualization/
popRasterViewer.m , MATLAB, 509 lines - visualization/
psthViewer.m , MATLAB, 403 lines - visualization/
quickMovieSpikes.m , MATLAB, 29 lines - visualization/
quickMovieSpikesALF.m , MATLAB, 98 lines - visualization/
rasterAndPSTHbyCond.m , MATLAB, 74 lines - visualization/
simpleWFplot.m , MATLAB, 25 lines - visualization/
waveformSpaceTimeSlice.m , MATLAB, 55 lines - README.md, Text, 8 lines
Zenodo 18670225
Availability: 1 check, the latest on 30 September 2026: the link answers (HTTP 200)
- 30 September 2026: the link answers (HTTP 200)
5 files
- 240807_fat_eating_graphs
.py , Python, 625 lines - 241028_fat_eating.py, Python, 329 lines
- general functions/
Functions_plots_fateatin , Python, 800 linesg.py - general functions/
Functions_prepocessing_f , Python, 145 linesateating.py - general functions/
analyzeanimal_fat_eating , Python, 834 lines_250204_2side_sliding_av erage.py
Code availability
The location for the codes used for the analyses in the current study have been referenced in the Methods section of the manuscript.
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:
- 2 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 109 scripts, each with its path and the digest of its content;
- 1 match between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
No dataset and no data link were found in the paper.
Data availability
All detailed outcomes of the statistical test are provided in Supplementary Data 1. Source Data are provided with this paper. Other data files are available from the corresponding author on request. Source data are provided with this paper.
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, 30 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 12 authors, 4 keywords, 12 MeSH terms, 2 funders, 57 references.
Cite
This paper
Supiot, L. F., Kooij, K. L., Du, W., Benschop, A. A. C., Nicolson, A. S. J., Haak, R., Wolterink-Donselaar, I. G., Luijendijk, M. C. M., Riga, D., Adan, R. A. H., Poorthuis, R. B., & Meye, F. J. (2026). A prefrontal cortex-lateral hypothalamus circuit controls stress-driven increased food intake. Nature communications, 17(1), 4620. https://
BibTeX
@article{supiot2026prefr
author = {Supiot, L F and Kooij, K L and Du, W and Benschop, A A C and Nicolson, A S J and Haak, R and Wolterink-Donselaar, I G and Luijendijk, M C M and Riga, D and Adan, R A H and Poorthuis, R B and Meye, F J},
title = {{A prefrontal cortex-lateral hypothalamus circuit controls stress-driven increased food intake}},
journal = {Nature communications},
year = {2026},
month = mar,
volume = {17},
number = {1},
pages = {4620},
publisher = {Nature Publishing Group},
issn = {2041-1723},
doi = {10.1038/
url = {https://
pmid = {41912543},
pmcid = {PMC13199376}
}
RIS
TY - JOUR
AU - Supiot, L F
AU - Kooij, K L
AU - Du, W
AU - Benschop, A A C
AU - Nicolson, A S J
AU - Haak, R
AU - Wolterink-Donselaar, I G
AU - Luijendijk, M C M
AU - Riga, D
AU - Adan, R A H
AU - Poorthuis, R B
AU - Meye, F J
TI - A prefrontal cortex-lateral hypothalamus circuit controls stress-driven increased food intake
T2 - Nature communications
J2 - Nat Commun
PY - 2026
DA - 2026/
VL - 17
IS - 1
SP - 4620
SN - 2041-1723
PB - Nature Publishing Group
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"type": "article-journal",
"title": "A prefrontal cortex-lateral hypothalamus circuit controls stress-driven increased food intake",
"container-title": "Nature communications",
"author": [
{
"family": "Supiot",
"given": "L F"
},
{
"family": "Kooij",
"given": "K L"
},
{
"family": "Du",
"given": "W"
},
{
"family": "Benschop",
"given": "A A C"
},
{
"family": "Nicolson",
"given": "A S J"
},
{
"family": "Haak",
"given": "R"
},
{
"family": "Wolterink-Donselaar",
"given": "I G"
},
{
"family": "Luijendijk",
"given": "M C M"
},
{
"family": "Riga",
"given": "D"
},
{
"family": "Adan",
"given": "R A H"
},
{
"family": "Poorthuis",
"given": "R B"
},
{
"family": "Meye",
"given": "F J"
}
],
"container-title-short":
"volume": "17",
"issue": "1",
"page": "4620",
"DOI": "10.1038/
"PMID": "41912543",
"PMCID": "PMC13199376",
"ISSN": "2041-1723",
"publisher": "Nature Publishing Group",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
3,
31
]
]
}
}
The tracing map gets a citation of its own once an author has validated it and it has a DOI.
Similar papers
The papers with a page that share the most with this one: the tools found in their code, their categories, datasets, cited references and authors, the rarest counting most.
- [1] doi:10.1038/s41467-025-58384-3
- Distinct ventral tegmental area neuronal ensembles are indispensable for reward-driven approach and stress-driven avoidance behaviors.Journal: Nature communicationsIn common: mouse, 3 references, 3 authors
- [2] doi:10.1523/jneurosci.0518-24.2024 [code]
- Sequential Activation of Lateral Hypothalamic Neuronal Populations during Feeding and Their Assembly by Gamma Oscillations.Journal: The Journal of neuroscience : the official journal of the Society for NeuroscienceIn common: seaborn, pandas, SciPy, 2 other tools, mouse, 11 references
- [3] doi:10.1038/s41421-025-00857-2 [code]
- Prefrontal cortex-to-hypothalamic outputs orchestrate cue-potentiated palatable food consumption via AMPKβ2 signaling.Journal: Cell discoveryIn common: Optimization Toolbox, 10 references
- [4] doi:10.1016/j.cmet.2023.02.008 [code]
- Complementary lateral hypothalamic populations resist hunger pressure to balance nutritional and social needs.Journal: Cell metabolismIn common: h5py, seaborn, pandas, 3 other tools, mouse, 7 references
- [5] doi:10.1016/j.isci.2023.108328 [code]
- Hypothalamic neuronal outputs transmit sensorimotor signals at the onset of locomotor initiation.Journal: iScienceIn common: h5py, seaborn, pandas, 3 other tools, 6 references
- [6] doi:10.1038/s41467-025-59686-2
- Energy state guides reward seeking via an extended amygdala to lateral hypothalamus pathway.Journal: Nature communicationsIn common: mouse, 9 references
- [7] doi:10.1016/j.neuron.2025.08.030 [code]
- Ultra-high-density Neuropixels probes improve detection and identification in neuronal recordings.Journal: NeuronIn common: Open Ephys analysis tools, Optimization Toolbox, h5py, 7 other tools, mouse, 1 reference
- [8] doi:10.1038/s41467-024-51983-6
- Hypothalamic-hindbrain circuit for consumption-induced fear regulation.Journal: Nature communicationsIn common: mouse, 8 references
- [9] doi:10.1038/s41593-024-01598-3 [code]
- The dynamic state of a prefrontal-hypothalamic-
midbrain circuit commands behavioral transitions. Journal: Nature neuroscienceIn common: Statistics and Machine Learning Toolbox, pandas, SciPy, 2 other tools, mouse, 5 references - [10] doi:10.1038/s41467-025-65665-4 [code]
- Disrupted theta synchronization and synaptic connectivity in the visual cortex of Fmr1 KO mice.Journal: Nature communicationsIn common: Optimization Toolbox, h5py, Signal Processing Toolbox, 6 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.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 2 repositories of the authors' code, each at its verified commit and with its license, 109 scripts, and 1 match 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:7b13b2417c167072…
Add the badge to the code's README
If you are an author or a maintainer of this paper's code, you can add this badge. It says what OSCR knows of the paper (its code, its validated tracing map) and links the code to this page. Paste one of these snippets under the README's title. Keep the two marks around it, so that the badge can be replaced in place and is never added twice. OSCR changes nothing in your repository.
Markdown
<!-- oscr-badge:start -->
[](https://openscicode.org/badge/doi/10.1038/s41467-026-71073-z)
<!-- oscr-badge:end -->reStructuredText
.. oscr-badge:start
.. image:: https://openscicode.org/badge/doi/10.1038/s41467-026-71073-z.svg
:target: https://openscicode.org/badge/doi/10.1038/s41467-026-71073-z
:alt: OSCR
.. oscr-badge:endHTML
<!-- oscr-badge:start -->
<a href="https://openscicode.org/badge/doi/10.1038/s41467-026-71073-z"><img src="https://openscicode.org/badge/doi/10.1038/s41467-026-71073-z.svg" alt="OSCR"></a>
<!-- oscr-badge:end -->On GitHub, open the README, choose Edit (the pencil), paste the snippet under the title, then "Commit changes".
If you choose to, you can have the badge kept up to date for you, with oscr badge --write from the command line or with the GitHub Action in your repository's workflows. Every other form and option (a card, AsciiDoc, LaTeX, shields.io) is on the badge 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: code errors and mismatches between the code and the paper about this paper and its code, from readers and its authors, beside the paper and its tracing map.
Report a mismatch between the code and the paper · Report a code error (signed in)
Reproductions: reports from readers who ran the authors' code and did not get the paper's result, what they ran, with which environment, commit and data.
Report a reproduction failure (signed in)
Versions of its code: the releases of its code tied to a version of this paper (the preprint, the accepted manuscript, the version of record…), each with the tracing map versioned with it.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
