Sex-specific increased reactivity of the PVT and prolonged PVT→CeA circuit engagement following psilocin administration.
The 2 matches
- [1] § Methods › Air-puff stimulus ↔ Cohort7_structureBuild.m, lines 180–189 · score 0.52 · Peri event, baseline period, Air puffs, fiber, GCaMP
- [2] § Methods › Air-puff stimulus ↔ Cohort9_structurebuild.m, lines 180–189 · score 0.52 · Peri event, baseline period, Air puffs, fiber, GCaMP
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 · 256 lines · 12 KB · MIT · 1 match
- clc
- clear all
- %SDK always stays the same
- SDKPATH = '/Volumes/Devin/TDTSDK';
- addpath(genpath(SDKPATH));
- cd '/Volumes/Devin/Psilocin PVN Fiber Photometry/Cohort7/RAW DATA3/Passive/'
- Condition = dir;
- ConditionNames = {Condition.name};
- ConditionNames = ConditionNames(3:end)'; %Creates the different conditions for catagorizing in structure
- %This order depends on how the files are arranged in the folder; Make them
- %in an order that makes sense
- Conditions(1,1)=ConditionNames(1,1);
- Conditions(2,1)=ConditionNames(2,1);
- % Conditions(3,1)=ConditionNames(5,1);
- % Conditions(4,1)=ConditionNames(3,1);
- % Conditions(5,1)=ConditionNames(2,1);
- % Conditions(6,1)=ConditionNames(4,1);
- % Conditions(7,1)=ConditionNames(2,1);
- % Conditions(8,1)=ConditionNames(2,1);
- % Conditions(8,1)=ConditionNames(10,1);
- % Conditions(9,1)=ConditionNames(12,1);
- %change these depending on location and name of current data set
- Files(1,:) = {'/Volumes/Devin/Psilocin PVN Fiber Photometry/Cohort7/RAW DATA3/Passive/BASELINE/'};
- Files(2,:) = {'/Volumes/Devin/Psilocin PVN Fiber Photometry/Cohort7/RAW DATA3/Passive/TREATMENT/'};
- % Files(3,:) = {'/Volumes/Devin/Psilocin PVN Fiber Photometry/Cohort7/RAW DATA2/TwoDay/'};
- % Files(4,:) = {'/Volumes/Devin/Psilocin PVN Fiber Photometry/Cohort7/RAW DATA2/SevenDay/'};
- % Files(5,:) = {'/Volumes/Devin/Psilocin PVN Fiber Photometry/Cohort7/RAW DATA2/PostRestraint/'};
- % Files(6,:) = {'/Volumes/Devin 2T/Psilocin CeA Fiber Photometry/COHORT4/RAW DATA/INITIALAUDITORY/'};
- % Files(7,:) = {'/Volumes/Devin 2T/Psilocin CeA Fiber Photometry/COHORT4/RAW DATA/FINALAUDITORY/'};
- % Files(8,:) = {'/Volumes/Devin T7 HD/Psilocin CeA Fiber Photometry/COHORT2/RAW DATA/Extinction/'};
- %%
- for ii = 1:size(Conditions,1)
- D = dir(Files{ii});
- files = D; files = files(~ismember({files(:).name},{'.','..','desktop.ini','.DS_Store','._.DS_Store'}));
- filenames = {files.name}';
- % subdirs = filenames([files.isdir]);
- %filenames = filenames(4:end)';
- for k=1:size(filenames,1)
- if startsWith(filenames(k,1),'.')
- filenames{k,1}=[];
- end
- end
- FileLogic=~cellfun('isempty',filenames);
- filenames=filenames(FileLogic);
- for j=1:size(filenames,1)
- subj=filenames{j,1};
- subjects.(char(Conditions(ii))){j,1} = subj;
- subjects.(char(Conditions(ii))){j,1} = strrep(subjects.(char(Conditions(ii))){j,1},'-','');
- end
- for i=1:size(filenames,1)
- BLOCKPATH = [Files{ii} filenames{i}];
- data = TDTbin2mat(BLOCKPATH);
- GroupData.((char(Conditions(ii)))).((char(filenames{i}))) = data;
- end
- for jj=1:size(filenames,1)
- % Declare data stream and epoc names we will use downstream
- % These are the field names for the relevant streams of the data struct
- GCAMP = 'x465A';
- ISOS = 'x405A';
- if isfield(data.epocs, 'Puff')
- Airpuff = 'Puff';
- else
- Airpuff = 'Note';
- end
- GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).epocs.(Airpuff).offset = GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).epocs.(Airpuff).onset + .1;
- % Make some pretty colors for later plotting
- % http://math.loyola.edu/~loberbro/matlab/html/colorsInMatlab.html
- red = [0.8500, 0.3250, 0.0980];
- green = [0.4660, 0.6740, 0.1880];
- cyan = [0.3010, 0.7450, 0.9330];
- gray1 = [.7 .7 .7];
- gray2 = [.8 .8 .8];
- %% Basic plotting and artifact removal
- % Make a time array based on number of samples and sample freq of
- % demodulated streams
- time = (1:length(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data))/GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).fs;
- %% Artifact removal
- % There is often a large artifact on the onset of LEDs turning on
- % Remove data below a set time t
- t = 2; % time threshold below which we will discard
- ind = find(time>t,1); % find first index of when time crosses threshold
- time = time(ind:end); % reformat vector to only include allowed time
- GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data = GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data(ind:end);
- GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(ISOS).data = GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(ISOS).data(ind:end);
- %% Downsample data doing local averaging
- % Average around every Nth point and downsample Nx
- N = 10; % multiplicative for downsampling
- GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data = arrayfun(@(i)...
- mean(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data(i:i+N-1)),...
- 1:N:length(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data)-N+1);
- GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(ISOS).data = arrayfun(@(i)...
- mean(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(ISOS).data(i:i+N-1)),...
- 1:N:length(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(ISOS).data)-N+1);
- %%
- % Decimate time array and match length to demodulated stream
- time = time(1:N:end);
- time = time(1:length(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data));
- %% Correcting Corrupted Stream Size
- if size(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(ISOS).data,2)~=size(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data,2)
- if size(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(ISOS).data,2)>size(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data,2)
- GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(ISOS).data=GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(ISOS).data(1,1:size(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data));
- end
- if size(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(ISOS).data,2)<size(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data,2)
- GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data=GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data(1,1:size(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(ISOS).data,2));
- end
- end
- %% Detrending and dFF
- bls = polyfit(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(ISOS).data,GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data,1);
- Y_fit_all = bls(1) .* GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(ISOS).data + bls(2);
- Y_dF_all = GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).data - Y_fit_all; %dF (units mV) is not dFF
- %%
- % Full dFF according to Lerner et al. 2015
- % http://dx.doi.org/10.1016/j.cell.2015.07.014
- % dFF using 405 fit as baseline
- dFF = 100*(Y_dF_all)./Y_fit_all;
- std_dFF = std(double(dFF));
- ISOS = GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(ISOS).data;
- std_ISOS = std(double(ISOS));
- BL_F = mean(Y_fit_all);
- %% Turn AIRPUFF Events into AIRPUFF Bouts
- % Make a continuous time series of air puff events (epocs) and plot
- AIR_on = GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).epocs.(Airpuff).onset;
- AIR_off = GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).epocs.(Airpuff).offset;
- AIR_x = reshape(kron([AIR_on, AIR_off], [1, 1])', [], 1);
- sz = length(AIR_on);
- d = GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).epocs.(Airpuff).data';
- d = ones(length(d),1)';
- y_scale = 5; %adjust according to data needs
- y_shift = -10; %scale and shift are just for asthetics
- AIR_y = reshape([zeros(1, sz); d; d; zeros(1, sz)], 1, []);
- %% Time Filter Around AIR PUFF Bout Epocs
- % Note that we are using dFF of the full time-series, not peri-event dFF
- % where f0 is taken from a pre-event baseline period. That is done in
- % another fiber photometry data analysis example.
- PRE_TIME = 5; % Five seconds before event onset
- POST_TIME = 10; % ten seconds after
- fs = GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).streams.(GCAMP).fs/N; % recall we downsampled by N = 100 earlier
- % time span for peri-event filtering, PRE and POST
- TRANGE = [-1*PRE_TIME*floor(fs),POST_TIME*floor(fs)];
- %%
- % Pre-allocate memory
- trials = numel(GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).epocs.(Airpuff).onset);
- dFF_snips = cell(trials,1);
- ISOS_snips = cell(trials,1);
- array_ind = zeros(trials,1);
- pre_stim = zeros(trials,1);
- post_stim = zeros(trials,1);
- %%
- % Make stream snips based on trigger onset
- for i = 1:trials
- % If the bout cannot include pre-time seconds before event, make zero
- if GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).epocs.(Airpuff).onset(i) < PRE_TIME
- dFF_snips{i} = single(zeros(1,(TRANGE(2)-TRANGE(1))));
- ISOS_snips{i} = single(zeros(1,(TRANGE(2)-TRANGE(1))));
- continue
- else
- % Find first time index after bout onset
- array_ind(i) = find(time > GroupData.((char(Conditions(ii)))).((char(filenames{jj}))).epocs.(Airpuff).onset(i),1);
- % Find index corresponding to pre and post stim durations
- pre_stim(i) = array_ind(i) + TRANGE(1);
- post_stim(i) = array_ind(i) + TRANGE(2);
- dFF_snips{i} = dFF(pre_stim(i):post_stim(i));
- ISOS_snips{i} = ISOS(pre_stim(i):post_stim(i));
- end
- end
- %%
- % Make all snippet cells the same size based on minimum snippet length
- minLength = min(cellfun('prodofsize', dFF_snips));
- dFF_snips = cellfun(@(x) x(1:minLength), dFF_snips, 'UniformOutput',false);
- % Convert to a matrix and get mean
- allSignals = cell2mat(dFF_snips);
- GROUP_allSignals = allSignals;
- mean_allSignals = mean(allSignals);
- std_allSignals = std(mean_allSignals);
- allSignals_ISOS = cell2mat(ISOS_snips);
- GROUP_allSignals_ISOS = allSignals_ISOS;
- mean_allSignals_ISOS = mean(allSignals_ISOS);
- std_allSignals_ISOS = std(mean_allSignals);
- % Make a time vector snippet for peri-events
- peri_time = (1:length(mean_allSignals))/fs - PRE_TIME;
- GROUP_STREAM.((char(Conditions(ii)))).((char(filenames{jj}))).signal=(GROUP_allSignals);
- GROUP_STREAM.((char(Conditions(ii)))).((char(filenames{jj}))).ISOS_signal=(GROUP_allSignals_ISOS);
- GROUP_STREAM.((char(Conditions(ii)))).((char(filenames{jj}))).peri_time=(peri_time);
- GROUP_STREAM.((char(Conditions(ii)))).((char(filenames{jj}))).BL_F=(BL_F);
- end
- end
- clear AIR* Air* all* array* bls cyan gray* green red BLOCK* Condition ConditionNames d D data dFF* file* File* fs GC* i ii ind ISOS* j* mean* min* N* peri* post* POST* pre* PRE* std* subj sz t time TRANGE trials Y* y*
- %%
- % cd '/Users/devineffinger/Desktop'
- save(strcat('Cohort7_Passive_Final_Revision',string(datetime('now','Format','MMddyy'))),'-v7.3');
Cohort7_structureBuild.m, under MIT · at the source
Overview
- Department of Pharmacology, University of North Carolina at Chapel Hill, Chapel Hill, NC USA
- Bowles Center for Alcohol Studies, University of North Carolina at Chapel Hill, Chapel Hill, NC USA
- Department of Psychiatry, University of Colorado Anschutz Medical Campus, Aurora, CO USA
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 2 matches between paragraphs and lines of code.
doi:10.5061/dryad.3ffbg79qr
Availability: 1 check, the latest on 29 September 2026: the link answers (HTTP 200)
- 29 September 2026: the link answers (HTTP 200)
doi:10.5061/dryad.fbg79cp7b
Availability: 1 check, the latest on 29 September 2026: the link is dead (HTTP 404)
- 29 September 2026: the link is dead (HTTP 404)
Zenodo 10082749
Availability: 1 check, the latest on 29 September 2026: the link answers (HTTP 200)
- 29 September 2026: the link answers (HTTP 200)
3 files
- Cohort7_structureBuild.m
, MATLAB, 256 lines, 1 match - Cohort9_structurebuild.m
, MATLAB, 256 lines, 1 match - New_Structure_Analysis_L
oop.m , MATLAB, 187 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: doi:10.5061/
dryad.3ffbg79qr , doi:10.5061/dryad.fbg79cp7b
Read it in the paper: doi.org/10.1038/s41467-026-71481-1.
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;
- 3 scripts, each with its path and the digest of its content;
- 2 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
No dataset and no data link were found in the paper.
Data availability statement
The paper has a data availability statement. Its license (CC BY-NC-ND) does not allow reproducing it here; in short, from what the harvester recognized in it:
- no repository, dataset or request procedure was recognized in it
Read it in the paper: doi.org/10.1038/s41467-026-71481-1.
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, 29 September 2026: the first record
Recorded: type, language, journal, volume, issue, pages, dates, 9 authors, 2 keywords, 11 MeSH terms, 4 funders, 75 references.
Cite
This paper
Effinger, D. P., Hoffman, J. L., Quadir, S. G., Rollison, C. S., Toedt, D., Echeveste Sanchez, M., High, M. W., Hodge, C. W., & Herman, M. A. (2026). Sex-specific increased reactivity of the PVT and prolonged PVT→CeA circuit engagement following psilocin administration. Nature communications, 17(1), 5094. https://
BibTeX
@article{effinger2026sex
author = {Effinger, D P and Hoffman, J L and Quadir, S G and Rollison, C S and Toedt, D and Echeveste Sanchez, M and High, M W and Hodge, C W and Herman, M A},
title = {{Sex-specific increased reactivity of the PVT and prolonged PVT→CeA circuit engagement following psilocin administration}},
journal = {Nature communications},
year = {2026},
month = apr,
volume = {17},
number = {1},
pages = {5094},
publisher = {Nature Publishing Group},
issn = {2041-1723},
doi = {10.1038/
url = {https://
pmid = {41963345},
pmcid = {PMC13246750}
}
RIS
TY - JOUR
AU - Effinger, D P
AU - Hoffman, J L
AU - Quadir, S G
AU - Rollison, C S
AU - Toedt, D
AU - Echeveste Sanchez, M
AU - High, M W
AU - Hodge, C W
AU - Herman, M A
TI - Sex-specific increased reactivity of the PVT and prolonged PVT→CeA circuit engagement following psilocin administration
T2 - Nature communications
J2 - Nat Commun
PY - 2026
DA - 2026/
VL - 17
IS - 1
SP - 5094
SN - 2041-1723
PB - Nature Publishing Group
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"type": "article-journal",
"title": "Sex-specific increased reactivity of the PVT and prolonged PVT→CeA circuit engagement following psilocin administration",
"container-title": "Nature communications",
"author": [
{
"family": "Effinger",
"given": "D P"
},
{
"family": "Hoffman",
"given": "J L"
},
{
"family": "Quadir",
"given": "S G"
},
{
"family": "Rollison",
"given": "C S"
},
{
"family": "Toedt",
"given": "D"
},
{
"family": "Echeveste Sanchez",
"given": "M"
},
{
"family": "High",
"given": "M W"
},
{
"family": "Hodge",
"given": "C W"
},
{
"family": "Herman",
"given": "M A"
}
],
"container-title-short":
"volume": "17",
"issue": "1",
"page": "5094",
"DOI": "10.1038/
"PMID": "41963345",
"PMCID": "PMC13246750",
"ISSN": "2041-1723",
"publisher": "Nature Publishing Group",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
4,
10
]
]
}
}
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-75890-0
- Serotonergic psychedelics induce distinct patterns of metabolic activity and covariance within biologically informed rat brain networks.Journal: Nature communicationsIn common: rat, 9 references
- [2] doi:10.1016/j.xcrm.2026.102867
- Psilocybin restores behavior and 5-HT&
lt;sub& gt;2A& lt;/ sub& gt; signaling while reducing microglial density after chronic traumatic brain injury in rats. Journal: Cell reports. MedicineIn common: rat, 7 references - [3] doi:10.1038/s41586-026-10910-z [code]
- Psychedelics align brain activity with context.Journal: NatureIn common: Statistics and Machine Learning Toolbox, 6 references
- [4] 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: 6 references
- [5] doi:10.1038/s41467-026-73906-3 [code]
- A synaptic mechanism for encoding the learned value of action-derived safety.Journal: Nature communicationsIn common: 6 references
- [6] doi:10.1038/s41467-026-74215-5 [code]
- Multi-metric evaluations of acute psychedelic effects on fMRI brain entropy.Journal: Nature communicationsIn common: Statistics and Machine Learning Toolbox, 5 references
- [7] doi:10.1038/s41591-026-04287-9 [code]
- An international mega-analysis of psychedelic drug effects on brain circuit function.Journal: Nature medicineIn common: systems, 4 references
- [8] doi:10.1002/hbm.70596 [code]
- Modeled Long-Term Effects of Psilocybin on Dynamic Activity and Effective Connectivity of Fronto-Striatal-Thalamic
Circuits. Journal: Human brain mappingIn common: systems, 4 references - [9] doi:10.1002/hbm.70522 [code]
- Investigating Emotional Reactivity in Experienced Users of Psychedelics: A Cross-Sectional fMRI Study.Journal: Human brain mappingIn common: 4 references
- [10] doi:10.7554/elife.102189
- Thalamo-accumbal circuit adaptations following extended oxycodone abstinence.Journal: eLifeIn common: rat, 3 references
Contribute
The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.
Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.
Claim this paper
Correct its record
Say what each link of this record is, remove the ones that are not the paper's, add the ones that are missing. The correction becomes a new version of the record, in its Versions section.
Validate its tracing map
You validate the map as this page shows it: 3 repositories of the authors' code, each at its verified commit and with its license, 3 scripts, and 2 matches between paragraphs and code (see the Code and Map sections). It then receives a DOI on Zenodo, with you (your ORCID iD) and OSCR as its creators; the code itself is not deposited.
The map's fingerprint: sha256:cea0b105ccad04c8…
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
[.
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.
