Niacin promotes motor function recovery after spinal cord injury via Hcar2-dependent microglia immunometabolic regulation.
The 4 matches
- [1] § MATERIALS AND METHODS › Bioinformatic analysis of publicly available single‐cell RNA sequencing datasets ↔ vignettes/mixscape_vignette.Rmd, lines 78–133 · score 0.81 · uniform manifold approximation, principal component, dimensionality reduction, UMAP, biological, Gene expression
- [2] § MATERIALS AND METHODS › Bioinformatic analysis of publicly available single‐cell RNA sequencing datasets ↔ R/differential_expression.R, lines 455–538 · score 0.80 · Wilcoxon rank sum, DESeq2, scRNA, Linear, single cell, predicted
- [3] § MATERIALS AND METHODS › Statistical analysis ↔ R/preprocessing.R, lines 4370–4415 · score 0.56 · statistical power, standard deviation, variance, score
- [4] § MATERIALS AND METHODS › Bulk RNA sequencing and analysis ↔ R/generics.R, lines 109–170 · score 0.56 · DESeq2, quality controlled, genome, Gene expression, transcripts, RNA
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
R Markdown · 375 lines · 13 KB · other · 1 match
- ---
- title: "Mixscape Vignette"
- output:
- html_document:
- theme: united
- df_print: kable
- date: 'Compiled: `r format(Sys.Date(), "%B %d, %Y")`'
- ---
- ```{r setup, include=FALSE}
- all_times <- list() # store the time for each chunk
- knitr::knit_hooks$set(time_it = local({
- now <- NULL
- function(before, options) {
- if (before) {
- now <<- Sys.time()
- } else {
- res <- difftime(Sys.time(), now)
- all_times[[options$label]] <<- res
- }
- }
- }))
- knitr::opts_chunk$set(
- message = FALSE,
- warning = FALSE,
- time_it = TRUE,
- error = TRUE
- )
- options(SeuratData.repo.use = 'seurat.nygenome.org')
- ```
- # Overview
- This tutorial demonstrates how to use mixscape for the analyses of single-cell pooled CRISPR screens. We introduce new Seurat functions for:
- 1. Calculating the perturbation-specific signature of every cell.
- 2. Identifying and removing cells that have 'escaped' CRISPR perturbation.
- 3. Visualizing similarities/differences across different perturbations.
- # Loading required packages
- ```{r pkgs1}
- # Load packages.
- library(Seurat)
- library(SeuratData)
- library(ggplot2)
- library(patchwork)
- library(scales)
- library(dplyr)
- library(reshape2)
- # Download dataset using SeuratData.
- InstallData(ds = "thp1.eccite")
- # Setup custom theme for plotting.
- custom_theme <- theme(
- plot.title = element_text(size=16, hjust = 0.5),
- legend.key.size = unit(0.7, "cm"),
- legend.text = element_text(size = 14))
- ```
- # Loading Seurat object containing ECCITE-seq dataset
- We use a 111 gRNA ECCITE-seq dataset generated from stimulated THP-1 cells that was recently published from our lab in bioRxiv [Papalexi et al. 2020](https://www.biorxiv.org/content/10.1101/2020.06.28.175596v1). This dataset can be easily downloaded from the [SeuratData](https://github.com/satijalab/seurat-data) package.
- ```{r eccite.load}
- # Load object.
- eccite <- LoadData(ds = "thp1.eccite")
- # Normalize protein.
- eccite <- NormalizeData(
- object = eccite,
- assay = "ADT",
- normalization.method = "CLR",
- margin = 2)
- ```
- # RNA-based clustering is driven by confounding sources of variation
- Here, we follow the standard Seurat workflow to cluster cells based on their gene expression profiles. We expected to obtain perturbation-specific clusters however we saw that clustering is primarily driven by cell cycle phase and replicate ID. We only observed one perturbation-specific cluster containing cells expression IFNgamma pathway gRNAs.
- ```{r eccite.pp, fig.height = 10, fig.width = 15}
- # Prepare RNA assay for dimensionality reduction:
- # Normalize data, find variable features and scale data.
- DefaultAssay(object = eccite) <- 'RNA'
- eccite <- NormalizeData(object = eccite) %>% FindVariableFeatures() %>% ScaleData()
- # Run Principle Component Analysis (PCA) to reduce the dimensionality of the data.
- eccite <- RunPCA(object = eccite)
- # Run Uniform Manifold Approximation and Projection (UMAP) to visualize clustering in 2-D.
- eccite <- RunUMAP(object = eccite, dims = 1:40)
- # Generate plots to check if clustering is driven by biological replicate ID,
- # cell cycle phase or target gene class.
- p1 <- DimPlot(
- object = eccite,
- group.by = 'replicate',
- label = F,
- pt.size = 0.2,
- reduction = "umap", cols = "Dark2", repel = T) +
- scale_color_brewer(palette = "Dark2") +
- ggtitle("Biological Replicate") +
- xlab("UMAP 1") +
- ylab("UMAP 2") +
- custom_theme
- p2 <- DimPlot(
- object = eccite,
- group.by = 'Phase',
- label = F, pt.size = 0.2,
- reduction = "umap", repel = T) +
- ggtitle("Cell Cycle Phase") +
- ylab("UMAP 2") +
- xlab("UMAP 1") +
- custom_theme
- p3 <- DimPlot(
- object = eccite,
- group.by = 'crispr',
- pt.size = 0.2,
- reduction = "umap",
- split.by = "crispr",
- ncol = 1,
- cols = c("grey39","goldenrod3")) +
- ggtitle("Perturbation Status") +
- ylab("UMAP 2") +
- xlab("UMAP 1") +
- custom_theme
- # Visualize plots.
- ((p1 / p2 + plot_layout(guides = 'auto')) | p3 )
- ```
- # Calculating local perturbation signatures mitigates confounding effects
- To calculate local perturbation signatures we set the number of non-targeting Nearest Neighbors (NNs) equal to k=20 and we recommend that the user picks a k from the following range: 20 < k < 30. Intuitively, the user does not want to set k to a very small or large number as this will most likely not remove the technical variation from the dataset. Using the PRTB signature to cluster cells removes all technical variation and reveals one additional perturbation-specific cluster.
- ```{r eccite.cps, fig.height = 10, fig.width = 15}
- # Calculate perturbation signature (PRTB).
- eccite<- CalcPerturbSig(
- object = eccite,
- assay = "RNA",
- slot = "data",
- gd.class ="gene",
- nt.cell.class = "NT",
- reduction = "pca",
- ndims = 40,
- num.neighbors = 20,
- split.by = "replicate",
- new.assay.name = "PRTB")
- # Prepare PRTB assay for dimensionality reduction:
- # Normalize data, find variable features and center data.
- DefaultAssay(object = eccite) <- 'PRTB'
- # Use variable features from RNA assay.
- VariableFeatures(object = eccite) <- VariableFeatures(object = eccite[["RNA"]])
- eccite <- ScaleData(object = eccite, do.scale = F, do.center = T)
- # Run PCA to reduce the dimensionality of the data.
- eccite <- RunPCA(object = eccite, reduction.key = 'prtbpca', reduction.name = 'prtbpca')
- # Run UMAP to visualize clustering in 2-D.
- eccite <- RunUMAP(
- object = eccite,
- dims = 1:40,
- reduction = 'prtbpca',
- reduction.key = 'prtbumap',
- reduction.name = 'prtbumap')
- # Generate plots to check if clustering is driven by biological replicate ID,
- # cell cycle phase or target gene class.
- q1 <- DimPlot(
- object = eccite,
- group.by = 'replicate',
- reduction = 'prtbumap',
- pt.size = 0.2, cols = "Dark2", label = F, repel = T) +
- scale_color_brewer(palette = "Dark2") +
- ggtitle("Biological Replicate") +
- ylab("UMAP 2") +
- xlab("UMAP 1") +
- custom_theme
- q2 <- DimPlot(
- object = eccite,
- group.by = 'Phase',
- reduction = 'prtbumap',
- pt.size = 0.2, label = F, repel = T) +
- ggtitle("Cell Cycle Phase") +
- ylab("UMAP 2") +
- xlab("UMAP 1") +
- custom_theme
- q3 <- DimPlot(
- object = eccite,
- group.by = 'crispr',
- reduction = 'prtbumap',
- split.by = "crispr",
- ncol = 1,
- pt.size = 0.2,
- cols = c("grey39","goldenrod3")) +
- ggtitle("Perturbation Status") +
- ylab("UMAP 2") +
- xlab("UMAP 1") +
- custom_theme
- # Visualize plots.
- (q1 / q2 + plot_layout(guides = 'auto') | q3)
- ```
- # Mixscape identifies cells with no detectable perturbation
- Here, we are assuming each target gene class is a mixture of two Gaussian distributions one representing the knockout (KO) and the other the non-perturbed (NP) cells. We further assume that the distribution of the NP cells is identical to that of cells expressing non-targeting gRNAs (NT) and we try to estimate the distribution of KO cells using the function `normalmixEM()` from the mixtools package. Next, we calculate the posterior probability that a cell belongs to the KO distribution and classify cells with a probability higher than 0.5 as KOs. Applying this method we identify KOs in 11 target gene classes and detect variation in gRNA targeting efficiency within each class.
- ```{r eccite.mixscape, fig.height = 20, fig.width = 20, results="hide"}
- # Run mixscape.
- eccite <- RunMixscape(
- object = eccite,
- assay = "PRTB",
- slot = "scale.data",
- labels = "gene",
- nt.class.name = "NT",
- min.de.genes = 5,
- iter.num = 10,
- de.assay = "RNA",
- verbose = F,
- prtb.type = "KO")
- # Calculate percentage of KO cells for all target gene classes.
- df <- prop.table(table(eccite$mixscape_class.global, eccite$NT),2)
- df2 <- reshape2::melt(df)
- df2$Var2 <- as.character(df2$Var2)
- test <- df2[which(df2$Var1 == "KO"),]
- test <- test[order(test$value, decreasing = T),]
- new.levels <- test$Var2
- df2$Var2 <- factor(df2$Var2, levels = new.levels )
- df2$Var1 <- factor(df2$Var1, levels = c("NT", "NP", "KO"))
- df2$gene <- sapply(as.character(df2$Var2), function(x) strsplit(x, split = "g")[[1]][1])
- df2$guide_number <- sapply(as.character(df2$Var2),
- function(x) strsplit(x, split = "g")[[1]][2])
- df3 <- df2[-c(which(df2$gene == "NT")),]
- p1 <- ggplot(df3, aes(x = guide_number, y = value*100, fill= Var1)) +
- geom_bar(stat= "identity") +
- theme_classic()+
- scale_fill_manual(values = c("grey49", "grey79","coral1")) +
- ylab("% of cells") +
- xlab("sgRNA")
- p1 + theme(axis.text.x = element_text(size = 18, hjust = 1),
- axis.text.y = element_text(size = 18),
- axis.title = element_text(size = 16),
- strip.text = element_text(size=16, face = "bold")) +
- facet_wrap(vars(gene),ncol = 5, scales = "free") +
- labs(fill = "mixscape class") +theme(legend.title = element_text(size = 14),
- legend.text = element_text(size = 12))
- ```
- # Inspecting mixscape results
- To ensure mixscape is assigning the correct perturbation status to cells we can use the functions below to look at the perturbation score distributions and the posterior probabilities of cells within a target gene class (for example IFNGR2) and compare it to those of the NT cells. In addition, we can perform differential expression (DE) analyses and show that only IFNGR2 KO cells have reduced expression of the IFNG-pathway genes. Finally, as an independent check, we can look at the PD-L1 protein expression values in NP and KO cells for target genes known to be PD-L1 regulators.
- ```{r eccite.plots, fig.height = 10, fig.width = 15, results="hide"}
- # Explore the perturbation scores of cells.
- PlotPerturbScore(object = eccite,
- target.gene.ident = "IFNGR2",
- mixscape.class = "mixscape_class",
- col = "coral2") +labs(fill = "mixscape class")
- # Inspect the posterior probability values in NP and KO cells.
- VlnPlot(eccite, "mixscape_class_p_ko", idents = c("NT", "IFNGR2 KO", "IFNGR2 NP")) +
- theme(axis.text.x = element_text(angle = 0, hjust = 0.5),axis.text = element_text(size = 16) ,plot.title = element_text(size = 20)) +
- NoLegend() +
- ggtitle("mixscape posterior probabilities")
- # Run DE analysis and visualize results on a heatmap ordering cells by their posterior
- # probability values.
- Idents(object = eccite) <- "gene"
- MixscapeHeatmap(object = eccite,
- ident.1 = "NT",
- ident.2 = "IFNGR2",
- balanced = F,
- assay = "RNA",
- max.genes = 20, angle = 0,
- group.by = "mixscape_class",
- max.cells.group = 300,
- size=6.5) + NoLegend() +theme(axis.text.y = element_text(size = 16))
- # Show that only IFNG pathway KO cells have a reduction in PD-L1 protein expression.
- VlnPlot(
- object = eccite,
- features = "adt_PDL1",
- idents = c("NT","JAK2","STAT1","IFNGR1","IFNGR2", "IRF1"),
- group.by = "gene",
- pt.size = 0.2,
- sort = T,
- split.by = "mixscape_class.global",
- cols = c("coral3","grey79","grey39")) +
- ggtitle("PD-L1 protein") +
- theme(axis.text.x = element_text(angle = 0, hjust = 0.5), plot.title = element_text(size = 20), axis.text = element_text(size = 16))
- ```
- ```{r save.img, include=TRUE}
- p <- VlnPlot(object = eccite, features = "adt_PDL1", idents = c("NT","JAK2","STAT1","IFNGR1","IFNGR2", "IRF1"), group.by = "gene", pt.size = 0.2, sort = T, split.by = "mixscape_class.global", cols = c("coral3","grey79","grey39")) +ggtitle("PD-L1 protein") +theme(axis.text.x = element_text(angle = 0, hjust = 0.5))
- ```
- ```{r, include=FALSE}
- ggsave(filename = "../output/images/mixscape_vignette.jpg", height = 7, width = 12, plot = p, quality = 50)
- ```
- # Visualizing perturbation responses with Linear Discriminant Analysis (LDA)
- We use LDA as a dimensionality reduction method to visualize perturbation-specific clusters. LDA is trying to maximize the separability of known labels (mixscape classes) using both gene expression and the labels as input.
- ```{r eccite.lda, fig.height = 7, fig.width = 10, results="hide"}
- # Remove non-perturbed cells and run LDA to reduce the dimensionality of the data.
- Idents(eccite) <- "mixscape_class.global"
- sub <- subset(eccite, idents = c("KO", "NT"))
- # Run LDA.
- sub <- MixscapeLDA(
- object = sub,
- assay = "RNA",
- pc.assay = "PRTB",
- labels = "gene",
- nt.label = "NT",
- npcs = 10,
- logfc.threshold = 0.25,
- verbose = F)
- # Use LDA results to run UMAP and visualize cells on 2-D.
- # Here, we note that the number of the dimensions to be used is equal to the number of
- # labels minus one (to account for NT cells).
- sub <- RunUMAP(
- object = sub,
- dims = 1:11,
- reduction = 'lda',
- reduction.key = 'ldaumap',
- reduction.name = 'ldaumap')
- # Visualize UMAP clustering results.
- Idents(sub) <- "mixscape_class"
- sub$mixscape_class <- as.factor(sub$mixscape_class)
- # Set colors for each perturbation.
- col = setNames(object = hue_pal()(12),nm = levels(sub$mixscape_class))
- names(col) <- c(names(col)[1:7], "NT", names(col)[9:12])
- col[8] <- "grey39"
- p <- DimPlot(object = sub,
- reduction = "ldaumap",
- repel = T,
- label.size = 5,
- label = T,
- cols = col) + NoLegend()
- p2 <- p+
- scale_color_manual(values=col, drop=FALSE) +
- ylab("UMAP 2") +
- xlab("UMAP 1") +
- custom_theme
- p2
- ```
- ```{r save.times, include = FALSE}
- write.csv(x = t(as.data.frame(all_times)), file = "../output/timings/mixscape_vignette_times.csv")
- ```
- <details>
- <summary>**Session Info**</summary>
- ```{r}
- sessionInfo()
- ```
- </details>
mixscape_vignette.Rmd at commit 586015a, under other · at the source
Overview
- Department of Rehabilitation, Children's Hospital of Chongqing Medical University, National Clinical Research Center for Children and Adolescents’ Health and Diseases, Ministry of Education Key Laboratory of Child Development and Disorders, Chongqing Key Laboratory of Child Neurodevelopment and Cognitive Disorders, Chongqing, China
- Perioperative and Systems Medicine Laboratory, Department of Rehabilitation, Children's Hospital, Zhejiang University School of Medicine, National Clinical Research Center for Children and Adolescent's Health and Diseases, Hangzhou, China
Abstract
Background: Traumatic spinal cord injury (SCI) induces a robust local inflammatory response that can both facilitate repair and exacerbate pathology. Hydroxycarboxylic acid receptor 2 (Hcar2) is known to exert immunomodulatory effects; however, its role in SCI and its potential for targeting Hcar2 to alleviate motor deficits remain unclear.
Methods: The spinal cord transcriptome following SCI, with a focus on Hcar2, was analysed via publicly available single‐cell RNA sequencing datasets from mice and rhesus macaques. Additionally, an in vivo SCI mouse model with Hcar2 knockout and an in vitro LPS‐induced BV2 microglial model were established to assess Hcar2 gene and protein expression, microglial activation and inflammatory responses via bulk RNA sequencing, immunofluorescence staining, Western blotting, and real‐time polymerase chain reaction. To evaluate the protective effects of Hcar2 activation, niacin, a known Hcar2 agonist, was administered to mice or BV2 cells, followed by assessments of the inflammatory response and motor function.
Results: Hcar2 gene expression, which was enriched predominantly in spinal cord microglia, was upregulated following SCl, peaking at 7 days post‐SCl. Genetic knockout of Hcar2 decreased the percentage of impaired anti‐inflammatory polarized microglia and increased the inflammatory response. In contrast, Hcar2 activation with niacin in LPS‐stimulated microglia BV cell models reversed mitochondrial dysfunction, increased the oxygen consumption rate and reduced the expression of the cytokines IL‐6 and IL‐1β. The administration of niacin to SCl mice upregulated anti‐inflammatory microglia, reduced the expression of multiple proinflammatory cytokines, increased the number of motor neurons and improved motor function recovery. Notably, all these protective effects were abolished by genetic loss of Hcar2.
Conclusions: Hcar2 serves as a critical regulator of microglial polarization, promoting the switch from a proinflammatory phenotype to an anti‐inflammatory phenotype through immunometabolic reprogramming. Targeting Hcar2 with niacin may offer a translatable therapeutic strategy to improve functional recovery after SCl.
Key Points: Hcar2 is identified as a conserved, injury‐induced metabolic checkpoint specifically enriched in microglia following spinal cord injury.
Hcar2 activation reprogrammes microglial metabolism from glycolysis to oxidative phosphorylation to drive reparative anti‐inflammatory polarization.
Pharmacological targeting of Hcar2 with niacin resolves neuroinflammation and promotes functional motor recovery in an Hcar2‐dependent manner.
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.
satijalab/seurat
586015abde10618ecb32d3fe632267a83317a08d, 21 September 2026Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
130 files
- R/
RcppExports.R , R, 123 lines - R/
clustering.R , R, 1,908 lines - R/
convenience.R , R, 512 lines - R/
data.R , R, 55 lines - R/
differential_expression. , R, 2,569 lines, 1 matchR - R/
dimensional_reduction.R , R, 2,935 lines - R/
generics.R , R, 842 lines, 1 match - R/
integration.R , R, 5,665 lines - R/
integration5.R , R, 760 lines - R/
mixscape.R , R, 1,347 lines - R/
objects.R , R, 3,369 lines - R/
preprocessing.R , R, 5,956 lines, 1 match - R/
preprocessing5.R , R, 1,891 lines - R/
reexports.R , R, 454 lines - R/
roxygen.R , R, 61 lines - R/
sketching.R , R, 803 lines - R/
tree.R , R, 392 lines - R/
utilities.R , R, 3,220 lines - R/
visualization.R , R, 6,161 lines - R/
zzz.R , R, 110 lines - man/
roxygen/ , R, 3 linestemplates/ note-reqdpkg.R - man/
roxygen/ , R, 1 linetemplates/ param-dotsi.R - man/
roxygen/ , R, 1 linetemplates/ param-dotsm.R - man/
roxygen/ , R, 13 linestemplates/ section-future.R - man/
roxygen/ , R, 8 linestemplates/ section-progressr.R - man/
roxygen/ , R, 1 linetemplates/ seealso-methods.R - src/
ModularityOptimizer.cpp , C++, 1,012 lines - src/
ModularityOptimizer.h , C/C++, 159 lines - src/
RModularityOptimizer.cpp , C++, 173 lines - src/
RcppExports.cpp , C++, 445 lines - src/
data_manipulation.cpp , C++, 464 lines - src/
data_manipulation.h , C/C++, 51 lines - src/
fast_NN_dist.cpp , C++, 70 lines - src/
integration.cpp , C++, 177 lines - src/
integration.h , C/C++, 37 lines - src/
snn.cpp , C++, 126 lines - src/
snn.h , C/C++, 21 lines - src/
stats.cpp , C++, 42 lines - src/
valid_pointer.c , C, 6 lines - tests/
testthat.R , R, 14 lines - tests/
testthat/ , R, 209 linestest_data_manipulation.R - tests/
testthat/ , R, 704 linestest_differential_expres sion.R - tests/
testthat/ , R, 190 linestest_dimensional_reducti on.R - tests/
testthat/ , R, 129 linestest_find_clusters.R - tests/
testthat/ , R, 117 linestest_integratedata.R - tests/
testthat/ , R, 487 linestest_integration.R - tests/
testthat/ , R, 544 linestest_integration5.R - tests/
testthat/ , R, 281 linestest_load_10X.R - tests/
testthat/ , R, 144 linestest_modularity_optimize r.R - tests/
testthat/ , R, 25 linestest_objects.R - tests/
testthat/ , R, 631 linestest_preprocessing.R - tests/
testthat/ , R, 291 linestest_sketching.R - tests/
testthat/ , R, 509 linestest_spatial.R - tests/
testthat/ , R, 143 linestest_transferdata.R - tests/
testthat/ , R, 54 linestest_tree.R - tests/
testthat/ , R, 476 linestest_utilities.R - tests/
testthat/ , R, 54 linestest_visualization.R - vignettes/
COVID_SCTMapping.Rmd , R, 180 lines - vignettes/
ParseBio_sketch_integrat , R, 180 linesion.Rmd - vignettes/
announcements.Rmd , R, 56 lines - vignettes/
archive.Rmd , R, 41 lines - vignettes/
atacseq_integration_vign , R, 231 linesette.Rmd - vignettes/
cell_cycle_vignette.Rmd , R, 139 lines - vignettes/
conversion_vignette.Rmd , R, 132 lines - vignettes/
de_vignette.Rmd , R, 212 lines - vignettes/
dim_reduction_vignette.R , R, 119 linesmd - vignettes/
essential_commands.Rmd , R, 427 lines - vignettes/
extensions.Rmd , R, 38 lines - vignettes/
future_vignette.Rmd , R, 133 lines - vignettes/
get_started.Rmd , R, 159 lines - vignettes/
get_started_v5.Rmd , R, 140 lines - vignettes/
get_started_v5_new.Rmd , R, 172 lines - vignettes/
hashing_vignette.Rmd , R, 285 lines - vignettes/
install.Rmd , R, 120 lines - vignettes/
install_v5.Rmd , R, 84 lines - vignettes/
integration_introduction , R, 246 lines.Rmd - vignettes/
integration_large_datase , R, 119 linests.Rmd - vignettes/
integration_mapping.Rmd , R, 178 lines - vignettes/
integration_rpca.Rmd , R, 187 lines - vignettes/
interaction_vignette.Rmd , R, 149 lines - vignettes/
merge_vignette.Rmd , R, 109 lines - vignettes/
mixscape_vignette.Rmd , R, 375 lines, 1 match - vignettes/
multimodal_reference_map , R, 387 linesping.Rmd - vignettes/
multimodal_vignette.Rmd , R, 243 lines - vignettes/
pbmc3k_tutorial.Rmd , R, 376 lines - vignettes/
sctransform_v2_vignette. , R, 230 linesRmd - vignettes/
sctransform_vignette.Rmd , R, 144 lines - vignettes/
seurat5_archive.Rmd , R, 41 lines - vignettes/
seurat5_atacseq_integrat , R, 221 linesion_vignette.Rmd - vignettes/
seurat5_bpcells_interact , R, 212 linesion_vignette.Rmd - vignettes/
seurat5_cell_cycle_vigne , R, 150 linestte.Rmd - vignettes/
seurat5_conversion_vigne , R, 132 linestte.Rmd - vignettes/
seurat5_de_vignette.Rmd , R, 143 lines - vignettes/
seurat5_dim_reduction_vi , R, 119 linesgnette.Rmd - vignettes/
seurat5_essential_comman , R, 220 linesds.Rmd - vignettes/
seurat5_extensions.Rmd , R, 35 lines - vignettes/
seurat5_future_vignette. , R, 134 linesRmd - vignettes/
seurat5_get_started.Rmd , R, 159 lines - vignettes/
seurat5_hashing_vignette , R, 291 lines.Rmd - vignettes/
seurat5_integration.Rmd , R, 220 lines - vignettes/
seurat5_integration_brid , R, 284 linesge.Rmd - vignettes/
seurat5_integration_intr , R, 273 linesoduction.Rmd - vignettes/
seurat5_integration_larg , R, 125 linese_datasets.Rmd - vignettes/
seurat5_integration_mapp , R, 211 linesing.Rmd - vignettes/
seurat5_integration_rpca , R, 191 lines.Rmd - vignettes/
seurat5_interaction_vign , R, 146 linesette.Rmd - vignettes/
seurat5_merge_vignette.R , R, 109 linesmd - vignettes/
seurat5_mixscape_vignett , R, 372 linese.Rmd - vignettes/
seurat5_multimodal_refer , R, 396 linesence_mapping.Rmd - vignettes/
seurat5_multimodal_vigne , R, 240 linestte.Rmd - vignettes/
seurat5_pbmc3k_tutorial. , R, 395 linesRmd - vignettes/
seurat5_sctransform_inte , R, 90 linesgration.Rmd - vignettes/
seurat5_sctransform_v2_v , R, 231 linesignette.Rmd - vignettes/
seurat5_sctransform_vign , R, 156 linesette.Rmd - vignettes/
seurat5_sketch_analysis. , R, 209 linesRmd - vignettes/
seurat5_spatial_vignette , R, 524 lines.Rmd - vignettes/
seurat5_spatial_vignette , R, 570 lines_2.Rmd - vignettes/
seurat5_v4_changes.Rmd , R, 38 lines - vignettes/
seurat5_visualization_vi , R, 249 linesgnette.Rmd - vignettes/
seurat5_weighted_nearest , R, 451 lines_neighbor_analysis.Rmd - vignettes/
spatial_vignette.Rmd , R, 603 lines - vignettes/
spatial_vignette_2.Rmd , R, 734 lines - vignettes/
v4_changes.Rmd , R, 38 lines - vignettes/
visiumhd_analysis_cell_s , R, 451 linesegmentations.Rmd - vignettes/
visiumhd_analysis_vignet , R, 559 lineste.Rmd - vignettes/
visualization_vignette.R , R, 241 linesmd - vignettes/
weighted_nearest_neighbo , R, 442 linesr_analysis.Rmd - LICENSE, License, 2 lines
- LICENSE.md, License, 21 lines
- README.md, Text, 23 lines
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;
- 127 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
- geo:GSE162610, at NCBI GEO; found in “Bioinformatic analysis of publicly available…”
Data availability statement
The datasets generated and analysed during the current study are available from the corresponding author upon reasonable request. The RNA‐seq data have been deposited in the NCBI Sequence Read Archive (SRA) under accession number PRJNA1441145. Publicly available single‐cell RNA sequencing data used in this study were obtained from the Gene Expression Omnibus (GEO) under accession number GSE162610 (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, 8 authors, 7 keywords, 8 MeSH terms, 6 funders, 50 references.
Cite
This paper
Du, H., Zeng, L., Liu, C., Zhou, H., Wang, X., Ai, Q., Zhu, J., & Xiao, N. (2026). Niacin promotes motor function recovery after spinal cord injury via Hcar2-dependent microglia immunometabolic regulation. Clinical and translational medicine, 16(5), e70683. https://
BibTeX
@article{du2026niacin,
author = {Du, Hua and Zeng, Lingnian and Liu, Chan and Zhou, Huyao and Wang, Xia and Ai, Qing and Zhu, Jinpiao and Xiao, Nong},
title = {{Niacin promotes motor function recovery after spinal cord injury via Hcar2-dependent microglia immunometabolic regulation}},
journal = {Clinical and translational medicine},
year = {2026},
month = may,
volume = {16},
number = {5},
pages = {e70683},
publisher = {Wiley},
issn = {2001-1326},
doi = {10.1002/
url = {https://
pmid = {42068080},
pmcid = {PMC13135113}
}
RIS
TY - JOUR
AU - Du, Hua
AU - Zeng, Lingnian
AU - Liu, Chan
AU - Zhou, Huyao
AU - Wang, Xia
AU - Ai, Qing
AU - Zhu, Jinpiao
AU - Xiao, Nong
TI - Niacin promotes motor function recovery after spinal cord injury via Hcar2-dependent microglia immunometabolic regulation
T2 - Clinical and translational medicine
J2 - Clin Transl Med
PY - 2026
DA - 2026/
VL - 16
IS - 5
SP - e70683
SN - 2001-1326
PB - Wiley
DO - 10.1002/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1002/
"type": "article-journal",
"title": "Niacin promotes motor function recovery after spinal cord injury via Hcar2-dependent microglia immunometabolic regulation",
"container-title": "Clinical and translational medicine",
"author": [
{
"family": "Du",
"given": "Hua"
},
{
"family": "Zeng",
"given": "Lingnian"
},
{
"family": "Liu",
"given": "Chan"
},
{
"family": "Zhou",
"given": "Huyao"
},
{
"family": "Wang",
"given": "Xia"
},
{
"family": "Ai",
"given": "Qing"
},
{
"family": "Zhu",
"given": "Jinpiao"
},
{
"family": "Xiao",
"given": "Nong"
}
],
"container-title-short":
"volume": "16",
"issue": "5",
"page": "e70683",
"DOI": "10.1002/
"PMID": "42068080",
"PMCID": "PMC13135113",
"ISSN": "2001-1326",
"publisher": "Wiley",
"URL": "https://
"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.1186/s12974-026-03838-8 [code]
- Acarbose modulates microglial Pkm2 acetylation to reshape immunometabolism and preserve retinal neurons after ischemia-reperfusion.Journal: Journal of neuroinflammationIn common: Monocle 3, Harmony, SingleCellExperiment, 13 other tools, genetics / omics, mouse, cellular / molecular, 2 references
- [2] doi:10.7554/elife.93640 [code]
- Sibling chimerism among microglia in marmosets.Journal: eLifeIn common: Monocle 3, Harmony, SingleCellExperiment, 13 other tools, non-human primate, genetics / omics, cellular / molecular
- [3] doi:10.1038/s41420-026-02971-w [code]
- Multi-omics reveals heterogeneity and functional populations of oligodendrocyte progenitor cells induced by human neural stem cells.Journal: Cell death discoveryIn common: Monocle 3, Harmony, SingleCellExperiment, 13 other tools, genetics / omics, cellular / molecular
- [4] doi:10.1038/s44318-026-00818-9 [code]
- FAM134B-mediated ER-phagy degrades APP and suppresses Alzheimer's disease pathology.Journal: The EMBO journalIn common: Monocle 3, Harmony, SingleCellExperiment, 13 other tools, mouse, cellular / molecular
- [5] doi:10.1016/j.xcrm.2026.102766 [code]
- A longitudinal single-cell and spatial multiomic atlas of pediatric high-grade glioma.Journal: Cell reports. MedicineIn common: Monocle 3, Harmony, SingleCellExperiment, 12 other tools, genetics / omics, other condition, cellular / molecular
- [6] doi:10.1371/journal.pcbi.1014573 [code]
- Cell-type-specific m1A dynamics are associated with microglial phenotypic transition and neuronal metabolic adaptation during spinal cord injury.Journal: PLoS computational biologyIn common: Monocle 3, limma, igraph, 8 other tools, genetics / omics, other condition, mouse, 1 other category, 4 references
- [7] doi:10.1002/imt2.70163 [code]
- Spatial multi-omics unveils sphingolipid metabolic reprogramming within the retinal pathological niche.Journal: iMetaIn common: Monocle 3, Harmony, SingleCellExperiment, 11 other tools, genetics / omics, mouse, cellular / molecular
- [8] doi:10.1016/j.xcrm.2026.102651 [code]
- Integrative CSF profiling identifies disease-specific immune responses in leptomeningeal disease.Journal: Cell reports. MedicineIn common: Harmony, SingleCellExperiment, reticulate, 11 other tools, genetics / omics, other condition, cellular / molecular
- [9] doi:10.1038/s41593-026-02367-0 [code]
- A reproducible three-dimensional model of human brain tissue to investigate physiological and disease-associated microglia phenotypes.Journal: Nature neuroscienceIn common: Monocle 3, Harmony, SingleCellExperiment, 11 other tools, cellular / molecular
- [10] doi:10.1038/s41586-026-10214-2 [code]
- Multidimensional profiling of heterogeneity in supratentorial ependymomas.Journal: NatureIn common: Monocle 3, Harmony, SingleCellExperiment, 10 other tools, genetics / omics, other condition, mouse
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, 127 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:24b6419a23579e5c…
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.
