OSCR

A transcriptomic microglia taxonomy across mouse and human pathologies.

Code ↔ Paper

26 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 26 matches
  1. [1] § Methods › Image feature plots for CosMX data ↔ Figure_3_plotting.R, lines 777 to 813 · score 1.00 · HLA DPB1, HLA DRB1, HLA DQA1, HLA DRB5, HLA DPA1, HLA DQB1 · Report a mismatch
  2. [2] § Methods › Cross-species integration of human and mouse microglia ↔ Fig_6_Ext_Data_10_11_plotting.R, lines 50 to 114 · score 0.98 · FindVariableFeatures, IntegrateLayers, RPCAIntegration, RunPCA, FindNeighbors, NormalizeData · Report a mismatch
  3. [3] § Methods › Identification of myeloid superclusters by module scoring ↔ Figure_3_plotting.R, lines 777 to 813 · score 0.95 · HLA DQA1, HLA DRB5, HLA DQB1, CLEC7A, IL1B, P2RY12 · Report a mismatch
  4. [4] § Methods › Batch correction and assignment of cell-type identities ↔ Fig_6_Ext_Data_10_11_plotting.R, lines 50 to 114 · score 0.88 · FindNeighbors, NormalizeData, RunUMAP, ScaleData, variable features, PCA · Report a mismatch
  5. [5] § Results › Mouse myeloid taxonomy reveals superclusters conserved in humans ↔ Ext_data_fig_7_8_9_plotting_and_stats.R, lines 412 to 494 · score 0.82 · Clec7a, Il1b, P2ry12, myeloid cells, R6, E16 · Report a mismatch
  6. [6] § Results › Genome-wide subcellular spatial mapping of microglial states ↔ Fig_4_plotting.R, lines 68 to 115 · score 0.81 · AGS basal ganglia, control spinal cord, Bergmann glia, populations, plasmablasts, hippocampus · Report a mismatch
  7. [7] § Results › Mouse myeloid taxonomy reveals superclusters conserved in humans ↔ Ext_data_fig_7_8_9_plotting_and_stats.R, lines 412 to 494 · score 0.81 · GvHD, Clec7a, P2ry12, Csf1, Ctsb, DAM · Report a mismatch
  8. [8] § Methods › Microglial cluster count analysis ↔ Fig_1_Fig2F_Plotting.R, lines 442 to 515 · score 0.79 · negative binomial, patient ID, lme4, donor, Overdispersion, MASS · Report a mismatch
  9. [9] § Methods › Microglial cluster count analysis ↔ Fig_5_plotting.R, lines 368 to 441 · score 0.79 · negative binomial, patient ID, lme4, donor, Overdispersion, MASS · Report a mismatch
  10. [10] § Results › Mouse myeloid taxonomy reveals superclusters conserved in humans ↔ Ext_data_fig_7_8_9_plotting_and_stats.R, lines 144 to 182 · score 0.76 · EAE onset, GvHD, interferon signature, chronic, FMF, SOD1 · Report a mismatch
  11. [11] § Results › Superclusters reflect myeloid functional diversity in a human CNS atlas ↔ Ext_data_fig_2_and_3_4_plotting_and_stats.R, lines 380 to 423 · score 0.72 · MS inactive core, MS active lesion, MS lesion rim, MS NAWM, bar, immune · Report a mismatch
  12. [12] § Results › Superclusters reflect myeloid functional diversity in a human CNS atlas ↔ Ext_data_fig_2_and_3_4_plotting_and_stats.R, lines 131 to 176 · score 0.72 · fetal brains, hippocampal sclerosis, MS lesions, PD, metastasis, astrocytoma · Report a mismatch
  13. [13] § Methods › Image feature plots for CosMX data ↔ Fig_2_plotting.R, lines 421 to 464 · score 0.71 · IL1B, CX3CR1, P2RY12, CCL4, CCL3, CCL2 · Report a mismatch
  14. [14] § Results › Genome-wide subcellular spatial mapping of microglial states ↔ Ext_data_fig_6_plotting_and_stats.R, lines 308 to 366 · score 0.70 · AGS basal ganglia, control spinal cord, hippocampus, proliferation, IFN, cortex · Report a mismatch
  15. [15] § Results › Superclusters reflect myeloid functional diversity in a human CNS atlas ↔ Ext_data_fig_2_and_3_4_plotting_and_stats.R, lines 131 to 176 · score 0.68 · F13A1, P2RY12, FOLR2, SALL1, SELENOP, TGFBI · Report a mismatch
  16. [16] § Results › Superclusters reflect myeloid functional diversity in a human CNS atlas ↔ Fig_1_Fig2F_Plotting.R, lines 95 to 139 · score 0.68 · fetal brains, hippocampal sclerosis, MS lesions, PD, metastasis, astrocytoma · Report a mismatch
  17. [17] § Methods › Supercluster similarity analysis and statistical testing ↔ Fig_1_Fig2F_Plotting.R, lines 253 to 311 · score 0.66 · AverageExpression, log normalized, slot, Spearman, microglial superclusters, correlation · Report a mismatch
  18. [18] § Methods › Supercluster similarity analysis and statistical testing ↔ Fig_5_plotting.R, lines 208 to 237 · score 0.63 · AverageExpression, log normalized, Spearman, microglial superclusters, correlation, score · Report a mismatch
  19. [19] § Results › Genome-wide subcellular spatial mapping of microglial states ↔ Ext_data_fig_6_plotting_and_stats.R, lines 72 to 122 · score 0.63 · PC CBL, dysmorphic neurons, DAO, GRIA1, OPC, SMC · Report a mismatch
  20. [20] § Results › Genome-wide subcellular spatial mapping of microglial states ↔ Fig_4_plotting.R, lines 68 to 115 · score 0.62 · PC CBL, dysmorphic neurons, OPC, SMC, cerebellum, TRM · Report a mismatch
  21. [21] § Results › Spatial single-cell microglial clusters in human CNS pathologies ↔ Ext_data_fig_6_plotting_and_stats.R, lines 308 to 366 · score 0.61 · spinal cord, occipital cortex, cerebellum, hippocampus, proliferation, IFN · Report a mismatch
  22. [22] § Results › Superclusters reflect myeloid functional diversity in a human CNS atlas ↔ Fig_2_plotting.R, lines 67 to 115 · score 0.59 · MS lesion rim, Stacked bar, MS NAWM, immune cell, Treg, TRM · Report a mismatch
  23. [23] § Results › Superclusters reflect myeloid functional diversity in a human CNS atlas ↔ Ext_data_fig_2_and_3_4_plotting_and_stats.R, lines 477 to 545 · score 0.54 · SLC2A5, P2RY12, Volcano, heads, FKBP5, log2 · Report a mismatch
  24. [24] § Methods › Analysis of Visium HD data ↔ Ext_data_fig_6_plotting_and_stats.R, lines 72 to 122 · score 0.53 · inhibitory neurons, excitatory, populations, assignment, Segmentation, oligodendrocytes · Report a mismatch
  25. [25] § Results › Spatial single-cell microglial clusters in human CNS pathologies ↔ Ext_data_fig_5_plotting_and_stats.R, lines 1 to 40 · score 0.52 · CD8 TRM, MS lesion, DC, OPC, SMC, Treg · Report a mismatch
  26. [26] § Methods › Batch correction and assignment of cell-type identities ↔ Functions_R.R, lines 145 to 209 · score 0.51 · nearest neighbor, Harmony, PCA, assignments, filtering, cell · Report a mismatch

Paper

Loaded from Europe PMC by your browser; OSCR does not store it: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

R · 545 lines · 18 KB · CC-BY-4.0 · 4 matches

  1. library(Seurat)
  2. library(ggplot2)
  3. library(purrr)
  4. library(scrattch.vis)
  5. library(scrattch.hicat)
  6. library(Matrix)
  7. library(dplyr)
  8. library(tidyr)
  9. library(parallel)
  10. library(bigstatsr)
  11. library(data.table)
  12. library(arrow)
  13. library(BiocNeighbors)
  14. library(ggraph)
  15. library(igraph)
  16. library(tidyverse)
  17. library(ggnewscale)
  18. library(ggrepel)
  19. library(patchwork)
  20. library(grid)
  21. library(pheatmap)
  22. library(RColorBrewer)
  23. library(dplyr)
  24. library(readr)
  25. library(ggplot2)
  26. library(EnhancedVolcano)
  27. Human_immune <- readRDS("Human_Myeloid_atlas_v1.RDS")
  28. ###Ext Data Fig. 2A and 2B####
  29. ###colors for cell types
  30. subclass_color_df <- [email hidden] %>%
  31. count(Subclass_label_final, Subclass_color) %>%
  32. group_by(Subclass_label_final) %>%
  33. slice_max(n, with_ties = FALSE) %>%
  34. ungroup()
  35. subclass_color_map <- setNames(subclass_color_df$Subclass_color, subclass_color_df$Subclass_label_final)
  36. DimPlot(Human_immune, group.by = "Subclass_label_final", cols = subclass_color_map)
  37. DimPlot(Human_immune, group.by = "Final_Sex")
  38. ###Ext Data Fig. 2C and statistics####
  39. Human_meta <- [email hidden]
  40. Context_order <- c(
  41. "Controls", "AD_early", "AD_late", "PD", "HD", "ALS", "AGS",
  42. "Hippocampal_Sclerosis", "FCD", "MS_NAWM", "MS lesion",
  43. "Oligodendroglioma 3", "Astrocytoma 4", "GBM", "GBM recurrence",
  44. "Metastasis (lung)", "Fetal brain")
  45. P_immune_cells_Prop_meta <- Human_meta %>%
  46. mutate(
  47. Cluster = factor(Subclass_label_final, levels = names(subclass_color_map)),
  48. Context = factor(Context_stagewise_Controls_merged, levels = Context_order)
  49. ) %>%
  50. select(Cluster, Context)
  51. P_immune_cells_Prop <- ggplot(P_immune_cells_Prop_meta,
  52. aes(x = Context, fill = Cluster)) +
  53. geom_bar(position = "fill", color = "black", linewidth = 0.1) +
  54. geom_hline(yintercept = 0.5, linetype = "dashed", color = "black", linewidth = 0.4) +
  55. scale_fill_manual(values = subclass_color_map, drop = FALSE,
  56. guide = guide_legend(ncol = 1, title = "Immune Cell Type")) +
  57. scale_y_continuous(breaks = c(0, 0.5, 1), labels = c("0.0", "0.5", "1.0")) +
  58. labs(x = "Context", y = "Proportion of Immune Cells") +
  59. theme_minimal(base_size = 11) +
  60. theme(
  61. aspect.ratio = 0.5, # Adjust if needed
  62. panel.grid = element_blank(),
  63. axis.text.x = element_text(angle = 90, hjust = 1, size = 8),
  64. axis.text.y = element_text(size = 6),
  65. axis.ticks.y = element_blank(),
  66. legend.position = "right"
  67. )
  68. print(P_immune_cells_Prop)
  69. df <- P_immune_cells_Prop_meta
  70. # Total number of cells
  71. N <- nrow(df)
  72. # Total number of cells per context (K)
  73. context_sizes <- df %>%
  74. group_by(Context) %>%
  75. summarise(K = n(), .groups = "drop")
  76. # Total number of cells per cluster (n)
  77. cluster_sizes <- df %>%
  78. group_by(Cluster) %>%
  79. summarise(n = n(), .groups = "drop")
  80. # Number of cells in each Cluster × Context combo (k)
  81. cross_counts <- df %>%
  82. group_by(Cluster, Context) %>%
  83. summarise(k = n(), .groups = "drop")
  84. # Merge all
  85. hyper_df <- cross_counts %>%
  86. left_join(cluster_sizes, by = "Cluster") %>%
  87. left_join(context_sizes, by = "Context") %>%
  88. mutate(
  89. N = N,
  90. # Hypergeometric test: overrepresentation
  91. pval = phyper(k - 1, K, N - K, n, lower.tail = FALSE),
  92. enrichment = (k / n) / (K / N), # fold enrichment
  93. perc_in_cluster = 100 * (k / n),
  94. perc_in_context = 100 * (k / K)
  95. ) %>%
  96. arrange(pval) %>%
  97. mutate(p_adj = p.adjust(pval, method = "fdr")) # FDR correction
  98. write_csv(hyper_df, "Supp_file_2_Hyper_test_Human_immune_cells.csv")
  99. ###Ext Data 2D Dot plot#####
  100. markers_genes <- c("P2RY12", "CX3CR1", "SALL1", "SELENOP", "FOLR2", "COLEC12",
  101. "F13A1", "TGFBI", "XCR1", "CLEC9A", "C1orf54", "IDO1", "ENPP1", "CLEC10A", "IL1R2", "AREG", "RHEX", "BCL11A",
  102. "SPIB", "IGKC", "IGHG1", "NKG7", "GNLY", "KLRF1", "SKAP1", "THEMIS", "IL7R", "CD8B", "CCL5",
  103. "IL32", "LEF1", "MAL", "RTKN2", "FOXP3", "SLC4A10", "IL23R")
  104. Idents(Human_immune) <- Human_immune$Subclass_label_final
  105. DotPlot(Human_immune, features = markers_genes, dot.min = 0.05, col.min = 0, col.max = 2, dot.scale = 4) + RotatedAxis()
  106. #######Dot plot DC marker genes####
  107. markers_genes_DC <- c("P2RY12", "CX3CR1", "SALL1", "SELENOP", "FOLR2", "COLEC12",
  108. "F13A1", "TGFBI", "XCR1", "CLEC9A", "C1orf54", "IDO1", "ENPP1", "CLEC10A", "IL1R2", "AREG", "RHEX", "BCL11A",
  109. "SPIB")
  110. Idents(Human_immune) <- Human_immune$Subclass_label_final
  111. DotPlot(Human_immune, features = markers_genes_DC, dot.min = 0.05,
  112. idents = c("Microglia", "CAM", "MDM", "cDC1", "cDC2", "pDC"),
  113. col.min = 0, col.max = 2, dot.scale = 6) + RotatedAxis()
  114. ##Ext Data 2E Bar graph and statistics#####
  115. # Extract palette (original labels)
  116. Human_microglia <- subset(Human_immune, subset = Subclass_label_final == "Microglia")
  117. pal_tbl <- unique([email hidden][, c("Module_label", "Module_color")])
  118. pal_vec <- setNames(as.character(pal_tbl$Module_color), as.character(pal_tbl$Module_label))
  119. # Define renaming for selected modules
  120. module_rename_map <- c(
  121. "Cytokine" = "Cytokine production",
  122. "MHC" = "Antigen presentation",
  123. "Inflammation" = "Inflammation",
  124. "Surveillance" = "Surveillance",
  125. "IFN" = "Interferon signature",
  126. "Neuroprotection" = "Neuroprotection",
  127. "Phagocytosis" = "Phagocytosis",
  128. "Proliferation" = "Proliferation"
  129. )
  130. # Rename palette keys where needed
  131. renamed_colors <- setNames(pal_vec[names(module_rename_map)], module_rename_map)
  132. unchanged_labels <- setdiff(names(pal_vec), names(module_rename_map))
  133. unchanged_colors <- pal_vec[unchanged_labels]
  134. pal_vec_combined <- c(renamed_colors, unchanged_colors)
  135. # Define context order for plotting
  136. Context_order <- c(
  137. "Controls", "AD_early", "AD_late", "PD", "HD", "ALS", "AGS",
  138. "Hippocampal_Sclerosis", "FCD", "MS_NAWM", "MS lesion",
  139. "Oligodendroglioma 3", "Astrocytoma 4", "GBM", "GBM recurrence",
  140. "Metastasis (lung)", "Fetal brain"
  141. )
  142. # Build plotting dataframe
  143. P_Supercluster_Prop_meta <- [email hidden] %>%
  144. mutate(
  145. # Clean up context labels
  146. Context_stagewise_Controls_merged = case_when(
  147. Context_stagewise_Controls_merged %in% c("MS_active", "MS_core", "MS_rim", "MS") ~ "MS lesion",
  148. Context_stagewise_Controls_merged == "Homeostasis" ~ "Controls",
  149. Context_stagewise_Controls_merged == "BMET (NSCLC)" ~ "Metastasis (lung)",
  150. TRUE ~ Context_stagewise_Controls_merged
  151. ),
  152. # Rename module labels selectively and keep the rest
  153. Cluster = recode(as.character(Module_label), !!!module_rename_map, .default = as.character(Module_label)),
  154. # Set factor order for modules: renamed + unchanged (reverse for plot stacking order)
  155. Cluster = factor(Cluster, levels = rev(unique(c(unname(module_rename_map), unchanged_labels)))),
  156. # Factor order for context
  157. Context = factor(Context_stagewise_Controls_merged, levels = Context_order)
  158. ) %>%
  159. select(Cluster, Context)
  160. # Generate the stacked bar plot
  161. P_Supercluster_Prop <- ggplot(P_Supercluster_Prop_meta,
  162. aes(x = Context, fill = Cluster)) +
  163. geom_bar(position = "fill", color = "black", linewidth = 0.1) +
  164. geom_hline(yintercept = 0.5, linetype = "dashed", color = "black", linewidth = 0.4) +
  165. scale_fill_manual(values = pal_vec_combined, drop = FALSE) +
  166. scale_y_continuous(breaks = c(0, 0.25, 0.5, 0.75, 1), labels = c("0.0", "0.25", "0.5", "0.75", "1.0")) +
  167. labs(x = "Context", y = "Proportion of microglia module") +
  168. theme_minimal(base_size = 11) +
  169. theme(
  170. aspect.ratio = 0.5,
  171. panel.grid = element_blank(),
  172. axis.text.x = element_text(angle = 90, hjust = 1, size = 8),
  173. axis.text.y = element_text(size = 6),
  174. axis.ticks.y = element_blank(),
  175. legend.position = "right"
  176. )
  177. # Show the plot
  178. print(P_Supercluster_Prop)
  179. ##Source data
  180. df <- P_immune_cells_Prop_meta
  181. counts_per_context <- df %>%
  182. count(Context, Cluster, name = "Count") %>%
  183. tidyr::pivot_wider(
  184. names_from = Cluster,
  185. values_from = Count,
  186. values_fill = 0
  187. )
  188. counts_per_context
  189. write_csv(counts_per_context, "Supp_table_5_counts_per_context_microglia_superclusters.csv")
  190. ###Hypergeometric test
  191. df <- P_Supercluster_Prop_meta
  192. # Total number of cells
  193. N <- nrow(df)
  194. # Total number of cells per context (K)
  195. context_sizes <- df %>%
  196. group_by(Context) %>%
  197. summarise(K = n(), .groups = "drop")
  198. # Total number of cells per cluster (n)
  199. cluster_sizes <- df %>%
  200. group_by(Cluster) %>%
  201. summarise(n = n(), .groups = "drop")
  202. # Number of cells in each Cluster × Context combo (k)
  203. cross_counts <- df %>%
  204. group_by(Cluster, Context) %>%
  205. summarise(k = n(), .groups = "drop")
  206. # Merge all
  207. hyper_df <- cross_counts %>%
  208. left_join(cluster_sizes, by = "Cluster") %>%
  209. left_join(context_sizes, by = "Context") %>%
  210. mutate(
  211. N = N,
  212. # Hypergeometric test: overrepresentation
  213. pval = phyper(k - 1, K, N - K, n, lower.tail = FALSE),
  214. enrichment = (k / n) / (K / N), # fold enrichment
  215. perc_in_cluster = 100 * (k / n),
  216. perc_in_context = 100 * (k / K)
  217. ) %>%
  218. arrange(pval) %>%
  219. mutate(p_adj = p.adjust(pval, method = "fdr")) # FDR correction
  220. write_csv(hyper_df, "Supp_table_5_Hyper_test_microglia_superclusters.csv")
  221. ####Ext Data Fig. 2F####
  222. ###Sample wise comparison of individual disease and region with its matched controls
  223. ####AD
  224. cluster_colors_tbl <- read_csv("colors_human_data.csv")
  225. pal <- setNames(cluster_colors_tbl$color, as.character(cluster_colors_tbl$name))
  226. ####AD stage wise comparison######
  227. df_plot_AD <- [email hidden] %>%
  228. filter(relabelled_clusters %in% 1:149,
  229. Context_region %in% c("Homeostasis_Occipital_cortex",
  230. "AD_early_Occipital_cortex",
  231. "AD_late_Occipital_cortex",
  232. "Homeostasis_Hippocampus",
  233. "AD_early_Hippocampus",
  234. "AD_late_Hippocampus")) %>%
  235. mutate(
  236. Cluster = factor(as.character(relabelled_clusters),
  237. levels = as.character(1:149)),
  238. Context = factor(Context_region,
  239. levels = c("Homeostasis_Occipital_cortex",
  240. "AD_early_Occipital_cortex",
  241. "AD_late_Occipital_cortex",
  242. "Homeostasis_Hippocampus",
  243. "AD_early_Hippocampus",
  244. "AD_late_Hippocampus"))
  245. ) %>%
  246. select(Cluster, Context)
  247. P_Human_AD_stagewise_clusters_prop <- ggplot(df_plot_AD,
  248. aes(x = Context, fill = Cluster)) +
  249. geom_bar(position = position_fill(reverse = FALSE), # set TRUE if you want 149 at bottom
  250. color = "black", linewidth = 0.1) +
  251. geom_hline(yintercept = 0.5, linetype = "dashed", color = "black", linewidth = 0.4) +
  252. scale_fill_manual(values = pal, drop = FALSE, guide = "none") +
  253. scale_y_continuous(breaks = c(0, 0.5, 1), labels = c("0.0", "0.5", "1.0")) +
  254. labs(x = "Context", y = "Proportion") +
  255. theme(
  256. panel.grid = element_blank(),
  257. panel.background = element_blank(),
  258. axis.text.x = element_text(size = 8, angle = 45, hjust = 1),
  259. axis.ticks.x = element_blank(),
  260. legend.position = "none",
  261. plot.margin = margin(5, 5, 20, 8)
  262. )
  263. P_Human_AD_stagewise_clusters_prop
  264. ##Source data
  265. df <- df_plot_AD
  266. counts_per_context <- df %>%
  267. count(Context, Cluster, name = "Count") %>%
  268. tidyr::pivot_wider(
  269. names_from = Cluster,
  270. values_from = Count,
  271. values_fill = 0
  272. )
  273. counts_per_context
  274. write_csv(counts_per_context, "Supp_table_6_counts_AD_stage_wise_microglia_clusters.csv")
  275. ###Hypergeometric test
  276. df <- df_plot_AD
  277. # Total number of cells
  278. N <- nrow(df)
  279. # Total number of cells per context (K)
  280. context_sizes <- df %>%
  281. group_by(Context) %>%
  282. summarise(K = n(), .groups = "drop")
  283. # Total number of cells per cluster (n)
  284. cluster_sizes <- df %>%
  285. group_by(Cluster) %>%
  286. summarise(n = n(), .groups = "drop")
  287. # Number of cells in each Cluster × Context combo (k)
  288. cross_counts <- df %>%
  289. group_by(Cluster, Context) %>%
  290. summarise(k = n(), .groups = "drop")
  291. # Merge all
  292. hyper_df <- cross_counts %>%
  293. left_join(cluster_sizes, by = "Cluster") %>%
  294. left_join(context_sizes, by = "Context") %>%
  295. mutate(
  296. N = N,
  297. # Hypergeometric test: overrepresentation
  298. pval = phyper(k - 1, K, N - K, n, lower.tail = FALSE),
  299. enrichment = (k / n) / (K / N), # fold enrichment
  300. perc_in_cluster = 100 * (k / n),
  301. perc_in_context = 100 * (k / K)
  302. ) %>%
  303. arrange(pval) %>%
  304. mutate(p_adj = p.adjust(pval, method = "fdr")) # FDR correction
  305. write_csv(hyper_df, "Supp_table_6_counts_AD_stage_wise_microglia_clusters_hyper_test.csv")
  306. ####MS stage wise comparison######
  307. df_plot_MS <- [email hidden] %>%
  308. filter(relabelled_clusters %in% 1:149,
  309. Tissue_label %in% "Cerebral_cortex",
  310. str_detect(orig.ident, "CTRL|MS")) %>%
  311. mutate(
  312. Context = case_when(
  313. as.character(orig.ident) %in% c("CTRL_FCD_IIb_CTX",
  314. "CTRL_glioma_CTX",
  315. "CTRL_NSCC_262",
  316. "CTRL_NSCC_294",
  317. "CTRL_NSCC_949_20") ~ "Control cerebral cortex",
  318. as.character(orig.ident) %in% c("MS_NAWM_2_CTX", "MS_NAWM_CTX") ~ "MS NAWM",
  319. as.character(orig.ident) %in% c("MS_patients_Mix_Gender_CTX", "MS_WM_active") ~ "MS active lesion",
  320. as.character(orig.ident) %in% c("MS_WM_core") ~ "MS inactive core",
  321. as.character(orig.ident) %in% c("MS_WM_Rim") ~ "MS lesion rim"),
  322. Cluster = factor(as.character(relabelled_clusters), levels = as.character(1:149))
  323. ) %>%
  324. filter(!is.na(Context)) %>% # drop unmapped samples
  325. mutate(
  326. Context = factor(Context,
  327. levels = c("Control cerebral cortex", "MS NAWM", "MS lesion rim", "MS active lesion",
  328. "MS inactive core"))
  329. ) %>%
  330. select(Cluster, Context)
  331. P_Human_MS_stagewise_clusters_prop <- ggplot(df_plot_MS,
  332. aes(x = Context, fill = Cluster)) +
  333. geom_bar(position = position_fill(reverse = FALSE), # set TRUE if you want 149 at bottom
  334. color = "black", linewidth = 0.1) +
  335. geom_hline(yintercept = 0.5, linetype = "dashed", color = "black", linewidth = 0.4) +
  336. scale_fill_manual(values = pal, drop = FALSE, guide = "none") +
  337. scale_y_continuous(breaks = c(0, 0.5, 1), labels = c("0.0", "0.5", "1.0")) +
  338. labs(x = "Context", y = "Proportion") +
  339. theme(
  340. panel.grid = element_blank(),
  341. panel.background = element_blank(),
  342. axis.text.x = element_text(size = 8, angle = 45, hjust = 1),
  343. axis.ticks.x = element_blank(),
  344. legend.position = "none",
  345. plot.margin = margin(5, 5, 20, 8)
  346. )
  347. P_Human_MS_stagewise_clusters_prop
  348. ##Source data
  349. df <- df_plot_MS
  350. counts_per_context <- df %>%
  351. count(Context, Cluster, name = "Count") %>%
  352. tidyr::pivot_wider(
  353. names_from = Cluster,
  354. values_from = Count,
  355. values_fill = 0
  356. )
  357. counts_per_context
  358. write_csv(counts_per_context, "Supp_table_6_MS_stage_wise_microglia_clusters.csv")
  359. ###Hypergeometric test
  360. df <- df_plot_MS
  361. # Total number of cells
  362. N <- nrow(df)
  363. # Total number of cells per context (K)
  364. context_sizes <- df %>%
  365. group_by(Context) %>%
  366. summarise(K = n(), .groups = "drop")
  367. # Total number of cells per cluster (n)
  368. cluster_sizes <- df %>%
  369. group_by(Cluster) %>%
  370. summarise(n = n(), .groups = "drop")
  371. # Number of cells in each Cluster × Context combo (k)
  372. cross_counts <- df %>%
  373. group_by(Cluster, Context) %>%
  374. summarise(k = n(), .groups = "drop")
  375. # Merge all
  376. hyper_df <- cross_counts %>%
  377. left_join(cluster_sizes, by = "Cluster") %>%
  378. left_join(context_sizes, by = "Context") %>%
  379. mutate(
  380. N = N,
  381. # Hypergeometric test: overrepresentation
  382. pval = phyper(k - 1, K, N - K, n, lower.tail = FALSE),
  383. enrichment = (k / n) / (K / N), # fold enrichment
  384. perc_in_cluster = 100 * (k / n),
  385. perc_in_context = 100 * (k / K)
  386. ) %>%
  387. arrange(pval) %>%
  388. mutate(p_adj = p.adjust(pval, method = "fdr")) # FDR correction
  389. write_csv(hyper_df, "Supp_table_6_MS_stage_wise_microglia_clusters_hyper_test.csv")
  390. ###Ext Data Fig. 3#####
  391. Myeloid_top_20 <- read_csv("markers_human_myeloid_cells_clusterwise_top20.csv")
  392. Myeloid_obj <- subset(Human_immune, subset = Subclass_label_final %in% c("Microglia", "CAM", "MDM"))
  393. pseudobulk <- AverageExpression(Myeloid_obj, group.by = "relabelled_clusters", assays = "RNA", slot = "data")$RNA
  394. dim(pseudobulk)
  395. head(colnames(pseudobulk))
  396. # Select top 10 DE genes per cluster
  397. top10 <- Myeloid_top_20 %>% filter(p_val_adj < 0.05) %>%
  398. group_by(cluster) %>%
  399. slice_max(avg_log2FC, n = 10) %>%
  400. ungroup()
  401. selected_genes <- unique(top10$gene)
  402. # Subset matrix and convert to numeric
  403. pseudobulk_top <- pseudobulk[selected_genes, ]
  404. pseudobulk_top <- as.matrix(pseudobulk_top) # ensure it's numeric matrix
  405. pseudobulk_scaled <- t(scale(t(pseudobulk_top))) # Z-score per gene
  406. corr_mat <- cor(pseudobulk_scaled, method = "pearson")
  407. library(pheatmap)
  408. colnames(corr_mat) <- gsub("^g", "", colnames(corr_mat))
  409. rownames(corr_mat) <- gsub("^g", "", rownames(corr_mat))
  410. pheatmap(
  411. corr_mat,
  412. color = colorRampPalette(c("blue", "white", "red"))(100),
  413. breaks = seq(-1, 1, length.out = 101),
  414. main = "Cluster Correlation (Z-scored pseudobulk)",
  415. clustering_method = "complete",
  416. show_rownames = T,
  417. show_colnames = T
  418. )
  419. ###Ext Data Fig 4A###
  420. microglia_control_v_disease <- read_csv("Microglia_Human_control_vs_disease_DE_genes.csv")
  421. microglia_control_v_disease <- microglia_control_v_disease %>%
  422. rename(
  423. gene = ...1
  424. )
  425. EnhancedVolcano(microglia_control_v_disease,
  426. lab = microglia_control_v_disease$gene,
  427. x = 'avg_log2FC',
  428. y = 'p_val_adj',
  429. selectLab = c('FKBP5','CX3CR1',"MYO1E","CEBPD","SPP1","P2RY12",'TBC1D16',"DPP10","ZBTB16",'ACSL1','PRKCH',"PADI2","SLC2A5","RASGEF1C","NHSL1"),
  430. pCutoff = 0.05,
  431. FCcutoff = 0.7,
  432. xlim = c(-2, 2),
  433. ylim = c(0, 320),
  434. pointSize = 2,
  435. labSize = 4,
  436. colAlpha = 1,
  437. col = c('grey70', 'grey70', 'royalblue3', 'red3'),
  438. drawConnectors = TRUE,
  439. widthConnectors = 0.6,
  440. boxedLabels = TRUE,
  441. title = 'Disease vs Control Microglia',
  442. subtitle = bquote('Total =' ~ .(nrow(microglia_control_v_disease)) ~ 'genes'),
  443. legendPosition = 'none',
  444. caption = NULL
  445. )

Ext_data_fig_2_and_3_4_plotting_and_stats.R, under CC-BY-4.0 · at the source

Overview

Authors: Chintan Chhatbar1, Roman Sankowski1,2, Michael Schulz1, Takashi Shimizu1, Marius Schwabenland1, Ori Staszewski1,3, Christian Scheiwe4, Stefan Nessler5, Katharina Borst1, Anaelle Aurelie Dumas1, Ella Trost1, Daniel Berchtold6, Wesley Brandão7, Omar Mossad1,8, Adrià Dalmau Gasull1,8, Maximilian Frosch1, Daniel Erny1, Martin Diebold1, Elena Guffart1, Katharina Ternka9
and 35 other authorsMihaela Guranda5, Janaki Manoja Vinnakota8,10, Marina Friesen8,11,12, Koliane Ouk13, Inken Waltl14, Michael LaMorte15, Timothy R Hammond15, Giovanni Di Liberto16,17, Ilena Vincenti16, Mario Kreutzfeldt16, Ibrahim T Mughrabi18, Yousef Al-Abed18,19, Thomas Blank1, Melanie Meyer-Luehmann11,12, Yanick J Crow20,21, Nellwyn Hagen15, Dimitry Ofengeim15, Robert Zeiser10,22,23, Matthias Kettwig9, Jutta Gärtner9,24, Andreas Meisel6,25,26, Martin Schwemmle27, Ulrich Kalinke14,28, Jürgen Beck4, Bertram Bengsch22,23,29, Robert Thimme29, Oleg Butovsky7,30, Tamara Seredenina31, Richard M Ransohoff32, Francisco J Quintana7,33, Katrin Kierdorf1,34, Doron Merkler16,35, Christine Stadelmann5,24, Josef Priller13,36,37, Marco Prinz1,23
37 affiliations
  1. Institute of Neuropathology, Medical Faculty, University of Freiburg, Freiburg, Germany
  2. Single-Cell Omics Platform Freiburg, Faculty of Medicine, University of Freiburg, Freiburg, Germany
  3. Present Address: Institute for Neuropathology, Saarland University Hospital and Medical Faculty of Saarland University, Homburg, Germany
  4. Clinic for Neurosurgery, Faculty of Medicine, University of Freiburg, Freiburg, Germany
  5. Department of Neuropathology, University Medical Center Göttingen, Göttingen, Germany
  6. Department of Neurology with Experimental Neurology, Charité - Universitätsmedizin Berlin, Berlin, Germany
  7. Ann Romney Center for Neurologic Diseases, Brigham and Women’s Hospital, Harvard Medical School, Boston, MA USA
  8. Faculty of Biology, University of Freiburg, Freiburg, Germany
  9. Department of Pediatrics and Adolescent Medicine, Division of Pediatric Neurology, University Medical Center Göttingen, Georg August University, Göttingen, Germany
  10. Department of Medicine I - Medical centre - University of Freiburg, Faculty of Medicine, University of Freiburg, Freiburg, Germany
  11. Department of Neurology and Clinical Neuroscience, Medical Center – University of Freiburg, Freiburg, Germany
  12. Faculty of Medicine, University of Freiburg, Freiburg, Germany
  13. Neuropsychiatry and Laboratory of Molecular Psychiatry, Charité – Universitätsmedizin Berlin and DZNE, Berlin, Germany
  14. Institute for Experimental Infection Research, TWINCORE, Centre for Experimental and Clinical Infection Research, Hannover, Germany
  15. Sanofi Neurology Research, Cambridge, MA USA
  16. Department of Pathology and Immunology, University of Geneva, Geneva, Switzerland
  17. Department of Clinical Neurosciences, Service of Neurology, Lausanne University Hospital and University of Lausanne, Lausanne, Switzerland
  18. Institute of Bioelectronic Medicine, Feinstein Institutes for Medical Research, Northwell Health, Manhasset, NY USA
  19. Department of Molecular Medicine, Donald and Barbara Zucker School of Medicine at Hofstra/Northwell, Hempstead, NY USA
  20. MRC Human Genetics Unit, Institute of Genetics and Cancer, University of Edinburgh, Edinburgh, UK
  21. Laboratory of Neurogenetics and Neuroinflammation, Institut Imagine, University of Paris, Paris, France
  22. German Cancer Consortium (DKTK), partner site Freiburg, German Cancer Research Center (DKFZ), Heidelberg, Germany
  23. Signalling Research Centres BIOSS and CIBSS, University of Freiburg, Freiburg, Germany
  24. German Center for Child and Adolescent Health (DZKJ), partner site Göttingen, Göttingen, Germany
  25. Center for Stroke Research Berlin, Charité - Universitätsmedizin Berlin, Berlin, Germany
  26. Neuroscience Clinical Research Center, Charité - Universitätsmedizin Berlin, Berlin, Germany
  27. Institute of Virology, Medical Faculty, University of Freiburg, Freiburg, Germany
  28. Centre for Systems Neuroscience (ZSN), Hannover, Germany and Cluster of Excellence RESIST (EXC 2155), Hannover Medical School, Hannover, Germany
  29. Faculty of Medicine, Clinic for Internal Medicine II, Gastroenterology, Hepatology, Endocrinology and Infectious Disease, University Medical Center Freiburg, Freiburg, Germany
  30. Gene Lay Institute of Immunology and Inflammation, Brigham and Women’s Hospital, Mass General Hospital and Harvard Medical School, Boston, MA USA
  31. AC Immune, Lausanne, Switzerland
  32. Third Rock Ventures, Boston, MA USA
  33. Broad Institute of MIT and Harvard, Cambridge, MA USA
  34. Centre for Integrative Biological Signalling Studies, University of Freiburg, Freiburg, Germany
  35. Division of Clinical Pathology, Geneva University Hospital, Geneva, Switzerland
  36. Department of Psychiatry and Psychotherapy, School of Medicine and Health, Technical University of Munich and DZPG, Munich, Germany
  37. University of Edinburgh and UK DRI, Edinburgh, UK
Journal: Nature immunology, volume 27, issue 5, pages 1066-1080
Dates: received 28 November 2025; accepted 18 February 2026; published online 25 March 2026; in print 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1038/s41590-026-02472-z · PMID 41882205 · PMCID PMC7618987 · OpenAlex W7140304588
Open access: hybrid, a free copy (OpenAlex)
Status: code verified (how the code is found and verified)
Categories: genetics / omics (modality), human (organism), mouse (organism), cellular / molecular (subfield)
Methods: Connectivity, Statistics, Smoothing, state filtering, decompositions, Preprocessing, Machine learning
Keywords: Innate immune cells, Neuroimmunology, Microglial cells
MeSH: Brain Diseases*, Microglia*, Transcriptome*, Animals, Brain, Disease Models, Animal, Humans, Mice, Signal Transduction, Single-Cell Analysis, Single-Cell Gene Expression Analysis, Spatial Transcriptomics (* major topic)
Topic: Neuroinflammation and Neurodegeneration Mechanisms (Neurology, Neuroscience), according to OpenAlex
Funding: Swiss National Science Foundation (310030, 201271); European Research Council (101094168, 865026, 786142); Medical Research Council (MC_UU_00035/11)
Citations: cited by 15 papers (Europe PMC); 79 references in the paper

Abstract

Single-cell studies have revealed substantial microglial diversity in development, homeostasis and disease. However, a framework enabling comparison and stratification of microglial states across contexts is needed. Here we generated an atlas of myeloid cell states by single-cell RNA sequencing more than one million central nervous system cells from more than 30 physiological and pathological conditions. This atlas enables us to establish a comprehensive taxonomy of myeloid cell states across brain disorders and related mouse models, comprising 27 superclusters and 192 clusters that are prevalent across diseases and largely conserved. We augment this taxonomic framework with spatial transcriptomics to map how immune cell states are organized within tissue and interact with their local cellular environment. Using in vivo perturbations, we also show that activation-associated microglial states are dependent on interferon and colony-stimulating factor 1 receptor signaling. Together, these findings provide a spatially aware taxonomic framework for central nervous system immune cells in health and disease.

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

Zenodo 16938034

License: CC-BY-4.0
State: the link answers, verified on 30 September 2026
Evidence: files inventoried
Languages: R (15)
Size: 29 files, 15 scripts
Software Heritage: not checked
Found in: “Code availability”
Not found: README, license file, CITATION.cff, environment file, tests, continuous integration, documentation
Tools: Seurat (14 files), tidyverse (14 files), ggplot2 (12 files), igraph (12 files), pheatmap (11 files), data.table (10 files), patchwork (10 files), broom (8 files), lme4 (8 files), cowplot (1 file), reticulate (1 file)
Availability: 1 check, the latest on 30 September 2026: the link answers (HTTP 200)
  • 30 September 2026: the link answers (HTTP 200)
15 files
At the source:

Code availability

Analysis code used to reproduce the figures is available in Zenodo (10.5281/zenodo.16938034)79.

Reproduced under the paper's license (CC BY), from the paper cited above.

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;
  • 15 scripts, each with its path and the digest of its content;
  • 26 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 Availability Statement

Human raw sequencing data files are restricted and can be accessed at the European Genome–phenome Archive under accession code EGAS50000001289 (https://ega-archive.org/studies/EGAS50000001289). Mouse raw sequencing data are available in the NCBI Gene Expression Omnibus under accession code GSE304010 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?&acc=GSE304010). Processed Seurat objects and the code to reproduce figures are deposited in Zenodo (10.5281/zenodo.16938034)79. Source data are provided with this paper.

Analysis code used to reproduce the figures is available in Zenodo (10.5281/zenodo.16938034)79.

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, 30 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 55 authors, 3 keywords, 12 MeSH terms, 3 funders, 78 references.

Cite

This paper

Chhatbar, C., Sankowski, R., Schulz, M., Shimizu, T., Schwabenland, M., Staszewski, O., Scheiwe, C., Nessler, S., Borst, K., Dumas, A. A., Trost, E., Berchtold, D., Brandão, W., Mossad, O., Dalmau Gasull, A., Frosch, M., Erny, D., Diebold, M., Guffart, E., . . . Prinz, M. (2026). A transcriptomic microglia taxonomy across mouse and human pathologies. Nature immunology, 27(5), 1066-1080. https://doi.org/10.1038/s41590-026-02472-z

BibTeX

@article{chhatbar2026transcriptomic,
author = {Chhatbar, Chintan and Sankowski, Roman and Schulz, Michael and Shimizu, Takashi and Schwabenland, Marius and Staszewski, Ori and Scheiwe, Christian and Nessler, Stefan and Borst, Katharina and Dumas, Anaelle Aurelie and Trost, Ella and Berchtold, Daniel and Brandão, Wesley and Mossad, Omar and Dalmau Gasull, Adrià and Frosch, Maximilian and Erny, Daniel and Diebold, Martin and Guffart, Elena and Ternka, Katharina and Guranda, Mihaela and Vinnakota, Janaki Manoja and Friesen, Marina and Ouk, Koliane and Waltl, Inken and LaMorte, Michael and Hammond, Timothy R and Di Liberto, Giovanni and Vincenti, Ilena and Kreutzfeldt, Mario and Mughrabi, Ibrahim T and Al-Abed, Yousef and Blank, Thomas and Meyer-Luehmann, Melanie and Crow, Yanick J and Hagen, Nellwyn and Ofengeim, Dimitry and Zeiser, Robert and Kettwig, Matthias and Gärtner, Jutta and Meisel, Andreas and Schwemmle, Martin and Kalinke, Ulrich and Beck, Jürgen and Bengsch, Bertram and Thimme, Robert and Butovsky, Oleg and Seredenina, Tamara and Ransohoff, Richard M and Quintana, Francisco J and Kierdorf, Katrin and Merkler, Doron and Stadelmann, Christine and Priller, Josef and Prinz, Marco},
title = {{A transcriptomic microglia taxonomy across mouse and human pathologies}},
journal = {Nature immunology},
year = {2026},
month = mar,
volume = {27},
number = {5},
pages = {1066--1080},
publisher = {Nature Portfolio},
issn = {1529-2908},
doi = {10.1038/s41590-026-02472-z},
url = {https://doi.org/10.1038/s41590-026-02472-z},
pmid = {41882205},
pmcid = {PMC7618987}
}

RIS

TY - JOUR
AU - Chhatbar, Chintan
AU - Sankowski, Roman
AU - Schulz, Michael
AU - Shimizu, Takashi
AU - Schwabenland, Marius
AU - Staszewski, Ori
AU - Scheiwe, Christian
AU - Nessler, Stefan
AU - Borst, Katharina
AU - Dumas, Anaelle Aurelie
AU - Trost, Ella
AU - Berchtold, Daniel
AU - Brandão, Wesley
AU - Mossad, Omar
AU - Dalmau Gasull, Adrià
AU - Frosch, Maximilian
AU - Erny, Daniel
AU - Diebold, Martin
AU - Guffart, Elena
AU - Ternka, Katharina
AU - Guranda, Mihaela
AU - Vinnakota, Janaki Manoja
AU - Friesen, Marina
AU - Ouk, Koliane
AU - Waltl, Inken
AU - LaMorte, Michael
AU - Hammond, Timothy R
AU - Di Liberto, Giovanni
AU - Vincenti, Ilena
AU - Kreutzfeldt, Mario
AU - Mughrabi, Ibrahim T
AU - Al-Abed, Yousef
AU - Blank, Thomas
AU - Meyer-Luehmann, Melanie
AU - Crow, Yanick J
AU - Hagen, Nellwyn
AU - Ofengeim, Dimitry
AU - Zeiser, Robert
AU - Kettwig, Matthias
AU - Gärtner, Jutta
AU - Meisel, Andreas
AU - Schwemmle, Martin
AU - Kalinke, Ulrich
AU - Beck, Jürgen
AU - Bengsch, Bertram
AU - Thimme, Robert
AU - Butovsky, Oleg
AU - Seredenina, Tamara
AU - Ransohoff, Richard M
AU - Quintana, Francisco J
AU - Kierdorf, Katrin
AU - Merkler, Doron
AU - Stadelmann, Christine
AU - Priller, Josef
AU - Prinz, Marco
TI - A transcriptomic microglia taxonomy across mouse and human pathologies
T2 - Nature immunology
J2 - Nat Immunol
PY - 2026
DA - 2026/03/25
VL - 27
IS - 5
SP - 1066
EP - 1080
SN - 1529-2908
PB - Nature Portfolio
DO - 10.1038/s41590-026-02472-z
UR - https://doi.org/10.1038/s41590-026-02472-z
LA - en
ER -

CSL-JSON

{
"id": "10.1038/s41590-026-02472-z",
"type": "article-journal",
"title": "A transcriptomic microglia taxonomy across mouse and human pathologies",
"container-title": "Nature immunology",
"author": [
{
"family": "Chhatbar",
"given": "Chintan"
},
{
"family": "Sankowski",
"given": "Roman"
},
{
"family": "Schulz",
"given": "Michael"
},
{
"family": "Shimizu",
"given": "Takashi"
},
{
"family": "Schwabenland",
"given": "Marius"
},
{
"family": "Staszewski",
"given": "Ori"
},
{
"family": "Scheiwe",
"given": "Christian"
},
{
"family": "Nessler",
"given": "Stefan"
},
{
"family": "Borst",
"given": "Katharina"
},
{
"family": "Dumas",
"given": "Anaelle Aurelie"
},
{
"family": "Trost",
"given": "Ella"
},
{
"family": "Berchtold",
"given": "Daniel"
},
{
"family": "Brandão",
"given": "Wesley"
},
{
"family": "Mossad",
"given": "Omar"
},
{
"family": "Dalmau Gasull",
"given": "Adrià"
},
{
"family": "Frosch",
"given": "Maximilian"
},
{
"family": "Erny",
"given": "Daniel"
},
{
"family": "Diebold",
"given": "Martin"
},
{
"family": "Guffart",
"given": "Elena"
},
{
"family": "Ternka",
"given": "Katharina"
},
{
"family": "Guranda",
"given": "Mihaela"
},
{
"family": "Vinnakota",
"given": "Janaki Manoja"
},
{
"family": "Friesen",
"given": "Marina"
},
{
"family": "Ouk",
"given": "Koliane"
},
{
"family": "Waltl",
"given": "Inken"
},
{
"family": "LaMorte",
"given": "Michael"
},
{
"family": "Hammond",
"given": "Timothy R"
},
{
"family": "Di Liberto",
"given": "Giovanni"
},
{
"family": "Vincenti",
"given": "Ilena"
},
{
"family": "Kreutzfeldt",
"given": "Mario"
},
{
"family": "Mughrabi",
"given": "Ibrahim T"
},
{
"family": "Al-Abed",
"given": "Yousef"
},
{
"family": "Blank",
"given": "Thomas"
},
{
"family": "Meyer-Luehmann",
"given": "Melanie"
},
{
"family": "Crow",
"given": "Yanick J"
},
{
"family": "Hagen",
"given": "Nellwyn"
},
{
"family": "Ofengeim",
"given": "Dimitry"
},
{
"family": "Zeiser",
"given": "Robert"
},
{
"family": "Kettwig",
"given": "Matthias"
},
{
"family": "Gärtner",
"given": "Jutta"
},
{
"family": "Meisel",
"given": "Andreas"
},
{
"family": "Schwemmle",
"given": "Martin"
},
{
"family": "Kalinke",
"given": "Ulrich"
},
{
"family": "Beck",
"given": "Jürgen"
},
{
"family": "Bengsch",
"given": "Bertram"
},
{
"family": "Thimme",
"given": "Robert"
},
{
"family": "Butovsky",
"given": "Oleg"
},
{
"family": "Seredenina",
"given": "Tamara"
},
{
"family": "Ransohoff",
"given": "Richard M"
},
{
"family": "Quintana",
"given": "Francisco J"
},
{
"family": "Kierdorf",
"given": "Katrin"
},
{
"family": "Merkler",
"given": "Doron"
},
{
"family": "Stadelmann",
"given": "Christine"
},
{
"family": "Priller",
"given": "Josef"
},
{
"family": "Prinz",
"given": "Marco"
}
],
"container-title-short": "Nat Immunol",
"volume": "27",
"issue": "5",
"page": "1066-1080",
"DOI": "10.1038/s41590-026-02472-z",
"PMID": "41882205",
"PMCID": "PMC7618987",
"ISSN": "1529-2908",
"publisher": "Nature Portfolio",
"URL": "https://doi.org/10.1038/s41590-026-02472-z",
"language": "en",
"issued": {
"date-parts": [
[
2026,
3,
25
]
]
}
}

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/s41591-023-02673-1 [code]
Multiomic spatial landscape of innate immune cells at human central nervous system borders.
Journal: Nature medicine
In common: uniprot.org/uniprot/p2ry12, genetics / omics, cellular / molecular, 15 references, 6 authors
[2] doi:10.1038/s41586-025-09477-y
Microglia-neuron crosstalk through Hex-GM2-MGL2 maintains brain homeostasis.
Journal: Nature
In common: genetics / omics, mouse, cellular / molecular, 10 references, 6 authors
[3] doi:10.1038/s41590-026-02457-y [code]
Distinct origins and niches determine the cellular responsiveness of CNS macrophages after repopulation.
Journal: Nature immunology
In common: mouse, cellular / molecular, 10 references, 4 authors
[4] doi:10.3390/cancers14194915 [code]
Transcriptome Analysis Identifies Accumulation of Natural Killer Cells with Enhanced Lymphotoxin-β Expression during Glioblastoma Progression.
Journal: Cancers
In common: Seurat, ggplot2, genetics / omics, mouse, cellular / molecular, 4 references, 4 authors
[5] doi:10.1038/s41467-024-53217-1 [code]
Interaction between subventricular zone microglia and neural stem cells impacts the neurogenic response in a mouse model of cortical ischemic stroke.
Journal: Nature communications
In common: Seurat, patchwork, cowplot, 2 other tools, mouse, 10 references, 2 authors
[6] 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 neuroscience
In common: reticulate, igraph, pheatmap, 6 other tools, uniprot.org/uniprot/p2ry12, cellular / molecular, 7 references
[7] doi:10.1038/s41467-023-38373-0
Neonatal immune challenge poses a sex-specific risk for epigenetic microglial reprogramming and behavioral impairment.
Journal: Nature communications
In common: mouse, 4 references, 3 authors
[8] doi:10.1038/s41593-026-02267-3 [code]
Spatial proteomic analysis in human Alzheimer's disease brains enables identification of microenvironment-dependent microglial cell states.
Journal: Nature neuroscience
In common: reticulate, igraph, Seurat, genetics / omics, cellular / molecular, 12 references
[9] doi:10.1016/j.isci.2024.111337 [code]
Multimodal single-cell profiling reveals neuronal vulnerability and pathological cell states in focal cortical dysplasia.
Journal: iScience
In common: broom, pheatmap, Seurat, 5 other tools, genetics / omics, 10 references
[10] doi:10.1038/s41591-024-03150-z [code]
A brain cell atlas integrating single-cell transcriptomes across human brain regions.
Journal: Nature medicine
In common: reticulate, igraph, pheatmap, 6 other tools, genetics / omics, mouse, 8 references

Contribute

The authors of this paper can claim it, correct its record and validate its tracing map, and the maintainers of its code (its owner, or a public member of its organization) correct what it says of their repository; anyone signed in can ask for its removal. Every request goes to OSCR's own machine, which answers it; your account page follows them.

Sign in with ORCID to claim this paper as one of its authors, correct its record or validate its tracing map: when the paper's metadata lists your ORCID iD, you are recognized at once. Maintainers of its code: sign in with GitHub, then claim the repository on your account page.

Add the badge to the code's README

OSCR: the badge of this paper

If you are an author or a maintainer of this paper's code, you can add this badge. It says what OSCR knows of the paper (its code, its validated tracing map) and links the code to this page. Paste one of these snippets under the README's title. Keep the two marks around it, so that the badge can be replaced in place and is never added twice. OSCR changes nothing in your repository.

Markdown
<!-- oscr-badge:start -->
[![OSCR](https://openscicode.org/badge/doi/10.1038/s41590-026-02472-z.svg)](https://openscicode.org/badge/doi/10.1038/s41590-026-02472-z)
<!-- oscr-badge:end -->
reStructuredText
.. oscr-badge:start

.. image:: https://openscicode.org/badge/doi/10.1038/s41590-026-02472-z.svg
   :target: https://openscicode.org/badge/doi/10.1038/s41590-026-02472-z
   :alt: OSCR

.. oscr-badge:end
HTML
<!-- oscr-badge:start -->
<a href="https://openscicode.org/badge/doi/10.1038/s41590-026-02472-z"><img src="https://openscicode.org/badge/doi/10.1038/s41590-026-02472-z.svg" alt="OSCR"></a>
<!-- oscr-badge:end -->

If you choose to, you can have the badge kept up to date for you, with oscr badge --write from the command line or with the GitHub Action in your repository's workflows. Every other form and option (a card, AsciiDoc, LaTeX, shields.io) is on the badge 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: code errors and mismatches between the code and the paper about this paper and its code, from readers and its authors, beside the paper and its tracing map.

Report a mismatch between the code and the paper · Report a code error (signed in)

Reproductions: reports from readers who ran the authors' code and did not get the paper's result, what they ran, with which environment, commit and data.

Report a reproduction failure (signed in)

Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.