OSCR

Identification of a Small-Molecule Modulator of Astrocyte Reactivity for Optic Nerve Protection.

Code ↔ Paper

2 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 2 matches
  1. [1] § Methods › Bulk RNA-Seq Sample Preparation and Analysis ↔ src/python/src/dropseq/eqtl/normalize_tensorqtl_expression.py, lines 80–143 · score 0.59 · edgeR, fold change, libraries
  2. [2] § Methods › Bulk RNA-Seq Sample Preparation and Analysis ↔ gffcompare.cpp, lines 1790–1922 · score 0.54 · mRNAs, FPKM, polymerase, gffcompare, exon, strand

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 · 272 lines · 10 KB · MIT · 1 match

  1. #!/usr/bin/env python3
  2. # MIT License
  3. #
  4. # Copyright 2022 Broad Institute
  5. #
  6. # Permission is hereby granted, free of charge, to any person obtaining a copy
  7. # of this software and associated documentation files (the "Software"), to deal
  8. # in the Software without restriction, including without limitation the rights
  9. # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10. # copies of the Software, and to permit persons to whom the Software is
  11. # furnished to do so, subject to the following conditions:
  12. #
  13. # The above copyright notice and this permission notice shall be included in all
  14. # copies or substantial portions of the Software.
  15. #
  16. # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  17. # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  18. # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  19. # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  20. # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  21. # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
  22. # SOFTWARE.
  23. """
  24. Normalize tensorQTL expression per gene with edgeR CPM then per donor with an inverse normal transformation.
  25. """
  26. # Based on a combination of:
  27. # - https://github.com/broadinstitute/pyqtl/blob/v0.1.8/qtl/norm.py
  28. # - https://github.com/broadinstitute/eqtl_pipeline_terra/blob/cc7eca7/dockerfiles/preprocess/src/python/normalize.py
  29. #
  30. # Changes:
  31. # - Use math.log(dbl, 2) instead of numpy.log2(dbl) so that singularity outputs match non-singularity outputs
  32. # - Input is also in tensorQTL's phenotypes BED format
  33. import argparse
  34. import math
  35. import sys
  36. import warnings
  37. from typing import Optional, List
  38. import numpy as np
  39. import pandas as pd
  40. import scipy.stats as stats
  41. def consistent_log2(dbl):
  42. """
  43. Use the slower and possibly loss of precision math.log(dbl, 2) instead of np.log2 unless math.log cannot process the
  44. value.
  45. This handles cases where on some machines these functions may produce different outputs for certain values of dbl:
  46. - np.log2(dbl)
  47. - math.log2(dbl)
  48. - math.log(dbl, 2)
  49. One example input: dbl = 5.96392877939081911
  50. Depending on the environment, print(f'{log2(d):.20f}') is either 2.57626302921203498286 or 2.57626302921203542695
  51. for functions np.log2 and math.log2.
  52. np.log2 and math.log2 may produce different results even on the same host. When running on uger nodes,
  53. sv01, in docker on one's x86 macbook, or a GCE instance they may produce different outputs on the same host
  54. depending on if they are executed inside or outside a docker/singularity container.
  55. Meanwhile, math.log(dbl, 2) is consistent as far as I can tell. For the above example, it always produces
  56. 2.57626302921203542695 on all hosts / environments, so far.
  57. May or may not have something to do with issues discussed in these links:
  58. - https://stackoverflow.com/questions/17702065/python-numpy-log2-vs-matlab#answer-17702094
  59. - https://github.com/numpy/numpy/issues/4787
  60. - https://github.com/numpy/numpy/issues/13836
  61. - https://github.com/python/cpython/issues/47974
  62. """
  63. try:
  64. return math.log(dbl, 2)
  65. except ValueError:
  66. return np.log2(dbl)
  67. # Modified from https://github.com/broadinstitute/pyqtl/blob/v0.1.8/qtl/norm.py#L104-L165
  68. # noinspection PyPep8Naming
  69. def edger_calcnormfactors(counts_df, ref=None, logratio_trim=0.3,
  70. sum_trim=0.05, acutoff=-1e10, verbose=False):
  71. """
  72. Calculate TMM (Trimmed Mean of M values) normalization.
  73. Reproduces edgeR::calcNormFactors.default
  74. Scaling factors for the library sizes that minimize
  75. the log-fold changes between the samples for most genes.
  76. Effective library size: TMM scaling factor * library size
  77. References:
  78. [1] Robinson & Oshlack, 2010
  79. [2] R functions:
  80. edgeR::calcNormFactors.default
  81. edgeR:::.calcFactorWeighted
  82. edgeR:::.calcFactorQuantile
  83. """
  84. # discard genes with all-zero counts
  85. Y = counts_df.values.copy()
  86. allzero = np.sum(Y > 0, axis=1) == 0
  87. if np.any(allzero):
  88. Y = Y[~allzero, :]
  89. # select reference sample
  90. if ref is None: # reference sample index
  91. f75 = np.percentile(Y/np.sum(Y, axis=0), 75, axis=0)
  92. ref = np.argmin(np.abs(f75-np.mean(f75)))
  93. if verbose:
  94. print('Reference sample index: '+str(ref))
  95. N = np.sum(Y, axis=0) # total reads in each library
  96. # (Mostly) use a vectorized math.log2 instead of np.log2
  97. vec_consistent_log2 = np.vectorize(consistent_log2)
  98. # with np.errstate(divide='ignore'):
  99. with warnings.catch_warnings():
  100. warnings.simplefilter('ignore')
  101. # log fold change; Mg in [1]
  102. logR = vec_consistent_log2((Y/N).T / (Y[:, ref]/N[ref])).T
  103. # average log relative expression; Ag in [1]
  104. absE = 0.5*(vec_consistent_log2(Y/N).T + vec_consistent_log2(Y[:, ref]/N[ref])).T
  105. v = (N-Y)/N/Y
  106. v = (v.T + v[:, ref]).T # w in [1]
  107. ns = Y.shape[1]
  108. tmm = np.zeros(ns)
  109. for i in range(ns):
  110. fin = np.isfinite(logR[:, i]) & np.isfinite(absE[:, i]) & (absE[:, i] > acutoff)
  111. n = np.sum(fin)
  112. loL = np.floor(n*logratio_trim)+1
  113. hiL = n + 1 - loL
  114. loS = np.floor(n*sum_trim)+1
  115. hiS = n + 1 - loS
  116. rankR = stats.rankdata(logR[fin, i])
  117. rankE = stats.rankdata(absE[fin, i])
  118. keep = (rankR >= loL) & (rankR <= hiL) & (rankE >= loS) & (rankE <= hiS)
  119. # in [1], w erroneously defined as 1/v ?
  120. tmm[i] = 2**(np.nansum(logR[fin, i][keep]/v[fin, i][keep]) / np.nansum(1/v[fin, i][keep]))
  121. tmm = tmm / np.exp(np.mean(np.log(tmm)))
  122. return tmm
  123. # Modified from https://github.com/broadinstitute/pyqtl/blob/v0.1.8/qtl/norm.py#L186-L197
  124. def edger_cpm(counts_df, tmm=None, normalized_lib_sizes=True):
  125. """
  126. Return edgeR normalized/rescaled CPM (counts per million)
  127. Reproduces edgeR::cpm.DGEList
  128. """
  129. lib_size = counts_df.sum(axis=0)
  130. if normalized_lib_sizes:
  131. if tmm is None:
  132. tmm = edger_calcnormfactors(counts_df)
  133. lib_size = lib_size * tmm
  134. return counts_df / lib_size * 1e6
  135. # Copied from https://github.com/broadinstitute/pyqtl/blob/v0.1.8/qtl/norm.py#L57-L67
  136. # noinspection PyPep8Naming
  137. def inverse_normal_transform(M):
  138. """Transform rows to a standard normal distribution"""
  139. if isinstance(M, pd.Series):
  140. r = stats.mstats.rankdata(M)
  141. return pd.Series(stats.norm.ppf(r/(M.shape[0]+1)), index=M.index, name=M.name)
  142. else:
  143. R = stats.mstats.rankdata(M, axis=1) # ties are averaged
  144. Q = stats.norm.ppf(R/(M.shape[1]+1))
  145. if isinstance(M, pd.DataFrame):
  146. Q = pd.DataFrame(Q, index=M.index, columns=M.columns)
  147. return Q
  148. # Modified from
  149. # https://github.com/broadinstitute/eqtl_pipeline_terra/blob/cc7eca7/dockerfiles/preprocess/src/python/normalize.py
  150. def main(args: Optional[List[str]] = None) -> int:
  151. parser = argparse.ArgumentParser(
  152. description=__doc__,
  153. formatter_class=argparse.RawTextHelpFormatter,
  154. )
  155. parser.add_argument(
  156. dest='phenotype_bed',
  157. nargs='?',
  158. help='Phenotypes in BED format. '
  159. 'Deprecated: use --input instead. '
  160. 'For more information see https://github.com/broadinstitute/tensorqtl/tree/v1.0.7#input-formats',
  161. )
  162. parser.add_argument(
  163. dest='output_prefix',
  164. nargs='?',
  165. help='Prefix for output files. '
  166. 'Deprecated: use --tpm/--int instead.'
  167. )
  168. parser.add_argument(
  169. '-i',
  170. '--input',
  171. required=False,
  172. help='Input phenotypes in BED format. '
  173. 'For more information see https://github.com/broadinstitute/tensorqtl/tree/v1.0.7#input-formats',
  174. )
  175. parser.add_argument(
  176. '-t',
  177. '--tpm',
  178. required=False,
  179. help='edgeR (TPM) normalized output in BED format.',
  180. )
  181. parser.add_argument(
  182. '-n',
  183. '--int',
  184. required=False,
  185. help='Inverse Normal Transformation (INT) normalized output in BED format.',
  186. )
  187. options = parser.parse_args(args)
  188. args_error = 'Both phenotype_bed and output_prefix are required, or --input and --tpm/--int.'
  189. # Check for new and old input args
  190. if not (bool(options.phenotype_bed) ^ bool(options.input)):
  191. parser.error(args_error)
  192. # Check for new and old output args
  193. if not (bool(options.output_prefix) ^ (bool(options.tpm) or bool(options.int))):
  194. parser.error(args_error)
  195. # Check for only one of phenotype_bed or output_prefix
  196. if bool(options.phenotype_bed) ^ bool(options.output_prefix):
  197. parser.error(args_error)
  198. elif bool(options.phenotype_bed) and bool(options.output_prefix):
  199. warnings.warn('The arguments phenotype_bed and output_prefix are deprecated.')
  200. options.input = options.phenotype_bed
  201. options.tpm = f'{options.output_prefix}.TPM_expression.bed'
  202. options.int = f'{options.output_prefix}.normalized_expression.bed'
  203. if not bool(options.tpm) and not bool(options.int):
  204. parser.error(args_error)
  205. # read in genes x donors count matrix
  206. phenotype_df = pd.read_csv(options.input, sep='\t', index_col=None)
  207. phenotype_mapping = {
  208. phenotype_df.columns[0]: '#chr',
  209. phenotype_df.columns[1]: 'start',
  210. phenotype_df.columns[2]: 'end',
  211. phenotype_df.columns[3]: 'pid',
  212. }
  213. phenotype_df = phenotype_df.rename(columns=phenotype_mapping)
  214. # sort [chr1, chr10,..chr2, chr20,.., chr3,..chr9]
  215. phenotype_df = phenotype_df.sort_values(['#chr', 'start']).set_index('pid', drop=False)
  216. # edgeR CPM normalization
  217. cpm_df = edger_cpm(phenotype_df.iloc[:, 4:])
  218. if options.tpm:
  219. out_df = phenotype_df.iloc[:, :4].join(cpm_df)
  220. out_df = out_df.sort_values(['#chr', 'start'])
  221. out_df.to_csv(options.tpm, sep='\t', index=False)
  222. # inverse normal transform
  223. if options.int:
  224. int_df = inverse_normal_transform(cpm_df)
  225. out_df = phenotype_df.iloc[:, :4].join(int_df)
  226. out_df = out_df.sort_values(['#chr', 'start'])
  227. out_df.to_csv(options.int, sep='\t', index=False)
  228. return 0
  229. if __name__ == '__main__':
  230. sys.exit(main())

normalize_tensorqtl_expression.py at commit d14776a, under MIT · at the source

Overview

Authors: Ting Li1,2,3, Haotian Peng1,2,3, Nanxin Wu1,2,3, Miyao Zhu1,2,3, Ziwei Li1,2,3, Qin Dai1,2,3, Ming Jin1,2,3, Shaohui Pan1,2,3, Wencan Wu1,2,3,4
  1. Eye Research Center, Hangzhou Institute of Medicine, Chinese Academy of Sciences, Eye Hospital, Wenzhou Medical University, Hangzhou, People's Republic of China
  2. Zhejiang Key Laboratory of Key Technologies for Visual Pathway Reconstruction, Eye Hospital, Wenzhou Medical University, Wenzhou, Zhejiang, People's Republic of China
  3. State Key Laboratory of Eye Health, Eye Hospital, Wenzhou Medical University, Wenzhou, People's Republic of China
  4. Oujiang Laboratory (Zhejiang Lab for Regenerative Medicine, Vision, and Brain Health), Eye Hospital, Wenzhou Medical University, Wenzhou, People's Republic of China
Journal: Investigative ophthalmology & visual science, volume 67, issue 5, article 73
Dates: received 22 October 2025; accepted 20 April 2026; published online 29 May 2026; in print May 2026
Type: Research article · Language: English
License: CC BY-NC-ND
Identifiers: DOI 10.1167/iovs.67.5.73 · PMID 42212882 · PMCID PMC13225300 · OpenAlex W7162809472
Open access: gold, a free copy (OpenAlex)
Status: code verified
Categories: genetics / omics (modality), human (organism), mouse (organism), cellular / molecular (subfield)
Methods: Statistics, Smoothing, state filtering, decompositions, Machine learning
Keywords: astrocytes, small-molecule compounds, optic nerve injury, neuroprotection
MeSH: Astrocytes*, Lactones*, Optic Nerve Injuries*, Pyrroles*, Animals, Animals, Newborn, Blood-Brain Barrier, Cell Survival, Disease Models, Animal, Gene Expression Regulation, Mice, Mice, Inbred C57BL, Nerve Crush, Optic Nerve, Primary Cell Culture, Proteasome Inhibitors, Retinal Ganglion Cells (* major topic)
Journal subjects: Retinal Cell Biology
Topic: Neuroscience and Neuropharmacology Research (Cellular and Molecular Neuroscience, Neuroscience), according to OpenAlex
Citations: not cited yet (Europe PMC); 33 references in the paper

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.

gpertea/gffcompare

License: MIT
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 29512d2a354442e92aa5503a549a8ad28ac246a2, 13 March 2026
Languages: C/C++ (12), C++ (11), Shell (5), Perl (2)
Size: 61 files, 30 scripts
Software Heritage: archived
Found in: the text, “Bulk RNA-Seq Sample Preparation and Analysis”
Holds: README, license file
Not found: CITATION.cff, environment file, tests, continuous integration, documentation
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
32 files

broadinstitute/Drop-seq

License: MIT
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: d14776a599bbc401ef2d6ce5c6f96b23d0424cdf, 17 September 2026
Languages: Java (626), Python (58), R (19), Shell (14), Jupyter (1)
Size: 1,409 files, 718 scripts
Software Heritage: archived
Found in: the text, “Cell Sample Preparation and DRUG-Seq2”
Holds: README, license file, environment (src/python/pyproject.toml, src/docker/java/Dockerfile, src/docker/PEER/Dockerfile, src/docker/python/Dockerfile, src/docker/R/Dockerfile, src/R/packages/DropSeq.dropulation/DESCRIPTION, src/R/packages/DropSeq.eqtl.susie/DESCRIPTION, src/R/packages/DropSeq.eqtl/DESCRIPTION, src/R/packages/DropSeq.utilities/DESCRIPTION), tests, continuous integration, documentation, 1 notebook
Not found: CITATION.cff
Tools: pandas (25 files), anndata (11 files), data.table (8 files), NumPy (8 files), SciPy (8 files), Scanpy (5 files), ggplot2 (3 files), Matplotlib (2 files), cowplot (1 file), scikit-learn (1 file), tidyverse (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
720 files

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;
  • 748 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.

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, 9 authors, 4 keywords, 17 MeSH terms, 33 references.

Cite

This paper

Li, T., Peng, H., Wu, N., Zhu, M., Li, Z., Dai, Q., Jin, M., Pan, S., & Wu, W. (2026). Identification of a Small-Molecule Modulator of Astrocyte Reactivity for Optic Nerve Protection. Investigative ophthalmology & visual science, 67(5), 73. https://doi.org/10.1167/iovs.67.5.73

BibTeX

@article{li2026identification,
author = {Li, Ting and Peng, Haotian and Wu, Nanxin and Zhu, Miyao and Li, Ziwei and Dai, Qin and Jin, Ming and Pan, Shaohui and Wu, Wencan},
title = {{Identification of a Small-Molecule Modulator of Astrocyte Reactivity for Optic Nerve Protection}},
journal = {Investigative ophthalmology \& visual science},
year = {2026},
month = may,
volume = {67},
number = {5},
pages = {73},
publisher = {Association for Research in Vision and Ophthalmology},
issn = {0146-0404},
doi = {10.1167/iovs.67.5.73},
url = {https://doi.org/10.1167/iovs.67.5.73},
pmid = {42212882},
pmcid = {PMC13225300}
}

RIS

TY - JOUR
AU - Li, Ting
AU - Peng, Haotian
AU - Wu, Nanxin
AU - Zhu, Miyao
AU - Li, Ziwei
AU - Dai, Qin
AU - Jin, Ming
AU - Pan, Shaohui
AU - Wu, Wencan
TI - Identification of a Small-Molecule Modulator of Astrocyte Reactivity for Optic Nerve Protection
T2 - Investigative ophthalmology & visual science
J2 - Invest Ophthalmol Vis Sci
PY - 2026
DA - 2026/05/01
VL - 67
IS - 5
SP - 73
SN - 0146-0404
PB - Association for Research in Vision and Ophthalmology
DO - 10.1167/iovs.67.5.73
UR - https://doi.org/10.1167/iovs.67.5.73
LA - en
ER -

CSL-JSON

{
"id": "10.1167/iovs.67.5.73",
"type": "article-journal",
"title": "Identification of a Small-Molecule Modulator of Astrocyte Reactivity for Optic Nerve Protection",
"container-title": "Investigative ophthalmology & visual science",
"author": [
{
"family": "Li",
"given": "Ting"
},
{
"family": "Peng",
"given": "Haotian"
},
{
"family": "Wu",
"given": "Nanxin"
},
{
"family": "Zhu",
"given": "Miyao"
},
{
"family": "Li",
"given": "Ziwei"
},
{
"family": "Dai",
"given": "Qin"
},
{
"family": "Jin",
"given": "Ming"
},
{
"family": "Pan",
"given": "Shaohui"
},
{
"family": "Wu",
"given": "Wencan"
}
],
"container-title-short": "Invest Ophthalmol Vis Sci",
"volume": "67",
"issue": "5",
"page": "73",
"DOI": "10.1167/iovs.67.5.73",
"PMID": "42212882",
"PMCID": "PMC13225300",
"ISSN": "0146-0404",
"publisher": "Association for Research in Vision and Ophthalmology",
"URL": "https://doi.org/10.1167/iovs.67.5.73",
"language": "en",
"issued": {
"date-parts": [
[
2026,
5,
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.1038/s41467-026-71525-6 [code]
Single-nucleus brain transcriptomics reveals microglia dysfunction in multiple system atrophy.
Journal: Nature communications
In common: anndata, Scanpy, cowplot, 6 other tools, genetics / omics, cellular / molecular, 2 references
[2] doi:10.1371/journal.pcbi.1014327 [code]
Supervised deep learning with gene functional annotation for cell classification.
Journal: PLoS computational biology
In common: anndata, Scanpy, cowplot, 8 other tools, genetics / omics, cellular / molecular, 1 reference
[3] doi:10.1038/s41514-026-00391-9 [code]
Region-specific transcriptional signatures of brain aging in the absence of neuropathology at the single-cell level.
Journal: npj aging
In common: anndata, Scanpy, cowplot, 8 other tools, genetics / omics, cellular / molecular, 1 reference
[4] doi:10.1016/j.cell.2026.05.047 [code]
An emergent disease-associated motor neuron state precedes cell death in ALS.
Journal: Cell
In common: anndata, Scanpy, cowplot, 6 other tools, genetics / omics, mouse, cellular / molecular, 2 references
[5] doi:10.1186/s13073-026-01704-z [code]
Gene expression profiling enables refined parcellation of cortical layers in the heterogeneous human cerebral cortex.
Journal: Genome medicine
In common: anndata, Scanpy, cowplot, 8 other tools, genetics / omics, mouse, cellular / molecular
[6] doi:10.1002/imt2.70163 [code]
Spatial multi-omics unveils sphingolipid metabolic reprogramming within the retinal pathological niche.
Journal: iMeta
In common: anndata, Scanpy, cowplot, 8 other tools, genetics / omics, mouse, cellular / molecular
[7] doi:10.3389/fnmol.2026.1844705 [code]
Risperidone regulates the expression of schizophrenia-related genes in the forebrain of adult male mice.
Journal: Frontiers in molecular neuroscience
In common: anndata, Scanpy, cowplot, 8 other tools, genetics / omics, mouse, cellular / molecular
[8] doi:10.1126/sciadv.aeg3223 [code]
The extreme diversity of retinal amacrine cells has deep evolutionary roots.
Journal: Science advances
In common: anndata, Scanpy, cowplot, 8 other tools, genetics / omics, cellular / molecular
[9] doi:10.1038/s41593-026-02300-5 [code]
Integrated single-cell and spatial transcriptomic profiling in ALS uncovers peripheral-to-central immune infiltration and reprogramming.
Journal: Nature neuroscience
In common: anndata, Scanpy, cowplot, 8 other tools, genetics / omics, cellular / molecular
[10] doi:10.1038/s44318-026-00818-9 [code]
FAM134B-mediated ER-phagy degrades APP and suppresses Alzheimer's disease pathology.
Journal: The EMBO journal
In common: anndata, Scanpy, cowplot, 8 other tools, mouse, cellular / molecular

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.