10  AU-018 Clinical Trial

library(ggplot2)
library(grid)
library(gridExtra)

# Set theme elements for consistent appearance
my_theme <- theme_minimal() +
  theme(
    plot.title = element_text(hjust = 0.5, size = 14, face = "bold"),
    plot.subtitle = element_text(hjust = 0.5, size = 12),
    axis.title = element_text(size = 11),
    panel.grid.minor = element_blank(),
    legend.position = "bottom"
  )

# Create timeline diagram showing study flow
create_study_timeline <- function() {
  # Define the key timepoints
  timepoints <- data.frame(
    day = c(-14, 0, 3, 14, 21, 30, 90, 180),
    label = c("Screening", "Day 1\nInduction", "Day 3", "Day 14", "Day 21", "30 Days\nPost-Tx", "3 Months", "6 Months"),
    phase = c("Screening", "Treatment", "Treatment", "Treatment", "Treatment", "Follow-up", "Follow-up", "Follow-up")
  )
  
  # Create the plot
  ggplot(timepoints, aes(x = day, y = 0)) +
    # Add connecting line
    geom_line(size = 1.5, color = "gray70") +
    # Add points for each timepoint
    geom_point(aes(color = phase), size = 8) +
    # Add labels
    geom_text(aes(label = label), size = 3.5) +
    # Set colors
    scale_color_manual(values = c(
      "Screening" = "#3498db", 
      "Treatment" = "#e74c3c", 
      "Follow-up" = "#2ecc71"
    )) +
    # Set axis limits and labels
    scale_x_continuous(
      breaks = timepoints$day,
      labels = paste("Day", timepoints$day),
      limits = c(-20, 190)
    ) +
    labs(
      title = "AU-018 Phase I Trial Timeline",
      x = "Study Day",
      y = ""
    ) +
    my_theme +
    theme(
      axis.text.y = element_blank(),
      axis.ticks.y = element_blank()
    )
}

# Create day 1 treatment administration diagram
create_treatment_diagram <- function() {
  # Create base plot
  plot <- ggplot() + 
    # Set up the canvas
    scale_x_continuous(limits = c(-5, 95), breaks = c(0, 30, 60, 90)) +
    scale_y_continuous(limits = c(0, 4)) +
    labs(
      title = "Day 1 Treatment Administration",
      x = "Minutes",
      y = ""
    ) +
    my_theme +
    theme(
      axis.text.y = element_blank(),
      axis.ticks.y = element_blank()
    )
  
  # Add timeline base
  plot <- plot + geom_segment(aes(x = 0, xend = 90, y = 1, yend = 1), 
                             arrow = arrow(length = unit(0.3, "cm")),
                             size = 0.8)
  
  # Add time markers
  plot <- plot + geom_text(aes(x = c(0, 30, 60, 90), y = 1.4, 
                              label = c("0 min", "30 min", "60 min", "90 min")),
                          size = 3)
  
  # Add treatment blocks - simplified version
  # AU-018 Bolus (0-5 min)
  plot <- plot + 
    geom_rect(aes(xmin = 0, xmax = 5, ymin = 2.4, ymax = 3.0),
              fill = "#3498db", alpha = 0.8) +
    geom_text(aes(x = 2.5, y = 3.3, label = "AU-018 Bolus\n(300 mg/m²)"), size = 3)
  
  # AU-018 Infusion (5-60 min)
  plot <- plot + 
    geom_rect(aes(xmin = 5, xmax = 60, ymin = 2.4, ymax = 3.0),
              fill = "#9b59b6", alpha = 0.8) +
    geom_text(aes(x = 32.5, y = 2.7, label = "AU-018 Infusion (150 mg/m²/hr)"), 
              color = "white", size = 3)
  
  # Anthracycline (30-45 min)
  plot <- plot + 
    geom_rect(aes(xmin = 30, xmax = 45, ymin = 1.8, ymax = 2.4),
              fill = "#e74c3c", alpha = 0.8) +
    geom_text(aes(x = 37.5, y = 2.1, label = "Anthracycline"), 
              color = "white", size = 3)
  
  return(plot)
}

# Create a simplified assessment schedule table
create_assessment_table <- function() {
  # Define assessment types
  assessments <- c(
    "Physical Exam",
    "ECG",
    "Echocardiogram",
    "Cardiac Biomarkers",
    "CBC",
    "Chemistry",
    "Bone Marrow"
  )
  
  # Create a grid for text placement
  grid_data <- expand.grid(
    assessment = assessments,
    timepoint = c("Screening", "Day 1", "Day 14", "Day 21", "30d Post", "3mo", "6mo")
  )
  
  # Define which assessments are done at which timepoints (X = required)
  grid_data$required <- c(
    # Physical Exam
    "X", "X", "X", "X", "X", "X", "X",
    # ECG
    "X", "X", "X", "", "X", "X", "X",
    # Echo
    "X", "", "X", "X", "X", "X", "X",
    # Cardiac Biomarkers
    "X", "X", "X", "", "X", "X", "X",
    # CBC
    "X", "X", "X", "X", "X", "", "",
    # Chemistry
    "X", "X", "X", "X", "X", "", "",
    # Bone Marrow
    "X", "", "X", "X", "", "", ""
  )
  
  # Create table plot
  ggplot(grid_data, aes(x = timepoint, y = assessment)) +
    geom_tile(color = "black", fill = "white", size = 0.5) +
    geom_text(aes(label = required)) +
    labs(
      title = "Key Assessment Schedule",
      x = "", 
      y = ""
    ) +
    theme_minimal() +
    theme(
      axis.text.x = element_text(angle = 45, hjust = 1),
      panel.grid = element_blank()
    )
}

# Combine all plots
all_plots <- grid.arrange(
  create_study_timeline(),
  create_treatment_diagram(),
  create_assessment_table(),
  ncol = 1,
  heights = c(1, 1.2, 1.5)
)
Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.

# Save the plot
ggsave("AU018_simplified_design.png", all_plots, width = 8, height = 10, dpi = 300)

# Display the plot
print(all_plots)
TableGrob (3 x 1) "arrange": 3 grobs
  z     cells    name           grob
1 1 (1-1,1-1) arrange gtable[layout]
2 2 (2-2,1-1) arrange gtable[layout]
3 3 (3-3,1-1) arrange gtable[layout]