## ----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()

