The vagus nerve promotes memory in rats via nutrient-induced septo-hippocampal acetylcholine signaling.
The 1 match
- [1] § Methods › In vivo fiber photometry ↔ Neurophotometrics_LTL.m, lines 90–225 · score 0.63 · dependent signal, biexponential, artifacts, subtracted, excitation, Neurophotometrics
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 · 269 lines · 11 KB · no license · 1 match
- %% Import data:
- %Import the data as a numeric matrix where time in on the first column and
- %the signals are in all subsequent columns to the right.
- %The following code assumes recording sessions should produce 3 csv files (maybe more depending on
- %experiment: (1) rawdata; contains photometry data, (2) time; should be a
- %vector of time, here we have it as ms in 'time of day', (3) keydown file
- %with timestamps.
- %The time and keydown files get imported as a numeric matrix.
- % The photometry data get imported as a table. We import as:
- % table name: AnimalID, and the columns 0G or 1G (whichever region you're
- % recording from) and change its name to signal.
- D2708.time = D2708_time; %The variable to the right is the raw file that gets imported, it gets imported as numeric matrix,
- % and we're assigning it to a table.
- %theres usually a weird artifact within the first 1-5 data points so we cut the first ten to be safe.
- FP.rawdata(:,1) = D2708.time(20:end);
- FP.rawdata(:,2) = D2708.signal(20:end);
- %Assign the first time data point of the new table to startpoint.
- startpoint = FP.rawdata(1,1);
- %Here we normalize the keydown time values to start at zero and convert
- %them to seconds, they come in ms originally.
- D2708_sfs_keydown = (D2708_sfs_keydown - startpoint) ./ 1000;
- %Here we do the same thing but for the time column of our data.
- FP.rawdata(:,1) = (FP.rawdata(:,1) - startpoint)./1000;
- %quick check to make sure which is isosbestic
- plot(downsample(FP.rawdata(2:end,2),2),'b')
- hold on
- plot(downsample(FP.rawdata(:,2),2),'r')
- ylabel({'Raw fluorescence'});
- xlabel({'data point #'});
- title({'AnimalID Raw de-interleaved isosbestic and Ca dependent traces'});
- %% if running behavioral task where keydown corresponds to the start of Anymaze behavioral tracking then run the code below:
- FP.rawdata(:,1) = FP.rawdata(:,1) - D2708_sfs_keydown;
- % Define time window
- tMin = -10;
- tMax = 120;
- % Logical index based on time column
- idx = FP.rawdata(:,1) >= tMin & FP.rawdata(:,1) <= tMax;
- % Keep only the desired time range
- FP.rawdata = FP.rawdata(idx, :)
- %% De interleaving
- %Here we de-interleave the signal because the system alternates collection
- %between biomolecule-dependent signal and the isosbestic signal.
- %FP.calcium_dependent(:,1) = downsample(FP.rawdata(:,1),2);
- %FP.calcium_dependent(:,2) = downsample(FP.rawdata(:,2),2);
- FP.calcium_dependent(:,1) = downsample(FP.rawdata(2:end,1),2);
- FP.calcium_dependent(:,2) = downsample(FP.rawdata(2:end,2),2);
- %FP.isosbestic(:,1) = downsample(FP.rawdata(2:end,1),2);
- %FP.isosbestic(:,2) = downsample(FP.rawdata(2:end,2),2);
- FP.isosbestic(:,1) = downsample(FP.rawdata(:,1),2);
- FP.isosbestic(:,2) = downsample(FP.rawdata(:,2),2);
- %Then we plot them to take another look
- f3 = figure;
- subplot(2,1,1)
- plot(FP.calcium_dependent(:,1),FP.calcium_dependent(:,2),'b')
- subplot(2,1,2)
- plot(FP.isosbestic(:,1),FP.isosbestic(:,2),'r')
- f6 = figure;
- yyaxis left
- plot(FP.calcium_dependent(:,1),FP.calcium_dependent(:,2),'b')
- yyaxis right
- plot(FP.isosbestic(:,1),FP.isosbestic(:,2),'r');
- %% Methods of neural data processing:
- %Method 1: Substracting a running average over a long period of time from
- %your data. This works well -- for quick and dirty tests -- but is a bit of
- %a hack. It also tends to fail if you have shorter recordings and higher
- %SNR. ie Your recording in fiber 2. Let's use that as an example for the
- %different methods.
- f4 = figure;
- subplot(5,1,1)
- plot(FP.calcium_dependent(:,1),FP.calcium_dependent(:,2));
- title('Deinterleaved Raw Data')
- xlabel('Time of day in total ms')
- subplot(5,1,2)
- plot(FP.calcium_dependent(:,1),FP.calcium_dependent(:,2)-smooth(FP.calcium_dependent(:,2),5455));
- title('Linearize by Smoothing')
- xlabel('Time of day in total ms')
- ylabel('F')
- %Another method is to fit the data with a biexponential and subtract that
- %fit from the data. This is nicer, since it is based on biology (bleaching
- %is monoexponential + bleaching of fiber / heat mediated LED decay gives
- %you the second exponential.
- %The fiber bleaching + heat mediated decay can be minimized experimentally
- %by "pre bleaching" the fiber and pre-heating the LED (you can do this all
- %at once -- just set the light power to 100% for ~10 minutes before your
- %experient while you are getting everything else set up.)
- subplot(5,1,3)
- temp_fit = fit(FP.calcium_dependent(:,1),FP.calcium_dependent(:,2),'exp2');
- plot(FP.calcium_dependent(:,1),FP.calcium_dependent(:,2)-temp_fit(FP.calcium_dependent(:,1)));
- title('Linearize by Fitting with Biexponential')
- xlabel('Time of day in total ms')
- ylabel('F')
- % You can also fit, scale, and subtract the isosbestic signal from the
- % calcium dependent signal. This is probably the "best" of the three
- % methods desribed here -- as it is less affected by having good signal (ie
- % the former 2 methods get wonky when your SNR is super high and your
- % recording is short -- as it starts to fit the signal, rather than the
- % slow decay, which is bad news bears)
- subplot(5,1,4)
- %fit isosbestic
- temp_fit = fit(FP.calcium_dependent(:,1),FP.isosbestic(:,2),'exp2'); %note, in this case, I am ignoring the first 2000 points where there is this weird fast decay to get a better fit. experimentally, i normally set things up so this isn't an important time in the recording / animal is habituating.
- %scale fit to calcium dependent data
- fit2 = fitlm(temp_fit(FP.calcium_dependent(:,1)),FP.calcium_dependent(:,2));
- %calculate a crude dF/F by subtracting and then dividing by the fit
- figure(2)
- subplot(3,1,3)
- plot(FP.calcium_dependent(:,1),100*(FP.calcium_dependent(:,2)-(fit2.Fitted))./(fit2.Fitted))
- xlabel('Time (seconds)')
- ylabel('dF/F (%)')
- title('A5521 CA1 - processed and traces subtracted')
- FP.corrected_data = FP.calcium_dependent(:,1),100*(FP.calcium_dependent(:,2)-(fit2.Fitted))./(fit2.Fitted);
- %NOTE: To get a normalized measurement (ie dF/F) you will need to know what
- %the background is. For example, if you subtracted this fit from the raw
- %data and then divided by the fit -- it would look super wonky -- as you
- %are subtracting numbers above and below 0.
- %One way to try and get at this, is record for a second without any
- %excitation lights on. The signal will never be 0 -- but this will be a
- %low-end of what your background signal is. True "background" would be your
- %recording with the excitation lights on when no neurons are active (which
- %is hard to get). The former works great.
- %If your data are clean, the last method is probably the best (imho) -- but
- %there is an issue. We now have dF/F values that are less than 0 which
- %can't happen. Stupid fix is to add the absolute value of the lowest number
- %to the entire vector. Best method is to have some estimate of background
- %subtraction.
- %For argument's sake, let's say the background for the isosbestic signal
- %was 5000.
- subplot(5,1,5)
- FP.fakebackground =0;% find(min(D2708_bl.signal));
- %fit isosbestic
- temp_fit = fit(FP.calcium_dependent(:,1),FP.isosbestic(:,2),'exp2'); %note, in this case, I am ignoring the first 2000 points where there is this weird fast decay to get a better fit. experimentally, i normally set things up so this isn't an important time in the recording / animal is habituating.
- %scale fit to calcium dependent data
- fit2 = fitlm(temp_fit(FP.calcium_dependent(:,1)),FP.calcium_dependent(:,2));
- %calculate a crude dF/F by subtracting and then dividing by the fit
- plot(FP.calcium_dependent(:,1),100*(FP.calcium_dependent(:,2)-((fit2.Fitted)-FP.fakebackground))./(fit2.Fitted-FP.fakebackground))
- xlabel('Time of day in total ms')
- ylabel('dF/F (%)')
- title('Linearizing + Normalizing Using Isosbestic + Background Subtracting')
- %Now, if the ultimate goal is to show short sections of data chopped up
- %around an event, then it doesn't make a whole heap of difference which
- %method you use. In most cases, even uncorrected data, over 30 second
- %segments, looks fine at a shorter time scale (since bleaching occurs over
- %many minutes). However, it is good practice + necessary if you want to say
- %something like "signal later on in the trial was of a different magnitude
- %than signal earlier in the trial."
- FP.corrected_data(:,1) = FP.calcium_dependent(:,1); %we'll keep the time vector in the first column to make things easier
- temp_fit = fit(FP.calcium_dependent(:,1),FP.isosbestic(:,2),'exp2'); %note, in this case, I am ignoring the first 2000 points where there is this weird fast decay to get a better fit. experimentally, i normally set things up so this isn't an important time in the recording / animal is habituating.
- %scale fit to calcium dependent data
- fit2 = fitlm(temp_fit(FP.calcium_dependent(:,1)),FP.calcium_dependent(:,2));
- %calculate a crude dF/F by subtracting and then dividing by the fit
- FP.corrected_data(:,2) = 100*(FP.calcium_dependent(:,2)-((fit2.Fitted)-FP.fakebackground))./(fit2.Fitted-FP.fakebackground);
- clear temp_fit fit2
- f5 = figure;
- subplot(2,1,1)
- plot(FP.corrected_data(:,1),FP.corrected_data(:,2))
- title('Corrected Data')
- xlabel('time (seconds)')
- ylabel('dF/F')
- FP.corrected_data(:,1) = FP.corrected_data(:,1);
- FP.corrected_data(:,2) = FP.corrected_data(:,2);
- %note, there is still some wonky stuff going on (ie not super duper linear.
- %this is partially due to using a fake background (not in subplot 4 of
- %previous graph, you don't really see this) -- and partially some artifact
- %of the fit function. it tends to work better if you fit with corrected
- %time data (ie not time of day in total ms -- but relative time in seconds)
- %-- not sure why that is, but didn't want to muddy the waters here
- %%
- %Referencing behaviors
- %1) Indexing: Find datapoint in FP data that is closest to behavioral
- %timestamp
- %2) Chop up data about these points
- %3) Make dope graphs
- %4) Profit
- %For this, since the FP and keystroke data are in the same "time space" (ie
- %timestamped by teh same computer in the same format, we are going to loop
- %through each keystroke timestamp and go from there
- FP.bl = 12000; %number of datapoints to look at before keydown
- FP.seg_dur = 36000; %number of datapoints to look at after keydown
- t = [];
- temp = [];
- FP.saline.D2708 = []; %necessary if you re-run this part of the code changing baseline or seg_dur
- for i = 1
- t = find(FP.corrected_data(:,1) >= D2708_keydown(i)); %find all FP data indices that are greater than or equal to keystroke timestampe
- temp(i,:) = t(1); %take the first one
- %FP.seg_dur = length(FP.corrected_data)-temp;
- %note, these data were already corrected -- so, theoretically, the
- %differences in baseline activity are real. if you'd like to baseline
- %correct these data, you can subtract the mean of the bs period
- %FP.ERF.data(:,i) = FP.ERF.data(:,i) - mean(FP.ERF.data(1:FP.bl,i));
- end
- new_start = [];
- for ii = 1 % 8 is the number of csp and csn trials in a session.
- FP.saline.D2708(1,:) = FP.corrected_data(temp(ii)-FP.bl:temp(ii)+FP.seg_dur,2)
- %new_start(ii) = FP.saline_Day3.data_inj_4014_CA3(ii,1);
- %FP.saline_Day3.a4014_CA3_salinex3_final(ii,:) = FP.saline_Day3.data_inj_4014_CA3(ii,:) - new_start(ii);
- end
- FP.saline.D2708 = FP.saline.D2708';
Neurophotometrics_LTL.m at commit 3922016, no license · at the source
Overview
- Human and Evolutionary Biology Section, Department of Biological Sciences, University of Southern California,Los Angeles, CA USA
- Neuroscience Graduate Program, University of Southern California,Los Angeles, CA USA
- Department of Psychology, O’Leary Center, Bucknell University,Lewisburg, PA USA
- Centre de recherche du CHUM, Université de Montréal,Montreal, QC Canada
- Department of Nutrition, Université de Montréal,Montreal, QC Canada
Abstract
The abstract is not reproduced here: the paper's license (CC BY-NC-ND) does not allow it. Read it in the paper, at the publisher or on Europe PMC.
Repositories
Its files are read in the Code ↔ Paper reader above, with 1 match between paragraphs and lines of code.
ltiernol/Kanoski-Lab-Vagus-HPCd-ACh-manuscript-code
3922016ae060c67b05574726aa78b82a5d670552, 12 May 2026Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
5 files
- Neurophotometrics_LTL.m, MATLAB, 269 lines, 1 match
- Photometry_SFS.m, MATLAB, 1,155 lines
- Refeeding_meal_bout_anal
ysis.m , MATLAB, 302 lines - refeeding_revisions_anal
yses.m , MATLAB, 1,499 lines - README.md, Text, 12 lines
OSF y7hup
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
- 27 September 2026: the link answers (HTTP 200)
5 files
- Neurophotometrics_LTL.m, MATLAB, 269 lines
- Photometry_SFS.m, MATLAB, 1,155 lines
- Refeeding_meal_bout_anal
ysis.m , MATLAB, 302 lines - refeeding_revisions_anal
yses.m , MATLAB, 1,499 lines - README.md, Text, 12 lines
Code availability statement
The paper has a code availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:
- it points to the authors' code: ltiernol/
Kanoski-Lab-Vagus-HPCd-A , OSF y7hupCh-manuscript-code
Read it in the paper: doi.org/10.1038/s41467-026-73896-2.
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;
- 8 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
Datasets cited
- figshare:29442143, at figshare; found in DataCite
Code and data availability statement
The paper has a code and data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:
- it points to the authors' code: ltiernol/
Kanoski-Lab-Vagus-HPCd-A , OSF y7hupCh-manuscript-code
Read it in the paper: doi.org/10.1038/s41467-026-73896-2.
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, 15 authors, 2 keywords, 12 MeSH terms, 1 funder, 84 references, 1 RRID.
Cite
This paper
Tierno Lauer, L., Hayes, A. M. R., Suarez, A. N., Bashaw, A., Klug, M. E., Kao, A. E., Cheng, R., Rea, J. J., Subramanian, K. S., Nourbash, A., Donohue, K. N., Schier, L. A., Myers, K., Décarie-Spain, L., & Kanoski, S. E. (2026). The vagus nerve promotes memory in rats via nutrient-induced septo-hippocampal acetylcholine signaling. Nature communications, 17(1), 7154. https://
BibTeX
@article{tiernolauer2026
author = {Tierno Lauer, Logan and Hayes, Anna M. R. and Suarez, Andrea N. and Bashaw, Alexander and Klug, Molly E. and Kao, Alicia E. and Cheng, Robert and Rea, Jessica J. and Subramanian, Keshav S. and Nourbash, Anna and Donohue, Kristen N. and Schier, Lindsey A. and Myers, Kevin and Décarie-Spain, Léa and Kanoski, Scott E.},
title = {{The vagus nerve promotes memory in rats via nutrient-induced septo-hippocampal acetylcholine signaling}},
journal = {Nature communications},
year = {2026},
month = jun,
volume = {17},
number = {1},
pages = {7154},
publisher = {Nature Publishing Group},
issn = {2041-1723},
doi = {10.1038/
url = {https://
pmid = {42236727},
pmcid = {PMC13396592}
}
RIS
TY - JOUR
AU - Tierno Lauer, Logan
AU - Hayes, Anna M. R.
AU - Suarez, Andrea N.
AU - Bashaw, Alexander
AU - Klug, Molly E.
AU - Kao, Alicia E.
AU - Cheng, Robert
AU - Rea, Jessica J.
AU - Subramanian, Keshav S.
AU - Nourbash, Anna
AU - Donohue, Kristen N.
AU - Schier, Lindsey A.
AU - Myers, Kevin
AU - Décarie-Spain, Léa
AU - Kanoski, Scott E.
TI - The vagus nerve promotes memory in rats via nutrient-induced septo-hippocampal acetylcholine signaling
T2 - Nature communications
J2 - Nat Commun
PY - 2026
DA - 2026/
VL - 17
IS - 1
SP - 7154
SN - 2041-1723
PB - Nature Publishing Group
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"type": "article-journal",
"title": "The vagus nerve promotes memory in rats via nutrient-induced septo-hippocampal acetylcholine signaling",
"container-title": "Nature communications",
"author": [
{
"family": "Tierno Lauer",
"given": "Logan"
},
{
"family": "Hayes",
"given": "Anna M. R."
},
{
"family": "Suarez",
"given": "Andrea N."
},
{
"family": "Bashaw",
"given": "Alexander"
},
{
"family": "Klug",
"given": "Molly E."
},
{
"family": "Kao",
"given": "Alicia E."
},
{
"family": "Cheng",
"given": "Robert"
},
{
"family": "Rea",
"given": "Jessica J."
},
{
"family": "Subramanian",
"given": "Keshav S."
},
{
"family": "Nourbash",
"given": "Anna"
},
{
"family": "Donohue",
"given": "Kristen N."
},
{
"family": "Schier",
"given": "Lindsey A."
},
{
"family": "Myers",
"given": "Kevin"
},
{
"family": "Décarie-Spain",
"given": "Léa"
},
{
"family": "Kanoski",
"given": "Scott E."
}
],
"container-title-short":
"volume": "17",
"issue": "1",
"page": "7154",
"DOI": "10.1038/
"PMID": "42236727",
"PMCID": "PMC13396592",
"ISSN": "2041-1723",
"publisher": "Nature Publishing Group",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
6,
4
]
]
}
}
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.3389/fnbeh.2026.1895371 [code]
- Discrete and differentiated encoding of distinct components of spatial experience occurs within the proximodistal subfields of the dorsoventral axis of the hippocampus.Journal: Frontiers in behavioral neuroscienceIn common: rat, 6 references
- [2] doi:10.1038/s41467-026-76242-8 [code]
- Whole-brain, all-optical interrogation of neuronal dynamics underlying gut and vascular interoception in zebrafish.Journal: Nature communicationsIn common: 5 references
- [3] doi:10.1016/j.cpblue.2026.100072 [code]
- NodoMap: A single-cell and spatial transcriptomic atlas of the mouse nodose ganglion.Journal: Cell press blueIn common: 4 references
- [4] doi:10.1016/j.molmet.2026.102371
- A distinct vagus-beta cell neural circuit senses glucose and modulates insulin secretion.Journal: Molecular metabolismIn common: 4 references
- [5] doi:10.1038/s41586-026-10191-6
- Intestinal interoceptive dysfunction drives age-associated cognitive decline.Journal: NatureIn common: 3 references
- [6] doi:10.1038/s41467-026-75522-7
- High ambient temperature activates a neural circuit for gut glucose uptake in male mice.Journal: Nature communicationsIn common: 3 references
- [7] doi:10.1016/j.isci.2026.116206 [code]
- Gut distension evokes rapid neural dynamics in vagal and hindbrain populations of larval zebrafish.Journal: iScienceIn common: 3 references
- [8] doi:10.1016/j.celrep.2026.117590 [code]
- Impaired behavioral inhibition in Fmr1 KO mice is linked to disrupted visual cortex theta oscillations.Journal: Cell reportsIn common: Statistics and Machine Learning Toolbox, 2 references
- [9] doi:10.3390/nu18081200
- Neurological Effects of &
lt;i& gt;Cleistocalyx nervosum& lt;/ i& gt; var. & lt;i& gt;paniala& lt;/ i& gt; Berry on Hippocampal Transcriptome, Neuritogenesis, and Synaptogenesis. Journal: NutrientsIn common: rat, 2 references - [10] doi:10.7554/elife.110795 [code]
- REM sleep prefrontal high-frequency oscillation chains mediate distinct cortical - hippocampal reactivation patterns compared to NREM sleep.Journal: eLifeIn common: Statistics and Machine Learning Toolbox, rat, 1 reference
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 2 repositories of the authors' code, each at its verified commit and with its license, 8 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:2db72e484b0517ce…
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.
