Acquired genetic and cell-state changes in IDH-mutant glioma progression.
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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § Methods › PDGFRA inhibitor dose–response assay ↔ scripts/figures/pdgfrai_viability.R, lines 1–57 · score 0.68 · T407NS, T394NS, Viability, DMSO, dasatinib, CP
- [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] § 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] § 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] § 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] § Methods › PDGFRA inhibitor treatment ↔ scripts/figures/pdgfrai_viability.R, lines 1–57 · score 0.66 · Trypan blue, viable cells, viability, DMSO, dasatinib, CP
- [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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § 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] § Malignant-state heterogeneity ↔ scripts/figures/pathway_scores.R, lines 35–104 · score 0.58 · mitochondrial energy production, pathways, glycolytic, malignant state, Undifferentiated, AC
- [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] § 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] § 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] § 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] § 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
- ##############################
- ### Run ArchR peak calling analysis on CAREmut multiome ATAC data for all malignant states - NPC, OPC, Undiff, MES, AC
- ### Author: Kevin Johnson
- ##############################
- ## Generate malignant UMAP and perform differential gene/peak accessibility on RNA-defined MALIGNANT states across IDH-mutant tumors
- workdir <- "/vast/palmer/pi/verhaak/kcj28/care_idh_mut/results/atac/"
- setwd(workdir)
- fig_dir <- "/vast/palmer/pi/verhaak/kcj28/care_idh_mut/results/figures/archr/"
- ## Load necessary packages.
- library(dplyr)
- library(ArchR)
- library(parallel)
- library(pheatmap)
- library(chromVARmotifs)
- library(BSgenome.Hsapiens.UCSC.hg38)
- library(harmony)
- #### Set-up #####
- ## Check available cores. ArchR recommends setting total number of cores 1/2 to 3/4 of available cores,
- num_cores <- detectCores() # e.g., 36
- n_threads <- num_cores/2
- addArchRThreads(threads = n_threads)
- ## Each R session requires that the genome is also specified and must match alignment.
- addArchRGenome("hg38")
- # 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.
- # This project comes from: `02_run_archr_caremut_all_cell_types.R`.
- CARE_filt_rna_all <- loadArchRProject("Save-CAREmut-All-RNA")
- getAvailableMatrices(CARE_filt_rna_all) # GeneScoreMatrix and TileMatrix; 118,180 nuclei still including the Unresolved cells
- ############################################################################################################################
- #..........................................................................................................................#
- ############################################################################################################################
- # CAREmut snRNA data that was processed by Seurat. Here is the associated metadata.
- 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)
- # Verhaak lab samples are the only samples with ATAC (via Multiome) data
- mut_md_verhaak <- mut_md %>%
- filter(lab=="Verhaak lab") %>%
- # Remove SJ02-3 from analysis since it doesn't have any malignant cells that were classified (too few malignant cells overall)
- filter(SampleID!="SJ02-3")
- # Restrict to IDHmut malignant cells that are classified by an RNA-based state.
- cell_class <- read.table("/vast/palmer/pi/verhaak/kcj28/care_idh_mut/results/scoring/caremut_malignant_cell_state_assignment.txt", sep = "\t", header = TRUE)
- cell_class <- cell_class %>%
- mutate(idh_codel_subtype = recode(idh_codel_subtype, `IDHmut-codel` = "Oligo.",
- `IDHmut-noncodel` = "Astro."),
- State = recode(State, `MP_AC1_MUT` = "AC-like",
- `MP_OPC_MUT` = "OPC-like",
- `MP_NPC_MUT` = "NPC-like",
- `MP_MES_MUT` = "MES-like",
- `MP_AC2_MUT` = "AC-like",
- "Undifferentiated" = "Undifferentiated"))
- cell_class_trim <- cell_class %>%
- dplyr::select(CellID, State, isCC)
- mut_md_verhaak_state <- mut_md_verhaak %>%
- left_join(cell_class_trim, by="CellID") %>%
- mutate(tmp = ifelse(CellType_final=="Malignant", State, CellType_final),
- group = gsub("-like", "", tmp)) %>%
- dplyr::select(-tmp)
- # There is a slight difference in ArchR and Seurat naming convention.
- CARE_filt_rna_all$CellID <- gsub("#", "-", CARE_filt_rna_all$cellNames)
- # Restricting to malignant cells and the malignant state classification.
- cell_class_filt <- mut_md_verhaak_state[mut_md_verhaak_state$CellID %in% CARE_filt_rna_all$CellID, ]
- cell_class_filt_ord <- cell_class_filt[match(CARE_filt_rna_all$CellID, cell_class_filt$CellID), ]
- # Sanity checks
- all(CARE_filt_rna_all$CellID==cell_class_filt_ord$CellID)
- CARE_filt_rna_all$CellID==cell_class_filt_ord$CellID
- CARE_filt_rna_all$CellStateGroup <- cell_class_filt_ord$group
- CARE_filt_rna_all$scna_burden <- cell_class_filt_ord$scna_burden
- # Subset entire CARE IDHmut object to only MALIGNANT cells.
- idxSample <- BiocGenerics::which(CARE_filt_rna_all$CellType_final%in%"Malignant")
- cellsSample <- CARE_filt_rna_all$cellNames[idxSample]
- # Create a subset of the ArchR object to save malignant-only analyses.
- CARE_filt_rna_malignant <- subsetArchRProject(
- ArchRProj = CARE_filt_rna_all,
- cells = cellsSample,
- outputDirectory = "Save-CAREmut-Malignant-RNA",
- force = TRUE)
- # 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.
- CARE_filt_rna_malignant <- loadArchRProject("Save-CAREmut-Malignant-RNA") # 71,365 malignant nuclei
- # Plot frags against TSS enrichment for malignant cells only. Similar to analysis of all cells considered for analysis.
- df <- getCellColData(CARE_filt_rna_malignant, select = c("log10(nFrags)", "TSSEnrichment"))
- df
- p <- ggPoint(
- x = df[,1],
- y = df[,2],
- colorDensity = TRUE,
- continuousSet = "sambaNight",
- xlabel = "Log10 Unique Fragments",
- ylabel = "TSS Enrichment",
- xlim = c(log10(500), quantile(df[,1], probs = 0.99)),
- ylim = c(0, quantile(df[,2], probs = 0.99))
- ) + geom_hline(yintercept = 4, lty = "dashed") + geom_vline(xintercept = 3, lty = "dashed")
- pdf(paste0(fig_dir, "archr_malignant_cells_nfrags_vs_tss.pdf"), width = 5, height = 5, useDingbats = FALSE)
- p
- dev.off()
- # Add grade information from clinical tables
- patient_md <- read.delim("/vast/palmer/pi/verhaak/kcj28/care_mut/data/metadata/clinical_patient_genomic_md_20240608.txt", sep="\t", header = TRUE)
- sample_md <- read.delim("/vast/palmer/pi/verhaak/kcj28/care_mut/data/metadata/clinical_samples_genomic_md_20240608.txt", sep="\t", header = TRUE)
- atac_md_mut <- data.frame(getCellColData(CARE_filt_rna_malignant))
- atac_md_mut_annot <- atac_md_mut %>%
- left_join(sample_md, by=c("care_id", "sample_barcode", "patient_id", "timepoint", "idh_codel_subtype")) %>%
- mutate(atacCellNames = rownames(atac_md_mut))
- # Do these cell names retain the same order?
- ifelse(all(getCellNames(CARE_filt_rna_malignant)==atac_md_mut_annot$atacCellNames),
- sprintf("All cell names match. Proceed"), sprintf("Warning! Cell names do not match!"))
- getCellNames(CARE_filt_rna_malignant)==atac_md_mut_annot$atacCellNames
- # Add a few RNA features to the ArchR object.
- CARE_filt_rna_malignant$Grade <- paste0("G", atac_md_mut_annot$grade_num)
- CARE_filt_rna_malignant$idh_codel_subtype <- atac_md_mut_annot$idh_codel_subtype
- CARE_filt_rna_malignant$tumor_type <- ifelse(CARE_filt_rna_malignant$idh_codel_subtype=="IDHmut-codel", "Oligo", "Astro")
- CARE_filt_rna_malignant$subtype_grade <- paste0(CARE_filt_rna_malignant$tumor_type, "_", CARE_filt_rna_malignant$Grade)
- CARE_filt_rna_malignant$hypermutation <- ifelse(atac_md_mut_annot$hypermutation==1, "HM", "Non-HM")
- CARE_filt_rna_malignant$hypermutation <- ifelse(is.na(CARE_filt_rna_malignant$hypermutation), "Non-HM", CARE_filt_rna_malignant$hypermutation)
- # What's the breakdown of sample information: more oligodendroglioma malignant cells due to quality and sample number (50K vs 21K)
- table(CARE_filt_rna_malignant$idh_codel_subtype)
- table(CARE_filt_rna_malignant$Sample, CARE_filt_rna_malignant$subtype_grade)
- table(CARE_filt_rna_malignant$Sample, CARE_filt_rna_malignant$CellStateGroup)
- ############################################################################################################################
- #..........................................................................................................................#
- ############################################################################################################################
- ## Important to remember that inaccessible chromatin via ATAC can be "non-accessible" or "not sampled". 1s have information and 0s do not.
- ## These are largely default parameters for LSI and Harmony
- set.seed(123)
- CARE_filt_rna_malignant <- addIterativeLSI(
- ArchRProj = CARE_filt_rna_malignant,
- useMatrix = "TileMatrix",
- name = "IterativeLSI",
- iterations = 2,
- clusterParams = list( # See Seurat::FindClusters. Change parameters depending on analysis goal.
- resolution = c(0.2),
- sampleCells = 20000,
- n.start = 10
- ),
- varFeatures = 25000,
- dimsToUse = 1:20,
- force = TRUE
- )
- ## Clustering is performed with the same methods from scRNAseq relying on Seurat's functionality here.
- CARE_filt_rna_malignant <- addClusters(
- input = CARE_filt_rna_malignant,
- reducedDims = "IterativeLSI",
- method = "Seurat",
- name = "Clusters",
- resolution = 0.2,
- force = TRUE
- )
- # This will be the "uncorrected" UMAP
- CARE_filt_rna_malignant <- addUMAP(
- ArchRProj = CARE_filt_rna_malignant,
- reducedDims = "IterativeLSI",
- name = "UMAP",
- nNeighbors = 20,
- minDist = 0.3,
- metric = "cosine",
- force = TRUE
- )
- # Repeat with Harmony batch correction
- set.seed(123)
- CARE_filt_rna_malignant <- addHarmony(
- ArchRProj = CARE_filt_rna_malignant,
- reducedDims = "IterativeLSI",
- name = "Harmony",
- groupBy = c("Sample"),
- force=TRUE
- )
- CARE_filt_rna_malignant <- addClusters(
- input = CARE_filt_rna_malignant,
- reducedDims = "Harmony",
- method = "Seurat",
- name = "HarmonyClusters",
- resolution = 0.2,
- force = TRUE
- )
- CARE_filt_rna_malignant <- addUMAP(
- ArchRProj = CARE_filt_rna_malignant,
- reducedDims = "Harmony",
- name = "UMAPHarmony",
- nNeighbors = 20,
- minDist = 0.3,
- metric = "cosine",
- force = TRUE
- )
- # Malignant cell state colors
- cols <- c("#AA2756", "#F77D58", "#7fbf7b", "#E8F5A3", "gray90")
- names(cols) <- names(table(CARE_filt_rna_malignant$CellStateGroup))
- # Tumor type colors
- idh_cols <- c("#800074", "#298C8C")
- names(idh_cols) <- names(table(CARE_filt_rna_malignant$tumor_type))
- # Use this to extract the legend from a plot
- g_legend <- function(a.gplot) {
- tmp <- ggplot_gtable(ggplot_build(a.gplot))
- leg <- which(sapply(tmp$grobs, function(x) x$name) == "guide-box")
- legend <- tmp$grobs[[leg]]
- return(legend)
- }
- #### LSI (Uncorrected) UMAP ####
- ### Tumor type ###
- p_subtype <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "tumor_type", embedding = "UMAP", pal = idh_cols, labelMeans=FALSE) +
- labs(x="", y="", color="Tumor type", title="") + theme(panel.border=element_blank()) + guides(color = guide_legend(override.aes = list(size = 4)))
- legend_grob <- g_legend(p_subtype)
- p_subtype <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "tumor_type", embedding = "UMAP", pal = idh_cols, labelMeans=FALSE) +
- labs(x="", y="", color="Tumor type", title="") + theme(panel.border=element_blank()) + guides(color=FALSE)
- plotPDF(p_subtype, name = "Unadjusted_malignant_UMAP_subtype.pdf", ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE, width = 5, height = 5)
- ggsave(paste0(fig_dir, "unadjusted_malignant_umap_subtype.png"), p_subtype, width = 4, height = 4, dpi = 300)
- ggsave(paste0(fig_dir, "unadjusted_malignant_umap_subtype_legend.pdf"), legend_grob, width = 3, height = 3, dpi = 300)
- ### Patient ###
- p_sample <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "patient_id", embedding = "UMAP", labelMeans=FALSE) +
- labs(x="", y="", color="Sample", title="") + theme(panel.border=element_blank()) + guides(color = guide_legend(override.aes = list(size = 4)))
- legend_grob <- g_legend(p_sample)
- p_sample <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "patient_id", embedding = "UMAP", labelMeans=FALSE) +
- labs(x="", y="", color="Sample", title="") + theme(panel.border=element_blank()) + guides(color=FALSE)
- plotPDF(p_sample, name = "unadjusted_malignant_umap_sample.pdf", ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE, width = 5, height = 5)
- ggsave(paste0(fig_dir, "unadjusted_malignant_umap_sample.png"), p_sample, width = 4, height = 4, dpi = 300)
- ggsave(paste0(fig_dir, "unadjusted_malignant_umap_sample_legend.pdf"), legend_grob, width = 4, height = 3, dpi = 300)
- ### Cell state ###
- p_cell_state <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "CellStateGroup", embedding = "UMAP", pal = cols, labelMeans=FALSE) +
- labs(x="", y="", color="RNA cell state", title="") + theme(panel.border=element_blank()) + guides(color = guide_legend(override.aes = list(size = 4)))
- legend_grob <- g_legend(p_cell_state)
- p_cell_state <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "CellStateGroup", embedding = "UMAP", pal = cols, labelMeans=FALSE) +
- labs(x="", y="", color="RNA cell state", title="") + theme(panel.border=element_blank()) + guides(color=FALSE)
- plotPDF(p_cell_state, name = "unadjusted_malignant_umap_cell_state.pdf", ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE, width = 5, height = 5)
- ggsave(paste0(fig_dir, "unadjusted_malignant_umap_cell_state.png"), p_cell_state, width = 4, height = 4, dpi = 300)
- ggsave(paste0(fig_dir, "unadjusted_malignant_umap_cell_state_legend.pdf"), legend_grob, width = 5, height = 3, dpi = 300)
- ### Hypermutation ####
- hyper_cols <- c("red", "gray80")
- names(hyper_cols) <- names(table(CARE_filt_rna_malignant$hypermutation))
- p_hm <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "hypermutation", embedding = "UMAP", pal = hyper_cols, labelMeans=FALSE) +
- labs(x="", y="", color="Hypermutation status", title="") + theme(panel.border=element_blank()) + guides(color = guide_legend(override.aes = list(size = 4)))
- legend_grob <- g_legend(p_hm)
- p_hm <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "hypermutation", embedding = "UMAP", pal = hyper_cols, labelMeans=FALSE) +
- labs(x="", y="", color="Hypermutation status", title="") + theme(panel.border=element_blank()) + guides(color=FALSE)
- plotPDF(p_hm, name = "unadjusted_malignant_hypermutation.pdf", ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE, width = 5, height = 5)
- ggsave(paste0(fig_dir, "unadjusted_malignant_umap_hypermutation.png"), p_hm, width = 4, height = 4, dpi = 300)
- ggsave(paste0(fig_dir, "unadjusted_malignant_umap_hypermutation_legend.pdf"), legend_grob, width = 3, height = 3, dpi = 300)
- #### snRNA SCNA burden ####
- p_scna <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "scna_burden", embedding = "UMAP") +
- labs(x="", y="", color="SCNA burden", title="") + theme(panel.border=element_blank()) + guides(color = guide_legend(override.aes = list(size = 4)))
- legend_grob <- g_legend(p_scna)
- p_scna <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "scna_burden", embedding = "UMAP") +
- labs(x="", y="", color="SCNA burden", title="") + theme(panel.border=element_blank()) + guides(fill=FALSE)
- plotPDF(p_scna, name = "unadjusted_malignant_scna.pdf", ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE, width = 5, height = 5)
- ggsave(paste0(fig_dir, "unadjusted_malignant_umap_scna.png"), p_scna, width = 4, height = 4, dpi = 300)
- ggsave(paste0(fig_dir, "unadjusted_malignant_umap_scna_legend.pdf"), legend_grob, width = 3, height = 3, dpi = 300)
- #### LSI post-Harmony batch correction UMAP ####
- ### Cell State ####
- p_harmony_cell_state <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "CellStateGroup", embedding = "UMAPHarmony", pal = cols, labelMeans=FALSE) +
- labs(x="", y="", color="RNA cell state", title="") + theme(panel.border=element_blank()) + guides(color = guide_legend(override.aes = list(size = 4)))
- legend_grob <- g_legend(p_harmony_cell_state)
- p_harmony_cell_state <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "CellStateGroup", embedding = "UMAPHarmony", pal = cols, labelMeans=FALSE) +
- labs(x="", y="", color="RNA cell state", title="") + theme(panel.border=element_blank()) + guides(color=FALSE)
- plotPDF(p_harmony_cell_state, name = "harmony_malignant_umap_cell_state.pdf", ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE, width = 5, height = 5)
- ggsave(paste0(fig_dir, "harmony_malignant_umap_cell_state.png"), p_harmony_cell_state, width = 4, height = 4, dpi = 300)
- ggsave(paste0(fig_dir, "harmony_malignant_umap_cell_state_legend.pdf"), legend_grob, width = 5, height = 3, dpi = 300)
- ### Tumor type ####
- p_harmony_type <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "tumor_type", embedding = "UMAPHarmony", pal = idh_cols, labelMeans=FALSE) +
- labs(x="", y="", color="Tumor type", title="") + theme(panel.border=element_blank()) + guides(color = guide_legend(override.aes = list(size = 4)))
- legend_grob <- g_legend(p_harmony_type)
- p_harmony_type <- plotEmbedding(ArchRProj = CARE_filt_rna_malignant, colorBy = "cellColData", name = "tumor_type", embedding = "UMAPHarmony", pal = idh_cols, labelMeans=FALSE) +
- labs(x="", y="", color="Tumor type", title="") + theme(panel.border=element_blank()) + guides(color=FALSE)
- plotPDF(p_harmony_type, name = "harmony_malignant_umap_tumor_type.pdf", ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE, width = 5, height = 5)
- ggsave(paste0(fig_dir, "harmony_malignant_umap_tumor_type.png"), p_harmony_type, width = 4, height = 4, dpi = 300)
- ggsave(paste0(fig_dir, "harmony_malignant_umap_tumor_type_legend.pdf"), legend_grob, width = 3, height = 3, dpi = 300)
- ############################################################################################################################
- #..........................................................................................................................#
- ############################################################################################################################
- # Define gene accessibility score markers based on malignant cell state.
- set.seed(1)
- markersGS <- getMarkerFeatures(
- ArchRProj = CARE_filt_rna_malignant,
- useMatrix = "GeneScoreMatrix",
- groupBy = "CellStateGroup",
- bias = c("TSSEnrichment", "log10(nFrags)"),
- testMethod = "wilcoxon",
- maxCells = 2000
- )
- # Extract the marker list. These cutoffs are the default thresholds for ArchR. I tried to use these consistently throughout these analyses
- markerListGS <- getMarkers(markersGS, cutOff = "FDR <= 0.05 & Log2FC >= 1")
- lapply(markerListGS, nrow) # AC = 478, MES = 151, NPC = 7, OPC = 126, Undifferentiated = 91
- # Examine the distribution of differentially accessible genes
- undiff_df <- data.frame(markerListGS$Undifferentiated)
- # DLL3, OLIG1, OLIG2
- opc_df <- data.frame(markerListGS$OPC)
- # No real difference for NPC-like cells
- markerListGS$NPC
- ac_df <- data.frame(markerListGS$AC)
- # CD44
- mes_df <- data.frame(markerListGS$MES)
- # Selected marker genes of interest.
- markerGenes <- c("AQP4", "CD44", "VIM", "TNC", "ANXA2", "SPARCL1",
- "DLL3", "OLIG1",
- "PDGFRA",
- "HOXD11", "MET")
- heatmapGS <- plotMarkerHeatmap(
- seMarker = markersGS,
- cutOff = "FDR <= 0.05 & Log2FC >= 1",
- limits = c(-1.5, 1.5),
- labelMarkers = markerGenes,
- transpose = FALSE,
- )
- plotPDF(heatmapGS, name = "GeneScores-Malignant-Marker-Heatmap", width = 5.5, height = 6, ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE)
- pdf(paste0(fig_dir, "caremut_malignant_state_marker_genes.pdf"), width = 5, height = 4, useDingbats = FALSE, bg = "transparent")
- heatmapGS
- dev.off()
- ############################################################################################################################
- #..........................................................................................................................#
- ############################################################################################################################
- # Make pseudo bulk measurements for malignant cell state groups
- # See github discussion on how to structure groups: https://github.com/GreenleafLab/ArchR/discussions/696
- # Pseudo-bulk refers to a grouping of single cells where the data from each single sample is combined into a single pseudo-sample.
- set.seed(123)
- CARE_filt_rna_malignant <- addGroupCoverages(ArchRProj = CARE_filt_rna_malignant,
- groupBy = "CellStateGroup", # OPC, MES, etc
- minCells = 40, # default
- maxCells = 500, # default
- threads = getArchRThreads(),
- # Overwrite the data in the ArchRProject object if the pseudo-bulk replicate information already exists
- force = TRUE)
- ## Is macs2 in the path variable?
- pathToMacs2 <- findMacs2()
- # Iterative overlap peak merging procedure
- CARE_filt_rna_malignant <- addReproduciblePeakSet(
- ArchRProj = CARE_filt_rna_malignant,
- groupBy = "CellStateGroup",
- pathToMacs2 = pathToMacs2,
- threads = getArchRThreads(),
- )
- ## Needed to derive marker peaks.
- CARE_filt_rna_malignant <- addPeakMatrix(CARE_filt_rna_malignant)
- ############################################################################################################################
- #..........................................................................................................................#
- ############################################################################################################################
- getAvailableMatrices(CARE_filt_rna_malignant) # GeneScoreMatrix, PeakMatrix, TileMatrix
- ## Identifying marker peaks - features that are unique to a specific cell grouping.
- # Account for biases in data quality via TSSEnrichment and nFrags - these are the default settings on the tutorial and seemed advisable.
- set.seed(123)
- markersPeaks <- getMarkerFeatures(
- ArchRProj = CARE_filt_rna_malignant,
- useMatrix = "PeakMatrix",
- groupBy = "CellStateGroup",
- bias = c("TSSEnrichment", "log10(nFrags)"),
- testMethod = "wilcoxon",
- maxCells = 2000
- )
- saveRDS(markersPeaks, "/vast/palmer/pi/verhaak/kcj28/care_idh_mut/results/atac/malignant_cell_state_markersPeaks.RDS")
- # markersPeaks <- readRDS("/vast/palmer/pi/verhaak/kcj28/care_idh_mut/results/atac/malignant_cell_state_markersPeaks.RDS")
- # Extract the marker peaks. Get access the GRanges object via `returnGR = TRUE`.
- markerList <- getMarkers(markersPeaks, cutOff = "FDR <= 0.05 & Log2FC >= 1", returnGR = TRUE)
- lengths(markerList) # AC = 27447, MES = 15011, NPC = 1892, OPC = 13268, Undifferentiated = 6087
- # Inspect some of the results
- table(markerList$Undifferentiated@seqnames)
- table(markerList$OPC@seqnames)
- table(markerList$NPC@seqnames)
- heatmapPeaks <- plotMarkerHeatmap(
- seMarker = markersPeaks,
- cutOff = "FDR <= 0.05 & Log2FC >= 1",
- transpose = FALSE,
- limits = c(-1.5, 1.5),
- nLabel = 1
- )
- plotPDF(heatmapPeaks, name = "Peak-Marker-Heatmap-mut-malignant-state", width = 5.5, height = 6, ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE)
- pdf(paste0(fig_dir, "caremut_malignant_state_marker_peaks.pdf"), width = 6, height = 4, useDingbats = FALSE, bg = "transparent")
- heatmapPeaks
- dev.off()
- # Plot a few key marker peak's browser tracks.
- p_opc <- plotBrowserTrack(
- ArchRProj = CARE_filt_rna_malignant,
- groupBy = "CellStateGroup",
- geneSymbol = c("OLIG1"),
- features = getMarkers(markersPeaks, cutOff = "FDR <= 0.05 & Log2FC >= 1", returnGR = TRUE)["OPC"],
- upstream = 20000,
- downstream = 20000
- )
- grid::grid.draw(p_opc$OLIG1)
- plotPDF(p_opc, name = "Plot-Tracks-With-OLIG1", width = 5, height = 5, ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE)
- p_mes <- plotBrowserTrack(
- ArchRProj = CARE_filt_rna_malignant,
- groupBy = "CellStateGroup",
- geneSymbol = c("CD44"),
- features = getMarkers(markersPeaks, cutOff = "FDR <= 0.05 & Log2FC >= 1", returnGR = TRUE)["MES"],
- upstream = 20000,
- downstream = 20000
- )
- grid::grid.draw(p_mes$CD44)
- plotPDF(p_mes, name = "Plot-Tracks-With-MES", width = 5, height = 5, ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE)
- p_undiff <- plotBrowserTrack(
- ArchRProj = CARE_filt_rna_malignant,
- groupBy = "CellStateGroup",
- geneSymbol = c("PDGFRA"),
- features = getMarkers(markersPeaks, cutOff = "FDR <= 0.05 & Log2FC >= 1", returnGR = TRUE)["Undifferentiated"],
- upstream = 50000,
- downstream = 50000
- )
- grid::grid.draw(p_undiff$PDGFRA)
- plotPDF(p_undiff, name = "Plot-Tracks-With-PDGFRA", width = 5, height = 5, ArchRProj = CARE_filt_rna_malignant, addDOC = FALSE)
- # Save the current object so that it can be re-loaded.
- CARE_filt_rna_malignant_peaks <- saveArchRProject(ArchRProj = CARE_filt_rna_malignant,
- outputDirectory = "Save-CAREmut-Malignant-RNA-Peaks",
- load = TRUE)
- ############################################################################################################################
- #..........................................................................................................................#
- ############################################################################################################################
- ## Add add motif annotations. These enrichments give us some insights into the potential functionality of peak accessibility differences.
- if("Motif" %ni% names(CARE_filt_rna_malignant_peaks@peakAnnotation)){
- CARE_filt_rna_malignant_peaks <- addMotifAnnotations(ArchRProj = CARE_filt_rna_malignant_peaks, motifSet = "cisbp", name = "Motif")
- }
- # For motifs amongst the open chromatin peak regions.
- enrichRegions <- peakAnnoEnrichment(
- seMarker = markersPeaks,
- ArchRProj = CARE_filt_rna_malignant_peaks,
- peakAnnotation = "Motif",
- cutOff = "FDR <= 0.05 & Log2FC >= 1"
- )
- df_motif <- data.frame(TF = rownames(enrichRegions), mlog10Padj = assay(enrichRegions)[,2])
- df_motif <- df_motif[order(df_motif$mlog10Padj, decreasing = TRUE),]
- df_motif$rank <- seq_len(nrow(df_motif))
- heatmapRegions <- plotEnrichHeatmap(enrichRegions,
- transpose = TRUE,
- cutOff = 5,
- clusterCols= FALSE)
- plotPDF(heatmapRegions, name = "Regions-Enriched-Marker-Peak-Motif-Heatmap", width = 8, height = 6, ArchRProj = CARE_filt_rna_malignant_peaks, addDOC = FALSE)
- heatmapATAC_df <- plotEnrichHeatmap(enrichRegions,
- n = 1500,
- transpose = TRUE,
- returnMatrix = TRUE)
- df <- data.frame(TF = rownames(enrichRegions), mlog10Padj = assay(enrichRegions))
- library(viridisLite)
- colnames(heatmapATAC_df) <- sapply(strsplit(colnames(heatmapATAC_df), " "), "[[", 1)
- colnames(heatmapATAC_df) <- sapply(strsplit(colnames(heatmapATAC_df), "_"), "[[", 1)
- enrichment_of_interest <- c("TCF12", "ASCL1", "CREB5", "TAL1", "JUNB", "FOS", "NFIC","SOX9", "POU2F3")
- feature_order <- c("OPC", "NPC", "Undifferentiated", "MES", "AC")
- enrichment_order <- c("TCF12", "ASCL1", "TAL1", "POU2F3", "CREB5", "JUNB", "FOS", "NFIC","SOX9")
- heatmapATAC_df_filtered <- t(heatmapATAC_df[, colnames(heatmapATAC_df)%in%enrichment_of_interest])
- heatmapATAC_df_ordered <- heatmapATAC_df_filtered[enrichment_order,feature_order]
- manual_hmap <- ComplexHeatmap::Heatmap(heatmapATAC_df_ordered,
- show_row_dend = FALSE,
- cluster_columns = FALSE,
- cluster_rows = FALSE,
- show_column_dend = FALSE,
- col=viridis(100),
- name = "Norm. Enrichment -log10(P-adj) [0-Max]",
- heatmap_legend_param = list(
- legend_direction = "horizontal",
- legend_width = unit(5, "cm")
- ))
- pdf(paste0(fig_dir, "malignant_states_archr_differential_peak_enrichment_motif_heatmap.pdf"), width = 5, height = 5, useDingbats = FALSE, bg = "transparent")
- draw(manual_hmap, heatmap_legend_side = "bot", annotation_legend_side = "bot")
- dev.off()
- ############################################################################################################################
- #..........................................................................................................................#
- ############################################################################################################################
- ## Add a set of background peaks, which are used in computing deviations.
- set.seed(123)
- CARE_filt_rna_malignant_peaks <- addBgdPeaks(CARE_filt_rna_malignant_peaks)
- # Available peak annotation
- names(CARE_filt_rna_malignant_peaks@peakAnnotation)
- ## Compute the per-cell deviations across all of our motif annotations.
- ## This function has an optional parameter called matrixName that allows us to define the name of deviations.
- ## 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.
- # "Identifying Background Peaks!" will run if not background peaks haven't been added already.
- CARE_filt_rna_malignant_peaks <- addDeviationsMatrix(
- ArchRProj = CARE_filt_rna_malignant_peaks,
- peakAnnotation = "Motif",
- matrixName = "MotifMatrix",
- threads = getArchRThreads(),
- force = TRUE
- )
- motif_dev_df <- getVarDeviations(CARE_filt_rna_malignant_peaks, name = "MotifMatrix", plot = TRUE)
- ## How can one extract a subset of motifs for downstream analyses? getFeatures()
- motifs <- c("ASCL1", "TCF12", "JUNB", "FOS", "RFX2", "TAL1", "NFIC")
- markerMotifs <- getFeatures(CARE_filt_rna_malignant_peaks, select = paste(motifs, collapse="|"), useMatrix = "MotifMatrix")
- markerMotifs <- markerMotifs[grep("z:", markerMotifs)]
- p <- plotGroups(ArchRProj = CARE_filt_rna_malignant_peaks,
- groupBy = "CellStateGroup",
- colorBy = "MotifMatrix",
- name = markerMotifs,
- imputeWeights = getImputeWeights(CARE_filt_rna_malignant_peaks)
- )
- plotPDF(p, name = "Plot-State-Motifs-Deviations-w-Imputation", width = 5, height = 5, ArchRProj = CARE_filt_rna_malignant_peaks, addDOC = FALSE)
- ## Trying to extract the relevant TFs from the MotifMatrix. Use Z-scores for downstreams analyses.
- motif_df <- getMatrixFromProject(
- ArchRProj = CARE_filt_rna_malignant_peaks,
- useMatrix = "MotifMatrix",
- useSeqnames = "z",
- verbose = TRUE,
- binarize = FALSE
- )
- motif_df_zscore <- assay(motif_df)
- motif_df_zscore_out <- as.data.frame(as.matrix(t(motif_df_zscore)))
- rownames(motif_df_zscore_out) <- gsub("#", "-", rownames(motif_df_zscore_out))
- motif_df_zscore_out$CellID <- rownames(motif_df_zscore_out)
- # Write out the results so they can be used in additional analyses.
- 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)
- ############################################################################################################################
- #..........................................................................................................................#
- ############################################################################################################################
- ### Plot general enrichment of our malignant state peaks among other collections of ATACseq data, including normal and glioma samples.
- CARE_filt_rna_malignant_peaks <- addArchRAnnotations(ArchRProj = CARE_filt_rna_malignant_peaks, collection = "ATAC")
- enrichATAC <- peakAnnoEnrichment(
- seMarker = markersPeaks,
- ArchRProj = CARE_filt_rna_malignant_peaks,
- peakAnnotation = "ATAC",
- cutOff = "FDR <= 0.05 & Log2FC >= 1"
- )
- heatmapATAC <- plotEnrichHeatmap(enrichATAC, n = 5, cutOff = 3.5, transpose = TRUE)
- # Most of the results are confirmatory (astrocytes with AC-like, opcs/oligodendrocytes with OPC-like, MES-like with GBM and other tumor types)
- plotPDF(heatmapATAC, name = "ATAC-Enriched-Marker-Heatmap", width = 8, height = 6, ArchRProj = CARE_filt_rna_malignant_peaks, addDOC = FALSE)
- # NPC-like cells share a similar chromatin profile with OPCs, but had only one significant enrichment for "Brain_Excitatory_neurons"
- df <- data.frame(TF = rownames(enrichATAC), mlog10Padj = assay(enrichATAC)[,3])
- df <- df[order(df$mlog10Padj, decreasing = TRUE),]
- df$rank <- seq_len(nrow(df))
- head(df)
- # Save these results for future inspection.
- enrichATAC_out <- assay(enrichATAC)
- enrichATAC_out$Bulk <- rownames(enrichATAC_out)
- 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)
- ############################################################################################################################
- #..........................................................................................................................#
- ############################################################################################################################
- # Pairwise differential expression. In the snRNA data, there was a clear anti-correlation for OPC-like and AC-like cells. Assessing that difference here.
- markerOPC <- getMarkerFeatures(
- ArchRProj = CARE_filt_rna_malignant_peaks,
- useMatrix = "PeakMatrix",
- groupBy = "CellStateGroup",
- testMethod = "wilcoxon",
- bias = c("TSSEnrichment", "log10(nFrags)"),
- useGroups = "OPC",
- bgdGroups = "AC"
- )
- # Approximately equal up- and down-regulated. Total peaks: 281,999 (9349 up and 11,004 down)
- volcano_opc_v_ac <- plotMarkers(seMarker = markerOPC, name = "OPC", cutOff = "FDR <= 0.05 & abs(Log2FC) >= 1", plotAs = "Volcano")
- png(paste0(fig_dir, "opc_vs_ac_differential_peaks_volcano.png"), width = 5, height = 5, res = 300, units = "in")
- volcano_opc_v_ac
- dev.off()
- markerMES_v_AC <- getMarkerFeatures(
- ArchRProj = CARE_filt_rna_malignant_peaks,
- useMatrix = "PeakMatrix",
- groupBy = "CellStateGroup",
- testMethod = "wilcoxon",
- bias = c("TSSEnrichment", "log10(nFrags)"),
- useGroups = "MES",
- bgdGroups = "AC"
- )
- # 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.
- # This is also evident in the various UMAP plots.
- volcano_mes_v_ac <- plotMarkers(seMarker = markerMES_v_AC, name = "MES", cutOff = "FDR <= 0.05 & abs(Log2FC) >= 1", plotAs = "Volcano")
- volcano_mes_v_ac
- png(paste0(fig_dir, "mes_vs_ac_differential_peaks_volcano.png"), width = 5, height = 5, res = 300, units = "in")
- volcano_mes_v_ac
- dev.off()
- MesMotifsUp <- peakAnnoEnrichment(
- seMarker = markerMES_v_AC,
- ArchRProj = CARE_filt_rna_malignant_peaks,
- peakAnnotation = "Motif",
- cutOff = "FDR <= 0.05 & Log2FC >= 1"
- )
- # Domninated by JUN/FOS and STAT3 further down the list.
- df <- data.frame(TF = rownames(MesMotifsUp), mlog10Padj = assay(MesMotifsUp)[,1])
- df <- df[order(df$mlog10Padj, decreasing = TRUE),]
- df$rank <- seq_len(nrow(df))
- ############################################################################################################################
- #..........................................................................................................................#
- ############################################################################################################################
- # Save various outputs:
- getAvailableMatrices(CARE_filt_rna_malignant_peaks) # "GeneScoreMatrix" "MotifMatrix" "PeakMatrix" "TileMatrix"
- names(CARE_filt_rna_malignant_peaks@peakAnnotation) # "Motif" "ATAC"
- care_malignant_archr_df <- data.frame(CARE_filt_rna_malignant_peaks@cellColData)
- 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)
- paste0("Memory Size = ", round(object.size(CARE_filt_rna_malignant) / 10^6, 3), " MB")
- CARE_filt_rna_malignant_peaks <- saveArchRProject(ArchRProj = CARE_filt_rna_malignant_peaks,
- outputDirectory = "Save-CAREmut-Malignant-RNA-Peaks",
- load = TRUE)
- ### END ###
04_run_archr_caremut_peakcall_malignant_states.R at commit 1d23ca1, under MIT · at the source
Overview
and 31 other authors
Simon 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,3737 affiliations
- Department of Neurosurgery, Yale School of Medicine,New Haven, CT USA
- Department of Molecular Cell Biology, Weizmann Institute of Science,Rehovot, Israel
- Department of Oncology, Tel Aviv Sourasky Medical Center,Tel Aviv, Israel
- The Jackson Laboratory for Genomic Medicine,Farmington, CT USA
- Department of Genetics and Genome Sciences, University of Connecticut Health Center,Farmington, CT USA
- Institute for Systems Genomics, University of Connecticut,Storrs, CT USA
- Department of Pathology, Massachusetts General Hospital and Harvard Medical School,Boston, MA USA
- Broad Institute of MIT and Harvard,Cambridge, MA USA
- Department of Neurosurgery, Graduate School of Medicine, The University of Tokyo,Tokyo, Japan
- Krantz Family Center for Cancer Research, Massachusetts General Hospital and Harvard Medical School,Boston, MA USA
- Department of Public Health Sciences, Division of Biostatistics, University of Miami, Miller School of Medicine,Miami, FL USA
- Sylvester Comprehensive Cancer Center, University of Miami, Miller School of Medicine,Miami, FL USA
- Present Address: Translational Genomics Research Institute (TGen),Phoenix, AZ USA
- NORLUX Neuro-Oncology Laboratory, Department of Cancer Research, Luxembourg Institute of Health,Luxembourg, Luxembourg
- 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
- Department of Neurological Surgery, University of Miami, Miller School of Medicine,Miami, FL USA
- Department of Biochemistry and Molecular Biology, University of Miami, Miller School of Medicine,Miami, FL USA
- Department of Neurosurgery, Cancer Research Institute, Hypoxia Ischemia Disease Institute, Seoul National University,Seoul, Republic of Korea
- Advanced Institutes of Convergence Technology, Seoul National University,Gyeonggi-do, Republic of Korea
- Sorbonne Université, UMR S 1127, INSERM U 1127, CNRS, ICM–Paris Brain Institute, Equipe Labellisée LNCC,Paris, France
- AP-HP, Groupe Hospitalier Pitié-Salpêtrière, Neuropathology,Paris, France
- AP-HP, Groupe Hospitalier Pitié-Salpêtrière, Neuro-oncology,Paris, France
- Neurology Department, Foch Hospital,Suresnes, France
- Division of Neurosurgery, Azienda USL Toscana Nord-ovest, Livorno Hospital,Livorno, Italy
- AP-HP, Groupe Hospitalier Pitié-Salpêtrière, Neurosurgery,Paris, France
- Beijing Neurosurgical Institute, Capital Medical University,Beijing, China
- Chinese Glioma Genome Atlas Network & Asian Glioma Genome Atlas Network, Beijing, China
- Institute for Brain Tumors, Jiangsu Collaborative Innovation Center for Cancer Personalized Medicine, Nanjing Medical University,Nanjing, China
- Department of Bioinformatics, Nanjing Medical University,Nanjing, China
- Translational Neuro-Oncology Laboratory, Massachusetts General Hospital, Harvard Medical School,Boston, MA USA
- Stephen E. and Catherine Pappas Center for Neuro-Oncology, Department of Neurology, Massachusetts General Hospital, Harvard Medical School,Boston, MA USA
- Department of Neurosurgery, Massachusetts General Hospital, Harvard Medical School,Boston, MA USA
- St Joseph’s Hospital and Barrow Neurological Institute,Phoenix, AZ USA
- Ivy Brain Tumor Center at Barrow Neurological Institute,Phoenix, AZ USA
- Department of Pathology, The University of Texas MD Anderson Cancer Center,Houston, TX USA
- Department of Neuro-Oncology, The University of Texas MD Anderson Cancer Center,Houston, TX USA
- Department of Neurosurgery, Amsterdam University Medical Center,Amsterdam, The Netherlands
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
65e6bf554600c92e7d5c121e98247d9c3f888a0d, 14 November 2025Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
82 files
- R/
.wip/ , R, 181 linesSeurat_integration.R - R/
SplatterScrape.R , R, 495 lines - R/
data.R , R, 42 lines - R/
inferCNV.R , R, 528 lines - R/
inferCNV_BayesNet.R , R, 1,457 lines, 1 match - R/
inferCNV_HMM.R , R, 1,207 lines - R/
inferCNV_constants.R , R, 56 lines - R/
inferCNV_heatmap.R , R, 2,849 lines - R/
inferCNV_hidden_spike.R , R, 282 lines - R/
inferCNV_i3HMM.R , R, 493 lines - R/
inferCNV_mask_non_DE.R , R, 260 lines - R/
inferCNV_meanVarSim.R , R, 224 lines - R/
inferCNV_ops.R , R, 3,498 lines - R/
inferCNV_simple_sim.R , R, 324 lines - R/
inferCNV_tumor_subcluste , R, 774 linesrs.R - R/
inferCNV_tumor_subcluste , R, 358 linesrs.random_smoothed_trees .R - R/
infercnv_sampling.R , R, 666 lines - R/
noise_reduction.R , R, 114 lines - R/
seurat_interaction.R , R, 616 lines - Rstudio_helpers/
Examine_and_Filter_Cells , R, 144 lines_and_Genes.Rmd - example/
__alt_exec_modes/ , R, 21 linesrun.no_spike.R - example/
__alt_exec_modes/ , R, 36 linesrun.set_num_ref_groups.R - example/
__alt_exec_modes/ , R, 24 linesrun.use_zscores.R - example/
example.Rmd , R, 300 lines - example/
run.R , R, 26 lines - example/
run_memory_profiling_per , Shell, 6 lines_step.sh - example/
run_test.R , R, 36 lines - scripts/
ExploratoryPlots.R , R, 712 lines - scripts/
HB_example_to_inferCNV_o , R, 18 linesbj.R - scripts/
KS_matrix_comparison.R , R, 66 lines - scripts/
KS_matrix_comparison.use , R, 71 lines_infercnv_obj.R - scripts/
QQ_matrix_comparison.R , R, 30 lines - scripts/
apply_median_filtering.R , R, 25 lines - scripts/
boxplot_cell_exprs.R , R, 51 lines - scripts/
check_matrix_format.py , Python, 81 lines - scripts/
cross_cell_scaling_norma , R, 32 lineslization.R - scripts/
dropout_matrix_compariso , R, 80 linesn.R - scripts/
examine_dropout_logistic , R, 83 lines.R - scripts/
examine_infercnv_data_pa , R, 79 linesrams.R - scripts/
examine_infercnv_data_pa , R, 56 linesrams.just_dispersion.R - scripts/
examine_normal_cutoffs_v , R, 82 liness_KS.R - scripts/
examine_normal_sampling_ , R, 166 linesdistributions.R - scripts/
examine_normal_sampling_ , R, 108 linesdistributions.i3.R - scripts/
examine_simulated_vs_obs , R, 97 lineserved_dispersion.R - scripts/
examine_simulated_vs_obs , R, 92 lineserved_dispersion.from_ma trix.R - scripts/
explore_HMM_exec.R , R, 177 lines - scripts/
explore_HMM_exec.hspike. , R, 161 linesR - scripts/
explore_steps_by_gene.si , R, 280 linesmple.R - scripts/
genome_smoothed_lineplot , R, 96 liness.R - scripts/
gtf_to_position_file.py , Python, 128 lines - scripts/
inferCNV.R , R, 1,141 lines - scripts/
inferCNV_to_HB.R , R, 103 lines - scripts/
inferCNV_utils.R , R, 208 lines - scripts/
infercnv_obj_to_input_fi , R, 65 linesles.R - scripts/
infercnv_validate.R , R, 90 lines - scripts/
meanvar_sim_counts.R , R, 62 lines - scripts/
plot_hspike.R , R, 36 lines - scripts/
plot_hspike.by_num_cells , R, 78 lines.R - scripts/
plot_hspike.diff_normal_ , R, 42 linestumor.R - scripts/
plot_hspike_vs_sample_ch , R, 74 linesrs.R - scripts/
plot_infercnv_obj.R , R, 17 lines - scripts/
plot_tumor_vs_normal_chr , R, 61 lines_densities.R - scripts/
plot_tumor_vs_normal_chr , R, 63 lines_densities.i3.R - scripts/
prepare_sparsematrix.R , R, 114 lines - scripts/
recursive_random_tree_he , R, 30 linesight_cutting.random_tree s.R - scripts/
recursive_random_tree_he , R, 83 linesight_cutting.sigclust2.R - scripts/
recursive_random_tree_he , R, 155 linesight_cutting.using_hmms. R - scripts/
run.stub.R , R, 18 lines - scripts/
run_BayesNet.R , R, 33 lines - scripts/
run_HMM_each_cell_separa , R, 23 linestely.R - scripts/
run_HMM_on_hspike.R , R, 27 lines - scripts/
run_HMM_on_subclusters.R , R, 29 lines - scripts/
run_HMM_per_chr.R , R, 23 lines - scripts/
run_tests_sampling_and_g , R, 138 linesroup_plots.R - scripts/
sim_vs_orig_counts.QQplo , R, 99 linest.R - scripts/
splatterScrape_sim_count , R, 67 liness.R - tests/
testthat.R , R, 6 lines - tests/
testthat/ , R, 486 linestest_infer_cnv.R - vignettes/
.wip/ , R, 307 linesinferCNV.Rmd - vignettes/
inferCNV.Rmd , R, 169 lines - LICENSE, License, 3 lines
- README.md, Text, 23 lines
Kcjohnson/care-glass
9b587f256099712d0af710e807dbaa575d538960, 23 April 2026Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
114 files
- R/
add_genomes/ , R, 71 linesGLSS_SN_variant_upload_s cripts.R - R/
add_genomes/ , R, 16 linesSN_upload_tmp.R - R/
add_genomes/ , R, 76 linescare_batch2_variant_uplo ad_scripts.R - R/
add_genomes/ , R, 69 linescare_variant_upload_scri pts.R - R/
add_genomes/ , R, 61 linescoverage_update.r - R/
add_genomes/ , R, 60 linescoverage_update_care.R - R/
add_genomes/ , R, 63 linescoverage_update_care_bat ch2.R - R/
add_genomes/ , R, 61 linescoverage_update_glss_lx. R - R/
add_genomes/ , R, 54 linesgatk_write_seg_to_db.R - R/
add_genomes/ , R, 58 linesgatk_write_seg_to_db_car e_batch2.R - R/
add_genomes/ , R, 58 linesgatk_write_seg_to_db_car e_lx_cohort.R - R/
add_genomes/ , R, 71 linesgatk_write_seg_to_db_car e_tonly.R - R/
add_genomes/ , R, 69 linesgatk_write_seg_to_db_gls s_lx_batch2.R - R/
add_genomes/ , R, 50 linesgeno_upload.R - R/
add_genomes/ , R, 74 linesglss_lx_variant_upload_s cipts.R - R/
add_genomes/ , R, 50 linesinfo_upload.R - R/
add_genomes/ , R, 25 linesmfcov_update.r - R/
add_genomes/ , R, 30 linesmfcov_update_care_batch2 .R - R/
add_genomes/ , R, 29 linesmfcov_update_glss_lx.R - R/
add_genomes/ , R, 51 linesnewVar2db.R - R/
add_genomes/ , R, 51 linesnewVar2db_care_md.R - R/
add_genomes/ , R, 51 linesnewVar2db_care_ps.R - R/
add_genomes/ , R, 51 linesnewVar2db_care_pt.R - R/
add_genomes/ , R, 51 linesnewVar2db_care_tk.R - R/
add_genomes/ , R, 51 linesnewVar2db_care_to.R - R/
add_genomes/ , R, 52 linesnewVar2db_glss_lx.R - R/
expression/ , R, 51 linesanalysis/ care_idhwt_metaprograms_ glass.r - R/
expression/ , R, 34 linesanalysis/ msgdb_idhwt_hallmarks_gl ass.r - R/
expression/ , R, 72 linesanalysis/ msigdb_hallmarks_idhwt_f igure.r - R/
misc/ , R, 22 linesblocklist2db.R - R/
misc/ , R, 67 linescare_batch2_blocklist2db .R - R/
misc/ , R, 61 linescare_blocklist2db.R - R/
misc/ , R, 58 linesgencode-coverage2db.R - R/
misc/ , R, 32 linesgeneTable2DB.R - R/
misc/ , R, 69 linesglss_lx_batch2_blocklist 2db.R - R/
misc/ , R, 62 linesglss_lx_blocklist2db.R - R/
misc/ , R, 51 linespyclone2db.r - R/
misc/ , R, 100 linesseqz2DB-care-batch2.R - R/
misc/ , R, 33 linesseqz2DB-care.R - R/
misc/ , R, 100 linesseqz2DB-glss-lx.R - R/
misc/ , R, 95 linesseqzseg2db.r - R/
misc/ , R, 57 linestitan2DB.R - R/
misc/ , R, 60 linestitan_2DB_care_batch2.R - R/
misc/ , R, 60 linestitan_2db_glss_lx.R - R/
misc/ , R, 64 linestitanparams2db.R - R/
misc/ , R, 68 linestitanparams2db_care_batc h2.R - R/
misc/ , R, 68 linestitanparams2db_glss_lx.R - R/
preprocess/ , R, 64 linesadd-aligned-bams-to-file s-batch2-lx-db.R - R/
preprocess/ , R, 41 linesadd-aligned-bams-to-file s-db.R - R/
preprocess/ , R, 59 linesadd-aligned-bams-to-file s-lx-tonly-db.R - R/
preprocess/ , R, 78 linesadd-aligned-bams-to-file s-tonly-db.R - R/
preprocess/ , R, 17 linesadd_aligned_bam_to_files .R - R/
preprocess/ , R, 69 linesaliquots-coverage-metric s.R - R/
preprocess/ , R, 71 linesaliquots-coverage-metric sv2.R - R/
preprocess/ , R, 93 lines, 1 matchcrosscheck-mismatch-iden tification-LX-2.R - R/
preprocess/ , R, 93 lines, 1 matchcrosscheck-mismatch-iden tification-LX.R - R/
preprocess/ , R, 93 linescrosscheck-mismatch-iden tification-TK.R - R/
preprocess/ , R, 90 linescrosscheck-mismatch-iden tification.R - R/
snakemake/ , R, 49 linescov2db.R - R/
snakemake/ , R, 26 linesgct_create.R - R/
snakemake/ , R, 139 linesgeno2db.R - R/
snakemake/ , R, 31 lineslohhla_titan_solutions.R - R/
snakemake/ , R, 30 linesnctpm2db.R - R/
snakemake/ , R, 35 linespizzly2db.R - R/
snakemake/ , R, 28 linespyclone_create_tsv.R - R/
snakemake/ , R, 192 linesrunSeqz.R - R/
snakemake/ , R, 30 linesseg2db.R - R/
snakemake/ , R, 33 linessnv2db.R - R/
snakemake/ , R, 26 linestpm2db.R - R/
snakemake/ , R, 52 linestranscript2gene.R - R/
snakemake/ , R, 79 linestranscriptclass2db.R - R/
snakemake/ , R, 67 linesvep_upload.r - R/
snakemake/ , R, 67 linesvep_upload_care_md.R - R/
snakemake/ , R, 67 linesvep_upload_care_ps.R - R/
snakemake/ , R, 67 linesvep_upload_care_pt.R - R/
snakemake/ , R, 68 linesvep_upload_care_tk.R - R/
snakemake/ , R, 69 linesvep_upload_care_to.R - R/
snakemake/ , R, 68 linesvep_upload_glss_lx.R - R/
titancna/ , R, 71 linesTitanCNA/ R/ correction.R - R/
titancna/ , R, 433 linesTitanCNA/ R/ haplotype.R - R/
titancna/ , R, 784 linesTitanCNA/ R/ hmmClonal.R - R/
titancna/ , R, 546 linesTitanCNA/ R/ paramEstimation.R - R/
titancna/ , R, 797 linesTitanCNA/ R/ plotting.R - R/
titancna/ , R, 1,485 linesTitanCNA/ R/ utils.R - R/
titancna/ , R, 3 linesTitanCNA/ R/ zzz.R - R/
titancna/ , R, 192 linesTitanCNA/ doc/ TitanCNA.R - R/
titancna/ , R, 148 linesTitanCNA/ scripts/ R_scripts/ selectSolution.R - R/
titancna/ , R, 394 linesTitanCNA/ scripts/ R_scripts/ titanCNA.R - bin/
bam-rg-insert-size-calc. , Perl, 97 linespl - bin/
bamtofastq-rename.sh , Shell, 4 lines - bin/
bedtovcf.sh , Shell, 6 lines - bin/
get-readgroups.sh , Shell, 4 lines - bin/
kallisto_count_matrix.sh , Shell, 12 lines - bin/
preprocess-intervals.sh , Shell, 74 lines - bin/
scatter-interval-list-to , Shell, 6 lines-bed.sh - bin/
select-germline-variants , Shell, 37 lines.sh - bin/
seqkit_cleanup.sh , Shell, 6 lines - bin/
snakemake-run.sh , Shell, 156 lines - python/
JSONManifestHandler.py , Python, 88 lines - python/
ManifestHandler.py , Python, 428 lines - python/
PostgreSQLManifestHandle , Python, 131 linesr.py - python/
__init__.py , Python, 1 line - python/
countPysam.py , Python, 68 lines - python/
dexseq_prepare_annotatio , Python, 114 linesn.py - python/
glassfunc.py , Python, 57 lines - python/
manifest_tester.py , Python, 24 lines - python/
map_building_functions.p , Python, 548 linesy - shell/
calculate_md5/ , Shell, 30 linesaligned-bam-calculate-md 5sums.sh - shell/
gencode_coverage_upload. , Shell, 21 linessh - shell/
liftover/ , Shell, 22 linesarray_submit_run_liftove rvcf.sh - shell/
liftover/ , Shell, 34 linesrun_liftovervcf.sh - snakemake/
batches2db.R , R, 124 lines - LICENSE, License, 23 lines
- README.md, Text, 20 lines
Kcjohnson/care_idh_mut
1d23ca192258f1468c19f1bf4c21389a4f03a7ad, 18 May 2026Availability: 1 check, the latest on 27 September 2026: the link answers
- 27 September 2026: the link answers
93 files
- scripts/
atac/ , R, 169 lines01_run_archr_preprocess_ caremut.R - scripts/
atac/ , Shell, 28 lines01_run_archr_preprocess_ caremut.sh - scripts/
atac/ , R, 352 lines, 1 match02_run_archr_caremut_all _cell_types.R - scripts/
atac/ , R, 338 lines, 1 match03_run_archr_caremut_pea kcall_all_cell_types.R - scripts/
atac/ , R, 696 lines, 3 matches04_run_archr_caremut_pea kcall_malignant_states.R - scripts/
atac/ , R, 155 lines05_run_archr_caremut_lon gitudinal_gene_malignant _states.R - scripts/
atac/ , R, 158 lines06_run_archr_caremut_mye loid_peakcall.R - scripts/
atac/ , R, 218 lines07_run_archr_caremut_lon gitudinal_tme_states.R - scripts/
atac/ , R, 373 lines08_run_archr_caremut_mul tiome_integration.R - scripts/
figures/ , R, 43 linesatac_peak_compartments.R - scripts/
figures/ , R, 278 linescare_celltype_proportion s.R - scripts/
figures/ , R, 100 linescdkn2a_targeting.R - scripts/
figures/ , R, 687 lines, 2 matchescibersortx_cell_type_pro portions.R - scripts/
figures/ , R, 99 lines, 1 matchcoculture_irradiation.R - scripts/
figures/ , R, 61 linesexternal_sc_snrna_grade. R - scripts/
figures/ , R, 43 linesexternal_snrna_mes.R - scripts/
figures/ , R, 293 lines, 2 matchesgenetic_state_abundance. R - scripts/
figures/ , R, 117 lines, 1 matchgenomic_data_availabilit y.R - scripts/
figures/ , R, 109 lineslongitudinal_gene_access ibility.R - scripts/
figures/ , R, 68 lines, 1 matchlongitudinal_mutation_bu rden.R - scripts/
figures/ , R, 638 linesmalignant_state_grade_ti mepoint.R - scripts/
figures/ , R, 299 linesmes_overall_survival.R - scripts/
figures/ , R, 189 linesmetaprogram_by_batch_fea tures.R - scripts/
figures/ , R, 93 linesmetaprogram_compare_jacc ard.R - scripts/
figures/ , R, 196 linesmetaprogram_gene_express ion_heatmap.R - scripts/
figures/ , R, 230 linesmetaprogram_scores.R - scripts/
figures/ , R, 650 lines, 2 matchesmyeloid_analyses.R - scripts/
figures/ , R, 105 lines, 2 matchespathway_scores.R - scripts/
figures/ , R, 180 linespdgfra_inhibition.R - scripts/
figures/ , R, 132 lines, 2 matchespdgfrai_viability.R - scripts/
figures/ , R, 263 lines, 1 matchplot_malignant_hierarchy .R - scripts/
figures/ , R, 60 linesproportion_malignant_cyc ling.R - scripts/
figures/ , R, 50 linespublic_cohorts_longitudi nal_mes.R - scripts/
figures/ , R, 87 linespublic_malignant_abundan ce.R - scripts/
figures/ , R, 49 linespurity_ccf.R - scripts/
figures/ , R, 107 linesquality_metrics.R - scripts/
figures/ , R, 376 lines, 1 matchrna_state_atac_tf_activi ty.R - scripts/
figures/ , R, 37 linessequenza_purity.R - scripts/
figures/ , R, 212 linestcga_genetics_proportion s.R - scripts/
figures/ , R, 196 linestcga_malignant_proportio ns.R - scripts/
figures/ , R, 38 lines, 2 matchestranscriptional_genetic_ distance.R - scripts/
snrna/ , Shell, 20 linesinfercnv/ astrocytomas/ array_submit_run_infercn v_astrocytomas.sh - scripts/
snrna/ , Shell, 23 linesinfercnv/ astrocytomas/ collect_infercnv_plots.s h - scripts/
snrna/ , R, 38 linesinfercnv/ astrocytomas/ infercnv_add_metadata_as trocytomas.R - scripts/
snrna/ , R, 426 lines, 1 matchinfercnv/ astrocytomas/ infercnv_metadata_analys is_astrocytomas.R - scripts/
snrna/ , R, 90 linesinfercnv/ astrocytomas/ run_infercnv_NL26_1.R - scripts/
snrna/ , Shell, 22 linesinfercnv/ astrocytomas/ run_infercnv_NL26_1.sh - scripts/
snrna/ , R, 89 linesinfercnv/ astrocytomas/ run_infercnv_astrocytoma s.R - scripts/
snrna/ , Shell, 41 linesinfercnv/ astrocytomas/ run_infercnv_astrocytoma s.sh - scripts/
snrna/ , Shell, 20 linesinfercnv/ oligodendrogliomas/ array_submit_run_infercn v_oligodendrogliomas.sh - scripts/
snrna/ , R, 38 linesinfercnv/ oligodendrogliomas/ infercnv_add_metadata_ol igodendrogliomas.R - scripts/
snrna/ , R, 309 lines, 1 matchinfercnv/ oligodendrogliomas/ infercnv_metadata_analys is_oligodendrogliomas.R - scripts/
snrna/ , R, 89 linesinfercnv/ oligodendrogliomas/ run_infercnv_oligodendro gliomas.R - scripts/
snrna/ , Shell, 43 linesinfercnv/ oligodendrogliomas/ run_infercnv_oligodendro gliomas.sh - scripts/
snrna/ , R, 32 linesnmf/ combine_final_metaprogra ms.R - scripts/
snrna/ , Shell, 21 linesnmf/ malignant/ array_run_nmf_malignant_ caremut_downsampled.sh - scripts/
snrna/ , R, 155 linesnmf/ malignant/ derive_annotate_metaprog rams_caremut.R - scripts/
snrna/ , R, 81 linesnmf/ malignant/ run_nmf_malignant_all_do wnsampled.R - scripts/
snrna/ , Shell, 38 linesnmf/ malignant/ run_nmf_malignant_caremu t_downsampled.sh - scripts/
snrna/ , R, 132 linesnmf/ metaprogram_go_enrichmen t.R - scripts/
snrna/ , R, 188 lines, 1 matchnmf/ mp_pathway_hypergeometri c.R - scripts/
snrna/ , R, 167 linesnmf/ myeloid/ annotate_myeloid_MPs_car emut_no_parallel.R - scripts/
snrna/ , Shell, 21 linesnmf/ myeloid/ array_run_nmf_myeloid_ca remut.sh - scripts/
snrna/ , R, 65 linesnmf/ myeloid/ run_nmf_myeloid_caremut. R - scripts/
snrna/ , Shell, 38 linesnmf/ myeloid/ run_nmf_myeloid_caremut. sh - scripts/
snrna/ , R, 144 linesnmf/ nmf_setup_caremut.R - scripts/
snrna/ , R, 162 linesnmf/ undifferentiated/ derive_annotate_MPs_undi fferentiated.R - scripts/
snrna/ , Shell, 20 linesnmf/ undifferentiated/ downsample/ array_run_nmf_malignant_ undifferentiated_downsam ple.sh - scripts/
snrna/ , R, 82 linesnmf/ undifferentiated/ downsample/ run_nmf_malignant_state_ level_downsample.R - scripts/
snrna/ , Shell, 38 linesnmf/ undifferentiated/ downsample/ run_nmf_malignant_undiff erentiated_downsample.sh - scripts/
snrna/ , R, 146 linesnmf/ undifferentiated/ nmf_setup_state_level.R - scripts/
snrna/ , R, 549 lines, 1 matchpreprocessing/ care_10x_preprocess_snrn a_astrocytoma_20260317.R - scripts/
snrna/ , R, 540 lines, 3 matchespreprocessing/ care_10x_preprocess_snrn a_oligodendroglioma_2026 0318.R - scripts/
snrna/ , R, 122 linespreprocessing/ longitudinal_qc_metrics. R - scripts/
snrna/ , R, 775 linespreprocessing/ preprocess_cdkn2a_in_vit ro.R - scripts/
snrna/ , R, 964 lines, 1 matchpreprocessing/ preprocess_mgg152_cocult ure.R - scripts/
snrna/ , R, 998 lines, 1 matchpreprocessing/ preprocess_pdgfra_inhibi tion_in_vitro.R - scripts/
snrna/ , R, 200 linespreprocessing/ umap_plots.R - scripts/
snrna/ , R, 345 lines, 1 matchscoring/ malignant_mp_scoring_fir st_round.R - scripts/
snrna/ , R, 354 lines, 2 matchesscoring/ malignant_mp_scoring_pva l_assignment.R - scripts/
snrna/ , R, 69 lines, 1 matchscoring/ pseudobulk_transcription al_distance_metric.R - scripts/
snrna/ , R, 106 lines, 1 matchscoring/ score_malignant_state_hi erarchy.R - scripts/
utils/ , R, 428 lines, 1 matchPvsR-NMF-caremut.R - scripts/
utils/ , R, 477 linescaremut_utils.R - scripts/
utils/ , R, 4 linescustom_magma.R - scripts/
utils/ , R, 150 linesgenerate_matched_exp_pro files.R - scripts/
utils/ , R, 59 linesgeneset_lists.R - scripts/
utils/ , R, 36 linesmetaprograms_enrichment. R - scripts/
utils/ , R, 44 linesplot_theme.R - scripts/
utils/ , Python, 175 linesrecover_counts_from_log_ normalized_data.py - scripts/
utils/ , R, 14 linesumap_theme.R - LICENSE, License, 21 lines
- README.md, Text, 9 lines
Code availability
Analysis scripts for processing DNA sequencing are available at https://
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
- geo:GSE227718, at NCBI GEO; found in “Data availability”
- synapse.org/
care_idh_mutant , at Synapse; found in “Data availability” - synapse.org/
glass , at Synapse; found in “Data availability” - synapse.org/
synapse:syn60087246 , at Synapse; found in “Data availability”
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://
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://
BibTeX
@article{johnson2026acqu
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/
url = {https://
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/
VL - 655
IS - 8124
SP - 1048
EP - 1059
SN - 0028-0836
PB - Nature Portfolio
DO - 10.1038/
UR - https://
LA - en
ER -
CSL-JSON
{
"id": "10.1038/
"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":
"volume": "655",
"issue": "8124",
"page": "1048-1059",
"DOI": "10.1038/
"PMID": "42236943",
"PMCID": "PMC13391360",
"ISSN": "0028-0836",
"publisher": "Nature Portfolio",
"URL": "https://
"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. MedicineIn 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-specifi
c DNA demethylation shapes progression of IDH-mutant gliomas. Journal: Cell reports. MedicineIn 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: CellIn 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 reportsIn 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 biologyIn 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 biologyIn 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: NatureIn 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-induc
ed copy number variants and genome diversification. Journal: Nature communicationsIn 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. MedicineIn 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.
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: 3 repositories of the authors' code, each at its verified commit and with its license, 283 scripts, and 40 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:23db0587b9a618f8…
Add the badge to its README
The badge links the code to this page. Copy one of these into the README of the paper's code: only you decide where it goes, and nothing is changed for you.
Markdown
[, paste the snippet at the top, then “Commit changes…” and, to review it first, “Create a new branch and start a pull request”. You open the pull request; OSCR asks for no permission.
Request its removal
To ask OSCR to remove this record, the copies of its authors' scripts or its tracing map, use the removal request page: signed in, you say who you are, what to remove and why, then review and confirm the request. Published rules decide every request (how).
Discussion, reproductions, activity
Discussion: questions and error reports about this paper and its code, from signed-in readers and its authors. It opens with sign-in.
Reproductions: reports from readers who ran the authors' code: what they reproduced, with which environment, commit and data. It opens with sign-in.
Activity: what happens around this paper: new versions of its record, its map's validation, discussions and reproductions. It opens with sign-in.
