## ----include = FALSE---------------------------------------------------------- knitr::opts_chunk$set( collapse = TRUE, comment = "#>", warning = FALSE, message = TRUE ) ## ----------------------------------------------------------------------------- library(ConvergeR) library(Seurat) library(ggplot2) # Load the built-in example dataset seu_path <- system.file("extdata", "pbmc3k_subset.rds", package = "ConvergeR") seu <- readRDS(seu_path) # Normalising seu <- NormalizeData(seu, verbose = FALSE) # Inject mock clinical metadata to simulate a multi-patient cohort set.seed(42) seu$age <- sample(20:70, ncol(seu), replace = TRUE) seu$tumor_status <- sample(c("Primary", "Metastatic"), ncol(seu), replace = TRUE) seu$treatment <- sample(c("Treated", "Untreated"), ncol(seu), replace = TRUE) seu$SS <- paste0("Patient_", sample(1:5, ncol(seu), replace = TRUE)) ## ----------------------------------------------------------------------------- library(msigdbr) # S'assurer que l'on travaille sur l'assay RNA principal DefaultAssay(seu) <- "RNA" # Récupérer deux signatures immunitaires/inflammatoires bien exprimées dans les PBMC hallmark_sets <- msigdbr(species = "Homo sapiens", category = "H") raw_group1 <- hallmark_sets[hallmark_sets$gs_name == "HALLMARK_INTERFERON_ALPHA_RESPONSE", ]$gene_symbol raw_group2 <- hallmark_sets[hallmark_sets$gs_name == "HALLMARK_INFLAMMATORY_RESPONSE", ]$gene_symbol # Intersection stricte avec les gènes réellement présents dans pbmc3k_subset group1_genes <- intersect(raw_group1, rownames(seu)) group2_genes <- intersect(raw_group2, rownames(seu)) # Calcul des scores de modules Seurat seu <- AddModuleScore(seu, features = list(group1_genes), name = "Score_IFN_") seu <- AddModuleScore(seu, features = list(group2_genes), name = "Score_Inflam_") # Renommer proprement les colonnes pour la suite seu$Score_IFN <- seu$Score_IFN_1 seu$Score_Inflam <- seu$Score_Inflam_1 ## ----------------------------------------------------------------------------- seu <- CalculateConvergedScore( seurat_obj = seu, principal_score = "Score_IFN", other_scores = "Score_Inflam", principal_name = "Interferon", other_name = "Inflammatory", output_colname = "Converged_Immune", principal_color = "#9b59b6", # Violet pour Interféron other_color = "#e67e22" # Orange pour Inflammatoire ) ## ----fig.width=8, fig.height=5, fig.align='center'---------------------------- PlotConvergenceProportion( seurat_obj = seu, x_var = "SS", fill_var = "Converged_Immune_Direction", title = "Immune Convergence by Patient" ) ## ----fig.width=8, fig.height=5, fig.align='center'---------------------------- PlotConvergenceCrossedProportion( seurat_obj = seu, x_var = "SS", fill_var = "Converged_Immune_Direction", facet_var = "tumor_status", title = "Immune Convergence split by Tumor Status" ) ## ----fig.width=8, fig.height=5, fig.align='center'---------------------------- PlotConvergenceDensity( seurat_obj = seu, x_var = "age", fill_var = "Converged_Immune_Direction", x_label = "Patient Age" ) ## ----------------------------------------------------------------------------- TestConvergenceScore( seurat_obj = seu, score_var = "Converged_Immune", test_var = "age", level = "patient", patient_id_var = "SS" ) ## ----------------------------------------------------------------------------- TestMultivariateConvergence( seurat_obj = seu, score_var = "Converged_Immune", test_vars = c("age", "tumor_status", "treatment"), level = "patient", patient_id_var = "SS" ) ## ----------------------------------------------------------------------------- sessionInfo()