library(survival)
library(reactable)

select <- c("ENSG00000135365", "ENSG00000162747", "ENSG00000180871", "ENSG00000186529", "ENSG00000105835",
            "ENSG00000106066", "ENSG00000140968", "ENSG00000100079", "ENSG00000127951", "ENSG00000128815")
Adeno_bulk <- readRDS("~/new_data/Adeno_bulk.rds")
bulk <- Adeno_bulk
bulk <- bulk[select,]
bulk <- t(bulk)
bulk <- as.data.frame(bulk)
LUAD_BULK_CLINIC <- readRDS("~/new_data/LUAD_BULK_CLINIC.rds")
select_col <- c("overall_survival", "vital_status")
clinic <- LUAD_BULK_CLINIC[,select_col]
all_clinic <- clinic
data <- cbind(all_clinic,bulk)
data$vital_status <- ifelse(data$vital_status == "Alive", 1, 0)
data_clean <- na.omit(data)
univ_cox <- function(variable) {
  cox_model <- coxph(Surv(overall_survival, vital_status) ~ variable, data = data_clean)
  cox_summary <- summary(cox_model)
  
  c(
    coef = cox_summary$coefficients[1],  
    HR = exp(cox_summary$coefficients[1]), 
    p_value = cox_summary$coefficients[5], 
    CI_lower = exp(cox_summary$conf.int[ ,3]), 
    CI_upper = exp(cox_summary$conf.int[ ,4])
  )
}
univ_results <- lapply(data_clean[, 3:ncol(data_clean)], univ_cox) 
univ_results_df <- do.call(rbind, univ_results)
univ_results_df <- as.data.frame(univ_results_df)
rownames(univ_results_df) <- colnames(data_clean[, 3:ncol(data_clean)])
univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000135365"] <- "neutrophils"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000162747"] <- "neutrophils"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000180871"] <- "neutrophils"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000186529"] <- "neutrophils"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000105835"] <- "neutrophils"

#"ENSG00000105835" "ENSG00000135365" "ENSG00000162747" "ENSG00000180871" "ENSG00000186529"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000106066"] <- "cDC1"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000140968"] <- "cDC1"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000100079"] <- "cDC1"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000127951"] <- "cDC1"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000128815"] <- "cDC1"

# "ENSG00000106066", "ENSG00000140968", "ENSG00000100079", "ENSG00000127951", "ENSG00000128815"

univ_results_df$ln_B <- abs(log(univ_results_df$coef))

#"ENSG00000105835" "ENSG00000135365" "ENSG00000162747" "ENSG00000180871" "ENSG00000186529":neu
univ_results_df$si[rownames(univ_results_df) == "ENSG00000105835"] <- 1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000162747"] <- 1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000180871"] <- 1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000186529"] <- 1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000135365"] <- 1

# "ENSG00000106066", "ENSG00000140968", "ENSG00000100079", "ENSG00000127951", "ENSG00000128815": cDC1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000106066"] <- -1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000140968"] <- -1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000100079"] <- -1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000127951"] <- -1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000128815"] <- -1

univ_results_df$beta <- univ_results_df$si * univ_results_df$ln_B

univ_results_df$ens <- rownames(univ_results_df)
library(biomaRt)
mart <- useMart("ensembl", dataset = "hsapiens_gene_ensembl")
ensembl_ids <- rownames(univ_results_df)
gene_conversion <- getBM(attributes = c("ensembl_gene_id", "hgnc_symbol"), 
                         filters = "ensembl_gene_id", 
                         values = ensembl_ids, 
                         mart = mart)
univ_results_df$Gene_Name <- gene_conversion$hgnc_symbol[match(rownames(univ_results_df), gene_conversion$ensembl_gene_id)]
univ_results_df <- as.data.frame(univ_results_df)
univ_results_df <- univ_results_df[!is.na(univ_results_df$Gene_Name), ] 
rownames(univ_results_df) <- univ_results_df$Gene_Name  
univ_results_df$Gene_Name <- NULL
reactable(univ_results_df)
final <- data_clean[, c("ENSG00000135365", "ENSG00000162747", "ENSG00000180871", "ENSG00000186529", "ENSG00000105835",
            "ENSG00000106066", "ENSG00000140968", "ENSG00000100079", "ENSG00000127951", "ENSG00000128815")]


si <- univ_results_df$si
ln_B <- univ_results_df$ln_B
final$risk_scores <- apply(final, 1, function(x) sum(x * si * ln_B))
library(survival)
library(survminer)
## Loading required package: ggplot2
## Loading required package: ggpubr
## 
## Attaching package: 'survminer'
## The following object is masked from 'package:survival':
## 
##     myeloma
final$overall_survival <- data_clean$overall_survival
final$vital_status <- data_clean$vital_status
final$deceased <- ifelse(final$vital_status == "1", FALSE, TRUE)
final$overall_survival <- as.numeric(final$overall_survival)
plot_list <- list()
res.cut <- surv_cutpoint(final, time = "overall_survival", event = "deceased", 
                         variables = c("risk_scores"))
cutpoint <- res.cut[["cutpoint"]][["cutpoint"]]
final$risk_scores <- ifelse(final$risk_scores > cutpoint, "HIGH", "LOW")
fit_risk_scores <- survfit(Surv(overall_survival, deceased) ~ risk_scores, data = final)
ggsurvplot(fit_risk_scores,
           final,
           pval = TRUE, 
           )

library(survival)
library(reactable)

select <- c("ENSG00000169429", "ENSG00000123689", "ENSG00000136689" ,"ENSG00000119535", "ENSG00000276070",
            "ENSG00000231389", "ENSG00000179344", "ENSG00000140968", "ENSG00000128815", "ENSG00000100079")

sq_bulk <- readRDS("~/new_data/Squamous_bulk.rds")
bulk <- sq_bulk
bulk <- bulk[select,]
bulk <- t(bulk)
bulk <- as.data.frame(bulk)
LUSC_BULK_CLINIC <- readRDS("~/new_data/LUSC_BULK_CLINIC.rds")
select_col <- c("overall_survival", "vital_status")
clinic <- LUSC_BULK_CLINIC[,select_col]
all_clinic <- clinic
data <- cbind(all_clinic,bulk)
data$vital_status <- ifelse(data$vital_status == "Alive", 1, 0)
data_clean <- na.omit(data)
univ_cox <- function(variable) {
  cox_model <- coxph(Surv(overall_survival, vital_status) ~ variable, data = data_clean)
  cox_summary <- summary(cox_model)
  
  c(
    coef = cox_summary$coefficients[1],  
    HR = exp(cox_summary$coefficients[1]), 
    p_value = cox_summary$coefficients[5], 
    CI_lower = exp(cox_summary$conf.int[ ,3]), 
    CI_upper = exp(cox_summary$conf.int[ ,4])
  )
}
univ_results <- lapply(data_clean[, 3:ncol(data_clean)], univ_cox) 
univ_results_df <- do.call(rbind, univ_results)
univ_results_df <- as.data.frame(univ_results_df)
rownames(univ_results_df) <- colnames(data_clean[, 3:ncol(data_clean)])
univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000169429"] <- "neutrophils"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000123689"] <- "neutrophils"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000136689"] <- "neutrophils"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000119535"] <- "neutrophils"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000276070"] <- "neutrophils"

#"ENSG00000169429", "ENSG00000123689", "ENSG00000136689" ,"ENSG00000119535", "ENSG00000276070"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000231389"] <- "cDC1"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000179344"] <- "cDC1"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000140968"] <- "cDC1"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000128815"] <- "cDC1"

univ_results_df$cell_type[rownames(univ_results_df) == "ENSG00000100079"] <- "cDC1"

# "ENSG00000231389", "ENSG00000179344", "ENSG00000140968", "ENSG00000128815", "ENSG00000100079"

univ_results_df$ln_B <- abs(log(univ_results_df$coef))

#""ENSG00000169429", "ENSG00000123689", "ENSG00000136689" ,"ENSG00000119535", "ENSG00000276070":neu
univ_results_df$si[rownames(univ_results_df) == "ENSG00000169429"] <- 1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000123689"] <- 1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000136689"] <- 1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000119535"] <- 1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000276070"] <- 1

# "ENSG00000231389", "ENSG00000179344", "ENSG00000140968", "ENSG00000128815", "ENSG00000100079": cDC1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000231389"] <- -1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000179344"] <- -1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000140968"] <- -1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000128815"] <- -1
univ_results_df$si[rownames(univ_results_df) == "ENSG00000100079"] <- -1

univ_results_df$beta <- univ_results_df$si * univ_results_df$ln_B
univ_results_df$ens <- rownames(univ_results_df)
library(biomaRt)
mart <- useMart("ensembl", dataset = "hsapiens_gene_ensembl")
ensembl_ids <- rownames(univ_results_df)
gene_conversion <- getBM(attributes = c("ensembl_gene_id", "hgnc_symbol"), 
                         filters = "ensembl_gene_id", 
                         values = ensembl_ids, 
                         mart = mart)
univ_results_df$Gene_Name <- gene_conversion$hgnc_symbol[match(rownames(univ_results_df), gene_conversion$ensembl_gene_id)]
univ_results_df <- as.data.frame(univ_results_df)
univ_results_df <- univ_results_df[!is.na(univ_results_df$Gene_Name), ] 
rownames(univ_results_df) <- univ_results_df$Gene_Name  
univ_results_df$Gene_Name <- NULL
reactable(univ_results_df)
final <- data_clean[, c("ENSG00000169429", "ENSG00000123689", "ENSG00000136689" ,"ENSG00000119535", "ENSG00000276070",
            "ENSG00000231389", "ENSG00000179344", "ENSG00000140968", "ENSG00000128815", "ENSG00000100079")]
ln_B <- univ_results_df$ln_B
final$risk_scores <- apply(final, 1, function(x) sum(x * si * ln_B))
library(survival)
library(survminer)
final$overall_survival <- data_clean$overall_survival
final$vital_status <- data_clean$vital_status
final$deceased <- ifelse(final$vital_status == "1", FALSE, TRUE)
final$overall_survival <- as.numeric(final$overall_survival)
plot_list <- list()
res.cut <- surv_cutpoint(final, time = "overall_survival", event = "deceased", 
                         variables = c("risk_scores"))
cutpoint <- res.cut[["cutpoint"]][["cutpoint"]]
final$risk_scores <- ifelse(final$risk_scores > cutpoint, "HIGH", "LOW")
fit_risk_scores <- survfit(Surv(overall_survival, deceased) ~ risk_scores, data = final)
ggsurvplot(fit_risk_scores,
           final,
           pval = TRUE, 
           )