A synaptic mechanism for encoding the learned value of action-derived safety.
The 1 match
- [1] § Methods › Fiber photometry ↔ Codes/Whole_Trial_Photometry/Whole Trial GCaMP.ipynb, lines 75–216 · score 0.52 · cue onset, linear, autofluorescence, GCaMP, fit, photometry
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 · 258 lines · 11 KB · no license · 1 match
- # %% [markdown]
- # # Calculate GCaMP DFF
- # %% [markdown]
- # ### 1) Read in the autofluorescence, GCaMP, and shock csv files and return auto, gcamp, and shock pandas DataFrames.
- # %%
- #import packages
- import os as os #os
- import pandas as pd #pandas
- import numpy as np #numpy
- import scipy as scipy #scipy
- import matplotlib.lines as mlines #matplotlib
- import matplotlib.pyplot as plt #matplotlib
- plt.style.use('ggplot') #emulate ggplot from R
- #% matplotlib inline
- #view plots in jupyter notebook
- # %% [markdown]
- # #### *User Input Required Below*
- # %%
- #***change working directory, ID, session, and number of trials****
- #***These are the only details you need to change to run the whole script***
- #IMPORTANT - to change working directory, use os.chdir(path)
- os.chdir('C:\\')
- working_directory = os.getcwd()
- print(working_directory)
- ID = ''
- session = ''
- # %% [markdown]
- # #### *User Input Required Below*
- # %%
- #read in the autofluorescence, GCaMP, and cue csv files and return auto, gcamp, and shock pandas DataFrames
- #IMPORTANT - to change file name, format as ('file name.csv')
- auto = pd.read_csv(ID + '_' + session +'_AF.csv')
- gcamp = pd.read_csv(ID + '_' + session + '_GC.csv')
- shock = pd.read_csv(ID + '_' + session + '_cue.csv')
- # %% [markdown]
- # ### 2) Combine the time column and the auto, gcamp, and shock d0 columns to create a master pandas DataFrame. Write out the master pandas DataFrame as a csv file to the working directory.
- # %%
- #make auto, gcamp, and shock column headings lowercase
- auto.columns = auto.columns.str.lower()
- gcamp.columns = gcamp.columns.str.lower()
- shock.columns = shock.columns.str.lower()
- #absolute value of shock d0 column values
- shock.d0 = shock.d0.abs()
- #combine time column and auto, gcamp, and shock d0 columns to create master pandas DataFrame
- master = pd.concat([auto['time'], auto['d0'], gcamp['d0'], shock['d0']], axis = 1, keys = ['time', 'auto', 'gcamp', 'shock'])
- #write out master as a csv file to working directory
- master.to_csv(ID + '_' + session + '_master.csv')
- # %% [markdown]
- # ### 3) Determine the data range for the calculations. Create a master_input pandas DataFrame.
- # %%
- #determine the rows in which shock occurs
- shock_rows = master.loc[master.shock > .75].index[:].tolist()
- #determine the rows in which shock onset occurs
- shock_onset_rows = [shock_rows[0]]
- for i in range(1, len(shock_rows)):
- if shock_rows[i] > shock_rows[i - 1] + 1:
- shock_onset_rows.append(shock_rows[i])
- file_num = 1 #set file number to start at 1 initially
- shock_onset_rows = shock_onset_rows[0:len(shock_rows)]
- print('shock_onset_rows =' , shock_onset_rows)
- # %% [markdown]
- # #### *User Input Required Below*
- # %%
- for num in shock_onset_rows:
- #create shock_onset
- shock_onset = num #IMPORTANT - can change number to any of the numbers in shock_onset_rows
- if shock_onset in shock_onset_rows:
- print('shock_onset =', shock_onset)
- else:
- raise ValueError('shock_onset not found in shock_onset_rows')
- #create begin_input
- begin_input = shock_onset - 120 #IMPORTANT - can change number to any number of rows before shock onset
- print('begin_input =', begin_input)
- #create last_row
- last_row = len(master) - shock_onset - 1
- #create end_inputD7_Ext3_091021_AF
- end_input = shock_onset + 240 #IMPORTANT - can change number to any number of rows after shock onset or to last_row for the last row in the data set
- print('end_input =', end_input)
- #create file name for future files
- file_num_str = str(file_num) #change file number to string so it can be added to the file name
- file_name = ID + '_' + session + '_Stim_T'+ file_num_str #IMPORTANT - to change file name, format as 'file name8
- #create master_input pandas DataFrame
- master_input = master[begin_input:end_input + 1]
- ##### 4) Determine auto/gcamp linear trendline equations. Create auto/gcamp scatter plots with auto/gcamp linear trendlines. Save the auto/gcamp plots as PDFs to the working directory.
- #create master_trendlines pandas DataFrame
- master_trendlines = master_input.loc[begin_input:shock_onset - 1]
- #reset master_trendlines row index
- master_trendlines = master_trendlines.reset_index(drop = True)
- #create x_master_trendlines (ranging from 1 to # rows in master_trendlines) pandas DataFrame
- x_range_master_trendlines = master_trendlines.axes[0] - (master_trendlines.axes[0][0] - 1)
- x_master_trendlines = pd.DataFrame({'x': x_range_master_trendlines})
- #add x_master_trendlines to master_trendlines
- master_trendlines = pd.concat([x_master_trendlines, master_trendlines], axis=1, join='inner')
- #determine auto linear trendline equation
- from pylab import *
- (a, b) = polyfit(master_trendlines.x, master_trendlines.auto, 1)
- auto_linear_trendline_equation = 'y = ' + str(round(a, 5)) + 'x + ' + str(round(b, 5))
- #create auto scatter plot with auto linear trendline
- plt.scatter(master_trendlines.x, master_trendlines.auto, color = 'blue', s = 10)
- auto_trendline_values = polyval([a,b], master_trendlines.x)
- plt.plot(master_trendlines.x, auto_trendline_values, linewidth = 3, color = 'red')
- plt.title(auto_linear_trendline_equation, fontsize = 10, y = 0.9)
- plt.xlabel('x')
- plt.ylabel('autofluorescence')
- #save auto scatter plot as PDF to working directory
- plt.savefig('auto_plot_' + file_name + '.pdf')
- #determine gcamp linear trendline equation
- from pylab import *
- (c, d) = polyfit(master_trendlines.x, master_trendlines.gcamp, 1)
- gcamp_linear_trendline_equation = 'y = ' + str(round(c, 5)) + 'x + ' + str(round(d, 5))
- #create gcamp scatter plot with gcamp linear trendline
- plt.scatter(master_trendlines.x, master_trendlines.gcamp, color = 'blue', s = 10)
- gcamp_trendline_values = polyval([c,d], master_trendlines.x)
- plt.plot(master_trendlines.x, gcamp_trendline_values, linewidth = 3, color = 'red')
- plt.title(gcamp_linear_trendline_equation, fontsize = 10, y = 0.9)
- plt.xlabel('x')
- plt.ylabel('gcamp')
- #save gcamp scatter plot as PDF to working directory
- plt.savefig('gcamp_plot_' + file_name + '.pdf')
- #create master_calculations pandas DataFrame
- master_calculations = master_input
- #reset master_calculations row index
- master_calculations = master_calculations.reset_index(drop = True)
- #create x_master_calculations (ranging from 1 to # rows in master_calculations) pandas DataFrame
- x_range_master_calculations = master_calculations.axes[0] - (master_calculations.axes[0][0] - 1)
- x_master_calculations = pd.DataFrame({'x': x_range_master_calculations})
- #add x_master_calculations to master_calculations
- master_calculations = pd.concat([x_master_calculations, master_calculations], axis = 1, join = 'inner')
- #create auto_trendline_y pandas DataFrame
- auto_y_list = []
- for x in x_range_master_calculations:
- y = a*x + b
- auto_y_list.append(y)
- auto_y_array = np.array(auto_y_list)
- auto_trendline_y = pd.DataFrame({'auto_trendline_y': auto_y_array})
- #add auto_trendline_y to master_calculations
- master_calculations = pd.concat([master_calculations, auto_trendline_y], axis = 1, join = 'inner')
- #create gcamp_trendline_y pandas DataFrame
- gcamp_y_list = []
- for x in x_range_master_calculations:
- y = a*x + d
- gcamp_y_list.append(y)
- gcamp_y_array = np.array(gcamp_y_list)
- gcamp_trendline_y = pd.DataFrame({'gcamp_trendline_y': gcamp_y_array})
- #add gcamp_trendline_y to master_calculations
- master_calculations = pd.concat([master_calculations, gcamp_trendline_y], axis = 1, join = 'inner')
- #subtract auto_trendline_y from auto to create auto_fit column in master_calculations
- master_calculations['auto_fit'] = master_calculations['auto'] - master_calculations['auto_trendline_y']
- #subtract gcamp_trendline_y from gcamp to create gcamp_fit column in master_calculations
- master_calculations['gcamp_fit'] = master_calculations['gcamp'] - master_calculations['gcamp_trendline_y']
- #add gcamp_trendline y-intercept to auto_fit to create auto_fit column in master_calculations
- master_calculations['auto_final'] = d + master_calculations['auto_fit']
- #add gcamp_trendline y-intercept to gcamp_fit to create gcamp_fit column in master_calculations
- master_calculations['gcamp_final'] = d + master_calculations['gcamp_fit']
- #calculate delta f/f (dff) and create dff column in master_calculations
- master_calculations['dff']= ((master_calculations['gcamp_final'] - master_calculations['auto_final'])/master_calculations['auto_final'])*100
- #write out master_calculations as a csv file to working directory
- master_calculations.to_csv('master_calculations_' + file_name + '.csv')
- #determine the rows in which shock occurs
- shock_rows_dff = master_calculations.loc[master_calculations.shock < 1].index[:].tolist()
- #determine the rows in which shock onset occurs
- shock_onset_rows_dff = [shock_rows_dff[0]]
- for i in range(2, len(shock_rows_dff)):
- if shock_rows_dff[i] > shock_rows_dff[i - 1] + 1:
- shock_onset_rows_dff.append(shock_rows_dff[i])
- #determine the times in which shock onset occurs
- shock_onset_time_dff = list(master_calculations.time.loc[shock_onset_rows_dff])
- #create dff line plot
- fig, ax = plt.subplots()
- ax.plot(master_calculations.time, master_calculations.dff, color = 'blue')
- ax.set_xlabel('time (sec)')
- ax.set_ylabel('delta f/f')
- x = 0
- while x < len(shock_onset_time_dff):
- ax.annotate(' ', xy =(shock_onset_time_dff[x], min(master_calculations.dff)), arrowprops = dict(facecolor = 'black', shrink = 0.05))
- x = x + 1
- arrow = mlines.Line2D([], [], color = 'black', marker = '^', markersize = 12, label = 'cue onset')
- ax.legend(handles = [arrow])
- #while x < len(shock_onset_time_dff):
- #ax.annotate(' ', xy =([shock_onset_time_dff[x] + 30], min(master_calculations.dff)), arrowprops = dict(facecolor = 'yellow', shrink = 0.05))
- #x = x + 1
- #arrow2 = mlines.Line2D([], [], color = 'yellow', marker = '^', markersize = 12, label = 'cue offset')
- #ax.legend(handles = [arrow, arrow2])
- #save dff line plot as PDF to working directory
- fig.savefig('dff_plot_' + file_name + '.pdf')
- #Necessary for iterative code
- matplotlib.pyplot.close('all')
- file_num += 1 #increase file number by 1 for next file
- # %%
- #Concatenation step
- #Make sure you have number_trials set to the correct number at the beginning of the script
- #number_trials = [x+1 for x in range(0,len(shock_rows))] #change range number to reflect your number of trials
- #print(number_trials)
- rows = [x+1 for x in range(0,len(shock_onset_rows))] #set at beginning of script
- file_name = 'master_calculations_' + ID + '_' + session + '_Stim_T' + str(rows[0]) + '.csv' #Changes file name for each animal based on settings at begining
- df = pd.read_csv(file_name)
- df.drop('Unnamed: 0', axis=1, inplace=True)
- df.head(3)
- total_dff = pd.DataFrame()
- total_dff[str(rows[0])] = df.dff
- total_dff.head(3)
- for row in rows:
- file_name = 'master_calculations_' + ID + '_' + session + '_Stim_T' + str(row) + '.csv' #Changes file name for each animal
- df = pd.read_csv(file_name)
- df.drop('Unnamed: 0', axis=1, inplace=True)
- total_dff[str(row)] = df.dff
- total_dff.head(5)
- total_dff['avg'] = total_dff.mean(axis=1)
- total_dff.to_csv(ID + '_' + session + '_final.csv') #Save to new file.
- # %%
- print(d)
- # %%
- # %%
- # %%
Whole Trial GCaMP.ipynb at commit ab93d0d, no license · at the source
Overview
- Section on the Neural Circuits of Emotion and Motivation, National Institute of Mental Health, Bethesda, MD USA
- Present Address: Jiangsu Province Key Laboratory of Anesthesiology, Xuzhou Medical University, Xuzhou, China
- Section on Neurobiology of Compulsive Behaviors, National Institute of Mental Health, Bethesda, MD USA
- State Key Laboratory of Membrane Biology, School of Life Sciences, Peking University, Beijing, China
- Laboratory of Neuropsychology, National Institute of Mental Health, Bethesda, MD USA
Abstract
Adaptive behavior requires that behaviorally relevant signals gain access to neural circuits guiding action. The thalamus has long been proposed to regulate information flow to cortical and subcortical systems, yet whether it also tracks internally generated goal signals remains unclear. Here, we show that neurons in the paraventricular thalamus (PVT) projecting to the nucleus accumbens (NAc) encode the motivational value of safety during active avoidance. As mice learn to avoid threat, PVT→NAc neurons develop a signal that emerges selectively at successful avoidance, is experience-dependent, and diminishes following outcome devaluation. Selective silencing of the PVT→NAc pathway at safety onset reduces the motivational value assigned to safety without impairing action–outcome learning. Mechanistically, PVT input engages cholinergic interneurons (CIN) in the NAc to regulate dopamine release via synaptic potentiation mediated by GluA2-lacking AMPA receptors at PVT–CIN synapses. Disrupting this plasticity reduces the motivational impact of safety. These findings identify a thalamostriatal mechanism through which learned goals gain stable access to motivational circuitry.
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.
Penzolab/Data-analysis-of-Two-way-active-avoidance-task
41e4ef6a53c8cce2a4f82639d365654027c50e5f, 9 July 2021Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
13 files
- Codes/
AA_behavior/ , R, 711 linesRscripts/ AA_Parse_S4.R - Codes/
AA_behavior/ , R, 109 linesRscripts/ GetSummary_S5.R - Codes/
AA_behavior/ , R, 63 linesRscripts/ MakePointer_S2.R - Codes/
AA_behavior/ , R, 29 linesRscripts/ StartNewExperiment_S1.R - Codes/
AA_behavior/ , R, 158 linesRscripts/ TopScanParse__S3.R - Codes/
AA_behavior/ , R, 118 linestrack_func/ cleantrackEditable.R - Codes/
AA_wSignal/ , R, 401 linesRscripts/ GetSummary_wSig_MM_S6.R - Codes/
AA_wSignal/ , R, 406 linesRscripts/ GetSummary_wSig_ZS_S5.R - Codes/
AA_wSignal/ , R, 77 linesRscripts/ MakePointer_wSig_S2.R - Codes/
AA_wSignal/ , R, 962 linesRscripts/ SigParse_wSig_S4.R - Codes/
AA_wSignal/ , R, 31 linesRscripts/ StartNewExperiment_wSig_ S1.R - Codes/
AA_wSignal/ , R, 149 linesRscripts/ TopScanParse_wSig_S3.R - Codes/
AA_wSignal/ , R, 118 linestrack_func/ cleantrackEditable.R
Zenodo 12707790
Availability: 1 check, the latest on 27 September 2026: the link answers (HTTP 200)
- 27 September 2026: the link answers (HTTP 200)
14 files
- Codes/
AA_behavior/ , R, 711 linesRscripts/ AA_Parse_S4.R - Codes/
AA_behavior/ , R, 109 linesRscripts/ GetSummary_S5.R - Codes/
AA_behavior/ , R, 63 linesRscripts/ MakePointer_S2.R - Codes/
AA_behavior/ , R, 29 linesRscripts/ StartNewExperiment_S1.R - Codes/
AA_behavior/ , R, 158 linesRscripts/ TopScanParse__S3.R - Codes/
AA_behavior/ , R, 118 linestrack_func/ cleantrackEditable.R - Codes/
AA_wSignal/ , R, 401 linesRscripts/ GetSummary_wSig_MM_S6.R - Codes/
AA_wSignal/ , R, 406 linesRscripts/ GetSummary_wSig_ZS_S5.R - Codes/
AA_wSignal/ , R, 77 linesRscripts/ MakePointer_wSig_S2.R - Codes/
AA_wSignal/ , R, 962 linesRscripts/ SigParse_wSig_S4.R - Codes/
AA_wSignal/ , R, 31 linesRscripts/ StartNewExperiment_wSig_ S1.R - Codes/
AA_wSignal/ , R, 149 linesRscripts/ TopScanParse_wSig_S3.R - Codes/
AA_wSignal/ , R, 118 linestrack_func/ cleantrackEditable.R - Codes/
Whole_Trial_Photometry/ , Jupyter, 258 linesWhole Trial GCaMP.ipynb
laxace33/penzo-lab-files-for-ma-omalley-et-al-2024
ab93d0db07a305fd61a10a4edb86cad45145e57e, 10 July 2024Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
14 files
- Codes/
AA_behavior/ , R, 711 linesRscripts/ AA_Parse_S4.R - Codes/
AA_behavior/ , R, 109 linesRscripts/ GetSummary_S5.R - Codes/
AA_behavior/ , R, 63 linesRscripts/ MakePointer_S2.R - Codes/
AA_behavior/ , R, 29 linesRscripts/ StartNewExperiment_S1.R - Codes/
AA_behavior/ , R, 158 linesRscripts/ TopScanParse__S3.R - Codes/
AA_behavior/ , R, 118 linestrack_func/ cleantrackEditable.R - Codes/
AA_wSignal/ , R, 401 linesRscripts/ GetSummary_wSig_MM_S6.R - Codes/
AA_wSignal/ , R, 406 linesRscripts/ GetSummary_wSig_ZS_S5.R - Codes/
AA_wSignal/ , R, 77 linesRscripts/ MakePointer_wSig_S2.R - Codes/
AA_wSignal/ , R, 962 linesRscripts/ SigParse_wSig_S4.R - Codes/
AA_wSignal/ , R, 31 linesRscripts/ StartNewExperiment_wSig_ S1.R - Codes/
AA_wSignal/ , R, 149 linesRscripts/ TopScanParse_wSig_S3.R - Codes/
AA_wSignal/ , R, 118 linestrack_func/ cleantrackEditable.R - Codes/
Whole_Trial_Photometry/ , Jupyter, 258 lines, 1 matchWhole Trial GCaMP.ipynb
Code availability
R code used to analyze active avoidance behavior, and photometric signal is available at the following repository: 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:
- 3 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
- 41 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
- zenodo:20031828, at Zenodo; found in “Data availability”
Data Availability Statement
The datasets generated in this study have been deposited in the Zenodo database under accession code DIO:10.5281/
R code used to analyze active avoidance behavior, and photometric signal is available at the following repository: 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 1, 27 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 13 authors, 4 keywords, 16 MeSH terms, 2 funders, 88 references.
Cite
This paper
Macdonald, E. E., Ma, J., Liu, D., Yu, K., Walker, R. A., Authement, M. E., Leng, Y., Goldbach, H. C., Li, G., Li, Y., Alvarez, V. A., Averbeck, B. B., & Penzo, M. A. (2026). A synaptic mechanism for encoding the learned value of action-derived safety. Nature communications, 17(1), 4916. https://
BibTeX
@article{macdonald2026sy
author = {Macdonald, Emma E and Ma, Jun and Liu, Di and Yu, Kai and Walker, Rachel A and Authement, Michael E and Leng, Yan and Goldbach, Hannah C and Li, Guochuan and Li, Yulong and Alvarez, Veronica A and Averbeck, Bruno B and Penzo, Mario A},
title = {{A synaptic mechanism for encoding the learned value of action-derived safety}},
journal = {Nature communications},
year = {2026},
month = jun,
volume = {17},
number = {1},
pages = {4916},
publisher = {Nature Publishing Group},
issn = {2041-1723},
doi = {10.1038/
url = {https://
pmid = {42243099},
pmcid = {PMC13237380}
}
RIS
TY - JOUR
AU - Macdonald, Emma E
AU - Ma, Jun
AU - Liu, Di
AU - Yu, Kai
AU - Walker, Rachel A
AU - Authement, Michael E
AU - Leng, Yan
AU - Goldbach, Hannah C
AU - Li, Guochuan
AU - Li, Yulong
AU - Alvarez, Veronica A
AU - Averbeck, Bruno B
AU - Penzo, Mario A
TI - A synaptic mechanism for encoding the learned value of action-derived safety
T2 - Nature communications
J2 - Nat Commun
PY - 2026
DA - 2026/
VL - 17
IS - 1
SP - 4916
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 synaptic mechanism for encoding the learned value of action-derived safety",
"container-title": "Nature communications",
"author": [
{
"family": "Macdonald",
"given": "Emma E"
},
{
"family": "Ma",
"given": "Jun"
},
{
"family": "Liu",
"given": "Di"
},
{
"family": "Yu",
"given": "Kai"
},
{
"family": "Walker",
"given": "Rachel A"
},
{
"family": "Authement",
"given": "Michael E"
},
{
"family": "Leng",
"given": "Yan"
},
{
"family": "Goldbach",
"given": "Hannah C"
},
{
"family": "Li",
"given": "Guochuan"
},
{
"family": "Li",
"given": "Yulong"
},
{
"family": "Alvarez",
"given": "Veronica A"
},
{
"family": "Averbeck",
"given": "Bruno B"
},
{
"family": "Penzo",
"given": "Mario A"
}
],
"container-title-short":
"volume": "17",
"issue": "1",
"page": "4916",
"DOI": "10.1038/
"PMID": "42243099",
"PMCID": "PMC13237380",
"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.1038/s41467-026-77168-x [code]
- Cholinergic-dependent dopamine signals in mouse dorsomedial striatum are regulated by frontal but not sensory cortices.Journal: Nature communicationsIn common: pandas, SciPy, Matplotlib, 1 other tool, mouse, 13 references, 2 authors
- [2] doi:10.7554/elife.107670 [code]
- Paraventricular thalamus hyperactivity mediates stress-induced sensitization of unlearned fear but not stress-enhanced fear learning (SEFL).Journal: eLifeIn common: mouse, 7 references
- [3] doi:10.1038/s41467-026-71426-8 [code]
- Distinct modes of dopamine modulation on striatopallidal synaptic transmission.Journal: Nature communicationsIn common: pandas, SciPy, Matplotlib, 1 other tool, mouse, cellular / molecular, 2 references, author Yulong Li
- [4] doi:10.7554/elife.102189
- Thalamo-accumbal circuit adaptations following extended oxycodone abstinence.Journal: eLifeIn common: 7 references
- [5] doi:10.1126/sciadv.aee6579 [code]
- Dopamine D2 receptors bypass canonical signaling to directly tune NMDA receptor function and aversive learning.Journal: Science advancesIn common: mouse, cellular / molecular, 6 references
- [6] doi:10.1021/acschemneuro.6c00342
- 5-HT4 Receptor Ligand RS67333 Modulates Striatal Acetylcholine and Dopamine Release via the Inhibition of Acetylcholinesterase.Journal: ACS chemical neuroscienceIn common: mouse, cellular / molecular, 6 references
- [7] doi:10.1038/s41593-026-02379-w
- Norepinephrine and dopamine sensor crosstalk depends on local innervation density.Journal: Nature neuroscienceIn common: mouse, cellular / molecular, 3 references, author Yulong Li
- [8] doi:10.1038/s41467-026-71481-1 [code]
- Sex-specific increased reactivity of the PVT and prolonged PVT→CeA circuit engagement following psilocin administration.Journal: Nature communicationsIn common: 6 references
- [9] doi:10.1016/j.celrep.2026.117298 [code]
- Midbrain endocannabinoids actuate dopamine-based action selection.Journal: Cell reportsIn common: tidyverse, pandas, Matplotlib, mouse, cellular / molecular, 4 references
- [10] doi:10.1038/s41467-026-71923-w [code]
- Integrating optogenetic fMRI and spatial transcriptomics to reveal circuit-specific gene signatures in fronto- and hippo-thalamic networks.Journal: Nature communicationsIn common: tidyverse, pandas, SciPy, 2 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: 3 repositories of the authors' code, each at its verified commit and with its license, 41 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:339c6309067acbd4…
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.
