R/ImmSurv.R

Defines functions ImmSurv

Documented in ImmSurv

#'ImmSurv


#' This function plots two variables on a scatter plot and contextualises the plot using survival time.

#' @import ggpubr
#' @import ggplot2


#' @export

#Function
ImmSurv <- function(Data, ID = "ID", Status = "Status", Survival = "Survival", Stage = "Stage", SurvivalGroups = "Groups", Marker = "Marker", Genes, Genez, Axes = "Axes", Variable1 = "Variable1", Variable1Unit = "Variable1Unit", Variable2 = "Variable2", Variable2Unit = "Variable2Unit") {

  names(Data)[names(Data) == ID] <- "ID"
  names(Data)[names(Data) == Status] <- "Status"
  names(Data)[names(Data) == Survival] <- "Survival"
  names(Data)[names(Data) == Stage] <- "Stage"
  names(Data)[names(Data) == Variable1] <- "Variable1"
  names(Data)[names(Data) == Variable1Unit] <- "Variable1Unit"
  names(Data)[names(Data) == Variable2] <- "Variable2"
  names(Data)[names(Data) == Variable2Unit] <- "Variable2Unit"



  #Selects data based on chosen survival metric
  Data <- Data[which(Data$Status=='1'),]

  #Adds a column for determining colour
  Data$Colour <- "Colour"

  #Removal of variable outliers
  V1Q <- quantile(Data$Variable1, probs=c(.25, .75), na.rm = FALSE)
  V1IQR <- IQR(Data$Variable1)
  V2Q <- quantile(Data$Variable1, probs=c(.25, .75), na.rm = FALSE)
  V2IQR <- IQR(Data$Variable1)
  Data <- Data[which(Data$Variable1 > (V1Q[1] - 1.5*V1IQR) & Data$Variable1 < (V1Q[2]+1.5*V1IQR)),]
  Data <- Data[which(Data$Variable1 > (V2Q[1] - 1.5*V2IQR) & Data$Variable1 < (V2Q[2]+1.5*V2IQR)),]


  if (SurvivalGroups == "Quartiles") {
    #Determination of survival groups
    SurvQ <- quantile(Data$Survival, probs=c(.25, .75), na.rm = FALSE)
    SurvIQR <- IQR(Data$Survival)
    MaxSurvival <- max(Data$Survival)
    MinSurvival <- min(Data$Survival)
    MeanSurvival <- mean(Data$Survival)
    SdSurvival <- sd(Data$Survival)

    #Colour determination
    Data$Colour[Data$Survival < SurvQ[1]] = "#CC3232"
    Data$Colour[Data$Survival >= SurvQ[1] & Data$Survival < SurvQ[2]] = "#E7B416"
    Data$Colour[Data$Survival >= SurvQ[2]] = "#2DC937"
  }



  if (SurvivalGroups == "Mean") {
    #Determination of survival groups
    MeanSurvival <- mean(Data$Survival)

    #Colour determination
    Data$Colour[Data$Survival <= MeanSurvival] = "#CC3232"
    Data$Colour[Data$Survival > MeanSurvival] = "#2DC937"
  }



  if (SurvivalGroups == "Median") {
    #Determination of survival groups
    MedianSurvival <- median(Data$Survival)

    #Colour determination
    Data$Colour[Data$Survival <= MedianSurvival] = "#CC3232"
    Data$Colour[Data$Survival > MedianSurvival] = "#2DC937"
  }



  #determination of variable descriptives
  customCeiling <- function(x, Decimals=1) {
    x2<-x*10^Decimals
    ceiling(x2)/10^Decimals
  }
  MaxVariable1 = max(Data$Variable1)
  MaxVariable1 <- customCeiling(MaxVariable1)
  MaxVariable2 = max(Data$Variable2)
  MaxVariable2 <- customCeiling(MaxVariable2)
  AxisMax <- max(MaxVariable1, MaxVariable2)



  if (Axes == "Dependent"){
    if (SurvivalGroups == "Quartiles") {
      #Plots
      xAxis = paste(Variable1, " (", Variable1Unit, ")", sep = "")
      yAxis = paste(Variable2, " (", Variable2Unit, ")", sep = "")
      Title = paste(Variable1, " vs ", Variable2, " - Survival by Quartiles", sep = "")

      if (Marker == "Default") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,AxisMax), ylim=c(0,AxisMax), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = 16)
        legend("topright", legend=c("Q1", "Q2 + Q3", "Q4"), col=c("#CC3232", "#E7B416", "#2DC937"), pch = 16, cex=0.7)
      }
      if (Marker == "Stage") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,AxisMax), ylim=c(0,AxisMax), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = as.character(Data$Stage))
        legend("topright", legend=c("Q1", "Q2 + Q3", "Q4", "Stage I", "Stage II", "Stage III"), col=c("#CC3232", "#E7B416", "#2DC937", "#000000", "#000000", "#000000"), pch=c(16, 16, 16, 49, 50, 51), cex=0.7)
      }
      if (Marker == "Genes") {
        for(i in 1:length(Data$Genes)) {
          plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,AxisMax), ylim=c(0,AxisMax), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = ifelse(Data$Genes[i] == "0", 17, 19))
          legend("topright", legend=c("Q1", "Q2 + Q3", "Q4", "Wildtype", "Mutant"), col=c("#CC3232", "#E7B416", "#2DC937", "#000000", "#000000"), pch=c(16, 16, 16, 17, 19), cex=0.7)
        }
      }
      if (Marker == "Genez") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,AxisMax), ylim=c(0,AxisMax), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = ifelse(Data$Gene1 == "0", 17, 19))
        legend("topright", legend=c("Q1", "Q2 + Q3", "Q4", "Wildtype", "Mutant"), col=c("#CC3232", "#E7B416", "#2DC937", "#000000", "#000000"), pch=c(16, 16, 16, 17, 19), cex=0.7)
      }
    }

    if (SurvivalGroups == "Mean") {
      #Plots
      xAxis = paste(Variable1, " (", Variable1Unit, ")", sep = "")
      yAxis = paste(Variable2, " (", Variable2Unit, ")", sep = "")
      Title = paste(Variable1, " vs ", Variable2, " - Survival by Mean", sep = "")

      if (Marker == "Default") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,AxisMax), ylim=c(0,AxisMax), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = 16)
        legend("topright", legend=c("<= mean", "> mean"), col=c("#CC3232", "#2DC937"), pch = 16, cex=0.7)
      }
      if (Marker == "Stage") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,AxisMax), ylim=c(0,AxisMax), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = as.character(Data$Stage))
        legend("topright", legend=c("<= mean", "> mean", "Stage I", "Stage II", "Stage III"), col=c("#CC3232", "#2DC937", "#000000", "#000000", "#000000"), pch=c(16, 16, 49, 50, 51), cex=0.7)
      }
    }

    if (SurvivalGroups == "Median") {
      #Plots
      xAxis = paste(Variable1, " (", Variable1Unit, ")", sep = "")
      yAxis = paste(Variable2, " (", Variable2Unit, ")", sep = "")
      Title = paste(Variable1, " vs ", Variable2, " - Survival by Median", sep = "")

      if (Marker == "Default") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,AxisMax), ylim=c(0,AxisMax), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = 16)
        legend("topright", legend=c("<= median", "> median"), col=c("#CC3232", "#2DC937"), pch = 16, cex=0.7)
      }
      if (Marker == "Stage") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,AxisMax), ylim=c(0,AxisMax), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = as.character(Data$Stage))
        legend("topright", legend=c("<= median", "> median", "Stage I", "Stage II", "Stage III"), col=c("#CC3232", "#2DC937", "#000000", "#000000", "#000000"), pch=c(16, 16, 49, 50, 51), cex=0.7)
      }
      if (Marker == "Genez") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,AxisMax), ylim=c(0,AxisMax), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = ifelse(Data$Gene1 == "0", 17, 19))
        legend("topright", legend=c("<= median", "> median", "Wildtype", "Mutant"), col=c("#CC3232", "#2DC937", "#000000", "#000000"), pch=c(16, 16, 17, 19), cex=0.7)
      }
    }
  }





  if (Axes == "Independent"){
    if (SurvivalGroups == "Quartiles") {
      #Plots
      xAxis = paste(Variable1, " (", Variable1Unit, ")", sep = "")
      yAxis = paste(Variable2, " (", Variable2Unit, ")", sep = "")
      Title = paste(Variable1, " vs ", Variable2, " - Survival by Quartiles", sep = "")

      if (Marker == "Default") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,MaxVariable1), ylim=c(0,MaxVariable2), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = 16)
        legend("topright", legend=c("Q1", "Q2 + Q3", "Q4"), col=c("#CC3232", "#E7B416", "#2DC937"), pch = 16, cex=0.7)
      }
      if (Marker == "Stage") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,MaxVariable1), ylim=c(0,MaxVariable2), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = as.character(Data$Stage))
        legend("topright", legend=c("Q1", "Q2 + Q3", "Q4", "Stage I", "Stage II", "Stage III"), col=c("#CC3232", "#E7B416", "#2DC937", "#000000", "#000000", "#000000"), pch=c(16, 16, 16, 49, 50, 51), cex=0.7)
      }
      if (Marker == "Genes") {
        for(i in 1:length(Data$Genes)) {
          plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,MaxVariable1), ylim=c(0,MaxVariable2), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = ifelse(Data$Genes[i] == "0", 17, 19))
          legend("topright", legend=c("Q1", "Q2 + Q3", "Q4", "Wildtype", "Mutant"), col=c("#CC3232", "#E7B416", "#2DC937", "#000000", "#000000"), pch=c(16, 16, 16, 17, 19), cex=0.7)
        }
      }
      if (Marker == "Genez") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,MaxVariable1), ylim=c(0,MaxVariable2), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = ifelse(Data$Gene1 == "0", 17, 19))
        legend("topright", legend=c("Q1", "Q2 + Q3", "Q4", "Wildtype", "Mutant"), col=c("#CC3232", "#E7B416", "#2DC937", "#000000", "#000000"), pch=c(16, 16, 16, 17, 19), cex=0.7)
      }
    }

    if (SurvivalGroups == "Mean") {
      #Plots
      xAxis = paste(Variable1, " (", Variable1Unit, ")", sep = "")
      yAxis = paste(Variable2, " (", Variable2Unit, ")", sep = "")
      Title = paste(Variable1, " vs ", Variable2, " - Survival by Mean", sep = "")

      if (Marker == "Default") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,MaxVariable1), ylim=c(0,MaxVariable2), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = 16)
        legend("topright", legend=c("<= mean", "> mean"), col=c("#CC3232", "#2DC937"), pch = 16, cex=0.7)
      }
      if (Marker == "Stage") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,MaxVariable1), ylim=c(0,MaxVariable2), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = as.character(Data$Stage))
        legend("topright", legend=c("<= mean", "> mean", "Stage I", "Stage II", "Stage III"), col=c("#CC3232", "#2DC937", "#000000", "#000000", "#000000"), pch=c(16, 16, 49, 50, 51), cex=0.7)
      }
    }

    if (SurvivalGroups == "Median") {
      #Plots
      xAxis = paste(Variable1, " (", Variable1Unit, ")", sep = "")
      yAxis = paste(Variable2, " (", Variable2Unit, ")", sep = "")
      Title = paste(Variable1, " vs ", Variable2, " - Survival by Median", sep = "")

      if (Marker == "Default") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,MaxVariable1), ylim=c(0,MaxVariable2), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = 16)
        legend("topright", legend=c("<= median", "> median"), col=c("#CC3232", "#2DC937"), pch = 16, cex=0.7)
      }
      if (Marker == "Stage") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,MaxVariable1), ylim=c(0,MaxVariable2), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = as.character(Data$Stage))
        legend("topright", legend=c("<= median", "> median", "Stage I", "Stage II", "Stage III"), col=c("#CC3232", "#2DC937", "#000000", "#000000", "#000000"), pch=c(16, 16, 49, 50, 51), cex=0.7)
      }
      if (Marker == "Genez") {
        plot(Data$Variable1,Data$Variable2, col=Data$Colour, xlim=c(0,MaxVariable1), ylim=c(0,MaxVariable2), cex=0.7, xlab = xAxis, ylab = yAxis, main = Title, pch = ifelse(Data$Gene1 == "0", 17, 19))
        legend("topright", legend=c("<= median", "> median", "Wildtype", "Mutant"), col=c("#CC3232", "#2DC937", "#000000", "#000000"), pch=c(16, 16, 17, 19), cex=0.7)
      }
    }
  }




  return(plot)
}
HHayman/M19 documentation built on June 29, 2021, 2:17 a.m.