OSCR

Social hierarchy shapes behavioral and transcriptional responses to chronic stress and ketamine in male mice.

Code ↔ Paper

4 matches between paragraphs of the paper and lines of its authors' code, computed by the harvester (lexical-v1). Click a colored paragraph or line to see its counterpart.

The 4 matches
  1. [1] § STAR★Methods › Method details › SB behavioral analysis ↔ misc/extract_corpus_stats.py, lines 258–336 · score 0.80 · social interactions, anogenital, proximity, locomotion, motionless, traveled
  2. [2] § STAR★Methods › Method details › The social box arena ↔ misc/extract_corpus_stats.py, lines 31–90 · score 0.73 · social contact, DeepLabCut, social interactions, Vision, Food, bedding
  3. [3] § STAR★Methods › Method details › Chronic social defeat stress paradigm ↔ misc/extract_corpus_stats.py, lines 131–215 · score 0.66 · social defeat, CD1, groomed, intruder, resident, paradigm
  4. [4] § STAR★Methods › Experimental model and study participant details ↔ misc/geocode_institutions.py, lines 91–166 · score 0.54 · Max Planck Institute, Germany, Council, Laboratory, Science

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 · 539 lines · 30 KB · BSD-3-Clause · 3 matches

  1. # -*- coding: utf-8 -*-
  2. """Extract corpus statistics from the local SimBA use-case paper PDFs and write a
  3. small, committable JSON that the docs renderer consumes.
  4. The PDFs themselves are NOT in the repo (they live locally, e.g. F:\\simba_papers) and
  5. cannot be reached by the CI/ReadTheDocs build. This script is the LOCAL step: run it
  6. whenever the paper folder changes, then commit misc/corpus_stats.json. The renderer
  7. (usecase_map_stats.py) reads only that JSON, so the docs build stays PDF-free.
  8. If the paper folder is missing/empty (e.g. on another machine or in CI), the existing
  9. committed JSON is kept untouched -- the build never breaks.
  10. Run: python misc/extract_corpus_stats.py [pdf_dir]
  11. """
  12. import os, re, sys, json, shutil, hashlib, tempfile, subprocess, collections, itertools
  13. from datetime import date
  14. PDF_DIR = sys.argv[1] if len(sys.argv) > 1 else r"F:\simba_papers"
  15. def say(msg):
  16. """print() that survives a cp1252 console -- journal-exported filenames carry
  17. characters like U+2010 that the default Windows encoder refuses."""
  18. try:
  19. print(msg)
  20. except UnicodeEncodeError:
  21. enc = sys.stdout.encoding or "ascii"
  22. print(msg.encode(enc, "backslashreplace").decode(enc, "replace"))
  23. OUT = os.path.join("misc", "corpus_stats.json")
  24. # --- lexicons: category label -> regex of surface forms (word-boundary, lowercased) ---
  25. # Counting is DOCUMENT frequency: each paper contributes at most once per label.
  26. BEHAVIORS = {
  27. "Social interaction": r"social (?:interaction|behavior|behaviour|investigation|approach)|social contact",
  28. "Aggression / attack": r"aggress|attack|fighting|resident.?intruder|biting",
  29. "Grooming": r"groom",
  30. "Freezing": r"freezing",
  31. "Locomotion / open field": r"locomot|open.?field|ambulat|distance travel",
  32. "Rearing": r"\brear(?:ing|s|ed)?\b",
  33. "Sniffing": r"sniff",
  34. "Immobility (FST/TST)": r"immobil|tail suspension|forced swim",
  35. "Mating / sexual": r"\bmating\b|copulat|intromission|sexual behav|mounting behav",
  36. "Avoidance": r"avoidance",
  37. "Head-twitch (HTR)": r"head.?twitch|\bhtr\b",
  38. "Feeding / consumption": r"feeding|food intake|self.?administrat|consumption",
  39. "Gait / balance": r"\bgait\b|rotarod|balance beam|posture",
  40. "Pup retrieval / maternal": r"pup retrieval|maternal behav|nest building|nesting",
  41. }
  42. REGIONS = {
  43. "Amygdala": r"amygdala|\bbla\b|\bcea\b|\bmea\b",
  44. "Nucleus accumbens": r"nucleus accumbens|accumbens|\bnac\b",
  45. "Prefrontal cortex": r"prefrontal|\bpfc\b|\bmpfc\b",
  46. "Hippocampus": r"hippocamp",
  47. "BNST": r"bed nucleus of the stria|\bbnst\b",
  48. "Hypothalamus": r"hypothalam",
  49. "VTA": r"ventral tegmental|\bvta\b",
  50. "Striatum": r"striat",
  51. "Insula": r"insula",
  52. "Cingulate cortex": r"cingulate",
  53. "Thalamus": r"\bthalam",
  54. "Periaqueductal gray": r"periaqueductal|\bpag\b",
  55. "Habenula": r"habenula",
  56. "Cerebellum": r"cerebell",
  57. }
  58. METHODS = {
  59. "DeepLabCut": r"deeplabcut|\bdlc\b",
  60. "SLEAP": r"\bsleap\b",
  61. "Optogenetics": r"optogenetic|channelrhodopsin|\bchr2\b|halorhodopsin",
  62. "Fiber photometry": r"photometry|\bgcamp\b",
  63. "Chemogenetics (DREADD)": r"dreadd|chemogenetic|\bcno\b|hm[34]d",
  64. # miniscope / two-photon fold in here rather than getting their own bars, so a
  65. # calcium-imaging paper is not counted three times across the panel.
  66. "Calcium imaging": r"calcium imaging|miniscope|two.?photon|2.?photon",
  67. "Electrophysiology": r"electrophysiolog|patch.?clamp|single.?unit|in vivo record",
  68. "Transcriptomics": r"rna.?seq|transcriptom|single.?cell rna",
  69. "SHAP explainability": r"\bshap\b|shapley",
  70. "BORIS annotation": r"\bboris\b",
  71. "EthoVision": r"ethovision",
  72. "Viral tracing (AAV)": r"\baav\b|adeno.?associated|retrograde trac|anterograde trac",
  73. "Immunohistochemistry": r"immunohistochem|\bihc\b",
  74. "c-Fos mapping": r"c.?fos\b",
  75. "EEG / LFP recording": r"\beeg\b|local field potential|\blfp\b",
  76. "Ultrasonic vocalisation": r"ultrasonic vocal|\busvs?\b",
  77. "AnyMaze": r"any.?maze",
  78. "B-SOiD": r"b.?soid",
  79. "Keypoint-MoSeq": r"moseq",
  80. "Microdialysis": r"microdialysis",
  81. "qPCR": r"\bqpcr\b|quantitative pcr|rt.?pcr",
  82. "A-SOiD": r"a.?soid",
  83. "VAME": r"\bvame\b",
  84. "Western blot": r"western blot",
  85. "UMAP / t-SNE": r"\bumap\b|t.?sne\b",
  86. "TopScan / CleverSys": r"topscan|clever ?sys",
  87. "Telemetry": r"telemetr",
  88. "XGBoost": r"xgboost|gradient boost",
  89. "Lightning Pose": r"lightning ?pose",
  90. "DANNCE": r"dannce",
  91. "ezTrack": r"eztrack",
  92. }
  93. DISEASES = {
  94. "Addiction / substance use": r"addiction|opioid|cocaine|fentanyl|oxycodone|alcohol|ethanol|methamphetamine|nicotine|psychostimulant",
  95. "Pain / analgesia": r"\bpain\b|analgesi|nocicep|hyperalgesi",
  96. "Stress / depression": r"chronic stress|social defeat|depress|anhedoni|despair",
  97. "Anxiety": r"anxiet|anxio",
  98. "Autism (ASD)": r"autism|\basd\b|autistic",
  99. "Parkinson's": r"parkinson|alpha.?synuclein|\bmptp\b|6.?ohda",
  100. "Alzheimer's / dementia": r"alzheimer|amyloid|\btau\b|dementia",
  101. "Epilepsy / seizure": r"epilep|seizure|convuls",
  102. "Psychedelics": r"psychedelic|psilocy|\blsd\b|ketamine|\bdmt\b|serotonergic",
  103. "Schizophrenia": r"schizophren",
  104. "Fear conditioning": r"fear conditioning",
  105. # "aged 8 weeks" is husbandry, not ageing research: \baged\b matched 45 papers
  106. # that way, so require the research sense.
  107. "Ageing": r"\baging\b|\bageing\b|age.?related",
  108. "Sleep / circadian": r"sleep deprivation|circadian rhythm|sleep.?wake",
  109. "Early-life stress": r"maternal separation|early.?life (?:stress|advers)|limited bedding",
  110. "Social defeat": r"social defeat",
  111. "PTSD": r"\bptsd\b|post.?traumatic stress",
  112. "Neuroinflammation": r"neuroinflamm",
  113. "Obesity / diet": r"obesity|diet.?induced|high.?fat diet",
  114. "Stroke / ischemia": r"\bstroke\b|ischemi|ischaemi",
  115. "Prenatal exposure": r"prenatal|in utero|gestational exposure",
  116. "Neuropathic pain": r"neuropathic pain",
  117. "Huntington's": r"huntington",
  118. "ADHD": r"\badhd\b",
  119. "Traumatic brain injury": r"\btbi\b|traumatic brain injur",
  120. "Rett syndrome": r"rett syndrome|\bmecp2\b",
  121. "Fragile X": r"fragile x|\bfmr1\b",
  122. }
  123. # Curated scientific concept gazetteer for the word cloud -- so it shows real entities
  124. # (regions, neuromodulators, drugs, paradigms, methods, models, species), not generic words.
  125. CLOUD_TERMS = {
  126. # behaviours & paradigms
  127. "Grooming": r"groom", "Freezing": r"freezing", "Aggression": r"aggress",
  128. "Rearing": r"\brear(?:ing|s|ed)?\b", "Sniffing": r"sniff", "Mating": r"\bmating\b|copulat|mounting behav|sexual behav",
  129. "Digging": r"digging", "Climbing": r"climbing", "Immobility": r"immobil", "Locomotion": r"locomot",
  130. "Social interaction": r"social interaction", "Avoidance": r"avoidance",
  131. "Head-twitch": r"head.?twitch|\bhtr\b", "Scratching": r"scratching", "Nesting": r"nest(?:ing| building)",
  132. "Pup retrieval": r"pup retrieval", "Marble burying": r"marble bury", "Tail suspension": r"tail suspension",
  133. "Forced swim": r"forced swim", "Elevated plus maze": r"plus.?maze", "Open field": r"open.?field",
  134. "Three-chamber": r"three.?chamber", "Resident-intruder": r"resident.?intruder", "Novel object": r"novel object",
  135. "Fear conditioning": r"fear conditioning", "Place preference": r"place preference|\bcpp\b",
  136. "Rotarod": r"rotarod", "Gait": r"\bgait\b", "Startle": r"startle", "Feeding": r"feeding", "Licking": r"licking",
  137. # regions
  138. "Amygdala": r"amygdala", "Nucleus accumbens": r"nucleus accumbens|accumbens",
  139. "Prefrontal cortex": r"prefrontal|\bpfc\b", "Hippocampus": r"hippocamp",
  140. "BNST": r"\bbnst\b|bed nucleus of the stria", "Hypothalamus": r"hypothalam",
  141. "VTA": r"\bvta\b|ventral tegmental", "Striatum": r"striat", "Thalamus": r"\bthalam", "Insula": r"insula",
  142. "Cingulate": r"cingulate", "Periaqueductal gray": r"periaqueductal|\bpag\b", "Habenula": r"habenula",
  143. "Cerebellum": r"cerebell", "Dorsal raphe": r"dorsal raphe", "Locus coeruleus": r"locus coeruleus",
  144. # neuromodulators
  145. "Dopamine": r"dopamine", "Serotonin": r"serotonin|5-?ht\b", "Oxytocin": r"oxytocin", "GABA": r"\bgaba\b",
  146. "Glutamate": r"glutamate", "Opioid": r"opioid", "Cannabinoid": r"cannabinoid", "Corticosterone": r"corticosterone",
  147. "CRF": r"\bcrf\b|corticotropin", "Norepinephrine": r"norepinephrine|noradrenaline", "Acetylcholine": r"acetylcholine|cholinergic",
  148. # drugs / compounds
  149. "Psilocybin": r"psilocy", "Ketamine": r"ketamine", "Fentanyl": r"fentanyl", "Oxycodone": r"oxycodone",
  150. "Cocaine": r"cocaine", "Methamphetamine": r"methamphetamine", "Morphine": r"morphine",
  151. "Ethanol / alcohol": r"ethanol|alcohol", "Nicotine": r"nicotine", "DMT": r"\bdmt\b", "MDMA": r"\bmdma\b",
  152. "LSD": r"\blsd\b", "Diazepam": r"diazepam", "THC / cannabis": r"\bthc\b|cannabis|tetrahydrocannab",
  153. "Amphetamine": r"\bamphetamine",
  154. # methods / tools
  155. "DeepLabCut": r"deeplabcut|\bdlc\b", "SLEAP": r"\bsleap\b", "Optogenetics": r"optogenetic",
  156. "Fiber photometry": r"photometry", "DREADD": r"dreadd|chemogenetic", "Calcium imaging": r"calcium imaging|miniscope",
  157. "Two-photon": r"two.?photon|2.?photon", "Electrophysiology": r"electrophysiolog|patch.?clamp",
  158. "RNA-seq": r"rna.?seq|transcriptom", "SHAP": r"\bshap\b|shapley", "Random forest": r"random forest",
  159. "BORIS": r"\bboris\b", "EthoVision": r"ethovision", "Immunohistochemistry": r"immunohistochem|\bihc\b",
  160. "Machine learning": r"machine learning", "Pose estimation": r"pose estimation",
  161. # models / disease
  162. "Parkinson's": r"parkinson", "Alzheimer's": r"alzheimer", "Autism": r"autism|\basd\b",
  163. "Epilepsy": r"epilep|seizure", "Addiction": r"addiction", "Depression": r"depress", "Anxiety": r"anxiet",
  164. "Chronic stress": r"chronic stress", "Social defeat": r"social defeat", "Neuropathic pain": r"neuropathic pain",
  165. "Fragile X": r"fragile x", "TBI": r"\btbi\b|traumatic brain",
  166. # species / strains
  167. "Zebrafish": r"zebrafish", "C57BL/6": r"c57bl|\bc57\b", "CD1": r"\bcd.?1\b", "Sprague-Dawley": r"sprague.?dawley",
  168. "Gerbil": r"gerbil", "Prairie vole": r"prairie vole|\bvole", "Drosophila": r"drosophila", "Primate": r"macaque|primate",
  169. "Wistar rat": r"wistar", "Long-Evans": r"long.?evans", "BALB/c": r"\bbalb", "Transgenic": r"transgenic",
  170. "Knockout": r"knockout", "Crayfish / crustacean": r"crayfish|crustacean|\bcrab", "Songbird": r"songbird|zebra finch",
  171. # more behaviours & paradigms
  172. "Circling": r"circling", "Jumping / escape": r"jumping|escape behav", "Burrowing": r"burrow",
  173. "Ultrasonic vocalisation": r"ultrasonic vocal|\busv\b|\busvs\b", "Prepulse inhibition": r"prepulse|\bppi\b",
  174. "Social memory": r"social memory", "Social novelty": r"social novelty",
  175. "Object recognition": r"object recognition", "Spatial memory": r"spatial memory|spatial learning",
  176. "Water maze": r"water maze|morris water", "Y-maze": r"\by.?maze", "T-maze": r"\bt.?maze", "Barnes maze": r"barnes maze",
  177. "Light-dark box": r"light.?dark box", "Operant task": r"operant|lever press|nose.?poke",
  178. "Self-administration": r"self.?administrat", "Reinstatement": r"reinstatement", "Extinction": r"extinction",
  179. "Wheel running": r"wheel running", "Stereotypy": r"stereotyp", "Catalepsy": r"cataleps", "Tremor": r"tremor",
  180. "Grimace scoring": r"grimace",
  181. # more regions
  182. "Orbitofrontal cortex": r"orbitofrontal|\bofc\b", "Lateral septum": r"lateral septum",
  183. "Preoptic area": r"preoptic|\bmpoa\b", "Paraventricular nucleus": r"paraventricular|\bpvn\b",
  184. "Substantia nigra": r"substantia nigra", "Entorhinal cortex": r"entorhinal", "Dentate gyrus": r"dentate gyrus",
  185. "Prelimbic / infralimbic": r"prelimbic|infralimbic", "Basolateral amygdala": r"basolateral",
  186. # more markers / neuromodulators
  187. "Estrogen": r"estrogen|estradiol", "Testosterone": r"testosterone", "Vasopressin": r"vasopressin",
  188. "BDNF": r"\bbdnf\b", "c-Fos": r"c.?fos\b", "Orexin": r"orexin|hypocretin",
  189. "Somatostatin": r"somatostatin|\bsst\b", "Parvalbumin": r"parvalbumin", "Cortisol": r"cortisol",
  190. "Endocannabinoid": r"endocannabinoid",
  191. # more drugs / compounds
  192. "Fluoxetine / SSRI": r"fluoxetine|\bssri\b", "Haloperidol": r"haloperidol", "Clozapine": r"clozapine",
  193. "MK-801": r"mk.?801|dizocilpine", "Scopolamine": r"scopolamine", "Caffeine": r"caffeine",
  194. "Buprenorphine": r"buprenorphine", "Naloxone / naltrexone": r"naloxone|naltrexone",
  195. # more methods / tools
  196. "UMAP": r"\bumap\b", "t-SNE": r"t.?sne\b", "HDBSCAN": r"hdbscan", "XGBoost": r"xgboost|gradient boost",
  197. "CNN / ResNet": r"\bcnn\b|resnet|convolutional neural", "Transformer": r"\btransformer", "Keypoint tracking": r"keypoint|key.?point",
  198. "Bounding box": r"bounding box|\bbbox\b", "MoSeq": r"moseq", "VAME": r"\bvame\b", "B-SOiD": r"b.?soid",
  199. "A-SOiD": r"a.?soid", "DANNCE": r"dannce", "Lightning Pose": r"lightning ?pose", "AnyMaze": r"any.?maze",
  200. "TopScan / CleverSys": r"topscan|clever ?sys", "ezTrack": r"eztrack", "Unsupervised": r"unsupervised",
  201. "SVM": r"\bsvm\b|support vector",
  202. # more models / disease
  203. "Schizophrenia": r"schizophren", "PTSD": r"\bptsd\b|post.?traumatic", "ADHD": r"\badhd\b",
  204. "Huntington's": r"huntington", "Stroke / ischemia": r"\bstroke\b|ischemi|ischaemi", "Rett syndrome": r"rett syndrome|\bmecp2\b",
  205. "Maternal separation": r"maternal separation|early.?life advers|early life stress", "Neuroinflammation": r"neuroinflamm",
  206. "Obesity / diet": r"obesity|diet.?induced|high.?fat", "Aging": r"\baging\b|\baged\b|ageing", "Sleep / circadian": r"\bsleep\b|circadian",
  207. }
  208. # --- "behaviours automated": what SimBA was actually used to score -----------------
  209. # Whole-document keyword counting cannot answer this -- "freezing" appears in papers
  210. # that never built a freezing classifier. So a behaviour is credited to a study only
  211. # when its term sits BOTH (a) inside a text window around a SimBA mention and
  212. # (b) within NEAR characters of a scoring/classifier cue. (a) alone credits husbandry
  213. # and unrelated assays ("nicotine in the drinking water"); (b) alone credits any ML
  214. # mentioned anywhere in the paper.
  215. CTX_BEFORE, CTX_AFTER, NEAR = 400, 700, 160
  216. # A SimBA mention inside the reference list is the Goodwin/Nilsson citation itself;
  217. # its neighbours are unrelated references, so those windows are dropped.
  218. # NB the 2020 preprint's own title contains "complex social behaviors in experimental
  219. # animals" -- without it here, every paper that merely cites SimBA was credited with
  220. # automating social behaviour.
  221. SIMBA_CITE = re.compile(
  222. r"as a platform for explainable|simple behavioral analysis \(simba\) as a"
  223. r"|goodwin,? ?n\.?\s?l|nilsson,? ?s\.?\s?r\.?\s?o|simba: a novel"
  224. r"|open.?source deep learning based framework"
  225. r"|open source toolkit for computer classification"
  226. r"|toolkit for computer classification of complex social")
  227. # Cues that mark text as "this is a behaviour being read out". Three groups, because
  228. # studies phrase it three ways: trained classifiers ("scored", "classifier for"),
  229. # ethogram definitions ("'attack' was defined as"), and kinematic/ROI readouts
  230. # ("time spent", "total distance was measured") -- the last two carry no ML verb at
  231. # all, and requiring one silently dropped every ROI-only and ethogram-table study.
  232. SCORE_CUE = re.compile(
  233. r"classif|scor(?:e|ed|es|ing)\b|annotat|detect|quantif|\btrain(?:ed|ing)\b"
  234. r"|predict|label(?:l?ed|l?ing)\b|ethogram|random forest|\bbouts?\b"
  235. r"|behaviou?rs? (?:such as|of interest|included|were)|automated|automatic"
  236. r"|defined as|was defined|were defined|definition of"
  237. r"|measur|calculat|comput(?:e|ed|ing)\b|time spent|duration (?:of|and)|frequency of"
  238. r"|analy[sz]ed (?:in|with|using)|readouts?\b")
  239. # A behaviour named inside a bibliography entry is someone else's study, not this one.
  240. # SIMBA_CITE only drops the SimBA citation itself; a window can still reach into the
  241. # neighbouring references, where "(2020). ... duration of attack ... eNeuro 7(5)" reads
  242. # as a behaviour. Only near-unambiguous reference markers: a DOI or a volume(issue)
  243. # citation. NOT "(2020)." -- that is also how ordinary methods prose ends a sentence.
  244. REF_ZONE = re.compile(r"doi\.org/|\bdoi:|\b\d{4};\s?\d+\(|\b\d+\(\d+\),\s?\d+")
  245. # label -> (surface forms, family). Families group the ethogram for the docs caption.
  246. BEHAV_AUTOMATED = {
  247. "Social interaction / approach":
  248. (r"social (?:interaction|investigat|approach|contact|behavio|preference|proximity)|allogroom|social novelty|crawling", "Social"),
  249. "Anogenital / body sniffing":
  250. (r"sniff|anogenital|ano.?genital|nose.?to.?nose|head.?to.?head|face.?to.?face|nosing", "Social"),
  251. # "following" is a preposition ("following model training") and a list introducer
  252. # ("the following behaviors:") far more often than it is the behaviour, so it only
  253. # counts with an explicit object or inside a classifier list.
  254. "Following / chasing / pursuit":
  255. (r"\bchasing\b|\bchase\b|pursuit"
  256. r"|(?<!the )(?<!these )(?<!as )following (?:and (?:circling|sniffing|chas)|classifiers?\b)"
  257. r"|follow(?:ing|ed) (?:the )?(?:conspecific|intruder|stimulus|demonstrator|partner|another|other mouse)", "Social"),
  258. "Mating / mounting":
  259. (r"\bmounting\b(?! (?:magnet|camera|the))|copulat|intromission|mating behavio|sexual behavio|\bthrust", "Social"),
  260. "Pup retrieval / maternal care":
  261. (r"pup retrieval|retriev\w* (?:the )?pups?|maternal (?:behavio|care)|nest building|nest attendance|dam.?pup|carrying|maternal approach|nest shift", "Social"),
  262. "Attack / fighting / biting":
  263. (r"\battack|fighting|\bbit(?:e|es|ing)\b|aggressive behavio|\bstrik(?:e|es|ing)\b|lateral threat"
  264. r"|\btussl|\blung(?:e|es|ing)\b|offensive|\bpinning\b|\bgrappling\b", "Aggression"),
  265. "Tail rattling / dominance display":
  266. (r"tail rattl|\bdominance\b|dominant (?:male|mice|mouse|animal)|submissi|threat display|\bboxing\b", "Aggression"),
  267. "Freezing": (r"freezing(?! (?:microtome|point))|\bfreeze\b", "Fear / defence"),
  268. # Darting is its own explicitly defined fear response ("movement across the chamber
  269. # at or exceeding 20 cm/s"), not a flavour of escape.
  270. "Darting": (r"\bdarting\b|\bdarts?\b(?= (?:were|was|behavio|bout))", "Fear / defence"),
  271. "Avoidance / escape / flight":
  272. (r"avoidance|\bescape|\bflee|fleeing|\brunaway\b|\bflight\b|\bretreat", "Fear / defence"),
  273. "Defensive posture / risk assessment":
  274. (r"defensive (?:behavio|postur|attack|burying)|\bupright\b|risk assessment"
  275. r"|stretch.?attend|head dip|\bdipping\b|\bcrouch", "Fear / defence"),
  276. # No leading \b: the corpus writes "selfgrooming" as one word. "allogrooming" is
  277. # social grooming and is counted under social interaction instead.
  278. "Grooming": (r"(?<!allo)(?<!allo-)groom", "Self-directed"),
  279. "Rearing": (r"\brear(?:ing|s|ed)?\b(?! (?:environment|paw|left|right|limb))", "Self-directed"),
  280. "Head-twitch response": (r"head.?twitch|\bhtr\b", "Self-directed"),
  281. "Digging / burrowing": (r"\bdigging\b|burrow|marble bury|\bburying\b", "Self-directed"),
  282. "Stereotypy (circling / pacing / Straub tail)":
  283. (r"\bcircling\b|straub|\btremor|catalep|uncoordinated walking|\bpacing\b|\bswaying\b", "Self-directed"),
  284. "Hind-limb clasping": (r"clasping", "Self-directed"),
  285. "Locomotion / distance travelled":
  286. (r"locomot|distance (?:travel|moved|travell)|total distance|movement distance|ambulat", "Locomotion / motor"),
  287. "Immobility / motionless":
  288. # "resting" is a scored state in the fish/rat ethograms, but "resting state"
  289. # is LFP/fMRI and "initial resting state" is the head-twitch baseline.
  290. (r"immobility|\bimmobile\b|motionless|\bresting\b(?! state)", "Locomotion / motor"),
  291. "Gait / balance beam":
  292. # "stride" alone also matched a convolution stride in a deep-learning methods section.
  293. # "walking behaviour" is scored directly; bare "walking" also matches a crab's
  294. # "walking appendages", so keep the noun.
  295. (r"\bgait\b|balance beam|beam walking|rotarod|walking (?:pattern|behavio|time)"
  296. r"|footfall|stride length|foot.?slip|pole test|wire hang", "Locomotion / motor"),
  297. "Climbing / jumping": (r"climbing|\bjump(?:ing|s)?\b", "Locomotion / motor"),
  298. "Wheel running": (r"wheel running", "Locomotion / motor"),
  299. # Aquatic species: swimming style, station-holding against flow, hovering in place.
  300. # Bare "swimming" is mostly the species ("swimming crab Portunus") or anatomy
  301. # ("swimming limbs"), so require a readout noun after it.
  302. "Swimming / rheotaxis / hovering":
  303. (r"swimming (?:behavio|time|activity|pattern|style|bout)|parallel swim"
  304. r"|\brheotaxis\b|station.?holding|\bhovering\b|bottom.?dwelling", "Locomotion / motor"),
  305. "Feeding / licking / drinking":
  306. (r"\blick(?:ing|s)?\b|feeding behavio|food intake|\beating\b|drinking behavio|appetitive|ingestion|\bnursing\b", "Feeding / reward"),
  307. "Foraging / food handling":
  308. (r"\bgnaw|\btearing\b|foraging|food handling|\bpecking\b|prey capture|\bhunting\b|predatory", "Feeding / reward"),
  309. "Operant / self-administration":
  310. (r"self.?administrat|operant|lever.?press|nose.?poke|place preference|reinstatement|drug.?seeking|drug.?taking", "Feeding / reward"),
  311. # Cleaner-fish mutualism: client "jolts" index cheating by the cleaner.
  312. "Cleaning interaction / jolts (fish)":
  313. (r"\bjolts?\b|cleaning (?:behavio|interaction)|client interaction", "Feeding / reward"),
  314. "Object exploration / novel object":
  315. (r"object (?:exploration|interaction|investigat|contact|approach)|object recognition(?! benchmark)|novel object|exploratory behavio", "Exploration"),
  316. "Zone / ROI occupancy":
  317. (r"region.?of.?interest|\brois?\b|time.?in.?zone|zone (?:occupancy|entr|time)|time in (?:the )?(?:cent(?:er|re)|corner)|\bcrossings?\b", "Exploration"),
  318. # Anchor the maze names: unanchored "y.?maze" also matches "anymaze", the tracking software.
  319. "Whisking / head scanning":
  320. (r"whisking|head scanning", "Exploration"),
  321. "Maze arm entries / spatial task":
  322. (r"arm entr|\by.?maze|\bt.?maze|water maze|barnes maze|plus.?maze|spatial (?:memory|learning) task", "Exploration"),
  323. }
  324. def flow(t):
  325. """pdftotext output -> single-line text: de-hyphenate line breaks, collapse space."""
  326. return re.sub(r"\s+", " ", re.sub(r"-\s*\n\s*", "", t.replace("­", "")))
  327. def simba_context(t):
  328. """Concatenated windows around every SimBA mention that is not a bibliography entry.
  329. Edges snap outward to whitespace: a window cutting "classi|fications" in half hides
  330. the cue that the behaviour term next to it depends on."""
  331. wins = []
  332. for m in re.finditer(r"simba|simple behaviou?ral analysis", t):
  333. s = m.start()
  334. if SIMBA_CITE.search(t[max(0, s - 170):s + 170]):
  335. continue
  336. a, b = max(0, s - CTX_BEFORE), min(len(t), s + CTX_AFTER)
  337. a = t.rfind(" ", 0, a) + 1 if a else 0
  338. b = t.find(" ", b)
  339. wins.append(t[a:b if b != -1 else len(t)])
  340. return " | ".join(wins)
  341. def study_clusters(texts):
  342. """Group files that are the same study -- a preprint and its published version, or
  343. the same PDF saved twice -- so document frequency counts each study once.
  344. Containment of 9-word shingles; step 1 so a 1-2 word offset cannot de-align them."""
  345. def sh(t, k=9, cap=6000):
  346. w = re.findall(r"[a-z]+", t)[:cap]
  347. return {" ".join(w[i:i + k]) for i in range(max(0, len(w) - k))}
  348. S = [sh(t) for t in texts]
  349. par = list(range(len(texts)))
  350. def find(x):
  351. while par[x] != x:
  352. par[x] = par[par[x]]; x = par[x]
  353. return x
  354. for a, b in itertools.combinations(range(len(texts)), 2):
  355. if S[a] and S[b] and len(S[a] & S[b]) / min(len(S[a]), len(S[b])) > 0.25:
  356. ra, rb = find(a), find(b)
  357. if ra != rb:
  358. par[ra] = rb
  359. g = collections.defaultdict(list)
  360. for i in range(len(texts)):
  361. g[find(i)].append(i)
  362. return list(g.values())
  363. def behaviours_automated(texts):
  364. """-> ([[label, n_studies, family], ...] desc, n_studies_with_simba_context,
  365. {label: [paper_index, ...]}). The index is the study's representative paper."""
  366. flowed = [flow(t) for t in texts]
  367. counts, ex, n = collections.Counter(), collections.defaultdict(list), 0
  368. for group in study_clusters(flowed):
  369. blob = " | ".join(filter(None, (simba_context(flowed[i]) for i in group)))
  370. if not blob:
  371. continue
  372. n += 1
  373. for label, (pat, _) in BEHAV_AUTOMATED.items():
  374. for m in re.finditer(pat, blob):
  375. near = blob[max(0, m.start() - NEAR):m.start() + NEAR]
  376. if SCORE_CUE.search(near) and not REF_ZONE.search(near):
  377. counts[label] += 1
  378. ex[label].append(group[0])
  379. break
  380. rows = [[lab, c, BEHAV_AUTOMATED[lab][1]] for lab, c in counts.most_common()]
  381. return rows, n, {lab: pick_examples(lab, ex[lab]) for lab, _, _ in rows}
  382. def full_text(fp):
  383. """pdftotext -> lowercased full text, or None if the extraction itself failed.
  384. None (missing/old pdftotext, timeout, non-zero exit) is kept distinct from a
  385. genuinely text-free PDF so main() can refuse to overwrite a good corpus with a
  386. degenerate mine. capture_output= is 3.7+, so the pipes are named explicitly.
  387. """
  388. src, tmp = fp, None
  389. if any(ord(c) > 127 for c in fp):
  390. # pdftotext (mingw build) opens paths through the ANSI API and returns
  391. # "I/O Error: Couldn't open file" on the U+2010 hyphens that journal
  392. # exports put in filenames -- mine an ASCII-named copy instead.
  393. fd, tmp = tempfile.mkstemp(prefix="corpus_", suffix=".pdf")
  394. os.close(fd)
  395. shutil.copyfile(fp, tmp)
  396. src = tmp
  397. try:
  398. r = subprocess.run(["pdftotext", src, "-"], stdout=subprocess.PIPE,
  399. stderr=subprocess.PIPE, timeout=90)
  400. except Exception as e:
  401. say("[corpus] pdftotext failed on %s: %r" % (os.path.basename(fp), e))
  402. return None
  403. finally:
  404. if tmp and os.path.exists(tmp):
  405. os.remove(tmp)
  406. if r.returncode != 0:
  407. say("[corpus] pdftotext exit %s on %s: %s"
  408. % (r.returncode, os.path.basename(fp),
  409. r.stderr.decode("utf-8", "ignore").strip()[:120]))
  410. return None
  411. return r.stdout.decode("utf-8", "ignore").lower()
  412. # Enough of each paper's opening to contain its title once journal furniture
  413. # ("contents lists available at sciencedirect ...") is allowed for. The renderer
  414. # matches these against the sheet's TITLE column to name papers in tooltips.
  415. HEAD_CHARS = 700
  416. EXAMPLE_CAP = 4 # papers listed per label in a tooltip
  417. def paper_head(t):
  418. """Lowercased opening with punctuation collapsed to spaces. Spaces are kept so the
  419. renderer can both substring-match a title and fall back to word overlap."""
  420. return re.sub(r"[^a-z0-9]+", " ", flow(t)[:3000].lower()).strip()[:HEAD_CHARS]
  421. def pick_examples(label, idxs):
  422. """A deterministic per-label sample of the matching papers.
  423. Taking the first few by index meant the same paper headlined nearly every label
  424. (paper 0 mentions most things). Ordering by a hash of label+index decorrelates the
  425. choice across labels while staying stable across rebuilds."""
  426. return sorted(idxs, key=lambda i: hashlib.md5(f"{label}:{i}".encode()).hexdigest())[:EXAMPLE_CAP]
  427. def df_counts(texts, lex):
  428. """-> ([[label, count], ...] desc, {label: [paper_index, ...]}) -- the indices are
  429. a sample of the papers matching each label, for tooltip examples."""
  430. c = collections.Counter()
  431. hits = collections.defaultdict(list)
  432. for i, t in enumerate(texts):
  433. for label, pat in lex.items():
  434. if re.search(pat, t):
  435. c[label] += 1
  436. hits[label].append(i)
  437. rows = [[k, v] for k, v in sorted(c.items(), key=lambda kv: -kv[1]) if v]
  438. return rows, {k: pick_examples(k, hits[k]) for k, _ in rows}
  439. def main():
  440. if not os.path.isdir(PDF_DIR):
  441. print(f"[corpus] paper dir not found ({PDF_DIR}); keeping existing {OUT}."); return
  442. pdfs = [os.path.join(PDF_DIR, f) for f in os.listdir(PDF_DIR) if f.lower().endswith(".pdf")]
  443. if not pdfs:
  444. print(f"[corpus] no PDFs in {PDF_DIR}; keeping existing {OUT}."); return
  445. texts = [full_text(fp) for fp in pdfs]
  446. # examples/papers are positional indices into texts, so failures are dropped
  447. # from pdfs and texts together, before anything is counted.
  448. failed = [fp for fp, t in zip(pdfs, texts) if t is None]
  449. kept = [(fp, t) for fp, t in zip(pdfs, texts) if t is not None]
  450. if failed:
  451. say("[corpus] %d/%d PDFs yielded no text (first: %s)"
  452. % (len(failed), len(pdfs), os.path.basename(failed[0])))
  453. if len(kept) < 0.8 * len(pdfs):
  454. say("[corpus] ABORT: only %d/%d PDFs yielded text -- is pdftotext on PATH? "
  455. "Keeping existing %s." % (len(kept), len(pdfs), OUT))
  456. return 1
  457. pdfs = [fp for fp, _ in kept]
  458. texts = [t for _, t in kept]
  459. cloud = collections.Counter() # document frequency over the curated concept gazetteer
  460. for t in texts:
  461. for term, pat in CLOUD_TERMS.items():
  462. if re.search(pat, t):
  463. cloud[term] += 1
  464. behav_rows, n_behav_studies, behav_ex = behaviours_automated(texts)
  465. beh, beh_ex = df_counts(texts, BEHAVIORS)
  466. reg, reg_ex = df_counts(texts, REGIONS)
  467. met, met_ex = df_counts(texts, METHODS)
  468. dis, dis_ex = df_counts(texts, DISEASES)
  469. data = {
  470. "generated": date.today().strftime("%B %d, %Y"),
  471. "n_pdfs": len(pdfs),
  472. "behaviours_automated": behav_rows,
  473. "n_behaviour_studies": n_behav_studies,
  474. "behaviors": beh,
  475. "regions": reg,
  476. "methods": met,
  477. "diseases": dis,
  478. # Normalised paper openings, and which papers back each label. The renderer
  479. # resolves these to curated titles via the sheet; kept out of the label rows
  480. # so their shape stays [label, count(, family)].
  481. "papers": [paper_head(t) for t in texts],
  482. "examples": {"behaviours_automated": behav_ex, "behaviors": beh_ex,
  483. "regions": reg_ex, "methods": met_ex, "diseases": dis_ex},
  484. "wordcloud": [[term, n] for term, n in cloud.most_common(200) if n >= 5],
  485. }
  486. os.makedirs(os.path.dirname(OUT), exist_ok=True)
  487. with open(OUT, "w", encoding="utf-8") as f:
  488. json.dump(data, f, indent=1)
  489. print(f"[corpus] wrote {OUT}: {len(pdfs)} PDFs | "
  490. f"behaviours automated {len(behav_rows)} labels over {n_behav_studies} studies | "
  491. f"behaviors {len(data['behaviors'])} | regions {len(data['regions'])} | "
  492. f"methods {len(data['methods'])} | diseases {len(data['diseases'])} | "
  493. f"cloud {len(data['wordcloud'])} words")
  494. if __name__ == "__main__":
  495. sys.exit(main() or 0)

extract_corpus_stats.py at commit 8172109, under BSD-3-Clause · at the source

Overview

Authors: Serena Gasperoni1, Xiuqi Ji1, Choham Sudre-Chinsky1, Eduardo Cáceres Pajuelo1, Fatemeh Sadat Zolfaghari1, Otto Boldemann1, Manar Manla Hasan1, Tommaso Biagini2, Daniil Umanski2, Yair Shemesh2, Aron Kos3, Paula Fontanet1, Alon Chen2, Juan Pablo Lopez1
  1. Department of Neuroscience, Karolinska Institutet, 17165 Stockholm, Sweden
  2. Department of Molecular Neuroscience, Weizmann Institute of Science, Rehovot 7610001, Israel
  3. Department of Stress Neurobiology and Neurogenetics, Max Planck Institute of Psychiatry, Munich, Germany
Journal: iScience, volume 29, issue 8, article 116825
Dates: received 11 March 2026; accepted 30 June 2026; published online 21 July 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1016/j.isci.2026.116825 · PMID 42495548 · PMCID PMC13392862 · OpenAlex W7169880127
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: genetics / omics (modality), mouse (organism), depression (population), systems (subfield)
Methods: Statistics, Smoothing, state filtering, decompositions
Keywords: chronic social defeat stress, social hierarchy, ketamine, antidepressant response, automated behavioral profiling, social box, medial prefrontal cortex, mPFC, ventral hippocampus, vHipp, RNA sequencing
Topic: Treatment of Major Depression (Pharmacology, Medicine), according to OpenAlex
Funding: European Research Council (101116064); Hjärnfonden; Swedish Society for Medical Research
Citations: not cited yet (Europe PMC); 45 references in the paper
Research resources: CORT double antibody 125I RIA kit RRID:AB_2783720

Abstract

Chronic stress is a major risk factor for psychiatric disorders, yet the mechanisms underlying individual differences in vulnerability and treatment response remain poorly understood. Using the Social Box, a seminatural environment, we performed high-resolution, continuous tracking of group-housed male mice during 11 days, capturing behavior during both active and inactive phases. We found that social hierarchy within a group strongly shapes stress outcomes, with dominant individuals exhibiting amplified behavioral alterations following chronic stress, including rest fragmentation and disrupted social interactions. A single ketamine administration mitigated these effects, restoring baseline behavioral signatures in dominant individuals. Bulk mRNA sequencing was performed in the medial prefrontal cortex and ventral hippocampus. This revealed a hierarchy-dependent transcriptional response with 141 differentially expressed genes in the medial prefrontal cortex of dominant, ketamine-treated mice. Overall, this study provides a framework for examining stress and pharmacological interventions in group-housed mice, enabling high-resolution, longitudinal analyses under semi-naturalistic conditions.

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 4 matches between paragraphs and lines of code.

LopezLab-KI/Behavioral_analysis_SB

License: none: the authors keep all their rights
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 71eb8738569a1e000817402e97d988fe93a3a9e2, 23 June 2026
Languages: Python (12), Jupyter (7)
Size: 22 files, 19 scripts
Software Heritage: not archived
Found in: “Code”
Holds: README, 7 notebooks
Not found: license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: pandas (18 files), NumPy (12 files), SciPy (7 files), OpenCV (4 files), Matplotlib (1 file), Plotly (1 file), seaborn (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
20 files

sgoldenlab/simba

License: BSD-3-Clause
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 8172109593bec4bcd6aa084286abdcc3ae39828e, 26 September 2026
Languages: Python (920), Jupyter (43), JavaScript (5)
Size: 4,936 files, 968 scripts
Software Heritage: archived
Found in: the resources table
Holds: README, license file, CITATION.cff, environment (docs/environment.yml, docs/requirements.txt), continuous integration, documentation, 42 notebooks
Not found: tests
Tools: NumPy (234 files), pandas (208 files), OpenCV (99 files), Numba (66 files), Pillow (26 files), SciPy (26 files), Matplotlib (21 files), scikit-learn (14 files), PyTorch (11 files), h5py (8 files), statsmodels (7 files), CuPy (5 files), Plotly (5 files), seaborn (5 files), NetworkX (3 files), SHAP (2 files), imbalanced-learn (1 file), Pingouin (1 file), scikit-image (1 file), UMAP (1 file), XGBoost (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
410 files

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:

  • 2 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 427 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

Data and code availability

Data: Bulk RNA-seq data have been deposited at Gene Expression Omnibus (GEO) as “GEO: GSE325386 (https://ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE325386)” and are publicly available as of the date of publication.

All data reported in this paper will be shared by the lead contact upon request.

Code: All original code has been deposited at GitHub and is publicly available at https://github.com/LopezLab-KI/Behavioral_analysis_SB as of the date of publication.

Additional information: Any additional information required to reanalyze the data reported in this paper is available from the lead contact upon request.

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 2, 28 September 2026

  • Authors: added Juan Pablo Lopez (0000-0002-5812-4220); removed Juan Pablo Lopez

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 14 authors, 11 keywords, 3 funders, 43 references, 1 RRID.

Cite

This paper

Gasperoni, S., Ji, X., Sudre-Chinsky, C., Cáceres Pajuelo, E., Zolfaghari, F. S., Boldemann, O., Manla Hasan, M., Biagini, T., Umanski, D., Shemesh, Y., Kos, A., Fontanet, P., Chen, A., & Lopez, J. P. (2026). Social hierarchy shapes behavioral and transcriptional responses to chronic stress and ketamine in male mice. iScience, 29(8), 116825. https://doi.org/10.1016/j.isci.2026.116825

BibTeX

@article{gasperoni2026social,
author = {Gasperoni, Serena and Ji, Xiuqi and Sudre-Chinsky, Choham and Cáceres Pajuelo, Eduardo and Zolfaghari, Fatemeh Sadat and Boldemann, Otto and Manla Hasan, Manar and Biagini, Tommaso and Umanski, Daniil and Shemesh, Yair and Kos, Aron and Fontanet, Paula and Chen, Alon and Lopez, Juan Pablo},
title = {{Social hierarchy shapes behavioral and transcriptional responses to chronic stress and ketamine in male mice}},
journal = {iScience},
year = {2026},
month = jul,
volume = {29},
number = {8},
pages = {116825},
publisher = {Elsevier},
issn = {2589-0042},
doi = {10.1016/j.isci.2026.116825},
url = {https://doi.org/10.1016/j.isci.2026.116825},
pmid = {42495548},
pmcid = {PMC13392862}
}

RIS

TY - JOUR
AU - Gasperoni, Serena
AU - Ji, Xiuqi
AU - Sudre-Chinsky, Choham
AU - Cáceres Pajuelo, Eduardo
AU - Zolfaghari, Fatemeh Sadat
AU - Boldemann, Otto
AU - Manla Hasan, Manar
AU - Biagini, Tommaso
AU - Umanski, Daniil
AU - Shemesh, Yair
AU - Kos, Aron
AU - Fontanet, Paula
AU - Chen, Alon
AU - Lopez, Juan Pablo
TI - Social hierarchy shapes behavioral and transcriptional responses to chronic stress and ketamine in male mice
T2 - iScience
J2 - iScience
PY - 2026
DA - 2026/07/21
VL - 29
IS - 8
SP - 116825
SN - 2589-0042
PB - Elsevier
DO - 10.1016/j.isci.2026.116825
UR - https://doi.org/10.1016/j.isci.2026.116825
LA - en
ER -

CSL-JSON

{
"id": "10.1016/j.isci.2026.116825",
"type": "article-journal",
"title": "Social hierarchy shapes behavioral and transcriptional responses to chronic stress and ketamine in male mice",
"container-title": "iScience",
"author": [
{
"family": "Gasperoni",
"given": "Serena"
},
{
"family": "Ji",
"given": "Xiuqi"
},
{
"family": "Sudre-Chinsky",
"given": "Choham"
},
{
"family": "Cáceres Pajuelo",
"given": "Eduardo"
},
{
"family": "Zolfaghari",
"given": "Fatemeh Sadat"
},
{
"family": "Boldemann",
"given": "Otto"
},
{
"family": "Manla Hasan",
"given": "Manar"
},
{
"family": "Biagini",
"given": "Tommaso"
},
{
"family": "Umanski",
"given": "Daniil"
},
{
"family": "Shemesh",
"given": "Yair"
},
{
"family": "Kos",
"given": "Aron"
},
{
"family": "Fontanet",
"given": "Paula"
},
{
"family": "Chen",
"given": "Alon"
},
{
"family": "Lopez",
"given": "Juan Pablo"
}
],
"container-title-short": "iScience",
"volume": "29",
"issue": "8",
"page": "116825",
"DOI": "10.1016/j.isci.2026.116825",
"PMID": "42495548",
"PMCID": "PMC13392862",
"ISSN": "2589-0042",
"publisher": "Elsevier",
"URL": "https://doi.org/10.1016/j.isci.2026.116825",
"language": "en",
"issued": {
"date-parts": [
[
2026,
7,
21
]
]
}
}

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/s42003-026-10957-8 [code]
Brain defence by the extracellular matrix protein Cochlin.
Journal: Communications biology
In common: imbalanced-learn, CuPy, SHAP, 16 other tools, mouse
[2] doi:10.1002/advs.76040
Pharmacological Inhibition of FKBP51 Mitigates Early Life Adversity-Induced Social Deficits in Male Mice.
Journal: Advanced science (Weinheim, Baden-Wurttemberg, Germany)
In common: genetics / omics, mouse, 7 references, 2 authors
[3] doi:10.1038/s41593-026-02232-0 [code]
Entorhinal cortex represents task-relevant remote locations independently of CA1.
Journal: Nature neuroscience
In common: Pingouin, Numba, NetworkX, 12 other tools, systems, mouse, 2 references
[4] doi:10.7554/elife.110588 [code]
Opening the black box toward a modular approach to spike sorting.
Journal: eLife
In common: imbalanced-learn, XGBoost, UMAP, 12 other tools, mouse
[5] doi:10.7554/elife.109717 [code]
Retrosplenial cortex enables context-dependent goal-directed sensorimotor transformation.
Journal: eLife
In common: SHAP, XGBoost, Numba, 11 other tools, systems, mouse, 1 reference
[6] doi:10.1126/sciadv.aed3650 [code]
Truthful visualizations for mass spectrometry imaging enable high-spatial-resolution interactive &lt;i&gt;m/z&lt;/i&gt; mapping and exploration.
Journal: Science advances
In common: SHAP, XGBoost, UMAP, 11 other tools, genetics / omics, mouse
[7] doi:10.1186/s13059-026-04125-8 [code]
MLMarker: a machine learning framework for tissue inference and biomarker discovery.
Journal: Genome biology
In common: imbalanced-learn, SHAP, XGBoost, 11 other tools, genetics / omics
[8] doi:10.1016/j.isci.2026.116055 [code]
Mapping the transcriptional diversity of calcium signaling in the mouse and human brain.
Journal: iScience
In common: CuPy, UMAP, Numba, 11 other tools, genetics / omics, mouse
[9] doi:10.1016/j.xcrm.2026.102766 [code]
A longitudinal single-cell and spatial multiomic atlas of pediatric high-grade glioma.
Journal: Cell reports. Medicine
In common: UMAP, Numba, NetworkX, 11 other tools, genetics / omics, 1 reference
[10] doi:10.3389/fnsys.2026.1822122 [code]
Convergence-divergence circuits for multimodal integration of innate and learned opponent valences.
Journal: Frontiers in systems neuroscience
In common: UMAP, Numba, NetworkX, 11 other tools, systems

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.

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.