HIF-1α and HIF-2α Are Upregulated in the Hippocampus but Not in the Medial Prefrontal Cortex in Experimental PTSD.
The 4 matches
- [1] § Materials and Methods › Behavioral Tests › Elevated Plus Maze ↔ behavioural.py, lines 36–89 · score 0.79 · head dips, closed arms, arm entry, open arm, rotations, distance
- [2] § Results › Behavioral Tests › Elevated Plus Maze ↔ behavioural.py, lines 36–89 · score 0.78 · open head dips, closed arm entries, open arm entries, freezing episodes, distance, behavior
- [3] § Materials and Methods › Behavioral Tests ↔ behavioural.py, lines 261–314 · score 0.69 · elevated plus maze, dark light box, open field, EPM, Behavioral, Animals
- [4] § Statistical Analysis ↔ behavioural.py, lines 261–314 · score 0.51 · dark light box, open field, EPM, behavioral, IQR, outliers
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
Python · 416 lines · 15 KB · MIT · 4 matches
- """
- Behavioural Statistical Analysis — P1 (Control vs PTSD)
- Boxplot + jitter, ggplot2 style. Separate figures for OF, EPM, DLB.
- Statistical pipeline:
- 1. Outlier removal — IQR 1.5×
- 2. Normality — Shapiro-Wilk per group
- 3. Two-group test — t-test (if both normal) or Mann-Whitney U (if any non-normal)
- 4. No post-hoc needed (only 2 groups)
- Usage:
- python behav_art1_updated.py
- python behav_art1_updated.py --test EPM
- python behav_art1_updated.py --no-outliers
- Data files in data/ folder:
- data/OF_DF_ALL.xlsx
- data/EP_DF_ALL.xlsx
- data/DL_DF_ALL.xlsx
- """
- import os, csv, argparse
- from datetime import datetime
- from collections import defaultdict
- import numpy as np
- import matplotlib.pyplot as plt
- import matplotlib.patches as mpatches
- from scipy import stats
- import openpyxl
- import warnings
- warnings.filterwarnings('ignore')
- # ── Config ──────────────────────────────────────────────────────────────────────
- DATA_FILES = {
- 'OF': 'data/OF_DF_ALL.xlsx',
- 'EPM': 'data/EP_DF_ALL.xlsx',
- 'DLB': 'data/DL_DF_ALL.xlsx',
- }
- EPM_MAP = {'cont': 'control', 'ptsd': 'ptsd'}
- GROUPS = {
- 'OF': {'Control': 'control_non', 'PTSD': 'ptsd_non'},
- 'EPM': {'Control': 'control_non', 'PTSD': 'ptsd_non'},
- 'DLB': {'Control': 'cont_non', 'PTSD': 'ptsd_non'},
- }
- PARAMS = {
- 'OF': {
- 'distance': 'Distance (m)',
- 'mean_speed': 'Speed (m/s)',
- 'freezing_episodes': 'Freezing episodes (n)',
- 'time_freezing': 'Freezing time (s)',
- 'center_entries': 'Center entries (n)',
- 'center_time': 'Center time (s)',
- 'corners_entries': 'Corner entries (n)',
- 'corners_time': 'Corner time (s)',
- 'sides_entries': 'Side entries (n)',
- 'sides_time': 'Side time (s)',
- },
- 'EPM': {
- 'distance': 'Distance (m)',
- 'time_freezing': 'Freezing time (s)',
- 'freezing_episodes': 'Freezing episodes (n)',
- 'open_entries': 'Open arm entries (n)',
- 'open_time': 'Open arm time (s)',
- 'open_head_entries': 'Open head dips (n)',
- 'closed_entries': 'Closed arm entries (n)',
- 'closed_time': 'Closed arm time (s)',
- 'rotations': 'Rotations (n)',
- },
- 'DLB': {
- 'entries': 'Light zone entries (n)',
- 'total_out': 'Time in light (s)',
- 'total_in': 'Time in dark (s)',
- 'curiosity': 'Curiosity (n)',
- },
- }
- CTRL_COLOR = '#388E3C'
- PTSD_COLOR = '#7B1FA2'
- plt.rcParams.update({
- 'font.family': 'DejaVu Sans',
- 'pdf.fonttype': 42,
- 'ps.fonttype': 42,
- })
- # ── Data loading ────────────────────────────────────────────────────────────────
- def load_data(filepath, test_name):
- wb = openpyxl.load_workbook(filepath)
- ws = wb.active
- cols = [c.value for c in ws[1]]
- data = defaultdict(list)
- for row in ws.iter_rows(min_row=2, values_only=True):
- if not row[0]: continue
- g = str(row[1]).lower()
- t = str(row[2]).lower()
- if test_name == 'EPM' and g in EPM_MAP:
- g = EPM_MAP[g]
- data[f'{g}_{t}'].append(row)
- return cols, data
- def get_vals(data, cols, group_key, param):
- if param not in cols: return []
- ci = cols.index(param)
- return [float(r[ci]) for r in data.get(group_key, [])
- if r[ci] is not None and isinstance(r[ci], (int, float))]
- def remove_iqr(vals, factor=1.5):
- if len(vals) < 4: return vals
- q1, q3 = np.percentile(vals, 25), np.percentile(vals, 75)
- iqr = q3 - q1
- return [v for v in vals if q1 - factor*iqr <= v <= q3 + factor*iqr]
- # ── Statistics ──────────────────────────────────────────────────────────────────
- def shapiro_wilk(v):
- if len(v) < 3: return False, None
- _, p = stats.shapiro(v)
- return p >= 0.05, round(p, 4)
- def run_stats(groups: dict) -> dict:
- """
- For 2-group comparison (Control vs PTSD):
- - Check normality for each group
- - Use t-test if both normal
- - Use Mann-Whitney U if any group non-normal
- - No post-hoc needed (only 2 groups)
- """
- group_names = list(groups.keys())
- if len(group_names) != 2:
- raise ValueError("This script is designed for 2-group comparisons only")
- v1, v2 = groups[group_names[0]], groups[group_names[1]]
- normality = {}
- for name, vals in groups.items():
- is_norm, p_sw = shapiro_wilk(vals)
- normality[name] = {'normal': is_norm, 'p': p_sw}
- both_normal = normality[group_names[0]]['normal'] and normality[group_names[1]]['normal']
- # Perform appropriate test for 2 groups
- if both_normal:
- stat, p_value = stats.ttest_ind(v1, v2)
- test_name = 't-test'
- else:
- stat, p_value = stats.mannwhitneyu(v1, v2, alternative='two-sided')
- test_name = 'Mann-Whitney U'
- return {
- 'normality': normality,
- 'both_normal': both_normal,
- 'test': test_name,
- 'statistic': round(stat, 4),
- 'p': round(p_value, 6),
- }
- def sig_label(p):
- if p is None: return ''
- if p < 0.001: return '***'
- if p < 0.01: return '**'
- if p < 0.05: return '*'
- return 'ns'
- def print_stats(param_label, sr, n_rm1=0, n_rm2=0):
- print(f"\n {param_label}:")
- if n_rm1 or n_rm2:
- print(f" ⚠ Outliers removed: Control={n_rm1}, PTSD={n_rm2}")
- print(f" Normality (Shapiro-Wilk):")
- for grp, v in sr['normality'].items():
- status = '✅ normal' if v['normal'] else '❌ non-normal'
- p_str = f"p={v['p']}" if v['p'] is not None else 'n/a'
- print(f" {grp:<12} {p_str:<12} {status}")
- print(f" Comparison: {sr['test']} stat={sr['statistic']} p={sr['p']}")
- sl = sig_label(sr['p'])
- if sl != 'ns' and sl != '':
- print(f" *** Significant (p={sr['p']}) ***")
- # ── Plot ─────────────────────────────────────────────────────────────────────────
- def plot_param(ax, v1, v2, label, test_result, show_ylabel=False):
- bp = ax.boxplot(
- [v1, v2],
- positions=[0, 1],
- widths=0.45,
- patch_artist=True,
- notch=False,
- medianprops=dict(color='#212121', linewidth=2.0),
- whiskerprops=dict(color='#424242', linewidth=1.2),
- capprops=dict(color='#424242', linewidth=1.2),
- flierprops=dict(marker='', markersize=0),
- boxprops=dict(linewidth=1.2),
- zorder=3,
- )
- for patch, color in zip(bp['boxes'], [CTRL_COLOR, PTSD_COLOR]):
- patch.set_facecolor(color)
- patch.set_alpha(0.55)
- patch.set_edgecolor('#424242')
- np.random.seed(42)
- for xi, vals in [(0, v1), (1, v2)]:
- jitter = np.random.uniform(-0.13, 0.13, len(vals))
- ax.scatter(xi + jitter, vals,
- color='#212121', s=28, alpha=0.75,
- linewidths=0, zorder=5)
- ax.text(0, 0, f'n={len(v1)}', ha='center', va='top', fontsize=7,
- color='#757575', transform=ax.get_xaxis_transform())
- ax.text(1, 0, f'n={len(v2)}', ha='center', va='top', fontsize=7,
- color='#757575', transform=ax.get_xaxis_transform())
- data_max = max(v1 + v2)
- top = data_max * 1.35
- bottom = -1 if min(v1 + v2) >= 0 else min(v1 + v2) * 1.1
- ax.set_ylim(bottom, top)
- ax.set_xlim(-0.6, 1.6)
- # Add significance bracket if p < 0.05
- p = test_result['p']
- sl = sig_label(p)
- if sl not in ('ns', ''):
- y = top * 0.84
- h = top * 0.04
- ax.plot([0, 0, 1, 1], [y, y+h, y+h, y],
- lw=1.2, color='#212121', clip_on=False)
- ax.text(0.5, y + h*1.1, sl, ha='center', va='bottom',
- fontsize=11, color='#212121', fontweight='bold', clip_on=False)
- ax.set_xticks([0, 1])
- ax.set_xticklabels(['Control', 'PTSD'], fontsize=10, color='#212121')
- ax.set_title(label, fontsize=10, fontweight='bold', color='#212121', pad=6)
- if show_ylabel:
- ax.set_ylabel('Mean', fontsize=9, color='#424242', labelpad=4)
- ax.set_facecolor('#EBEBEB')
- ax.yaxis.grid(True, color='white', linewidth=1.0, zorder=0)
- ax.xaxis.grid(False)
- ax.set_axisbelow(True)
- ax.spines['top'].set_visible(False)
- ax.spines['right'].set_visible(False)
- ax.spines['left'].set_visible(False)
- ax.spines['bottom'].set_color('#BDBDBD')
- ax.spines['bottom'].set_linewidth(0.8)
- ax.tick_params(axis='x', length=0, pad=4)
- ax.tick_params(axis='y', length=0, labelsize=8)
- def make_figure(test_name, param_data, stats_dict, output_prefix):
- params = PARAMS[test_name]
- n = len(params)
- if n <= 5:
- nrows, ncols = 1, n
- figsize = (n * 4.2, 5.5)
- else:
- ncols = 5
- nrows = -(-n // ncols)
- figsize = (ncols * 4.2, nrows * 5.5)
- fig, axes = plt.subplots(nrows, ncols, figsize=figsize)
- fig.patch.set_facecolor('white')
- axes_flat = np.array(axes).flatten() if n > 1 else [axes]
- for i, (param, label) in enumerate(params.items()):
- ax = axes_flat[i]
- if param not in param_data:
- ax.set_visible(False)
- continue
- v1 = param_data[param]['ctrl']
- v2 = param_data[param]['ptsd']
- sr = stats_dict[param]
- plot_param(ax, v1, v2, label, sr, show_ylabel=(i % ncols == 0))
- for idx in range(n, len(axes_flat)):
- axes_flat[idx].set_visible(False)
- patches = [
- mpatches.Patch(facecolor=CTRL_COLOR, edgecolor='white', label='Control'),
- mpatches.Patch(facecolor=PTSD_COLOR, edgecolor='white', label='PTSD'),
- ]
- fig.legend(handles=patches, loc='lower center', ncol=2,
- fontsize=10, frameon=True, fancybox=False, edgecolor='#E0E0E0',
- bbox_to_anchor=(0.5, -0.04), handlelength=1.5, handleheight=1.0)
- titles = {'OF': 'Open Field Test', 'EPM': 'Elevated Plus Maze', 'DLB': 'Dark-Light Box'}
- fig.suptitle(f'{titles[test_name]} — Control vs PTSD',
- fontsize=13, fontweight='bold', color='#212121', y=1.02)
- fig.text(0.5, -0.08,
- 'Boxplot: median, IQR, whiskers = 1.5×IQR. '
- 'Dots = individual animals (outliers removed, IQR 1.5×). '
- 'Normality: Shapiro–Wilk. '
- 'Comparison: independent t-test (if both normal) or Mann–Whitney U (if any non-normal). '
- '* p<0.05, ** p<0.01, *** p<0.001.',
- ha='center', fontsize=8, color='#9E9E9E', style='italic')
- plt.tight_layout(rect=[0, 0.06, 1, 1])
- plt.subplots_adjust(wspace=0.38, hspace=0.55)
- fig.savefig(f'{output_prefix}.png', dpi=300, bbox_inches='tight', facecolor='white')
- fig.savefig(f'{output_prefix}.pdf', bbox_inches='tight', facecolor='white')
- plt.close(fig)
- print(f" Figure → {output_prefix}.png / .pdf")
- def save_csv(rows, filepath):
- if not rows: return
- fields = list(rows[0].keys())
- with open(filepath, 'w', newline='', encoding='utf-8') as f:
- w = csv.DictWriter(f, fieldnames=fields)
- w.writeheader()
- w.writerows(rows)
- print(f" CSV → {filepath}")
- # ── Main ─────────────────────────────────────────────────────────────────────────
- def run_test(test_name, out_dir, apply_iqr=True):
- filepath = DATA_FILES[test_name]
- params = PARAMS[test_name]
- print(f"\n{'='*60}")
- print(f" {test_name} | Outlier removal: {'ON (IQR 1.5×)' if apply_iqr else 'OFF'}")
- print(f"{'='*60}")
- cols, data = load_data(filepath, test_name)
- param_data = {}
- stats_dict = {}
- csv_rows = []
- for param, label in params.items():
- raw1 = get_vals(data, cols, GROUPS[test_name]['Control'], param)
- raw2 = get_vals(data, cols, GROUPS[test_name]['PTSD'], param)
- if not raw1 or not raw2:
- continue
- v1 = remove_iqr(raw1) if apply_iqr else raw1
- v2 = remove_iqr(raw2) if apply_iqr else raw2
- n_rm1 = len(raw1) - len(v1)
- n_rm2 = len(raw2) - len(v2)
- param_data[param] = {'ctrl': v1, 'ptsd': v2}
- sr = run_stats({'Control': v1, 'PTSD': v2})
- stats_dict[param] = sr
- print_stats(label, sr, n_rm1, n_rm2)
- m1, m2 = np.mean(v1), np.mean(v2)
- s1, s2 = np.std(v1, ddof=1), np.std(v2, ddof=1)
- csv_rows.append({
- 'test': test_name,
- 'parameter': label,
- 'normality_ctrl_p': sr['normality']['Control']['p'],
- 'normality_ctrl': 'normal' if sr['normality']['Control']['normal'] else 'non-normal',
- 'normality_ptsd_p': sr['normality']['PTSD']['p'],
- 'normality_ptsd': 'normal' if sr['normality']['PTSD']['normal'] else 'non-normal',
- 'test': sr['test'],
- 'test_statistic': sr['statistic'],
- 'p_value': sr['p'],
- 'significance': sig_label(sr['p']),
- 'mean_ctrl': round(m1, 4),
- 'sd_ctrl': round(s1, 4),
- 'sem_ctrl': round(s1/np.sqrt(len(v1)), 4),
- 'n_ctrl': len(v1),
- 'mean_ptsd': round(m2, 4),
- 'sd_ptsd': round(s2, 4),
- 'sem_ptsd': round(s2/np.sqrt(len(v2)), 4),
- 'n_ptsd': len(v2),
- 'outliers_removed_ctrl': n_rm1,
- 'outliers_removed_ptsd': n_rm2,
- })
- prefix = os.path.join(out_dir, f'Art1_{test_name}')
- make_figure(test_name, param_data, stats_dict, prefix)
- save_csv(csv_rows, os.path.join(out_dir, f'Art1_{test_name}_stats.csv'))
- def main():
- parser = argparse.ArgumentParser(
- description='Behavioural analysis — Article 1 (Control vs PTSD)')
- parser.add_argument('--test', choices=['OF', 'EPM', 'DLB', 'ALL'],
- default='ALL', help='Which test to run')
- parser.add_argument('--no-outliers', action='store_true',
- help='Skip IQR outlier removal')
- args = parser.parse_args()
- ts = datetime.now().strftime('%Y-%m-%d_%H-%M-%S')
- out_dir = os.path.join('results', ts)
- os.makedirs(out_dir, exist_ok=True)
- print(f"Output → {out_dir}/")
- tests = ['OF', 'EPM', 'DLB'] if args.test == 'ALL' else [args.test]
- for t in tests:
- run_test(t, out_dir, apply_iqr=not args.no_outliers)
- print(f"\nDone! All results → {out_dir}/")
- if __name__ == '__main__':
- main()
behavioural.py at commit a2fe99b, under MIT · at the source
Overview
- Department of General and Molecular Pathophysiology Bogomoletz Institute of Physiology of NAS of Ukraine Kyiv Ukraine
- Department of Biophysics of Sensory Signalling Bogomoletz Institute of Physiology of NAS of Ukraine Kyiv Ukraine
Abstract
Background: Post‐traumatic stress disorder (PTSD) is a psychiatric disorder characterized by anxiety, abnormal stress responses, and pathological memory formation. Research indicates that hypoxia‐inducible pathways might influence the neurobiology of PTSD. However, the specific relationship between hypoxia‐inducible factors (HIFs), neuropeptides, and brain regions remains unclear. This study investigated behavioral and molecular alterations in a rat model of PTSD, with a particular focus on the expression of HIF‐1α, HIF‐2α, HIF‐3α, PACAP, and PAI‐1 in the hippocampus and medial prefrontal cortex (mPFC).
Methods: PTSD was modelled in adult male rats using the single prolonged stress (SPS) protocol, consisting of 2‐h immobilization, 15‐min forced swimming, and diethyl ether anesthesia. Behavioral assessment was performed 7 days post‐SPS using the open field test, elevated plus maze (EPM), and dark‐light box. Gene expression in the hippocampus and mPFC was quantified by RT‐qPCR using the 2(−ΔΔCt) method with β‐actin as a reference gene.
Results: SPS‐exposed rats exhibited significant anxiety‐like behavior. In the elevated plus maze, they showed increased freezing time (p = 0.0001), more freezing episodes (p = 0.002), fewer open‐arm head dips (p = 0.002), reduced open‐arm time (p = 0.027), and shorter total distance travelled (p = 0.026) compared to controls, whereas the reduction in open‐arm entries did not reach significance (p = 0.051). In the dark‐light box, PTSD animals made significantly fewer entries into the light zone (p = 0.009). No significant differences were detected in the open field test. At the molecular level, hippocampal HIF‐1α and HIF‐2α mRNA expression was significantly elevated in PTSD animals relative to controls (2.05‐ and 2.18‐fold, respectively; p < 0.05). No significant changes were detected for HIF‐3α, PACAP, or PAI‐1 in either brain region. No significant differences in gene expression were found in the mPFC.
Conclusions: PTSD is associated with selective upregulation of HIF‐1α and HIF‐2α in the hippocampus, suggesting region‐specific activation of hypoxia‐inducible signaling pathways in the context of traumatic stress.
Reproduced under the paper's license (CC BY), from the paper cited above.
Repository
Its files are read in the Code ↔ Paper reader above, with 4 matches between paragraphs and lines of code.
DotardOneClick/PTSD_hypoxia_markers
a2fe99b642a8b771f78bd5d2494513078da809b0, 8 July 2026Availability: 1 check, the latest on 26 September 2026: the link answers
- 26 September 2026: the link answers
5 files
- Raw Data Analysis/
QPCR_Raw_Data_Analysis.p , Python, 390 linesy - behavioural.py, Python, 416 lines, 4 matches
- molecular.py, Python, 346 lines
- LICENSE, License, 21 lines
- README.md, Text, 164 lines
The paper's code and data availability statement is in the Data section.
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:
- 1 repository 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;
- 4 matches between paragraphs of the paper and lines of the code (method lexical-v1);
- neither the text of the paper nor the code itself.
Its JSON (tracing-map.json) is deposited on Zenodo with its DOI once the map is validated.
Data
Datasets cited
- zenodo:19283737, at Zenodo; found in “Data Availability Statement”
Data Availability Statement
The data used for this study are available at Zenodo using the link 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, 4 authors, 5 keywords, 13 MeSH terms, 30 references.
Cite
This paper
Porkhalo, D., Pashevin, D., Naumenko, Y., & Dosenko, V. (2026). HIF-1α and HIF-2α Are Upregulated in the Hippocampus but Not in the Medial Prefrontal Cortex in Experimental PTSD. Brain and behavior, 16(8), e71654. https://
BibTeX
@article{porkhalo2026hif
author = {Porkhalo, Denys and Pashevin, Denis and Naumenko, Yana and Dosenko, Victor},
title = {{HIF-1α and HIF-2α Are Upregulated in the Hippocampus but Not in the Medial Prefrontal Cortex in Experimental PTSD}},
journal = {Brain and behavior},
year = {2026},
month = aug,
volume = {16},
number = {8},
pages = {e71654},
publisher = {Wiley},
issn = {2162-3279},
doi = {10.1002/
url = {https://
pmid = {42552943},
pmcid = {PMC13439218}
}
RIS
TY - JOUR
AU - Porkhalo, Denys
AU - Pashevin, Denis
AU - Naumenko, Yana
AU - Dosenko, Victor
TI - HIF-1α and HIF-2α Are Upregulated in the Hippocampus but Not in the Medial Prefrontal Cortex in Experimental PTSD
T2 - Brain and behavior
J2 - Brain Behav
PY - 2026
DA - 2026/
VL - 16
IS - 8
SP - e71654
SN - 2162-3279
PB - Wiley
DO - 10.1002/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1002/
"type": "article-journal",
"title": "HIF-1α and HIF-2α Are Upregulated in the Hippocampus but Not in the Medial Prefrontal Cortex in Experimental PTSD",
"container-title": "Brain and behavior",
"author": [
{
"family": "Porkhalo",
"given": "Denys"
},
{
"family": "Pashevin",
"given": "Denis"
},
{
"family": "Naumenko",
"given": "Yana"
},
{
"family": "Dosenko",
"given": "Victor"
}
],
"container-title-short":
"volume": "16",
"issue": "8",
"page": "e71654",
"DOI": "10.1002/
"PMID": "42552943",
"PMCID": "PMC13439218",
"ISSN": "2162-3279",
"publisher": "Wiley",
"URL": "https://
"language": "en",
"issued": {
"date-parts": [
[
2026,
8,
1
]
]
}
}
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.7554/elife.105528 [code]
- Functional specialization of mPFC-BLA and mPFC-NAc pathways in affective state representation.Journal: eLifeIn common: pandas, SciPy, Matplotlib, 1 other tool, 1 reference
- [2] doi:10.64898/2026.03.09.710596 [code]
- Infant gut microbiomes contribute to metabolic states that impact brain functionJournal: bioRxiv (preprint)In common: pandas, SciPy, Matplotlib, 1 other tool, 1 reference
- [3] doi:10.1167/jov.26.8.1 [code]
- MAME: Multidimensional adaptive metamer exploration with human perceptual feedback.Journal: Journal of visionIn common: pandas, SciPy, Matplotlib, 1 other tool, behavior only
- [4] doi:10.1186/s13229-026-00730-3 [code]
- Predicting emotional valence in autism: a preregistered study in the Bayesian Brain framework.Journal: Molecular autismIn common: pandas, SciPy, Matplotlib, 1 other tool, behavior only
- [5] doi:10.1162/imag.a.1292 [code]
- Assessing adverse effects and unspecific effects of transcutaneous spinal direct current stimulation (tsDCS).Journal: Imaging neuroscience (Cambridge, Mass.)In common: pandas, SciPy, Matplotlib, 1 other tool, behavior only
- [6] doi:10.1038/s41467-026-74227-1 [code]
- Age-related changes in behavioural and neural variability in a decision-making task.Journal: Nature communicationsIn common: pandas, SciPy, Matplotlib, 1 other tool, behavior only
- [7] doi:10.1038/s41467-026-74768-5 [code]
- Parallel cholinergic circuit in oculomotor nucleus to control eye movements and REM sleep.Journal: Nature communicationsIn common: pandas, SciPy, Matplotlib, 1 other tool, behavior only
- [8] doi:10.3758/s13414-026-03289-6 [code]
- Saccade length consistency during reading and shape-scanning.Journal: Attention, perception & psychophysicsIn common: pandas, SciPy, Matplotlib, 1 other tool, behavior only
- [9] doi:10.7554/elife.107423 [code]
- A context-free model of savings in motor learning.Journal: eLifeIn common: pandas, SciPy, Matplotlib, 1 other tool, behavior only
- [10] doi:10.1016/j.crmeth.2026.101421 [code]
- EthoPy provides an accessible platform for reproducible behavioral neuroscience.Journal: Cell reports methodsIn common: pandas, SciPy, Matplotlib, 1 other tool, behavior only
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: 1 repository of the authors' code, each at its verified commit and with its license, 3 scripts, and 4 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:3cb901d67dc452da…
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.
