A transcriptomic microglia taxonomy across mouse and human pathologies.
The 26 matches
- [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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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
- library(Seurat)
- library(ggplot2)
- library(purrr)
- library(scrattch.vis)
- library(scrattch.hicat)
- library(Matrix)
- library(dplyr)
- library(tidyr)
- library(parallel)
- library(bigstatsr)
- library(data.table)
- library(arrow)
- library(BiocNeighbors)
- library(ggraph)
- library(igraph)
- library(tidyverse)
- library(ggnewscale)
- library(ggrepel)
- library(patchwork)
- library(grid)
- library(pheatmap)
- library(RColorBrewer)
- library(dplyr)
- library(readr)
- library(ggplot2)
- library(EnhancedVolcano)
- Human_immune <- readRDS("Human_Myeloid_atlas_v1.RDS")
- ###Ext Data Fig. 2A and 2B####
- ###colors for cell types
- subclass_color_df <- [email hidden] %>%
- count(Subclass_label_final, Subclass_color) %>%
- group_by(Subclass_label_final) %>%
- slice_max(n, with_ties = FALSE) %>%
- ungroup()
- subclass_color_map <- setNames(subclass_color_df$Subclass_color, subclass_color_df$Subclass_label_final)
- DimPlot(Human_immune, group.by = "Subclass_label_final", cols = subclass_color_map)
- DimPlot(Human_immune, group.by = "Final_Sex")
- ###Ext Data Fig. 2C and statistics####
- Human_meta <- [email hidden]
- Context_order <- c(
- "Controls", "AD_early", "AD_late", "PD", "HD", "ALS", "AGS",
- "Hippocampal_Sclerosis", "FCD", "MS_NAWM", "MS lesion",
- "Oligodendroglioma 3", "Astrocytoma 4", "GBM", "GBM recurrence",
- "Metastasis (lung)", "Fetal brain")
- P_immune_cells_Prop_meta <- Human_meta %>%
- mutate(
- Cluster = factor(Subclass_label_final, levels = names(subclass_color_map)),
- Context = factor(Context_stagewise_Controls_merged, levels = Context_order)
- ) %>%
- select(Cluster, Context)
- P_immune_cells_Prop <- ggplot(P_immune_cells_Prop_meta,
- aes(x = Context, fill = Cluster)) +
- geom_bar(position = "fill", color = "black", linewidth = 0.1) +
- geom_hline(yintercept = 0.5, linetype = "dashed", color = "black", linewidth = 0.4) +
- scale_fill_manual(values = subclass_color_map, drop = FALSE,
- guide = guide_legend(ncol = 1, title = "Immune Cell Type")) +
- scale_y_continuous(breaks = c(0, 0.5, 1), labels = c("0.0", "0.5", "1.0")) +
- labs(x = "Context", y = "Proportion of Immune Cells") +
- theme_minimal(base_size = 11) +
- theme(
- aspect.ratio = 0.5, # Adjust if needed
- panel.grid = element_blank(),
- axis.text.x = element_text(angle = 90, hjust = 1, size = 8),
- axis.text.y = element_text(size = 6),
- axis.ticks.y = element_blank(),
- legend.position = "right"
- )
- print(P_immune_cells_Prop)
- df <- P_immune_cells_Prop_meta
- # Total number of cells
- N <- nrow(df)
- # Total number of cells per context (K)
- context_sizes <- df %>%
- group_by(Context) %>%
- summarise(K = n(), .groups = "drop")
- # Total number of cells per cluster (n)
- cluster_sizes <- df %>%
- group_by(Cluster) %>%
- summarise(n = n(), .groups = "drop")
- # Number of cells in each Cluster × Context combo (k)
- cross_counts <- df %>%
- group_by(Cluster, Context) %>%
- summarise(k = n(), .groups = "drop")
- # Merge all
- hyper_df <- cross_counts %>%
- left_join(cluster_sizes, by = "Cluster") %>%
- left_join(context_sizes, by = "Context") %>%
- mutate(
- N = N,
- # Hypergeometric test: overrepresentation
- pval = phyper(k - 1, K, N - K, n, lower.tail = FALSE),
- enrichment = (k / n) / (K / N), # fold enrichment
- perc_in_cluster = 100 * (k / n),
- perc_in_context = 100 * (k / K)
- ) %>%
- arrange(pval) %>%
- mutate(p_adj = p.adjust(pval, method = "fdr")) # FDR correction
- write_csv(hyper_df, "Supp_file_2_Hyper_test_Human_immune_cells.csv")
- ###Ext Data 2D Dot plot#####
- markers_genes <- c("P2RY12", "CX3CR1", "SALL1", "SELENOP", "FOLR2", "COLEC12",
- "F13A1", "TGFBI", "XCR1", "CLEC9A", "C1orf54", "IDO1", "ENPP1", "CLEC10A", "IL1R2", "AREG", "RHEX", "BCL11A",
- "SPIB", "IGKC", "IGHG1", "NKG7", "GNLY", "KLRF1", "SKAP1", "THEMIS", "IL7R", "CD8B", "CCL5",
- "IL32", "LEF1", "MAL", "RTKN2", "FOXP3", "SLC4A10", "IL23R")
- Idents(Human_immune) <- Human_immune$Subclass_label_final
- DotPlot(Human_immune, features = markers_genes, dot.min = 0.05, col.min = 0, col.max = 2, dot.scale = 4) + RotatedAxis()
- #######Dot plot DC marker genes####
- markers_genes_DC <- c("P2RY12", "CX3CR1", "SALL1", "SELENOP", "FOLR2", "COLEC12",
- "F13A1", "TGFBI", "XCR1", "CLEC9A", "C1orf54", "IDO1", "ENPP1", "CLEC10A", "IL1R2", "AREG", "RHEX", "BCL11A",
- "SPIB")
- Idents(Human_immune) <- Human_immune$Subclass_label_final
- DotPlot(Human_immune, features = markers_genes_DC, dot.min = 0.05,
- idents = c("Microglia", "CAM", "MDM", "cDC1", "cDC2", "pDC"),
- col.min = 0, col.max = 2, dot.scale = 6) + RotatedAxis()
- ##Ext Data 2E Bar graph and statistics#####
- # Extract palette (original labels)
- Human_microglia <- subset(Human_immune, subset = Subclass_label_final == "Microglia")
- pal_tbl <- unique([email hidden][, c("Module_label", "Module_color")])
- pal_vec <- setNames(as.character(pal_tbl$Module_color), as.character(pal_tbl$Module_label))
- # Define renaming for selected modules
- module_rename_map <- c(
- "Cytokine" = "Cytokine production",
- "MHC" = "Antigen presentation",
- "Inflammation" = "Inflammation",
- "Surveillance" = "Surveillance",
- "IFN" = "Interferon signature",
- "Neuroprotection" = "Neuroprotection",
- "Phagocytosis" = "Phagocytosis",
- "Proliferation" = "Proliferation"
- )
- # Rename palette keys where needed
- renamed_colors <- setNames(pal_vec[names(module_rename_map)], module_rename_map)
- unchanged_labels <- setdiff(names(pal_vec), names(module_rename_map))
- unchanged_colors <- pal_vec[unchanged_labels]
- pal_vec_combined <- c(renamed_colors, unchanged_colors)
- # Define context order for plotting
- Context_order <- c(
- "Controls", "AD_early", "AD_late", "PD", "HD", "ALS", "AGS",
- "Hippocampal_Sclerosis", "FCD", "MS_NAWM", "MS lesion",
- "Oligodendroglioma 3", "Astrocytoma 4", "GBM", "GBM recurrence",
- "Metastasis (lung)", "Fetal brain"
- )
- # Build plotting dataframe
- P_Supercluster_Prop_meta <- [email hidden] %>%
- mutate(
- # Clean up context labels
- Context_stagewise_Controls_merged = case_when(
- Context_stagewise_Controls_merged %in% c("MS_active", "MS_core", "MS_rim", "MS") ~ "MS lesion",
- Context_stagewise_Controls_merged == "Homeostasis" ~ "Controls",
- Context_stagewise_Controls_merged == "BMET (NSCLC)" ~ "Metastasis (lung)",
- TRUE ~ Context_stagewise_Controls_merged
- ),
- # Rename module labels selectively and keep the rest
- Cluster = recode(as.character(Module_label), !!!module_rename_map, .default = as.character(Module_label)),
- # Set factor order for modules: renamed + unchanged (reverse for plot stacking order)
- Cluster = factor(Cluster, levels = rev(unique(c(unname(module_rename_map), unchanged_labels)))),
- # Factor order for context
- Context = factor(Context_stagewise_Controls_merged, levels = Context_order)
- ) %>%
- select(Cluster, Context)
- # Generate the stacked bar plot
- P_Supercluster_Prop <- ggplot(P_Supercluster_Prop_meta,
- aes(x = Context, fill = Cluster)) +
- geom_bar(position = "fill", color = "black", linewidth = 0.1) +
- geom_hline(yintercept = 0.5, linetype = "dashed", color = "black", linewidth = 0.4) +
- scale_fill_manual(values = pal_vec_combined, drop = FALSE) +
- 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")) +
- labs(x = "Context", y = "Proportion of microglia module") +
- theme_minimal(base_size = 11) +
- theme(
- aspect.ratio = 0.5,
- panel.grid = element_blank(),
- axis.text.x = element_text(angle = 90, hjust = 1, size = 8),
- axis.text.y = element_text(size = 6),
- axis.ticks.y = element_blank(),
- legend.position = "right"
- )
- # Show the plot
- print(P_Supercluster_Prop)
- ##Source data
- df <- P_immune_cells_Prop_meta
- counts_per_context <- df %>%
- count(Context, Cluster, name = "Count") %>%
- tidyr::pivot_wider(
- names_from = Cluster,
- values_from = Count,
- values_fill = 0
- )
- counts_per_context
- write_csv(counts_per_context, "Supp_table_5_counts_per_context_microglia_superclusters.csv")
- ###Hypergeometric test
- df <- P_Supercluster_Prop_meta
- # Total number of cells
- N <- nrow(df)
- # Total number of cells per context (K)
- context_sizes <- df %>%
- group_by(Context) %>%
- summarise(K = n(), .groups = "drop")
- # Total number of cells per cluster (n)
- cluster_sizes <- df %>%
- group_by(Cluster) %>%
- summarise(n = n(), .groups = "drop")
- # Number of cells in each Cluster × Context combo (k)
- cross_counts <- df %>%
- group_by(Cluster, Context) %>%
- summarise(k = n(), .groups = "drop")
- # Merge all
- hyper_df <- cross_counts %>%
- left_join(cluster_sizes, by = "Cluster") %>%
- left_join(context_sizes, by = "Context") %>%
- mutate(
- N = N,
- # Hypergeometric test: overrepresentation
- pval = phyper(k - 1, K, N - K, n, lower.tail = FALSE),
- enrichment = (k / n) / (K / N), # fold enrichment
- perc_in_cluster = 100 * (k / n),
- perc_in_context = 100 * (k / K)
- ) %>%
- arrange(pval) %>%
- mutate(p_adj = p.adjust(pval, method = "fdr")) # FDR correction
- write_csv(hyper_df, "Supp_table_5_Hyper_test_microglia_superclusters.csv")
- ####Ext Data Fig. 2F####
- ###Sample wise comparison of individual disease and region with its matched controls
- ####AD
- cluster_colors_tbl <- read_csv("colors_human_data.csv")
- pal <- setNames(cluster_colors_tbl$color, as.character(cluster_colors_tbl$name))
- ####AD stage wise comparison######
- df_plot_AD <- [email hidden] %>%
- filter(relabelled_clusters %in% 1:149,
- Context_region %in% c("Homeostasis_Occipital_cortex",
- "AD_early_Occipital_cortex",
- "AD_late_Occipital_cortex",
- "Homeostasis_Hippocampus",
- "AD_early_Hippocampus",
- "AD_late_Hippocampus")) %>%
- mutate(
- Cluster = factor(as.character(relabelled_clusters),
- levels = as.character(1:149)),
- Context = factor(Context_region,
- levels = c("Homeostasis_Occipital_cortex",
- "AD_early_Occipital_cortex",
- "AD_late_Occipital_cortex",
- "Homeostasis_Hippocampus",
- "AD_early_Hippocampus",
- "AD_late_Hippocampus"))
- ) %>%
- select(Cluster, Context)
- P_Human_AD_stagewise_clusters_prop <- ggplot(df_plot_AD,
- aes(x = Context, fill = Cluster)) +
- geom_bar(position = position_fill(reverse = FALSE), # set TRUE if you want 149 at bottom
- color = "black", linewidth = 0.1) +
- geom_hline(yintercept = 0.5, linetype = "dashed", color = "black", linewidth = 0.4) +
- scale_fill_manual(values = pal, drop = FALSE, guide = "none") +
- scale_y_continuous(breaks = c(0, 0.5, 1), labels = c("0.0", "0.5", "1.0")) +
- labs(x = "Context", y = "Proportion") +
- theme(
- panel.grid = element_blank(),
- panel.background = element_blank(),
- axis.text.x = element_text(size = 8, angle = 45, hjust = 1),
- axis.ticks.x = element_blank(),
- legend.position = "none",
- plot.margin = margin(5, 5, 20, 8)
- )
- P_Human_AD_stagewise_clusters_prop
- ##Source data
- df <- df_plot_AD
- counts_per_context <- df %>%
- count(Context, Cluster, name = "Count") %>%
- tidyr::pivot_wider(
- names_from = Cluster,
- values_from = Count,
- values_fill = 0
- )
- counts_per_context
- write_csv(counts_per_context, "Supp_table_6_counts_AD_stage_wise_microglia_clusters.csv")
- ###Hypergeometric test
- df <- df_plot_AD
- # Total number of cells
- N <- nrow(df)
- # Total number of cells per context (K)
- context_sizes <- df %>%
- group_by(Context) %>%
- summarise(K = n(), .groups = "drop")
- # Total number of cells per cluster (n)
- cluster_sizes <- df %>%
- group_by(Cluster) %>%
- summarise(n = n(), .groups = "drop")
- # Number of cells in each Cluster × Context combo (k)
- cross_counts <- df %>%
- group_by(Cluster, Context) %>%
- summarise(k = n(), .groups = "drop")
- # Merge all
- hyper_df <- cross_counts %>%
- left_join(cluster_sizes, by = "Cluster") %>%
- left_join(context_sizes, by = "Context") %>%
- mutate(
- N = N,
- # Hypergeometric test: overrepresentation
- pval = phyper(k - 1, K, N - K, n, lower.tail = FALSE),
- enrichment = (k / n) / (K / N), # fold enrichment
- perc_in_cluster = 100 * (k / n),
- perc_in_context = 100 * (k / K)
- ) %>%
- arrange(pval) %>%
- mutate(p_adj = p.adjust(pval, method = "fdr")) # FDR correction
- write_csv(hyper_df, "Supp_table_6_counts_AD_stage_wise_microglia_clusters_hyper_test.csv")
- ####MS stage wise comparison######
- df_plot_MS <- [email hidden] %>%
- filter(relabelled_clusters %in% 1:149,
- Tissue_label %in% "Cerebral_cortex",
- str_detect(orig.ident, "CTRL|MS")) %>%
- mutate(
- Context = case_when(
- as.character(orig.ident) %in% c("CTRL_FCD_IIb_CTX",
- "CTRL_glioma_CTX",
- "CTRL_NSCC_262",
- "CTRL_NSCC_294",
- "CTRL_NSCC_949_20") ~ "Control cerebral cortex",
- as.character(orig.ident) %in% c("MS_NAWM_2_CTX", "MS_NAWM_CTX") ~ "MS NAWM",
- as.character(orig.ident) %in% c("MS_patients_Mix_Gender_CTX", "MS_WM_active") ~ "MS active lesion",
- as.character(orig.ident) %in% c("MS_WM_core") ~ "MS inactive core",
- as.character(orig.ident) %in% c("MS_WM_Rim") ~ "MS lesion rim"),
- Cluster = factor(as.character(relabelled_clusters), levels = as.character(1:149))
- ) %>%
- filter(!is.na(Context)) %>% # drop unmapped samples
- mutate(
- Context = factor(Context,
- levels = c("Control cerebral cortex", "MS NAWM", "MS lesion rim", "MS active lesion",
- "MS inactive core"))
- ) %>%
- select(Cluster, Context)
- P_Human_MS_stagewise_clusters_prop <- ggplot(df_plot_MS,
- aes(x = Context, fill = Cluster)) +
- geom_bar(position = position_fill(reverse = FALSE), # set TRUE if you want 149 at bottom
- color = "black", linewidth = 0.1) +
- geom_hline(yintercept = 0.5, linetype = "dashed", color = "black", linewidth = 0.4) +
- scale_fill_manual(values = pal, drop = FALSE, guide = "none") +
- scale_y_continuous(breaks = c(0, 0.5, 1), labels = c("0.0", "0.5", "1.0")) +
- labs(x = "Context", y = "Proportion") +
- theme(
- panel.grid = element_blank(),
- panel.background = element_blank(),
- axis.text.x = element_text(size = 8, angle = 45, hjust = 1),
- axis.ticks.x = element_blank(),
- legend.position = "none",
- plot.margin = margin(5, 5, 20, 8)
- )
- P_Human_MS_stagewise_clusters_prop
- ##Source data
- df <- df_plot_MS
- counts_per_context <- df %>%
- count(Context, Cluster, name = "Count") %>%
- tidyr::pivot_wider(
- names_from = Cluster,
- values_from = Count,
- values_fill = 0
- )
- counts_per_context
- write_csv(counts_per_context, "Supp_table_6_MS_stage_wise_microglia_clusters.csv")
- ###Hypergeometric test
- df <- df_plot_MS
- # Total number of cells
- N <- nrow(df)
- # Total number of cells per context (K)
- context_sizes <- df %>%
- group_by(Context) %>%
- summarise(K = n(), .groups = "drop")
- # Total number of cells per cluster (n)
- cluster_sizes <- df %>%
- group_by(Cluster) %>%
- summarise(n = n(), .groups = "drop")
- # Number of cells in each Cluster × Context combo (k)
- cross_counts <- df %>%
- group_by(Cluster, Context) %>%
- summarise(k = n(), .groups = "drop")
- # Merge all
- hyper_df <- cross_counts %>%
- left_join(cluster_sizes, by = "Cluster") %>%
- left_join(context_sizes, by = "Context") %>%
- mutate(
- N = N,
- # Hypergeometric test: overrepresentation
- pval = phyper(k - 1, K, N - K, n, lower.tail = FALSE),
- enrichment = (k / n) / (K / N), # fold enrichment
- perc_in_cluster = 100 * (k / n),
- perc_in_context = 100 * (k / K)
- ) %>%
- arrange(pval) %>%
- mutate(p_adj = p.adjust(pval, method = "fdr")) # FDR correction
- write_csv(hyper_df, "Supp_table_6_MS_stage_wise_microglia_clusters_hyper_test.csv")
- ###Ext Data Fig. 3#####
- Myeloid_top_20 <- read_csv("markers_human_myeloid_cells_clusterwise_top20.csv")
- Myeloid_obj <- subset(Human_immune, subset = Subclass_label_final %in% c("Microglia", "CAM", "MDM"))
- pseudobulk <- AverageExpression(Myeloid_obj, group.by = "relabelled_clusters", assays = "RNA", slot = "data")$RNA
- dim(pseudobulk)
- head(colnames(pseudobulk))
- # Select top 10 DE genes per cluster
- top10 <- Myeloid_top_20 %>% filter(p_val_adj < 0.05) %>%
- group_by(cluster) %>%
- slice_max(avg_log2FC, n = 10) %>%
- ungroup()
- selected_genes <- unique(top10$gene)
- # Subset matrix and convert to numeric
- pseudobulk_top <- pseudobulk[selected_genes, ]
- pseudobulk_top <- as.matrix(pseudobulk_top) # ensure it's numeric matrix
- pseudobulk_scaled <- t(scale(t(pseudobulk_top))) # Z-score per gene
- corr_mat <- cor(pseudobulk_scaled, method = "pearson")
- library(pheatmap)
- colnames(corr_mat) <- gsub("^g", "", colnames(corr_mat))
- rownames(corr_mat) <- gsub("^g", "", rownames(corr_mat))
- pheatmap(
- corr_mat,
- color = colorRampPalette(c("blue", "white", "red"))(100),
- breaks = seq(-1, 1, length.out = 101),
- main = "Cluster Correlation (Z-scored pseudobulk)",
- clustering_method = "complete",
- show_rownames = T,
- show_colnames = T
- )
- ###Ext Data Fig 4A###
- microglia_control_v_disease <- read_csv("Microglia_Human_control_vs_disease_DE_genes.csv")
- microglia_control_v_disease <- microglia_control_v_disease %>%
- rename(
- gene = ...1
- )
- EnhancedVolcano(microglia_control_v_disease,
- lab = microglia_control_v_disease$gene,
- x = 'avg_log2FC',
- y = 'p_val_adj',
- selectLab = c('FKBP5','CX3CR1',"MYO1E","CEBPD","SPP1","P2RY12",'TBC1D16',"DPP10","ZBTB16",'ACSL1','PRKCH',"PADI2","SLC2A5","RASGEF1C","NHSL1"),
- pCutoff = 0.05,
- FCcutoff = 0.7,
- xlim = c(-2, 2),
- ylim = c(0, 320),
- pointSize = 2,
- labSize = 4,
- colAlpha = 1,
- col = c('grey70', 'grey70', 'royalblue3', 'red3'),
- drawConnectors = TRUE,
- widthConnectors = 0.6,
- boxedLabels = TRUE,
- title = 'Disease vs Control Microglia',
- subtitle = bquote('Total =' ~ .(nrow(microglia_control_v_disease)) ~ 'genes'),
- legendPosition = 'none',
- caption = NULL
- )
Ext_data_fig_2_and_3_4_plotting_and_stats.R, under CC-BY-4.0 · at the source
Overview
and 35 other authors
Mihaela 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,2337 affiliations
- Institute of Neuropathology, Medical Faculty, University of Freiburg, Freiburg, Germany
- Single-Cell Omics Platform Freiburg, Faculty of Medicine, University of Freiburg, Freiburg, Germany
- Present Address: Institute for Neuropathology, Saarland University Hospital and Medical Faculty of Saarland University, Homburg, Germany
- Clinic for Neurosurgery, Faculty of Medicine, University of Freiburg, Freiburg, Germany
- Department of Neuropathology, University Medical Center Göttingen, Göttingen, Germany
- Department of Neurology with Experimental Neurology, Charité - Universitätsmedizin Berlin, Berlin, Germany
- Ann Romney Center for Neurologic Diseases, Brigham and Women’s Hospital, Harvard Medical School, Boston, MA USA
- Faculty of Biology, University of Freiburg, Freiburg, Germany
- Department of Pediatrics and Adolescent Medicine, Division of Pediatric Neurology, University Medical Center Göttingen, Georg August University, Göttingen, Germany
- Department of Medicine I - Medical centre - University of Freiburg, Faculty of Medicine, University of Freiburg, Freiburg, Germany
- Department of Neurology and Clinical Neuroscience, Medical Center – University of Freiburg, Freiburg, Germany
- Faculty of Medicine, University of Freiburg, Freiburg, Germany
- Neuropsychiatry and Laboratory of Molecular Psychiatry, Charité – Universitätsmedizin Berlin and DZNE, Berlin, Germany
- Institute for Experimental Infection Research, TWINCORE, Centre for Experimental and Clinical Infection Research, Hannover, Germany
- Sanofi Neurology Research, Cambridge, MA USA
- Department of Pathology and Immunology, University of Geneva, Geneva, Switzerland
- Department of Clinical Neurosciences, Service of Neurology, Lausanne University Hospital and University of Lausanne, Lausanne, Switzerland
- Institute of Bioelectronic Medicine, Feinstein Institutes for Medical Research, Northwell Health, Manhasset, NY USA
- Department of Molecular Medicine, Donald and Barbara Zucker School of Medicine at Hofstra/Northwell, Hempstead, NY USA
- MRC Human Genetics Unit, Institute of Genetics and Cancer, University of Edinburgh, Edinburgh, UK
- Laboratory of Neurogenetics and Neuroinflammation, Institut Imagine, University of Paris, Paris, France
- German Cancer Consortium (DKTK), partner site Freiburg, German Cancer Research Center (DKFZ), Heidelberg, Germany
- Signalling Research Centres BIOSS and CIBSS, University of Freiburg, Freiburg, Germany
- German Center for Child and Adolescent Health (DZKJ), partner site Göttingen, Göttingen, Germany
- Center for Stroke Research Berlin, Charité - Universitätsmedizin Berlin, Berlin, Germany
- Neuroscience Clinical Research Center, Charité - Universitätsmedizin Berlin, Berlin, Germany
- Institute of Virology, Medical Faculty, University of Freiburg, Freiburg, Germany
- Centre for Systems Neuroscience (ZSN), Hannover, Germany and Cluster of Excellence RESIST (EXC 2155), Hannover Medical School, Hannover, Germany
- Faculty of Medicine, Clinic for Internal Medicine II, Gastroenterology, Hepatology, Endocrinology and Infectious Disease, University Medical Center Freiburg, Freiburg, Germany
- Gene Lay Institute of Immunology and Inflammation, Brigham and Women’s Hospital, Mass General Hospital and Harvard Medical School, Boston, MA USA
- AC Immune, Lausanne, Switzerland
- Third Rock Ventures, Boston, MA USA
- Broad Institute of MIT and Harvard, Cambridge, MA USA
- Centre for Integrative Biological Signalling Studies, University of Freiburg, Freiburg, Germany
- Division of Clinical Pathology, Geneva University Hospital, Geneva, Switzerland
- Department of Psychiatry and Psychotherapy, School of Medicine and Health, Technical University of Munich and DZPG, Munich, Germany
- University of Edinburgh and UK DRI, Edinburgh, UK
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
Availability: 1 check, the latest on 30 September 2026: the link answers (HTTP 200)
- 30 September 2026: the link answers (HTTP 200)
15 files
- Cuprizone_cellchat.R, R, 37 lines
- Ext_data_fig_12_plotting
_and_stats.R , R, 163 lines - Ext_data_fig_2_and_3_4_p
lotting_and_stats.R , R, 545 lines, 4 matches - Ext_data_fig_5_plotting_
and_stats.R , R, 214 lines, 1 match - Ext_data_fig_6_plotting_
and_stats.R , R, 454 lines, 4 matches - Ext_data_fig_7_8_9_plott
ing_and_stats.R , R, 494 lines, 3 matches - Fig_1_Fig2F_Plotting.R, R, 1,148 lines, 3 matches
- Fig_2_plotting.R, R, 561 lines, 2 matches
- Fig_4_plotting.R, R, 609 lines, 2 matches
- Fig_5_plotting.R, R, 632 lines, 2 matches
- Fig_6_Ext_Data_10_11_plo
tting.R , R, 1,437 lines, 2 matches - Fig_7_Ext_data_12_plotti
ng.R , R, 320 lines - Figure_3_plotting.R, R, 1,058 lines, 2 matches
- Functions_R.R, R, 298 lines, 1 match
- paris_clustering_in_R.R, R, 40 lines
Code availability
Analysis code used to reproduce the figures is available in Zenodo (10.5281/
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
- ega:EGAS50000001289, at EGA; found in “Data availability”
- geo:GSE304010, at NCBI GEO; found in “Data availability”
- uniprot.org/
uniprot/ , at UniProt; found in the text, “Superclusters reflect myeloid functional…”p2ry12
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://
Analysis code used to reproduce the figures is available in Zenodo (10.5281/
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://
BibTeX
@article{chhatbar2026tra
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/
url = {https://
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/
VL - 27
IS - 5
SP - 1066
EP - 1080
SN - 1529-2908
PB - Nature Portfolio
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"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":
"volume": "27",
"issue": "5",
"page": "1066-1080",
"DOI": "10.1038/
"PMID": "41882205",
"PMCID": "PMC7618987",
"ISSN": "1529-2908",
"publisher": "Nature Portfolio",
"URL": "https://
"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 medicineIn 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: NatureIn 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 immunologyIn 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: CancersIn 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 communicationsIn 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 neuroscienceIn 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 communicationsIn 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-depende
nt microglial cell states. Journal: Nature neuroscienceIn 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: iScienceIn 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 medicineIn 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.
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, 15 scripts, and 26 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:02300355409c303c…
Add the badge to the code's README
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 -->
[](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:endHTML
<!-- 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.
