OSCR

Acquired genetic and cell-state changes in IDH-mutant glioma progression.

Code ↔ Paper

40 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 40 matches · 4 of them tie a paragraph to a whole file, not to given lines: weak matches, whose lines are not tinted
  1. [1] § Methods › snATAC–seq analysis ↔ scripts/atac/04_run_archr_caremut_peakcall_malignant_states.R, lines 623–696 · score 0.83 · TSS enrichment, tile matrix, peak matrices, ArchR, regulatory, snRNA
  2. [2] § Methods › snATAC–seq analysis ↔ scripts/atac/02_run_archr_caremut_all_cell_types.R, lines 125–165 · score 0.80 · addIterativeLSI, dimensionality reduction, gene activity, tile matrix, ArchR, chromatin
  3. [3] § Immune interactions shape MES-like state ↔ scripts/figures/myeloid_analyses.R, lines 168–212 · score 0.78 · surgical interval, myeloid states, longitudinal changes, myeloid cell, linear, cell abundance
  4. [4] § Methods › Cell-state scoring and assignment of nuclei to states ↔ scripts/snrna/scoring/malignant_mp_scoring_pval_assignment.R, lines 290–354 · score 0.77 · AddModuleScore, Cell state assignment, cell state classification, cellular state, cell cycle, maximally
  5. [5] § Methods › snRNA-seq analysis ↔ scripts/snrna/preprocessing/care_10x_preprocess_snrna_astrocytoma_20260317.R, lines 178–228 · score 0.77 · residual doublet populations, identified clusters, UMAP, preprocessed, endothelial, Harmony
  6. [6] § Methods › Somatic variant detection and analysis ↔ R/preprocess/crosscheck-mismatch-identification-LX-2.R, lines 1–43 · score 0.75 · sample mismatches, DNA fingerprint, mutation burden, CrosscheckFingerprints, tool, matched
  7. [7] § Methods › Somatic variant detection and analysis ↔ R/preprocess/crosscheck-mismatch-identification-LX.R, lines 1–43 · score 0.75 · sample mismatches, DNA fingerprint, mutation burden, CrosscheckFingerprints, tool, matched
  8. [8] § Genetics and intertumour state variation ↔ scripts/figures/genetic_state_abundance.R, lines 97–149 · score 0.74 · CDKN2A homozygous deletion, PDGFRA amplification, Malignant cell abundance, state abundance, homdel, WT
  9. [9] § Methods › Malignant and non-malignant cell-type assignment ↔ scripts/snrna/infercnv/astrocytomas/infercnv_metadata_analysis_astrocytomas.R, lines 233–276 · score 0.73 · clonal CNA, CNA signal, neuronal, Azimuth, definition, gene expression
  10. [10] § Reduced differentiation with progression ↔ scripts/figures/transcriptional_genetic_distance.R, the whole file · a weak match · score 0.71 · mutational genetic distance, pseudobulk transcriptional distance, Spearman, hypermutation, RNA, IDH
  11. [11] § Longitudinal snRNA-seq profiles ↔ scripts/snrna/preprocessing/care_10x_preprocess_snrna_oligodendroglioma_20260318.R, lines 187–232 · score 0.71 · excitatory neurons, Harmony batch correction, inhibitory neurons, pericytes, lymphocytes, mural
  12. [12] § Genetics and intertumour state variation ↔ scripts/figures/genetic_state_abundance.R, lines 97–149 · score 0.69 · CDKN2A homozygous deletions, PDGFRA amplification, malignant cell state, genetic, abundance, grade
  13. [13] § Methods › Malignant and non-malignant cell-type assignment ↔ scripts/snrna/infercnv/oligodendrogliomas/infercnv_metadata_analysis_oligodendrogliomas.R, lines 187–234 · score 0.69 · clonal CNA, neuronal, Azimuth, definition, loss, gene expression
  14. [14] § Methods › Cell-state scoring and assignment of nuclei to states ↔ scripts/snrna/scoring/score_malignant_state_hierarchy.R, lines 1–70 · score 0.69 · IDH mutant hierarchy, Smart seq2, OC, stemness, signatures, score
  15. [15] § Methods › Co-culture of mouse macrophage and human IDH1-mutant GSC MGG152 cells ↔ scripts/figures/coculture_irradiation.R, lines 1–65 · score 0.69 · co culture experiment, MGG152 cells, irradiated, monoculture, males, human
  16. [16] § Immune interactions shape MES-like state ↔ scripts/figures/myeloid_analyses.R, lines 214–288 · score 0.68 · microglia abundance, macrophage abundance, Myeloid state, MG, inflammatory, collapsed
  17. [17] § Methods › PDGFRA inhibitor dose–response assay ↔ scripts/figures/pdgfrai_viability.R, lines 1–57 · score 0.68 · T407NS, T394NS, Viability, DMSO, dasatinib, CP
  18. [18] § Methods › snRNA-seq analysis ↔ scripts/snrna/preprocessing/care_10x_preprocess_snrna_oligodendroglioma_20260318.R, lines 140–182 · score 0.68 · Harmony batch correction, subclass, preprocessed, Seurat, resolution, PCA
  19. [19] § Methods › Single-nucleus genotyping of bulk WGS-derived mutation calls in hypermutant samples ↔ scripts/figures/genomic_data_availability.R, lines 1–50 · score 0.68 · snATAC, bulk DNA, single nucleus, snRNA, exome, WGS
  20. [20] § Immune interactions shape MES-like state ↔ scripts/figures/cibersortx_cell_type_proportions.R, lines 609–687 · score 0.67 · Bone marrow derived, BMDM, MG, microglia, IDH mutant, macrophages
  21. [21] § Methods › Measuring the transcriptional distance between matched pairs ↔ scripts/snrna/scoring/pseudobulk_transcriptional_distance_metric.R, the whole file · a weak match · score 0.67 · transcriptional distance, Euclidean distance, pseudobulk, profiles, matched, gene
  22. [22] § Methods › PDGFRA inhibitor treatment ↔ scripts/figures/pdgfrai_viability.R, lines 1–57 · score 0.66 · Trypan blue, viable cells, viability, DMSO, dasatinib, CP
  23. [23] § Methods › Deriving metaprograms from gene expression data ↔ scripts/figures/pathway_scores.R, lines 35–104 · score 0.66 · mitochondrial energy production, PMPs, pathway, glycolysis, stress, scored
  24. [24] § Longitudinal snRNA-seq profiles ↔ scripts/atac/03_run_archr_caremut_peakcall_all_cell_types.R, lines 230–298 · score 0.65 · excitatory neurons, inhibitory neurons, atlas, bias, brain, lymphocytes
  25. [25] § Malignant-state heterogeneity ↔ scripts/snrna/scoring/malignant_mp_scoring_first_round.R, lines 42–119 · score 0.64 · reactive astrocyte, MP5, MP2, MP4, MP6, MP1
  26. [26] § Malignant-state heterogeneity ↔ scripts/figures/plot_malignant_hierarchy.R, lines 89–167 · score 0.64 · state hierarchy, lineage scores, stemness scores, round, density, segments
  27. [27] § Epigenetic regulation of cell states ↔ scripts/atac/04_run_archr_caremut_peakcall_malignant_states.R, lines 276–324 · score 0.63 · Harmony batch correction, gene accessibility, SCNA burden, malignant state, ATAC, RNA
  28. [28] § Methods › Measuring the transcriptional distance between matched pairs ↔ scripts/figures/transcriptional_genetic_distance.R, the whole file · a weak match · score 0.63 · Euclidean distance, transcriptional distance, pseudobulk, gene expression
  29. [29] § Methods › Deriving metaprograms from gene expression data ↔ scripts/utils/PvsR-NMF-caremut.R, lines 58–96 · score 0.62 · robust NMF programs, NMF algorithm, redundant, iteratively, metaprograms, clustered
  30. [30] § Malignant-state heterogeneity ↔ scripts/snrna/scoring/malignant_mp_scoring_pval_assignment.R, lines 41–126 · score 0.61 · reactive astrocyte, IDH mutant metaprogram, MP1, brain, signatures, score
  31. [31] § Methods › Bulk RNA deconvolution and cell cycle scoring ↔ scripts/snrna/preprocessing/care_10x_preprocess_snrna_oligodendroglioma_20260318.R, lines 187–232 · score 0.61 · inhibitory neurons, batch correction, excitatory, module, mural, endothelial
  32. [32] § Methods › Malignant and non-malignant cell-type assignment ↔ R/inferCNV_BayesNet.R, lines 1165–1237 · score 0.60 · HMM predicted, inferCNV, Markov, inferred, model, copy
  33. [33] § Methods › Bulk RNA deconvolution and cell cycle scoring ↔ scripts/figures/cibersortx_cell_type_proportions.R, lines 108–141 · score 0.60 · correlation coefficient, bulk RNA, CIBERSORTx, Pearson, neurons, mural
  34. [34] § Malignant-state heterogeneity ↔ scripts/figures/rna_state_atac_tf_activity.R, lines 295–376 · score 0.59 · JUND activity, TF activity, deviation, FDR, RNA, median
  35. [35] § Malignant-state heterogeneity ↔ scripts/figures/pathway_scores.R, lines 35–104 · score 0.58 · mitochondrial energy production, pathways, glycolytic, malignant state, Undifferentiated, AC
  36. [36] § Epigenetic regulation of cell states ↔ scripts/atac/04_run_archr_caremut_peakcall_malignant_states.R, lines 477–538 · score 0.58 · chromatin peaks, FOS, TCF12, ASCL1, motifs, TF
  37. [37] § CARE IDH-mutant cohort ↔ scripts/figures/longitudinal_mutation_burden.R, the whole file · a weak match · score 0.58 · matched normal blood, Mutation burden, WXS, hypermutated, longitudinal, recurrent
  38. [38] § Methods › Co-culture of mouse macrophage and human IDH1-mutant GSC MGG152 cells ↔ scripts/snrna/preprocessing/preprocess_mgg152_coculture.R, lines 334–391 · score 0.57 · co culture experiment, mouse, MGG152, monoculture, males, human
  39. [39] § Genetics and intratumour state variation ↔ scripts/snrna/preprocessing/preprocess_pdgfra_inhibition_in_vitro.R, lines 1–36 · score 0.56 · scRNA, patient derived, perturbations, dasatinib, CP, inhibitors
  40. [40] § Malignant-state heterogeneity ↔ scripts/snrna/nmf/mp_pathway_hypergeometric.R, lines 1–46 · score 0.55 · scRNA, metaprogram genes, snRNA, IDH mutant, NMF, AC

Paper

Loaded from Europe PMC by your browser, not stored by OSCR: doi.org · Europe PMC

The paper is loaded when this pane is shown.

The authors' code

R · 696 lines · 36 KB · MIT · 3 matches

  1. ##############################
  2. ### Run ArchR peak calling analysis on CAREmut multiome ATAC data for all malignant states - NPC, OPC, Undiff, MES, AC
  3. ### Author: Kevin Johnson
  4. ##############################
  5. ## Generate malignant UMAP and perform differential gene/peak accessibility on RNA-defined MALIGNANT states across IDH-mutant tumors
  6. workdir <- "/vast/palmer/pi/verhaak/kcj28/care_idh_mut/results/atac/"
  7. setwd(workdir)
  8. fig_dir <- "/vast/palmer/pi/verhaak/kcj28/care_idh_mut/results/figures/archr/"
  9. ## Load necessary packages.
  10. library(dplyr)
  11. library(ArchR)
  12. library(parallel)
  13. library(pheatmap)
  14. library(chromVARmotifs)
  15. library(BSgenome.Hsapiens.UCSC.hg38)
  16. library(harmony)
  17. #### Set-up #####
  18. ## Check available cores. ArchR recommends setting total number of cores 1/2 to 3/4 of available cores,
  19. num_cores <- detectCores() # e.g., 36
  20. n_threads <- num_cores/2
  21. addArchRThreads(threads = n_threads)
  22. ## Each R session requires that the genome is also specified and must match alignment.
  23. addArchRGenome("hg38")
  24. # Load the ArchR object for IDHmut final analysis set. Doublets have been removed, only cells that intersect with passed qc for RNA, and RNA annotated cell states.
  25. # This project comes from: `02_run_archr_caremut_all_cell_types.R`.
  26. CARE_filt_rna_all <- loadArchRProject("Save-CAREmut-All-RNA")
  27. getAvailableMatrices(CARE_filt_rna_all) # GeneScoreMatrix and TileMatrix; 118,180 nuclei still including the Unresolved cells
  28. ############################################################################################################################
  29. #..........................................................................................................................#
  30. ############################################################################################################################
  31. # CAREmut snRNA data that was processed by Seurat. Here is the associated metadata.
  32. mut_md <- read.table("/vast/palmer/pi/verhaak/kcj28/care_idh_mut/processed_data/rna/care_mut_cleaned_snrna_metadata_n75_20260320.txt", sep = "\t", header = TRUE)
  33. # Verhaak lab samples are the only samples with ATAC (via Multiome) data
  34. mut_md_verhaak <- mut_md %>%
  35. filter(lab=="Verhaak lab") %>%
  36. # Remove SJ02-3 from analysis since it doesn't have any malignant cells that were classified (too few malignant cells overall)
  37. filter(SampleID!="SJ02-3")
  38. # Restrict to IDHmut malignant cells that are classified by an RNA-based state.
  39. cell_class <- read.table("/vast/palmer/pi/verhaak/kcj28/care_idh_mut/results/scoring/caremut_malignant_cell_state_assignment.txt", sep = "\t", header = TRUE)
  40. cell_class <- cell_class %>%
  41. mutate(idh_codel_subtype = recode(idh_codel_subtype, `IDHmut-codel` = "Oligo.",
  42. `IDHmut-noncodel` = "Astro."),
  43. State = recode(State, `MP_AC1_MUT` = "AC-like",
  44. `MP_OPC_MUT` = "OPC-like",
  45. `MP_NPC_MUT` = "NPC-like",
  46. `MP_MES_MUT` = "MES-like",
  47. `MP_AC2_MUT` = "AC-like",
  48. "Undifferentiated" = "Undifferentiated"))
  49. cell_class_trim <- cell_class %>%
  50. dplyr::select(CellID, State, isCC)
  51. mut_md_verhaak_state <- mut_md_verhaak %>%
  52. left_join(cell_class_trim, by="CellID") %>%
  53. mutate(tmp = ifelse(CellType_final=="Malignant", State, CellType_final),
  54. group = gsub("-like", "", tmp)) %>%
  55. dplyr::select(-tmp)
  56. # There is a slight difference in ArchR and Seurat naming convention.
  57. CARE_filt_rna_all$CellID <- gsub("#", "-", CARE_filt_rna_all$cellNames)
  58. # Restricting to malignant cells and the malignant state classification.
  59. cell_class_filt <- mut_md_verhaak_state[mut_md_verhaak_state$CellID %in% CARE_filt_rna_all$CellID, ]
  60. cell_class_filt_ord <- cell_class_filt[match(CARE_filt_rna_all$CellID, cell_class_filt$CellID), ]
  61. # Sanity checks
  62. all(CARE_filt_rna_all$CellID==cell_class_filt_ord$CellID)
  63. CARE_filt_rna_all$CellID==cell_class_filt_ord$CellID
  64. CARE_filt_rna_all$CellStateGroup <- cell_class_filt_ord$group
  65. CARE_filt_rna_all$scna_burden <- cell_class_filt_ord$scna_burden
  66. # Subset entire CARE IDHmut object to only MALIGNANT cells.
  67. idxSample <- BiocGenerics::which(CARE_filt_rna_all$CellType_final%in%"Malignant")
  68. cellsSample <- CARE_filt_rna_all$cellNames[idxSample]
  69. # Create a subset of the ArchR object to save malignant-only analyses.
  70. CARE_filt_rna_malignant <- subsetArchRProject(
  71. ArchRProj = CARE_filt_rna_all,
  72. cells = cellsSample,
  73. outputDirectory = "Save-CAREmut-Malignant-RNA",
  74. force = TRUE)
  75. # Sanity check that it was correctly loaded - otherwise it may write results to the old directory. What are the median QC values for malignant cells? 9.139 TSS and 13,927 fragments.
  76. CARE_filt_rna_malignant <- loadArchRProject("Save-CAREmut-Malignant-RNA") # 71,365 malignant nuclei
  77. # Plot frags against TSS enrichment for malignant cells only. Similar to analysis of all cells considered for analysis.
  78. df <- getCellColData(CARE_filt_rna_malignant, select = c("log10(nFrags)", "TSSEnrichment"))
  79. df
  80. p <- ggPoint(
  81. x = df[,1],
  82. y = df[,2],
  83. colorDensity = TRUE,
  84. continuousSet = "sambaNight",
  85. xlabel = "Log10 Unique Fragments",
  86. ylabel = "TSS Enrichment",
  87. xlim = c(log10(500), quantile(df[,1], probs = 0.99)),
  88. ylim = c(0, quantile(df[,2], probs = 0.99))
  89. ) + geom_hline(yintercept = 4, lty = "dashed") + geom_vline(xintercept = 3, lty = "dashed")
  90. pdf(paste0(fig_dir, "archr_malignant_cells_nfrags_vs_tss.pdf"), width = 5, height = 5, useDingbats = FALSE)
  91. p
  92. dev.off()
  93. # Add grade information from clinical tables
  94. patient_md <- read.delim("/vast/palmer/pi/verhaak/kcj28/care_mut/data/metadata/clinical_patient_genomic_md_20240608.txt", sep="\t", header = TRUE)
  95. sample_md <- read.delim("/vast/palmer/pi/verhaak/kcj28/care_mut/data/metadata/clinical_samples_genomic_md_20240608.txt", sep="\t", header = TRUE)
  96. atac_md_mut <- data.frame(getCellColData(CARE_filt_rna_malignant))
  97. atac_md_mut_annot <- atac_md_mut %>%
  98. left_join(sample_md, by=c("care_id", "sample_barcode", "patient_id", "timepoint", "idh_codel_subtype")) %>%
  99. mutate(atacCellNames = rownames(atac_md_mut))
  100. # Do these cell names retain the same order?
  101. ifelse(all(getCellNames(CARE_filt_rna_malignant)==atac_md_mut_annot$atacCellNames),
  102. sprintf("All cell names match. Proceed"), sprintf("Warning! Cell names do not match!"))
  103. getCellNames(CARE_filt_rna_malignant)==atac_md_mut_annot$atacCellNames
  104. # Add a few RNA features to the ArchR object.
  105. CARE_filt_rna_malignant$Grade <- paste0("G", atac_md_mut_annot$grade_num)
  106. CARE_filt_rna_malignant$idh_codel_subtype <- atac_md_mut_annot$idh_codel_subtype
  107. CARE_filt_rna_malignant$tumor_type <- ifelse(CARE_filt_rna_malignant$idh_codel_subtype=="IDHmut-codel", "Oligo", "Astro")
  108. CARE_filt_rna_malignant$subtype_grade <- paste0(CARE_filt_rna_malignant$tumor_type, "_", CARE_filt_rna_malignant$Grade)
  109. CARE_filt_rna_malignant$hypermutation <- ifelse(atac_md_mut_annot$hypermutation==1, "HM", "Non-HM")
  110. CARE_filt_rna_malignant$hypermutation <- ifelse(is.na(CARE_filt_rna_malignant$hypermutation), "Non-HM", CARE_filt_rna_malignant$hypermutation)
  111. # What's the breakdown of sample information: more oligodendroglioma malignant cells due to quality and sample number (50K vs 21K)
  112. table(CARE_filt_rna_malignant$idh_codel_subtype)
  113. table(CARE_filt_rna_malignant$Sample, CARE_filt_rna_malignant$subtype_grade)
  114. table(CARE_filt_rna_malignant$Sample, CARE_filt_rna_malignant$CellStateGroup)
  115. ############################################################################################################################
  116. #..........................................................................................................................#
  117. ############################################################################################################################
  118. ## Important to remember that inaccessible chromatin via ATAC can be "non-accessible" or "not sampled". 1s have information and 0s do not.
  119. ## These are largely default parameters for LSI and Harmony
  120. set.seed(123)
  121. CARE_filt_rna_malignant <- addIterativeLSI(
  122. ArchRProj = CARE_filt_rna_malignant,
  123. useMatrix = "TileMatrix",
  124. name = "IterativeLSI",
  125. iterations = 2,
  126. clusterParams = list( # See Seurat::FindClusters. Change parameters depending on analysis goal.
  127. resolution = c(0.2),
  128. sampleCells = 20000,
  129. n.start = 10
  130. ),
  131. varFeatures = 25000,
  132. dimsToUse = 1:20,
  133. force = TRUE
  134. )
  135. ## Clustering is performed with the same methods from scRNAseq relying on Seurat's functionality here.
  136. CARE_filt_rna_malignant <- addClusters(
  137. input = CARE_filt_rna_malignant,
  138. reducedDims = "IterativeLSI",
  139. method = "Seurat",
  140. name = "Clusters",
  141. resolution = 0.2,
  142. force = TRUE
  143. )
  144. # This will be the "uncorrected" UMAP
  145. CARE_filt_rna_malignant <- addUMAP(
  146. ArchRProj = CARE_filt_rna_malignant,
  147. reducedDims = "IterativeLSI",
  148. name = "UMAP",
  149. nNeighbors = 20,
  150. minDist = 0.3,
  151. metric = "cosine",
  152. force = TRUE
  153. )
  154. # Repeat with Harmony batch correction
  155. set.seed(123)
  156. CARE_filt_rna_malignant <- addHarmony(
  157. ArchRProj = CARE_filt_rna_malignant,
  158. reducedDims = "IterativeLSI",
  159. name = "Harmony",
  160. groupBy = c("Sample"),
  161. force=TRUE
  162. )
  163. CARE_filt_rna_malignant <- addClusters(
  164. input = CARE_filt_rna_malignant,
  165. reducedDims = "Harmony",
  166. method = "Seurat",
  167. name = "HarmonyClusters",
  168. resolution = 0.2,
  169. force = TRUE
  170. )
  171. CARE_filt_rna_malignant <- addUMAP(
  172. ArchRProj = CARE_filt_rna_malignant,
  173. reducedDims = "Harmony",
  174. name = "UMAPHarmony",
  175. nNeighbors = 20,
  176. minDist = 0.3,
  177. metric = "cosine",
  178. force = TRUE
  179. )
  180. # Malignant cell state colors
  181. cols <- c("#AA2756", "#F77D58", "#7fbf7b", "#E8F5A3", "gray90")
  182. names(cols) <- names(table(CARE_filt_rna_malignant$CellStateGroup))
  183. # Tumor type colors
  184. idh_cols <- c("#800074", "#298C8C")
  185. names(idh_cols) <- names(table(CARE_filt_rna_malignant$tumor_type))
  186. # Use this to extract the legend from a plot
  187. g_legend <- function(a.gplot) {
  188. tmp <- ggplot_gtable(ggplot_build(a.gplot))
  189. leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
  190. legend <- tmp$grobs[[leg]]
  191. return(legend)
  192. }
  193. #### LSI (Uncorrected) UMAP ####
  194. ### Tumor type ###
  195. p_subtype <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "tumor_type", embedding = "UMAP", pal = idh_cols, labelMeans=FALSE) +
  196. labs(x="", y="", color="Tumor type", title="") + theme(panel.border=element_blank()) + guides(color = guide_legend(override.aes = list(size = 4)))
  197. legend_grob <- g_legend(p_subtype)
  198. p_subtype <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "tumor_type", embedding = "UMAP", pal = idh_cols, labelMeans=FALSE) +
  199. labs(x="", y="", color="Tumor type", title="") + theme(panel.border=element_blank()) + guides(color=FALSE)
  200. plotPDF(p_subtype, name = "Unadjusted_malignant_UMAP_subtype.pdf", ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE, width = 5, height = 5)
  201. ggsave(paste0(fig_dir, "unadjusted_malignant_umap_subtype.png"), p_subtype, width = 4, height = 4, dpi = 300)
  202. ggsave(paste0(fig_dir, "unadjusted_malignant_umap_subtype_legend.pdf"), legend_grob, width = 3, height = 3, dpi = 300)
  203. ### Patient ###
  204. p_sample <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "patient_id", embedding = "UMAP", labelMeans=FALSE) +
  205. labs(x="", y="", color="Sample", title="") + theme(panel.border=element_blank()) + guides(color = guide_legend(override.aes = list(size = 4)))
  206. legend_grob <- g_legend(p_sample)
  207. p_sample <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "patient_id", embedding = "UMAP", labelMeans=FALSE) +
  208. labs(x="", y="", color="Sample", title="") + theme(panel.border=element_blank()) + guides(color=FALSE)
  209. plotPDF(p_sample, name = "unadjusted_malignant_umap_sample.pdf", ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE, width = 5, height = 5)
  210. ggsave(paste0(fig_dir, "unadjusted_malignant_umap_sample.png"), p_sample, width = 4, height = 4, dpi = 300)
  211. ggsave(paste0(fig_dir, "unadjusted_malignant_umap_sample_legend.pdf"), legend_grob, width = 4, height = 3, dpi = 300)
  212. ### Cell state ###
  213. p_cell_state <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "CellStateGroup", embedding = "UMAP", pal = cols, labelMeans=FALSE) +
  214. labs(x="", y="", color="RNA cell state", title="") + theme(panel.border=element_blank()) + guides(color = guide_legend(override.aes = list(size = 4)))
  215. legend_grob <- g_legend(p_cell_state)
  216. p_cell_state <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "CellStateGroup", embedding = "UMAP", pal = cols, labelMeans=FALSE) +
  217. labs(x="", y="", color="RNA cell state", title="") + theme(panel.border=element_blank()) + guides(color=FALSE)
  218. plotPDF(p_cell_state, name = "unadjusted_malignant_umap_cell_state.pdf", ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE, width = 5, height = 5)
  219. ggsave(paste0(fig_dir, "unadjusted_malignant_umap_cell_state.png"), p_cell_state, width = 4, height = 4, dpi = 300)
  220. ggsave(paste0(fig_dir, "unadjusted_malignant_umap_cell_state_legend.pdf"), legend_grob, width = 5, height = 3, dpi = 300)
  221. ### Hypermutation ####
  222. hyper_cols <- c("red", "gray80")
  223. names(hyper_cols) <- names(table(CARE_filt_rna_malignant$hypermutation))
  224. p_hm <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "hypermutation", embedding = "UMAP", pal = hyper_cols, labelMeans=FALSE) +
  225. labs(x="", y="", color="Hypermutation status", title="") + theme(panel.border=element_blank()) + guides(color = guide_legend(override.aes = list(size = 4)))
  226. legend_grob <- g_legend(p_hm)
  227. p_hm <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "hypermutation", embedding = "UMAP", pal = hyper_cols, labelMeans=FALSE) +
  228. labs(x="", y="", color="Hypermutation status", title="") + theme(panel.border=element_blank()) + guides(color=FALSE)
  229. plotPDF(p_hm, name = "unadjusted_malignant_hypermutation.pdf", ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE, width = 5, height = 5)
  230. ggsave(paste0(fig_dir, "unadjusted_malignant_umap_hypermutation.png"), p_hm, width = 4, height = 4, dpi = 300)
  231. ggsave(paste0(fig_dir, "unadjusted_malignant_umap_hypermutation_legend.pdf"), legend_grob, width = 3, height = 3, dpi = 300)
  232. #### snRNA SCNA burden ####
  233. p_scna <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "scna_burden", embedding = "UMAP") +
  234. labs(x="", y="", color="SCNA burden", title="") + theme(panel.border=element_blank()) + guides(color = guide_legend(override.aes = list(size = 4)))
  235. legend_grob <- g_legend(p_scna)
  236. p_scna <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "scna_burden", embedding = "UMAP") +
  237. labs(x="", y="", color="SCNA burden", title="") + theme(panel.border=element_blank()) + guides(fill=FALSE)
  238. plotPDF(p_scna, name = "unadjusted_malignant_scna.pdf", ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE, width = 5, height = 5)
  239. ggsave(paste0(fig_dir, "unadjusted_malignant_umap_scna.png"), p_scna, width = 4, height = 4, dpi = 300)
  240. ggsave(paste0(fig_dir, "unadjusted_malignant_umap_scna_legend.pdf"), legend_grob, width = 3, height = 3, dpi = 300)
  241. #### LSI post-Harmony batch correction UMAP ####
  242. ### Cell State ####
  243. p_harmony_cell_state <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "CellStateGroup", embedding = "UMAPHarmony", pal = cols, labelMeans=FALSE) +
  244. labs(x="", y="", color="RNA cell state", title="") + theme(panel.border=element_blank()) + guides(color = guide_legend(override.aes = list(size = 4)))
  245. legend_grob <- g_legend(p_harmony_cell_state)
  246. p_harmony_cell_state <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "CellStateGroup", embedding = "UMAPHarmony", pal = cols, labelMeans=FALSE) +
  247. labs(x="", y="", color="RNA cell state", title="") + theme(panel.border=element_blank()) + guides(color=FALSE)
  248. plotPDF(p_harmony_cell_state, name = "harmony_malignant_umap_cell_state.pdf", ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE, width = 5, height = 5)
  249. ggsave(paste0(fig_dir, "harmony_malignant_umap_cell_state.png"), p_harmony_cell_state, width = 4, height = 4, dpi = 300)
  250. ggsave(paste0(fig_dir, "harmony_malignant_umap_cell_state_legend.pdf"), legend_grob, width = 5, height = 3, dpi = 300)
  251. ### Tumor type ####
  252. p_harmony_type <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "tumor_type", embedding = "UMAPHarmony", pal = idh_cols, labelMeans=FALSE) +
  253. labs(x="", y="", color="Tumor type", title="") + theme(panel.border=element_blank()) + guides(color = guide_legend(override.aes = list(size = 4)))
  254. legend_grob <- g_legend(p_harmony_type)
  255. p_harmony_type <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "tumor_type", embedding = "UMAPHarmony", pal = idh_cols, labelMeans=FALSE) +
  256. labs(x="", y="", color="Tumor type", title="") + theme(panel.border=element_blank()) + guides(color=FALSE)
  257. plotPDF(p_harmony_type, name = "harmony_malignant_umap_tumor_type.pdf", ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE, width = 5, height = 5)
  258. ggsave(paste0(fig_dir, "harmony_malignant_umap_tumor_type.png"), p_harmony_type, width = 4, height = 4, dpi = 300)
  259. ggsave(paste0(fig_dir, "harmony_malignant_umap_tumor_type_legend.pdf"), legend_grob, width = 3, height = 3, dpi = 300)
  260. ############################################################################################################################
  261. #..........................................................................................................................#
  262. ############################################################################################################################
  263. # Define gene accessibility score markers based on malignant cell state.
  264. set.seed(1)
  265. markersGS <- getMarkerFeatures(
  266. ArchRProj = CARE_filt_rna_malignant,
  267. useMatrix = "GeneScoreMatrix",
  268. groupBy = "CellStateGroup",
  269. bias = c("TSSEnrichment", "log10(nFrags)"),
  270. testMethod = "wilcoxon",
  271. maxCells = 2000
  272. )
  273. # Extract the marker list. These cutoffs are the default thresholds for ArchR. I tried to use these consistently throughout these analyses
  274. markerListGS <- getMarkers(markersGS, cutOff = "FDR <= 0.05 & Log2FC >= 1")
  275. lapply(markerListGS, nrow) # AC = 478, MES = 151, NPC = 7, OPC = 126, Undifferentiated = 91
  276. # Examine the distribution of differentially accessible genes
  277. undiff_df <- data.frame(markerListGS$Undifferentiated)
  278. # DLL3, OLIG1, OLIG2
  279. opc_df <- data.frame(markerListGS$OPC)
  280. # No real difference for NPC-like cells
  281. markerListGS$NPC
  282. ac_df <- data.frame(markerListGS$AC)
  283. # CD44
  284. mes_df <- data.frame(markerListGS$MES)
  285. # Selected marker genes of interest.
  286. markerGenes <- c("AQP4", "CD44", "VIM", "TNC", "ANXA2", "SPARCL1",
  287. "DLL3", "OLIG1",
  288. "PDGFRA",
  289. "HOXD11", "MET")
  290. heatmapGS <- plotMarkerHeatmap(
  291. seMarker = markersGS,
  292. cutOff = "FDR <= 0.05 & Log2FC >= 1",
  293. limits = c(-1.5, 1.5),
  294. labelMarkers = markerGenes,
  295. transpose = FALSE,
  296. )
  297. plotPDF(heatmapGS, name = "GeneScores-Malignant-Marker-Heatmap", width = 5.5, height = 6, ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE)
  298. pdf(paste0(fig_dir, "caremut_malignant_state_marker_genes.pdf"), width = 5, height = 4, useDingbats = FALSE, bg = "transparent")
  299. heatmapGS
  300. dev.off()
  301. ############################################################################################################################
  302. #..........................................................................................................................#
  303. ############################################################################################################################
  304. # Make pseudo bulk measurements for malignant cell state groups
  305. # See github discussion on how to structure groups: https://github.com/GreenleafLab/ArchR/discussions/696
  306. # Pseudo-bulk refers to a grouping of single cells where the data from each single sample is combined into a single pseudo-sample.
  307. set.seed(123)
  308. CARE_filt_rna_malignant <- addGroupCoverages(ArchRProj = CARE_filt_rna_malignant,
  309. groupBy = "CellStateGroup", # OPC, MES, etc
  310. minCells = 40, # default
  311. maxCells = 500, # default
  312. threads = getArchRThreads(),
  313. # Overwrite the data in the ArchRProject object if the pseudo-bulk replicate information already exists
  314. force = TRUE)
  315. ## Is macs2 in the path variable?
  316. pathToMacs2 <- findMacs2()
  317. # Iterative overlap peak merging procedure
  318. CARE_filt_rna_malignant <- addReproduciblePeakSet(
  319. ArchRProj = CARE_filt_rna_malignant,
  320. groupBy = "CellStateGroup",
  321. pathToMacs2 = pathToMacs2,
  322. threads = getArchRThreads(),
  323. )
  324. ## Needed to derive marker peaks.
  325. CARE_filt_rna_malignant <- addPeakMatrix(CARE_filt_rna_malignant)
  326. ############################################################################################################################
  327. #..........................................................................................................................#
  328. ############################################################################################################################
  329. getAvailableMatrices(CARE_filt_rna_malignant) # GeneScoreMatrix, PeakMatrix, TileMatrix
  330. ## Identifying marker peaks - features that are unique to a specific cell grouping.
  331. # Account for biases in data quality via TSSEnrichment and nFrags - these are the default settings on the tutorial and seemed advisable.
  332. set.seed(123)
  333. markersPeaks <- getMarkerFeatures(
  334. ArchRProj = CARE_filt_rna_malignant,
  335. useMatrix = "PeakMatrix",
  336. groupBy = "CellStateGroup",
  337. bias = c("TSSEnrichment", "log10(nFrags)"),
  338. testMethod = "wilcoxon",
  339. maxCells = 2000
  340. )
  341. saveRDS(markersPeaks, "/vast/palmer/pi/verhaak/kcj28/care_idh_mut/results/atac/malignant_cell_state_markersPeaks.RDS")
  342. # markersPeaks <- readRDS("/vast/palmer/pi/verhaak/kcj28/care_idh_mut/results/atac/malignant_cell_state_markersPeaks.RDS")
  343. # Extract the marker peaks. Get access the GRanges object via `returnGR = TRUE`.
  344. markerList <- getMarkers(markersPeaks, cutOff = "FDR <= 0.05 & Log2FC >= 1", returnGR = TRUE)
  345. lengths(markerList) # AC = 27447, MES = 15011, NPC = 1892, OPC = 13268, Undifferentiated = 6087
  346. # Inspect some of the results
  347. table(markerList$Undifferentiated@seqnames)
  348. table(markerList$OPC@seqnames)
  349. table(markerList$NPC@seqnames)
  350. heatmapPeaks <- plotMarkerHeatmap(
  351. seMarker = markersPeaks,
  352. cutOff = "FDR <= 0.05 & Log2FC >= 1",
  353. transpose = FALSE,
  354. limits = c(-1.5, 1.5),
  355. nLabel = 1
  356. )
  357. plotPDF(heatmapPeaks, name = "Peak-Marker-Heatmap-mut-malignant-state", width = 5.5, height = 6, ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE)
  358. pdf(paste0(fig_dir, "caremut_malignant_state_marker_peaks.pdf"), width = 6, height = 4, useDingbats = FALSE, bg = "transparent")
  359. heatmapPeaks
  360. dev.off()
  361. # Plot a few key marker peak's browser tracks.
  362. p_opc <- plotBrowserTrack(
  363. ArchRProj = CARE_filt_rna_malignant,
  364. groupBy = "CellStateGroup",
  365. geneSymbol = c("OLIG1"),
  366. features = getMarkers(markersPeaks, cutOff = "FDR <= 0.05 & Log2FC >= 1", returnGR = TRUE)["OPC"],
  367. upstream = 20000,
  368. downstream = 20000
  369. )
  370. grid::grid.draw(p_opc$OLIG1)
  371. plotPDF(p_opc, name = "Plot-Tracks-With-OLIG1", width = 5, height = 5, ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE)
  372. p_mes <- plotBrowserTrack(
  373. ArchRProj = CARE_filt_rna_malignant,
  374. groupBy = "CellStateGroup",
  375. geneSymbol = c("CD44"),
  376. features = getMarkers(markersPeaks, cutOff = "FDR <= 0.05 & Log2FC >= 1", returnGR = TRUE)["MES"],
  377. upstream = 20000,
  378. downstream = 20000
  379. )
  380. grid::grid.draw(p_mes$CD44)
  381. plotPDF(p_mes, name = "Plot-Tracks-With-MES", width = 5, height = 5, ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE)
  382. p_undiff <- plotBrowserTrack(
  383. ArchRProj = CARE_filt_rna_malignant,
  384. groupBy = "CellStateGroup",
  385. geneSymbol = c("PDGFRA"),
  386. features = getMarkers(markersPeaks, cutOff = "FDR <= 0.05 & Log2FC >= 1", returnGR = TRUE)["Undifferentiated"],
  387. upstream = 50000,
  388. downstream = 50000
  389. )
  390. grid::grid.draw(p_undiff$PDGFRA)
  391. plotPDF(p_undiff, name = "Plot-Tracks-With-PDGFRA", width = 5, height = 5, ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE)
  392. # Save the current object so that it can be re-loaded.
  393. CARE_filt_rna_malignant_peaks <- saveArchRProject(ArchRProj = CARE_filt_rna_malignant,
  394. outputDirectory = "Save-CAREmut-Malignant-RNA-Peaks",
  395. load = TRUE)
  396. ############################################################################################################################
  397. #..........................................................................................................................#
  398. ############################################################################################################################
  399. ## Add add motif annotations. These enrichments give us some insights into the potential functionality of peak accessibility differences.
  400. if("Motif" %ni% names(CARE_filt_rna_malignant_peaks@peakAnnotation)){
  401. CARE_filt_rna_malignant_peaks <- addMotifAnnotations(ArchRProj = CARE_filt_rna_malignant_peaks, motifSet = "cisbp", name = "Motif")
  402. }
  403. # For motifs amongst the open chromatin peak regions.
  404. enrichRegions <- peakAnnoEnrichment(
  405. seMarker = markersPeaks,
  406. ArchRProj = CARE_filt_rna_malignant_peaks,
  407. peakAnnotation = "Motif",
  408. cutOff = "FDR <= 0.05 & Log2FC >= 1"
  409. )
  410. df_motif <- data.frame(TF = rownames(enrichRegions), mlog10Padj = assay(enrichRegions)[,2])
  411. df_motif <- df_motif[order(df_motif$mlog10Padj, decreasing = TRUE),]
  412. df_motif$rank <- seq_len(nrow(df_motif))
  413. heatmapRegions <- plotEnrichHeatmap(enrichRegions,
  414. transpose = TRUE,
  415. cutOff = 5,
  416. clusterCols= FALSE)
  417. plotPDF(heatmapRegions, name = "Regions-Enriched-Marker-Peak-Motif-Heatmap", width = 8, height = 6, ArchRProj = CARE_filt_rna_malignant_peaks, addDOC = FALSE)
  418. heatmapATAC_df <- plotEnrichHeatmap(enrichRegions,
  419. n = 1500,
  420. transpose = TRUE,
  421. returnMatrix = TRUE)
  422. df <- data.frame(TF = rownames(enrichRegions), mlog10Padj = assay(enrichRegions))
  423. library(viridisLite)
  424. colnames(heatmapATAC_df) <- sapply(strsplit(colnames(heatmapATAC_df), " "), "[[", 1)
  425. colnames(heatmapATAC_df) <- sapply(strsplit(colnames(heatmapATAC_df), "_"), "[[", 1)
  426. enrichment_of_interest <- c("TCF12", "ASCL1", "CREB5", "TAL1", "JUNB", "FOS", "NFIC","SOX9", "POU2F3")
  427. feature_order <- c("OPC", "NPC", "Undifferentiated", "MES", "AC")
  428. enrichment_order <- c("TCF12", "ASCL1", "TAL1", "POU2F3", "CREB5", "JUNB", "FOS", "NFIC","SOX9")
  429. heatmapATAC_df_filtered <- t(heatmapATAC_df[, colnames(heatmapATAC_df)%in%enrichment_of_interest])
  430. heatmapATAC_df_ordered <- heatmapATAC_df_filtered[enrichment_order,feature_order]
  431. manual_hmap <- ComplexHeatmap::Heatmap(heatmapATAC_df_ordered,
  432. show_row_dend = FALSE,
  433. cluster_columns = FALSE,
  434. cluster_rows = FALSE,
  435. show_column_dend = FALSE,
  436. col=viridis(100),
  437. name = "Norm. Enrichment -log10(P-adj) [0-Max]",
  438. heatmap_legend_param = list(
  439. legend_direction = "horizontal",
  440. legend_width = unit(5, "cm")
  441. ))
  442. pdf(paste0(fig_dir, "malignant_states_archr_differential_peak_enrichment_motif_heatmap.pdf"), width = 5, height = 5, useDingbats = FALSE, bg = "transparent")
  443. draw(manual_hmap, heatmap_legend_side = "bot", annotation_legend_side = "bot")
  444. dev.off()
  445. ############################################################################################################################
  446. #..........................................................................................................................#
  447. ############################################################################################################################
  448. ## Add a set of background peaks, which are used in computing deviations.
  449. set.seed(123)
  450. CARE_filt_rna_malignant_peaks <- addBgdPeaks(CARE_filt_rna_malignant_peaks)
  451. # Available peak annotation
  452. names(CARE_filt_rna_malignant_peaks@peakAnnotation)
  453. ## Compute the per-cell deviations across all of our motif annotations.
  454. ## This function has an optional parameter called matrixName that allows us to define the name of deviations.
  455. ## The option below creates a deviation matrix in each of the Arrow files called "DevMatrix" or "MotifMatrix". Force indicates whether the matrix listed should be overwritten.
  456. # "Identifying Background Peaks!" will run if not background peaks haven't been added already.
  457. CARE_filt_rna_malignant_peaks <- addDeviationsMatrix(
  458. ArchRProj = CARE_filt_rna_malignant_peaks,
  459. peakAnnotation = "Motif",
  460. matrixName = "MotifMatrix",
  461. threads = getArchRThreads(),
  462. force = TRUE
  463. )
  464. motif_dev_df <- getVarDeviations(CARE_filt_rna_malignant_peaks, name = "MotifMatrix", plot = TRUE)
  465. ## How can one extract a subset of motifs for downstream analyses? getFeatures()
  466. motifs <- c("ASCL1", "TCF12", "JUNB", "FOS", "RFX2", "TAL1", "NFIC")
  467. markerMotifs <- getFeatures(CARE_filt_rna_malignant_peaks, select = paste(motifs, collapse="|"), useMatrix = "MotifMatrix")
  468. markerMotifs <- markerMotifs[grep("z:", markerMotifs)]
  469. p <- plotGroups(ArchRProj = CARE_filt_rna_malignant_peaks,
  470. groupBy = "CellStateGroup",
  471. colorBy = "MotifMatrix",
  472. name = markerMotifs,
  473. imputeWeights = getImputeWeights(CARE_filt_rna_malignant_peaks)
  474. )
  475. plotPDF(p, name = "Plot-State-Motifs-Deviations-w-Imputation", width = 5, height = 5, ArchRProj = CARE_filt_rna_malignant_peaks, addDOC = FALSE)
  476. ## Trying to extract the relevant TFs from the MotifMatrix. Use Z-scores for downstreams analyses.
  477. motif_df <- getMatrixFromProject(
  478. ArchRProj = CARE_filt_rna_malignant_peaks,
  479. useMatrix = "MotifMatrix",
  480. useSeqnames = "z",
  481. verbose = TRUE,
  482. binarize = FALSE
  483. )
  484. motif_df_zscore <- assay(motif_df)
  485. motif_df_zscore_out <- as.data.frame(as.matrix(t(motif_df_zscore)))
  486. rownames(motif_df_zscore_out) <- gsub("#", "-", rownames(motif_df_zscore_out))
  487. motif_df_zscore_out$CellID <- rownames(motif_df_zscore_out)
  488. # Write out the results so they can be used in additional analyses.
  489. write.table(motif_df_zscore_out, "/vast/palmer/pi/verhaak/kcj28/care_idh_mut/processed_data/atac/archr_care_malignant_state_tf_motif_activity_zscore.txt", sep="\t", row.names = TRUE, col.names = TRUE)
  490. ############################################################################################################################
  491. #..........................................................................................................................#
  492. ############################################################################################################################
  493. ### Plot general enrichment of our malignant state peaks among other collections of ATACseq data, including normal and glioma samples.
  494. CARE_filt_rna_malignant_peaks <- addArchRAnnotations(ArchRProj = CARE_filt_rna_malignant_peaks, collection = "ATAC")
  495. enrichATAC <- peakAnnoEnrichment(
  496. seMarker = markersPeaks,
  497. ArchRProj = CARE_filt_rna_malignant_peaks,
  498. peakAnnotation = "ATAC",
  499. cutOff = "FDR <= 0.05 & Log2FC >= 1"
  500. )
  501. heatmapATAC <- plotEnrichHeatmap(enrichATAC, n = 5, cutOff = 3.5, transpose = TRUE)
  502. # Most of the results are confirmatory (astrocytes with AC-like, opcs/oligodendrocytes with OPC-like, MES-like with GBM and other tumor types)
  503. plotPDF(heatmapATAC, name = "ATAC-Enriched-Marker-Heatmap", width = 8, height = 6, ArchRProj = CARE_filt_rna_malignant_peaks, addDOC = FALSE)
  504. # NPC-like cells share a similar chromatin profile with OPCs, but had only one significant enrichment for "Brain_Excitatory_neurons"
  505. df <- data.frame(TF = rownames(enrichATAC), mlog10Padj = assay(enrichATAC)[,3])
  506. df <- df[order(df$mlog10Padj, decreasing = TRUE),]
  507. df$rank <- seq_len(nrow(df))
  508. head(df)
  509. # Save these results for future inspection.
  510. enrichATAC_out <- assay(enrichATAC)
  511. enrichATAC_out$Bulk <- rownames(enrichATAC_out)
  512. write.table(enrichATAC_out, "/vast/palmer/pi/verhaak/kcj28/care_idh_mut/processed_data/atac/archr_care_mut_malignant_bulk_atac_enrichment_amongst_markerpeaks.txt", sep="\t", row.names = FALSE, col.names = TRUE)
  513. ############################################################################################################################
  514. #..........................................................................................................................#
  515. ############################################################################################################################
  516. # Pairwise differential expression. In the snRNA data, there was a clear anti-correlation for OPC-like and AC-like cells. Assessing that difference here.
  517. markerOPC <- getMarkerFeatures(
  518. ArchRProj = CARE_filt_rna_malignant_peaks,
  519. useMatrix = "PeakMatrix",
  520. groupBy = "CellStateGroup",
  521. testMethod = "wilcoxon",
  522. bias = c("TSSEnrichment", "log10(nFrags)"),
  523. useGroups = "OPC",
  524. bgdGroups = "AC"
  525. )
  526. # Approximately equal up- and down-regulated. Total peaks: 281,999 (9349 up and 11,004 down)
  527. volcano_opc_v_ac <- plotMarkers(seMarker = markerOPC, name = "OPC", cutOff = "FDR <= 0.05 & abs(Log2FC) >= 1", plotAs = "Volcano")
  528. png(paste0(fig_dir, "opc_vs_ac_differential_peaks_volcano.png"), width = 5, height = 5, res = 300, units = "in")
  529. volcano_opc_v_ac
  530. dev.off()
  531. markerMES_v_AC <- getMarkerFeatures(
  532. ArchRProj = CARE_filt_rna_malignant_peaks,
  533. useMatrix = "PeakMatrix",
  534. groupBy = "CellStateGroup",
  535. testMethod = "wilcoxon",
  536. bias = c("TSSEnrichment", "log10(nFrags)"),
  537. useGroups = "MES",
  538. bgdGroups = "AC"
  539. )
  540. # Total peaks: 281,999 (1808 up and 1474 down). Differences between AC and MES are considerably smaller (as expected) than AC-like vs OPC-like.
  541. # This is also evident in the various UMAP plots.
  542. volcano_mes_v_ac <- plotMarkers(seMarker = markerMES_v_AC, name = "MES", cutOff = "FDR <= 0.05 & abs(Log2FC) >= 1", plotAs = "Volcano")
  543. volcano_mes_v_ac
  544. png(paste0(fig_dir, "mes_vs_ac_differential_peaks_volcano.png"), width = 5, height = 5, res = 300, units = "in")
  545. volcano_mes_v_ac
  546. dev.off()
  547. MesMotifsUp <- peakAnnoEnrichment(
  548. seMarker = markerMES_v_AC,
  549. ArchRProj = CARE_filt_rna_malignant_peaks,
  550. peakAnnotation = "Motif",
  551. cutOff = "FDR <= 0.05 & Log2FC >= 1"
  552. )
  553. # Domninated by JUN/FOS and STAT3 further down the list.
  554. df <- data.frame(TF = rownames(MesMotifsUp), mlog10Padj = assay(MesMotifsUp)[,1])
  555. df <- df[order(df$mlog10Padj, decreasing = TRUE),]
  556. df$rank <- seq_len(nrow(df))
  557. ############################################################################################################################
  558. #..........................................................................................................................#
  559. ############################################################################################################################
  560. # Save various outputs:
  561. getAvailableMatrices(CARE_filt_rna_malignant_peaks) # "GeneScoreMatrix" "MotifMatrix" "PeakMatrix" "TileMatrix"
  562. names(CARE_filt_rna_malignant_peaks@peakAnnotation) # "Motif" "ATAC"
  563. care_malignant_archr_df <- data.frame(CARE_filt_rna_malignant_peaks@cellColData)
  564. write.table(care_malignant_archr_df, "/vast/palmer/pi/verhaak/kcj28/care_idh_mut/results/atac/archr_care_mut_malignant_state_atac_metadata.txt", sep="\t", row.names = TRUE, col.names = TRUE)
  565. paste0("Memory Size = ", round(object.size(CARE_filt_rna_malignant) / 10^6, 3), " MB")
  566. CARE_filt_rna_malignant_peaks <- saveArchRProject(ArchRProj = CARE_filt_rna_malignant_peaks,
  567. outputDirectory = "Save-CAREmut-Malignant-RNA-Peaks",
  568. load = TRUE)
  569. ### END ###

04_run_archr_caremut_peakcall_malignant_states.R at commit 1d23ca1, under MIT · at the source

Overview

Authors: Kevin C. Johnson1, Avishay Spitzer2,3, Frederick S. Varn4,5,6, Masashi Nomura7,8,9,10, Luciano Garofano11,12,13, Tamrin Chowdhury1, Anuja Lipsa14, Linbin Zhang1, Ester Calvo Fernández7,8,10, Tanyeri Barak1, A. Gulhan Ercan-Sencicek1, Ayse Buket Peksen1, Kevin J. Anderson4, C. Mircea S. Tesileanu1, Samirkumar B. Amin1, Emre Kocakavuk1,15, Dacheng Zhao1, Fulvio D’Angelo12,16, Simona Migliozzi12,17,13, Lillian Bussema7,8,10
and 31 other authorsSimon Gritsch7,8,10, Hyo-Eun Moon18, Sun Ha Paek18,19, Franck Bielle20,21, Alice Laurenge21,22, Anna Luisa Di Stefano23,24, Bertrand Mathon25, Alberto Picca20,22, Marc Sanson20,22, Ann-Christin Hau14, Frank Hertel14, Kamil Grzyb14, Zheng Zhao26,27, Qianghu Wang28,29, Tao Jiang26,27, Julie J. Miller30,31, Hiroaki Wakimoto30,32, Daniel P. Cahill30,32, Jennifer Moliterno1, Murat Günel1, Beth Hermes33, Nader Sanai33,34, Anna Golebiewska14, Simone P. Niclou14, Jason Huse35, W. K. Alfred Yung36, Anna Lasorella11,17, Mario L. Suvà7,8,10, Antonio Iavarone12,18, Itay Tirosh2, Roel G. W. Verhaak1,37
37 affiliations
  1. Department of Neurosurgery, Yale School of Medicine,New Haven, CT USA
  2. Department of Molecular Cell Biology, Weizmann Institute of Science,Rehovot, Israel
  3. Department of Oncology, Tel Aviv Sourasky Medical Center,Tel Aviv, Israel
  4. The Jackson Laboratory for Genomic Medicine,Farmington, CT USA
  5. Department of Genetics and Genome Sciences, University of Connecticut Health Center,Farmington, CT USA
  6. Institute for Systems Genomics, University of Connecticut,Storrs, CT USA
  7. Department of Pathology, Massachusetts General Hospital and Harvard Medical School,Boston, MA USA
  8. Broad Institute of MIT and Harvard,Cambridge, MA USA
  9. Department of Neurosurgery, Graduate School of Medicine, The University of Tokyo,Tokyo, Japan
  10. Krantz Family Center for Cancer Research, Massachusetts General Hospital and Harvard Medical School,Boston, MA USA
  11. Department of Public Health Sciences, Division of Biostatistics, University of Miami, Miller School of Medicine,Miami, FL USA
  12. Sylvester Comprehensive Cancer Center, University of Miami, Miller School of Medicine,Miami, FL USA
  13. Present Address: Translational Genomics Research Institute (TGen),Phoenix, AZ USA
  14. NORLUX Neuro-Oncology Laboratory, Department of Cancer Research, Luxembourg Institute of Health,Luxembourg, Luxembourg
  15. Department of Hematology and Stem Cell Transplantation, West German Cancer Center (WTZ), National Center for Tumor Diseases (NCT) West, University Hospital Essen, University of Duisburg-Essen,Essen, Germany
  16. Department of Neurological Surgery, University of Miami, Miller School of Medicine,Miami, FL USA
  17. Department of Biochemistry and Molecular Biology, University of Miami, Miller School of Medicine,Miami, FL USA
  18. Department of Neurosurgery, Cancer Research Institute, Hypoxia Ischemia Disease Institute, Seoul National University,Seoul, Republic of Korea
  19. Advanced Institutes of Convergence Technology, Seoul National University,Gyeonggi-do, Republic of Korea
  20. Sorbonne Université, UMR S 1127, INSERM U 1127, CNRS, ICM–Paris Brain Institute, Equipe Labellisée LNCC,Paris, France
  21. AP-HP, Groupe Hospitalier Pitié-Salpêtrière, Neuropathology,Paris, France
  22. AP-HP, Groupe Hospitalier Pitié-Salpêtrière, Neuro-oncology,Paris, France
  23. Neurology Department, Foch Hospital,Suresnes, France
  24. Division of Neurosurgery, Azienda USL Toscana Nord-ovest, Livorno Hospital,Livorno, Italy
  25. AP-HP, Groupe Hospitalier Pitié-Salpêtrière, Neurosurgery,Paris, France
  26. Beijing Neurosurgical Institute, Capital Medical University,Beijing, China
  27. Chinese Glioma Genome Atlas Network & Asian Glioma Genome Atlas Network, Beijing, China
  28. Institute for Brain Tumors, Jiangsu Collaborative Innovation Center for Cancer Personalized Medicine, Nanjing Medical University,Nanjing, China
  29. Department of Bioinformatics, Nanjing Medical University,Nanjing, China
  30. Translational Neuro-Oncology Laboratory, Massachusetts General Hospital, Harvard Medical School,Boston, MA USA
  31. Stephen E. and Catherine Pappas Center for Neuro-Oncology, Department of Neurology, Massachusetts General Hospital, Harvard Medical School,Boston, MA USA
  32. Department of Neurosurgery, Massachusetts General Hospital, Harvard Medical School,Boston, MA USA
  33. St Joseph’s Hospital and Barrow Neurological Institute,Phoenix, AZ USA
  34. Ivy Brain Tumor Center at Barrow Neurological Institute,Phoenix, AZ USA
  35. Department of Pathology, The University of Texas MD Anderson Cancer Center,Houston, TX USA
  36. Department of Neuro-Oncology, The University of Texas MD Anderson Cancer Center,Houston, TX USA
  37. Department of Neurosurgery, Amsterdam University Medical Center,Amsterdam, The Netherlands
Journal: Nature, volume 655, issue 8124, pages 1048-1059
Dates: received 5 October 2024; accepted 30 April 2026; published online 3 June 2026; in print 2026
Type: Research article · Language: English
License: CC BY
Identifiers: DOI 10.1038/s41586-026-10612-6 · PMID 42236943 · PMCID PMC13391360 · OpenAlex W7163317224
Open access: hybrid, a free copy (OpenAlex)
Status: code verified
Categories: human (organism), other condition (population), cellular / molecular (subfield)
Methods: Connectivity, Statistics, Smoothing, state filtering, decompositions, Preprocessing, Machine learning
Keywords: Oncogenesis, CNS cancer
MeSH: Brain Neoplasms*, Disease Progression*, Glioma*, Isocitrate Dehydrogenase*, Mutation*, Animals, Astrocytoma, Cell Cycle, Cell Differentiation, Cell Lineage, Cell Proliferation, Chromatin, Female, Gene Expression Regulation, Neoplastic, Humans, Neoplasm Recurrence, Local, Oligodendroglioma, Receptor, Platelet-Derived Growth Factor alpha (* major topic)
Topic: Glioma Diagnosis and Treatment (Genetics, Medicine), according to OpenAlex
Funding: NCI NIH HHS (R01 CA258763)
Citations: cited by 9 papers (Europe PMC); 62 references in the paper

Abstract

Gliomas with mutant isocitrate dehydrogenase (IDH) are malignant brain tumours that typically arise in early to mid-adulthood and nearly always recur following treatment1,2. However, the genetic and cellular-state changes that drive IDH-mutant glioma progression under treatment remain incompletely understood. Here we integrated single-nucleus transcriptomic profiles, chromatin accessibility profiles and bulk DNA and RNA sequencing from 75 temporally separated gliomas across 35 patients comprising both the oligodendroglioma and astrocytoma IDH-mutant glioma tumour types. We show that malignant cell states transcriptionally resemble stages of normal glial–neuronal lineage development or a reactive mesenchymal-like state, mirroring states previously described in IDH wild-type glioblastoma3,4. Malignant cell states displayed distinct chromatin accessibility profiles that were comparable between both IDH-mutant glioma types. The abundance of less differentiated malignant cells increased with grade and with genetic alterations such as PDGFRA amplification. Longitudinal analysis highlighted two major malignant cell-state transition patterns. First, reduced lineage differentiation and increased proliferative malignant cells at recurrence were enriched in gliomas that acquired recurrence-associated genetic events. These included treatment-associated hypermutation, increased copy number changes and cell cycle alterations. Second, increased mesenchymal-like-state abundance occurred independently of acquired genetic alterations and instead coincided with elevated macrophage expression. Overall, our findings provide an integrative model that traces the cell intrinsic and extrinsic factors that shape cellular states during IDH-mutant glioma disease progression.

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

Repositories

Its files are read in the Code ↔ Paper reader above, with 40 matches between paragraphs and lines of code.

broadinstitute/inferCNV

License: other
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 65e6bf554600c92e7d5c121e98247d9c3f888a0d, 14 November 2025
Languages: R (77), Python (2), Shell (1)
Size: 128 files, 80 scripts
Software Heritage: archived
Found in: the text, “Malignant and non-malignant cell-type assignment”
Holds: README, license file, environment (DESCRIPTION, docker/Dockerfile), tests, continuous integration, documentation, 4 notebooks
Not found: CITATION.cff
Tools: ggplot2 (20 files), tidyverse (18 files), edgeR (8 files), pheatmap (3 files), SingleCellExperiment (3 files), data.table (2 files), JAGS (2 files), igraph (1 file), reshape2 (1 file), Seurat (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
82 files

Kcjohnson/care-glass

License: MIT
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 9b587f256099712d0af710e807dbaa575d538960, 23 April 2026
Languages: R (89), Shell (13), Python (9), Perl (1)
Size: 570 files, 112 scripts
Software Heritage: not archived
Found in: “Code availability”
Holds: README, license file, environment (R/titancna/TitanCNA/DESCRIPTION), documentation
Not found: CITATION.cff, tests, continuous integration
Tools: tidyverse (70 files), data.table (20 files), SAMtools (2 files), BCFtools (1 file), BEDTools (1 file), pandas (1 file), pysam (1 file), Snakemake (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
114 files

Kcjohnson/care_idh_mut

License: MIT
State: the link answers, verified on 27 September 2026
Evidence: files inventoried
Commit: 1d23ca192258f1468c19f1bf4c21389a4f03a7ad, 18 May 2026
Languages: R (77), Shell (13), Python (1)
Size: 95 files, 91 scripts
Software Heritage: not archived
Found in: “Code availability”
Holds: README, license file
Not found: CITATION.cff, environment file, tests, continuous integration, documentation
Tools: tidyverse (63 files), ggpubr (40 files), Seurat (16 files), Harmony (11 files), reshape2 (10 files), pheatmap (9 files), cowplot (6 files), ggplot2 (3 files), ComplexHeatmap (2 files), broom (1 file), h5py (1 file), NumPy (1 file), pandas (1 file), patchwork (1 file), survival (1 file)
Availability: 1 check, the latest on 27 September 2026: the link answers
  • 27 September 2026: the link answers
93 files

Code availability

Analysis scripts for processing DNA sequencing are available at https://github.com/Kcjohnson/care-glass, and scripts for analysing single-nucleus data are available at https://github.com/Kcjohnson/care_idh_mut.

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:

  • 3 repositories of the authors' code, each at its verified commit, with its license and how the link was found in the paper;
  • 283 scripts, each with its path and the digest of its content;
  • 40 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

The following data are available from the Gene Expression Omnibus (GEO): glioma sample gene expression count matrices from 10x Cell Ranger (v.6.1.2) (GSE326221 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE326221)); ATAC fragments from 10x Cell Ranger ARC (v.2.0.2) (GSE327580 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE327580)); and in vitro model gene expression count matrices from 10x Cell Ranger (v.9.0.1) GSE324481 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE324481) for MGG152 CDKN2A–/–, GSE324694 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE324694) for PDGFRA inhibitors, GSE324714 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE324714) for MGG152 co-culture and irradiation, and GSE324860 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE324860) for organoids). Processed single-cell-state annotation and bulk processed DNA-seq data are available at Synapse (https://www.synapse.org/care_idh_mutant). The sequencing data files for the samples from SNU, Saint Joseph’s Hospital and LIH-NORLUX cohorts are available at The European Genome-phenome Archive (EGA) (EGAS50000001727 (https://ega-archive.org/studies/EGAS50000001727)). The sequencing data are available on DUOS for the MD Anderson Cancer Center cohort (DUOS-000475) and Pitié-Salpêtrière Hospital cohort (DUOS-000477). External IDH-mutant scRNA-seq and snRNA-seq datasets were downloaded from the following sources: Synapse (https://www.synapse.org/#!Synapse:syn22257780 (ref. 8), https://www.synapse.org/Synapse:syn60087246 (ref. 60) and https://www.synapse.org/#!Synapse:syn51858131 (ref. 33)); GEO (GSE174554 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE174554) and GSE138794 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE138794) (ref. 31), GSE205771 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE205771) (ref. 25), GSE182109 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE182109) (ref. 32), GSE138794 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE138794) (ref. 61) and GSE260928 (http://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE260928) (ref. 24)); The Broad Institute (https://singlecell.broadinstitute.org/single_cell/study/SCP936/single-cell-multi-omics-profiling-of-human-gliomas (ref. 7), https://singlecell.broadinstitute.org/single_cell/study/SCP50/single-cell-rna-seq-analysis-of-astrocytoma (ref. 4), https://singlecell.broadinstitute.org/single_cell/study/SCP12/oligodendroglioma-intra-tumor-heterogeneity#study-download (ref. 10) and https://singlecell.broadinstitute.org/single_cell/study/SCP2389/programs-origins-and-niches-of-immunomodulatory-myeloid-cells-in-human-gliomas (ref. 39)); and Zenodo (https://zenodo.org/records/10408969)62. Published scRNA-seq data were also accessed from the Chinese Glioma Genome Atlas (GSE227718 (https://www.ncbi.nlm.nih.gov/geo/query/acc.cgi?acc=GSE227718)) and data that are not yet publicly available26. TCGA clinical and genomic data for the merged cohort were accessed via cBioPortal (https://www.cbioportal.org)13. Processed bulk DNA-seq and RNA-seq data for glioma samples that were also profiled by the GLASS consortium were accessed via Synapse (https://www.synapse.org/glass).

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

Versions

The history of this record: each version stored by the harvester or made by a correction of its authors or of the maintainers of its code, and what changed in its facts. The texts of the paper (its abstract, its availability statements) are not part of it; versions that changed only those are not listed.

Version 2, 28 September 2026

  • Publisher: n/a → Nature Portfolio

Version 1, 27 September 2026: the first record

Recorded: type, language, journal, volume, issue, pages, dates, 51 authors, 2 keywords, 18 MeSH terms, 1 funder, 62 references.

Cite

This paper

Johnson, K. C., Spitzer, A., Varn, F. S., Nomura, M., Garofano, L., Chowdhury, T., Lipsa, A., Zhang, L., Fernández, E. C., Barak, T., Gulhan Ercan-Sencicek, A., Peksen, A. B., Anderson, K. J., Tesileanu, C. M. S., Amin, S. B., Kocakavuk, E., Zhao, D., D’Angelo, F., Migliozzi, S., . . . Verhaak, R. G. W. (2026). Acquired genetic and cell-state changes in IDH-mutant glioma progression. Nature, 655(8124), 1048-1059. https://doi.org/10.1038/s41586-026-10612-6

BibTeX

@article{johnson2026acquired,
author = {Johnson, Kevin C. and Spitzer, Avishay and Varn, Frederick S. and Nomura, Masashi and Garofano, Luciano and Chowdhury, Tamrin and Lipsa, Anuja and Zhang, Linbin and Fernández, Ester Calvo and Barak, Tanyeri and Gulhan Ercan-Sencicek, A. and Peksen, Ayse Buket and Anderson, Kevin J. and Tesileanu, C. Mircea S. and Amin, Samirkumar B. and Kocakavuk, Emre and Zhao, Dacheng and D’Angelo, Fulvio and Migliozzi, Simona and Bussema, Lillian and Gritsch, Simon and Moon, Hyo-Eun and Paek, Sun Ha and Bielle, Franck and Laurenge, Alice and Di Stefano, Anna Luisa and Mathon, Bertrand and Picca, Alberto and Sanson, Marc and Hau, Ann-Christin and Hertel, Frank and Grzyb, Kamil and Zhao, Zheng and Wang, Qianghu and Jiang, Tao and Miller, Julie J. and Wakimoto, Hiroaki and Cahill, Daniel P. and Moliterno, Jennifer and Günel, Murat and Hermes, Beth and Sanai, Nader and Golebiewska, Anna and Niclou, Simone P. and Huse, Jason and Alfred Yung, W. K. and Lasorella, Anna and Suvà, Mario L. and Iavarone, Antonio and Tirosh, Itay and Verhaak, Roel G. W.},
title = {{Acquired genetic and cell-state changes in IDH-mutant glioma progression}},
journal = {Nature},
year = {2026},
month = jun,
volume = {655},
number = {8124},
pages = {1048--1059},
publisher = {Nature Portfolio},
issn = {0028-0836},
doi = {10.1038/s41586-026-10612-6},
url = {https://doi.org/10.1038/s41586-026-10612-6},
pmid = {42236943},
pmcid = {PMC13391360}
}

RIS

TY - JOUR
AU - Johnson, Kevin C.
AU - Spitzer, Avishay
AU - Varn, Frederick S.
AU - Nomura, Masashi
AU - Garofano, Luciano
AU - Chowdhury, Tamrin
AU - Lipsa, Anuja
AU - Zhang, Linbin
AU - Fernández, Ester Calvo
AU - Barak, Tanyeri
AU - Gulhan Ercan-Sencicek, A.
AU - Peksen, Ayse Buket
AU - Anderson, Kevin J.
AU - Tesileanu, C. Mircea S.
AU - Amin, Samirkumar B.
AU - Kocakavuk, Emre
AU - Zhao, Dacheng
AU - D’Angelo, Fulvio
AU - Migliozzi, Simona
AU - Bussema, Lillian
AU - Gritsch, Simon
AU - Moon, Hyo-Eun
AU - Paek, Sun Ha
AU - Bielle, Franck
AU - Laurenge, Alice
AU - Di Stefano, Anna Luisa
AU - Mathon, Bertrand
AU - Picca, Alberto
AU - Sanson, Marc
AU - Hau, Ann-Christin
AU - Hertel, Frank
AU - Grzyb, Kamil
AU - Zhao, Zheng
AU - Wang, Qianghu
AU - Jiang, Tao
AU - Miller, Julie J.
AU - Wakimoto, Hiroaki
AU - Cahill, Daniel P.
AU - Moliterno, Jennifer
AU - Günel, Murat
AU - Hermes, Beth
AU - Sanai, Nader
AU - Golebiewska, Anna
AU - Niclou, Simone P.
AU - Huse, Jason
AU - Alfred Yung, W. K.
AU - Lasorella, Anna
AU - Suvà, Mario L.
AU - Iavarone, Antonio
AU - Tirosh, Itay
AU - Verhaak, Roel G. W.
TI - Acquired genetic and cell-state changes in IDH-mutant glioma progression
T2 - Nature
J2 - Nature
PY - 2026
DA - 2026/06/03
VL - 655
IS - 8124
SP - 1048
EP - 1059
SN - 0028-0836
PB - Nature Portfolio
DO - 10.1038/s41586-026-10612-6
UR - https://doi.org/10.1038/s41586-026-10612-6
LA - en
ER -

CSL-JSON

{
"id": "10.1038/s41586-026-10612-6",
"type": "article-journal",
"title": "Acquired genetic and cell-state changes in IDH-mutant glioma progression",
"container-title": "Nature",
"author": [
{
"family": "Johnson",
"given": "Kevin C."
},
{
"family": "Spitzer",
"given": "Avishay"
},
{
"family": "Varn",
"given": "Frederick S."
},
{
"family": "Nomura",
"given": "Masashi"
},
{
"family": "Garofano",
"given": "Luciano"
},
{
"family": "Chowdhury",
"given": "Tamrin"
},
{
"family": "Lipsa",
"given": "Anuja"
},
{
"family": "Zhang",
"given": "Linbin"
},
{
"family": "Fernández",
"given": "Ester Calvo"
},
{
"family": "Barak",
"given": "Tanyeri"
},
{
"family": "Gulhan Ercan-Sencicek",
"given": "A."
},
{
"family": "Peksen",
"given": "Ayse Buket"
},
{
"family": "Anderson",
"given": "Kevin J."
},
{
"family": "Tesileanu",
"given": "C. Mircea S."
},
{
"family": "Amin",
"given": "Samirkumar B."
},
{
"family": "Kocakavuk",
"given": "Emre"
},
{
"family": "Zhao",
"given": "Dacheng"
},
{
"family": "D’Angelo",
"given": "Fulvio"
},
{
"family": "Migliozzi",
"given": "Simona"
},
{
"family": "Bussema",
"given": "Lillian"
},
{
"family": "Gritsch",
"given": "Simon"
},
{
"family": "Moon",
"given": "Hyo-Eun"
},
{
"family": "Paek",
"given": "Sun Ha"
},
{
"family": "Bielle",
"given": "Franck"
},
{
"family": "Laurenge",
"given": "Alice"
},
{
"family": "Di Stefano",
"given": "Anna Luisa"
},
{
"family": "Mathon",
"given": "Bertrand"
},
{
"family": "Picca",
"given": "Alberto"
},
{
"family": "Sanson",
"given": "Marc"
},
{
"family": "Hau",
"given": "Ann-Christin"
},
{
"family": "Hertel",
"given": "Frank"
},
{
"family": "Grzyb",
"given": "Kamil"
},
{
"family": "Zhao",
"given": "Zheng"
},
{
"family": "Wang",
"given": "Qianghu"
},
{
"family": "Jiang",
"given": "Tao"
},
{
"family": "Miller",
"given": "Julie J."
},
{
"family": "Wakimoto",
"given": "Hiroaki"
},
{
"family": "Cahill",
"given": "Daniel P."
},
{
"family": "Moliterno",
"given": "Jennifer"
},
{
"family": "Günel",
"given": "Murat"
},
{
"family": "Hermes",
"given": "Beth"
},
{
"family": "Sanai",
"given": "Nader"
},
{
"family": "Golebiewska",
"given": "Anna"
},
{
"family": "Niclou",
"given": "Simone P."
},
{
"family": "Huse",
"given": "Jason"
},
{
"family": "Alfred Yung",
"given": "W. K."
},
{
"family": "Lasorella",
"given": "Anna"
},
{
"family": "Suvà",
"given": "Mario L."
},
{
"family": "Iavarone",
"given": "Antonio"
},
{
"family": "Tirosh",
"given": "Itay"
},
{
"family": "Verhaak",
"given": "Roel G. W."
}
],
"container-title-short": "Nature",
"volume": "655",
"issue": "8124",
"page": "1048-1059",
"DOI": "10.1038/s41586-026-10612-6",
"PMID": "42236943",
"PMCID": "PMC13391360",
"ISSN": "0028-0836",
"publisher": "Nature Portfolio",
"URL": "https://doi.org/10.1038/s41586-026-10612-6",
"language": "en",
"issued": {
"date-parts": [
[
2026,
6,
3
]
]
}
}

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.1016/j.xcrm.2026.102766 [code]
A longitudinal single-cell and spatial multiomic atlas of pediatric high-grade glioma.
Journal: Cell reports. Medicine
In common: pysam, Harmony, SingleCellExperiment, 15 other tools, other condition, cellular / molecular, 16 references
[2] doi:10.1016/j.xcrm.2026.102682 [code]
TET CpG sequence-context-specific DNA demethylation shapes progression of IDH-mutant gliomas.
Journal: Cell reports. Medicine
In common: survival, edgeR, broom, 12 other tools, other condition, 10 references
[3] doi:10.1016/j.cell.2026.05.026 [code]
The critical role of the endogenous immune compartment after CAR T cell therapy in recurrent GBM.
Journal: Cell
In common: survival, Harmony, SingleCellExperiment, 11 other tools, other condition, 7 references
[4] doi:10.1016/j.celrep.2026.117073 [code]
Single-cell epigenomics uncovers heterochromatin instability and transcription factor dysfunction during mouse brain aging.
Journal: Cell reports
In common: Snakemake, pysam, BEDTools, 14 other tools, cellular / molecular, 2 references
[5] doi:10.1186/s13059-026-04177-w [code]
Genomic sequence evolution underlying human neocortical interareal diversification.
Journal: Genome biology
In common: Snakemake, pysam, BEDTools, 12 other tools, cellular / molecular, 3 references
[6] doi:10.1093/bioinformatics/btag592 [code]
Network-based stratification of allele-specific expression reveals patient subgroups in Huntington's disease.
Journal: Bioinformatics (Oxford, England)
In common: BCFtools, survival, SAMtools, 14 other tools, other condition
[7] doi:10.1038/s42003-026-10957-8 [code]
Brain defence by the extracellular matrix protein Cochlin.
Journal: Communications biology
In common: BCFtools, survival, SAMtools, 14 other tools, cellular / molecular
[8] doi:10.1038/s41586-026-10214-2 [code]
Multidimensional profiling of heterogeneity in supratentorial ependymomas.
Journal: Nature
In common: Harmony, SingleCellExperiment, edgeR, 13 other tools, other condition, 2 references
[9] doi:10.1038/s41467-026-71790-5 [code]
Recurrent DNA break clusters drive replication-stress-induced copy number variants and genome diversification.
Journal: Nature communications
In common: Snakemake, BCFtools, pysam, 13 other tools, cellular / molecular
[10] doi:10.1016/j.xcrm.2026.102651 [code]
Integrative CSF profiling identifies disease-specific immune responses in leptomeningeal disease.
Journal: Cell reports. Medicine
In common: Harmony, SingleCellExperiment, igraph, 12 other tools, other condition, cellular / molecular, 2 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.

Request its removal

To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).

Discussion, reproductions, activity

Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.

Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.

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