DSS Mouse Experiment 2 with Upa and Vada

Background

All current treatments for IBD are focused on inflammation. Four main classes of targeted anti-inflammatory therapies exist, including anti-TNF agents, anti-integrin agents, anti-IL-12/23 agents, and JAK inhibitors. However, none of these therapies directly target epithelial barrier dysfunction, which is increasingly recognized as a key driver of disease activity in IBD. These therapies also all have a ‘therapeutic ceiling’, with only ~ 40-50% of patients achieving clinical remission, and ~ 20-30% achieving endoscopic remission. We would like to find a way to break through this ceiling, improving therapeutic effectiveness and approaching 100% remission.

In fact, some anti-inflammatory pathways, including JAKi, anti-IL23, and anti-TNF, may improve barrier function indirectly by reducing inflammation, but by inhibiting the actions of STAT3, they also interfere with the response to epithelial hypoxia by hypoxia-inducible factors (HIFs),and can potentially delay wound healing of the intestinal epithelium.

This leads to patients feeling better (less of the cardinal signs of inflammation, pain, swelling, redness, heat, and loss of function), but with persistent barrier dysfunction, which may lead to ongoing subclinical inflammation, as bacteria cross the intestinal epithelium, stimulating inflammatory flares, and a failure to achieve true mucosal healing.

Patient Data

We do see that patients with Acute Severe Ulcerative Colitis often respond quickly to JAK inhibitors like Upadacitinib (Upa), but evenutally relapse, suggesting that the underlying barrier dysfunction is not being addressed.

We tested this by looking at gene transcription in ASUC patients who responded or did not respond to JAKi/IVCS therapy. The main difference we found was that the failing patients did not have a strong HIF-directed transcriptional program (which responds to hypoxia by increasing mechanisms of wound healing), suggesting that failure to improve barrier function was a key driver of treatment failure. This was presented at Digestive Disease Week 2025.

Mouse Genetic Data

We then tested whether mice with overexpressed HIF1 and an always-on HIF transcriptional program have a different response to DSS induced colitis. Compared to wild type mice (WT), the HIF-OE mice have ~ 40% less severe colitis. They are super-healers like the Wolverine character in the Marvel Cinematic Universe.

We then tested how well an anti-inflammatory JAKi therapy would work against DSS colitis. In WT mice, Upa significantly improved DSS colitis by ~ 50%, as expected, as this drug is FDA approved for human IBD.

We then wanted to see if the rapid healing of HIF-OE mice and the anti-inflammatory effect of JAKi would be additive or synergistic. We treated WT mice with Upa, HIF-OE mice with vehicle, and HIF-OE mice with Upa. We found that the HIF-OE mice treated with Upa had the least severe colitis, with ~ 95% improvement, suggesting that targeting both inflammation and barrier function was complementary, and is a promising approach to IBD therapy. This was presented at Digestive Disease Week 2025.

We then wanted to look at whether we could reproduce the rapid-healing HIF-OE phenotype with a drug that stabilizes HIF, such as Vadadustat (Vada), a HIF prolyl-hydroxylase inhibitor (HIF-PHI) which is FDA approved for the treatment of anemia in chronic kidney disease. This drug should turn on the HIF transcriptional program for wound healing in the intestine.

DSS Mouse Experiment 2

This experiment was performed to test the treatment of DSS colitis with Upa alone vs. Upa/Vada.

This experiment used DSS in water at 3% for 8 days, rather than the planned 7, because the mice were slow to develop rectal bleeding. This led to only only one day of rest on regular drinking water.

Each arm of the study included C57BL6 male mice, 5 or 10 per group.

Drug treatment with Upa and/or Vada started on Experiment day 0, the day before DSS started (DSS was started on Day 1).

The groups were:

  1. Negative controls (no DSS, vehicle gavage) - 5 mice - one was lost
  2. Drug controls (no DSS, Upa 30 mpk, Vada 3 mpk) - 5 mice
  3. DSS positive controls for colitis (DSS, vehicle) - 10 mice
  4. DSS + Upa 30 mpk - 10 mice (anti-inflamm rx) (one outlier very sick)
  5. DSS + Upa 30 mpk + vada 3 mpk - 10 mice (anti-inflamm + BET)

Set up libraries to run code.

Code
library(tidyverse)
library(readxl)
library(janitor)
library(ggbeeswarm)
library(scales)

Read in Data

Final data are from day 10 (sac day).

Daily data by mouse are from day 0 to day 10

Code
dat <- readxl::read_xlsx("tidy data for vada-upa experiment2.xlsx") |> 
  clean_names() |> 
  mutate(rx = factor(rx, ordered = TRUE,
          levels = c("water+ vehicle", "water+ Vada/Upa",
                     "DSS+  vehicle", "DSS+  Upa",
                     "DSS+  Vada/Upa"))) |> 
  rename(ear_tag = mouse)

dat_daily <- readxl::read_xlsx("BW blood data daily.xlsx") |> 
  janitor::clean_names() |> 
  mutate(mouse = as.factor(mice)) |> 
  mutate(ear_tag = as.factor(ear_tag)) |> 
  select(-mice) |> 
  relocate(mouse)

dat |> select(ear_tag, rx) |> 
  mutate(ear_tag = as.factor(ear_tag)) ->
dat2

dat_daily|> 
  left_join(dat2, by = join_by(ear_tag)) ->
daily2

fitc1 <- read_xlsx("serum FITC (corrected).xlsx") |> 
  janitor::clean_names() |> 
  select(1:3) |> 
  slice(1:23) |> 
  rename(ear_tag = name) |> 
  mutate(ear_tag = as.factor(ear_tag))

fitc1[4,3] <- 0
fitc1[19,3] <- 0

fitc2 <- left_join(fitc1, dat2)

Graph smoothed BW by day by Arm

Code
daily2 |> 
  ggplot(aes(y = body_weight_g, x = day, 
             group = mouse, color = rx)) + scale_color_manual(values = c("gray50", "black", "red", "purple", "blue")) +
  scale_x_continuous(breaks = seq(0,10, by=2)) +
  #geom_line() +
  #geom_point() +
  geom_smooth(aes(group = rx), se = FALSE)

Findings:

  • Minor weight loss with drug control
  • Significant weight loss with DSS, especially after day 6
  • Upa weight loss was as bad and often worse than DSS alone
  • Vada/Upa had more weight loss than DSS alone initially, but matched DSS after day 8 (better than Upa alone)

Graph smoothed ordinal blood by day by Arm

Note no stool blood in the controls, and minimal delay in the onset and severity of stool blood with Upa, but noticeably delayed blood when Vada was added to Upa.

Code
daily2 |> 
  ggplot(aes(y = stool_blood, x = day, 
             group = mouse, color = rx)) +
  #geom_line() +
  #geom_point() +
  geom_smooth(aes(group = rx), se = FALSE) +
  scale_color_manual(values = c("gray50", "black", "red", "purple", "blue")) +
  scale_x_continuous(breaks = seq(0,10, by=2)) +
  labs(color = "Treatment",
       x = "Day",
       y = "Stool blood (0-4)",
       title = "Effect of Treatment on Smoothed Daily Mean Stool Blood Scores",
       subtitle = "Vadadustat Delays Rectal Bleeding by ~ 1 Day")

Findings:

  • No bleeding in negative control or drug control
  • Onse of bleeding starting at day 5 in DSS, reached peak by dat 7-8
  • Very similar progression of bleeding in Upa group
  • Delayed onset of bleeding in Vada/Upa group, consistently delayed in onset/severity by ~ 1 day

Let’s compare the colon weights by group

Code
dat |> 
  ggplot(aes(y= colon_weight, x = rx)) +
  geom_boxplot() + 
  geom_beeswarm() +
  labs( x = "Treatment Group",
        y = "Colon Weight in grams",
        caption = "Pairwise Comparisons with Student's t test", 
        title = "Colon Weight by Treatment Group")+ 
  ggsignif::geom_signif(comparisons = list(
    c(1,2), c(1,3), c(3,4), c(3,5), c(4,5), c(1,4),
    c(1,5)),
    test = "t.test",
    step_increase = 0.12) +
  scale_x_discrete(labels = label_wrap(6)) +
  theme_linedraw(base_size = 16, base_family = "Arial")

It looks like we need to control for body weight. Let’s normalize colon weight to body weight by mouse to see if this is cleaner.

Code
# try control for bw
daily2 |> 
  filter(day == 10) ->
day10wt

dat |>
  mutate(ear_tag = as.factor(ear_tag)) |> 
  left_join(day10wt) |> 
  select(ear_tag, rx, colon_weight, body_weight_g) |> 
  mutate(adj_colon_wt = colon_weight/body_weight_g) |> 
  ggplot(aes(y= adj_colon_wt, x = rx)) +
  geom_boxplot() + 
  geom_beeswarm() +
  labs( x = "Treatment Group",
        y = "Colon Weight / body weight",
        caption = "Pairwise Comparisons with Student's t test\nMean Values in Red", 
        title = "BW-adjusted Colon Weight by Treatment Group")+ 
  ggsignif::geom_signif(comparisons = list(
    c(1,2), c(1,3), c(3,4), c(3,5), c(4,5), c(1,4),
    c(1,5)),
    test = "t.test",
    step_increase = 0.12) +
  scale_x_discrete(labels = label_wrap(6)) +
  theme_linedraw(base_size = 16, base_family = "Arial") +
  annotate("text", x = 2.46, y = 9.26, label = "9.26", size = 5, color ="red") +
  annotate("text", x = 3.46, y = 8.47, label = "8.47", size = 5, color ="red") +
  annotate("text", x = 4.46, y = 7.53, label = "7.53", size = 5, color ="red")

Code
# dat |>
#   mutate(ear_tag = as.factor(ear_tag)) |> 
#   left_join(day10wt) |> 
#   select(ear_tag, rx, colon_weight, body_weight_g) |> 
#   mutate(adj_colon_wt = colon_weight/body_weight_g) |> 
#   group_by(rx) |> 
#   summarise(mean_adj_colon_wt = mean(adj_colon_wt, na.rm = TRUE))

Findings:

  • Minor loss of weight with drug control
  • Big increase in colon weight with DSS
  • Partial restoration with Upa
  • More restoration with Vada/Upa, NS difference from normal colon
  • Appears more reasonable after we normalize to body weight

Now compare the colon lengths by group

Code
dat |> 
  ggplot(aes(y= colon_length, x = rx)) +
  geom_boxplot() + 
  geom_beeswarm() +
  labs( x = "Treatment Group",
        y = "Colon Length in cm",
        caption = "Pairwise Comparisons with Student's t test",
        title = "Colon Length by Treatment Group")+
  ggsignif::geom_signif(comparisons = list(
    c(1,2), c(1,3), c(3,4), c(3,5), c(4,5), c(1,4),
    c(1,5)),
    test = "t.test",
    step_increase = 0.12) +
  scale_x_discrete(labels = label_wrap(6)) +
  theme_linedraw(base_size = 16, base_family = "Arial")

It looks like we need to control for body weight. Let’s try to normalize colon length to body weight.

Code
# try control for bw
daily2 |> 
  filter(day == 10) ->
day10wt

dat |>
  mutate(ear_tag = as.factor(ear_tag)) |> 
  left_join(day10wt) |> 
  select(ear_tag, rx, colon_length, body_weight_g) |> 
  mutate(adj_colon_len = colon_length/body_weight_g) |> 
  ggplot(aes(y= adj_colon_len, x = rx)) +
  geom_boxplot() + 
  geom_beeswarm() +
  labs( x = "Treatment Group",
        y = "Colon Length / body weight",
        caption = "Pairwise Comparisons with Student's t test", 
        title = "BW-adjusted Colon Length by Treatment Group")+ 
  ggsignif::geom_signif(comparisons = list(
    c(1,2), c(1,3), c(3,4), c(3,5), c(4,5), c(1,4),
    c(1,5)),
    test = "t.test",
    step_increase = 0.12) +
  scale_x_discrete(labels = label_wrap(6)) +
  theme_linedraw(base_size = 16, base_family = "Arial")  +
  annotate("text", x = 2.4, y = 0.276, label = "0.276", size = 5, color ="red") +
  annotate("text", x = 3.4, y = 0.291, label = "0.291", size = 5, color ="red") +
  annotate("text", x = 4.4, y = 0.317, label = "0.317", size = 5, color ="red")

Code
# dat |>
#   mutate(ear_tag = as.factor(ear_tag)) |> 
#   left_join(day10wt) |> 
#   select(ear_tag, rx, colon_length, body_weight_g) |> 
#   mutate(adj_colon_len = colon_length/body_weight_g) |> 
#   group_by(rx) |> 
#   summarise(mean_adj_colon_len = mean(adj_colon_len, na.rm = TRUE))

Findings:

  • some loss of length with drug control

  • big loss of length with DSS

  • partial restoration with Upa

  • More length restoration with Vada/Upa, now NS difference from normal colon length

  • Looks more reasonable after we normalize to body weight

Now compare the colon ‘density’ (ratio of grams weight/cm length) by group.

No need for BW adjustment.

Code
dat |> 
  ggplot(aes(y= colon_density, x = rx)) +
  geom_boxplot() + 
  geom_beeswarm() +
  labs( x = "Treatment Group",
        y = "Colon Ratio in grams/cm",
        caption = "Pairwise Comparisons with Student's t test\nMean Value in Red",
        title = "Colon Ratio of Weight to Length by Treatment Group",
        subtitle = "Colon Ratio in grams/cm")+
  ggsignif::geom_signif(comparisons = list(
    c(1,2), c(1,3), c(3,4), c(3,5), c(4,5), c(1,4),
    c(1,5)),
    test = "t.test",
    step_increase = 0.12) +
  scale_x_discrete(labels = label_wrap(6)) +
  theme_linedraw(base_size = 16, base_family = "Arial") +
  annotate("text", x = 2.44, y = 33.8, label = "33.8", size = 5, color ="red") +
  annotate("text", x = 3.44, y = 29.5, label = "29.5", size = 5, color ="red") +
  annotate("text", x = 4.44, y = 24.0, label = "24.0", size = 5, color ="red")

Code
# dat |>
#   mutate(ear_tag = as.factor(ear_tag)) |>
#   left_join(day10wt) |>
#   group_by(rx) |>
#   summarise(mean_colon_density = mean(colon_density, na.rm = TRUE))

Findings:

  • no change in weight to length ratio with drug control
  • big increase in weight to length ratio with DSS
  • partial restoration with Upa
  • more restoration with Vada/Upa, NS difference from normal colon
  • by comparing the ratio, we address differences in body weight and do not have to adjust for this in mice.

This makes sense.

Graph FITC by Treatment Group

Mice were kept NPO overnight, then given 4 kDa FITC-Dextran (Sigma : 60842-46-8) by oral gavage at a dose of 0.6 mg/g of mouse body weight in a volume of 100 microL in the morning.

Blood was sampled 4 hours later, and serum was separated.

From a 150 mg/mL stock solution of 4 kDa FITC-Dextran, we used 4.27 microL, and added FITC negative mouse serum to bring this up to 1 mL, to produce a max solution of 640 micrograms/mL, then made serial 2 fold dilutions for the standard curve.

The blank control was made with 25 microL of FITC negative serum and added 75 microL of saline,

Fluorescence was induced with a 488 nm excitation laser through a 480 nm +/- 20 nm filter, and emissions were read at 508 nm +/- 20 nm to capture the 525 nm peak, and the detector gain was set at 35.

Code
fitc2 |> 
  filter(fitc_ug_ml <100) |> 
  ggplot(aes(y= fitc_ug_ml, x = rx)) +
  geom_boxplot() + 
  geom_beeswarm() +
  labs( x = "Treatment Group",
        y = "Serum FITC in micrograms/mL",
        caption = "Pairwise Comparisons with Student's t test\nExcluded one (very sick) DSS/Upa outlier with Serum FITC > 150 ug/mL\nMean Values in Red", 
        title = "Colon Leak by Treatment Group",
        subtitle = "Measured by Serum FITC Dextran in ~ 50% of mice")+ 
  ggsignif::geom_signif(comparisons = list(
    c(1,2), c(1,3), c(3,4), c(3,5), c(4,5), c(1,4),
    c(2,5), c(1,5)),
    test = "t.test",
    step_increase = 0.12) +
  scale_x_discrete(labels = label_wrap(6)) +
  theme_linedraw(base_size = 16, base_family = "Arial") +
  annotate("text", x = 2.44, y = 18.3, label = "18.3", size = 5, color ="red") +
  annotate("text", x = 3.44, y = 13.1, label = "13.1", size = 5, color ="red") +
  annotate("text", x = 4.44, y = 7.23, label = "7.23", size = 5, color ="red")

Code
# fitc2 |>
#   mutate(ear_tag = as.factor(ear_tag)) |>
#   left_join(day10wt) |>
#   filter(fitc_ug_ml <100) |>
#   group_by(rx) |>
#   summarise(mean_fitc_ug_ml = mean(fitc_ug_ml, na.rm = TRUE))

Findings:

  • had to exclude one very sick outlier with very severe leak (FITC measured > 150 ug/mL) in the Upa group

  • two values calculated as slightly negative, corrected to zero

  • no change in FITC with drug control

  • big increase in FITC with DSS - lots of leak as expected

  • no significant change in FITC with Upa

  • significant decrease in FITC with Vada/Upa - almost back to normal (NS difference from normal)

  • not affected by adjustment for BW

  • with more money and time, we should increase sample size and measure FITC in all mice

Makes sense - Upa does not have a significant effect on FITC, while Vada normalizes FITC.

Two distinct mechanisms

Now compare the spleen weight to body mass ratio by group

Code
dat |> 
  ggplot(aes(y= spleen_wt_bw, x = rx)) +
  geom_boxplot() + 
  geom_beeswarm() +
  labs( x = "Treatment Group",
        y = "Spleen to Body Weight Ratio",
        caption = "Pairwise Comparisons with Student's t test",
        title = "Spleen to Body Weight Ratio by Treatment Group") +
  ggsignif::geom_signif(comparisons = list(
    c(1,2), c(1,3), c(3,4), c(3,5), c(4,5), c(1,4),
    c(1,5)),
    test = "t.test",
    step_increase = 0.12) +
  scale_x_discrete(labels = label_wrap(6)) +
  theme_linedraw(base_size = 16, base_family = "Arial")

Findings:

  • no difference with drug control
  • big inflamed spleen in DSS, collecting a lot of damaged epithelial cells and immune cells
  • partial recovery with Upa
  • more recovery with vada/upa
  • still not entirely normal.

Now compare the day 10 Disease Activity Index

Code
dat |> 
  ggplot(aes(y= day10_dia, x = rx)) +
  geom_boxplot() + 
  geom_beeswarm() +
  labs( x = "Treatment Group",
        y = "Day 10 Disease Activity Index",
  caption = "Pairwise Comparisons with Student's t test",
        title = "Day 10 DAI by Treatment Group") +
  ggsignif::geom_signif(comparisons = list(
    c(1,2), c(1,3), c(3,4), c(3,5), c(4,5), c(1,4),
    c(1,5)),
    test = "t.test",
    step_increase = 0.12) +
  scale_x_discrete(labels = label_wrap(6)) +
  theme_linedraw(base_size = 16, base_family = "Arial")

Findings:

  • no difference with drug control
  • Ordinal, not truly continuous outcome, so problems with p values (lots of ties)
  • big disease activity with DSS
  • partial improvement with Upa
  • partial improvement with Vada/Upa
  • May need more recovery time
  • Possibly 4 days recovery on water without DSS plus drugs?

Now compare the day 7 stool bleeding score

Code
dat |> 
  ggplot(aes(y= day7_stool_bleeding, x = rx)) +
  geom_boxplot() + 
  geom_beeswarm() +
  labs( x = "Treatment Group",
        y = "Day 7 Stool Bleeding Score",
        caption = "Pairwise Comparisons usiing Student's t Test\nToo many ties to calculate several p values",
        title = "Day 7 Stool Bleeding Score by Treatment Group")+
  ggsignif::geom_signif(comparisons = list(
     c(1,3), c(2,3), c(3,4), c(3,5)),
    test = "t.test",
    step_increase = 0.12) +
  scale_x_discrete(labels = label_wrap(6)) +
  theme_linedraw(base_size = 16, base_family = "Arial")

Findings:

  • no bleeding with drug control

  • Lots of bleeding peaking at day 8 in DSS

  • Slightly less bleeding with Upa

  • Slightly less bleeding with Vada/Upa

  • Ordinal, not truly continuous outcome, so problems with some p values (lots of ties)

  • Possibly need more recovery/healing time - 4 days on water without DSS plus treatment during this time?

Now compare the Histology Scores from Masked Pathologist Yao Lee

Pathologist Yao Lee scored H&E stained colon sections from each mouse in a masked fashion.

Scores were given for inflammation (0-4), edema (0-4), epithelial damage (0-4), mucosal hyperplasia (0-4), and fibrosis (0-4).

A total histology score was calculated as the sum of these individual scores (0-20). Comparing by Arm, scores for inflammation, edema, epithelial damage, mucosal hyperplasia, fibrosis, and total histology score.

Code
load("upa_vada_exp2_histo.Rdata")

histo2 <- histo |> 
  janitor::clean_names() |>
  mutate(ied_score = inflammation + edema + epithelial_damage) |> 
  mutate(rx = case_when(
    rx == "vehicle" ~ "Water + Vehicle",
    rx == "vehicle+ vada/upa" ~ "Water + Upa/Vada",
    rx == "DSS" ~ "DSS + Vehicle",
    rx == "DSS+upa" ~ "DSS + Upa",
    rx == "DSS+ vada/upa" ~ "DSS + Upa/Vada"
  )) |> 
  mutate(rx = factor(rx, ordered = TRUE,
          levels = c("Water + Vehicle", "Water + Upa/Vada",
                     "DSS + Vehicle", "DSS + Upa",
                     "DSS + Upa/Vada")))

histo2 |>
  group_by(rx) |>
  ggplot(aes(y= inflammation, x = rx)) +
  geom_boxplot() +
  geom_quasirandom() +
  labs(x = "Treatment Group",
        y = "Inflammation Histology Score",
        title = "Inflammation Histology Scores by Treatment Group",
       caption = "Mean Values Shown in Red") +
  scale_y_continuous(limits = c(0,4.7), breaks = seq(0, 4, by = 1)) +
  ggsignif::geom_signif(comparisons = list(
    c(1,3), c(3,4), c(3,5), c(4,5), c(1,4), c(1,5)),
    test = "t.test",
    step_increase = 0.10) +
  scale_x_discrete(labels = label_wrap(8)) +
  theme_linedraw(base_size = 16, base_family = "Arial") +
  annotate("text", x = 2.49, y = 1.9, label = "1.9", size = 5, color ="red") +
  annotate("text", x = 3.49, y = 1.9, label = "1.9", size = 5, color ="red") +
  annotate("text", x = 4.49, y = 1.1, label = "1.1", size = 5, color ="red")

Code
histo2 |>
  group_by(rx) |>
  ggplot(aes(y= edema, x = rx)) +
  geom_boxplot() +
  geom_quasirandom() +
   labs(x = "Treatment Group",
        y = "Edema Histology Score",
        title = "Edema Histology Scores by Treatment Group",
       caption = "Mean Values Shown in Red") +
  scale_y_continuous(limits = c(0,4), breaks = seq(0, 4, by = 1)) +
  ggsignif::geom_signif(comparisons = list(
    c(1,3), c(3,4), c(3,5), c(4,5), c(1,4),
    c(1,5)),
    test = "t.test",
    step_increase = 0.10) +
  scale_x_discrete(labels = label_wrap(8)) +
  theme_linedraw(base_size = 16, base_family = "Arial") +
  annotate("text", x = 2.49, y = 0.8, label = "0.8", size = 5, color ="red") +
  annotate("text", x = 3.49, y = 0.7, label = "0.7", size = 5, color ="red") +
  annotate("text", x = 4.49, y = 0.3, label = "0.3", size = 5, color ="red")

Code
histo2 |>
  group_by(rx) |>
  ggplot(aes(y= epithelial_damage, x = rx)) +
  geom_boxplot() +
  geom_quasirandom() +
   labs(x = "Treatment Group",
        y = "Epithelial Damage Histology Score",
        title = "Epithelial Damage Histology Scores by Treatment Group",
       caption = "Mean Values Shown in Red") +
  scale_y_continuous(limits = c(0, 6.2), breaks = seq(0, 4, by = 1)) +
  ggsignif::geom_signif(comparisons = list(
    c(1,3), c(3,4), c(3,5), c(4,5), c(1,4),
    c(1,5)),
    test = "t.test",
    step_increase = 0.10) +
  scale_x_discrete(labels = label_wrap(8)) +
  theme_linedraw(base_size = 16, base_family = "Arial") +
  annotate("text", x = 2.49, y = 2.7, label = "2.7", size = 5, color ="red") +
  annotate("text", x = 3.49, y = 1.9, label = "1.9", size = 5, color ="red") +
  annotate("text", x = 4.49, y = 1.2, label = "1.2", size = 5, color ="red")

Code
histo2 |>
  group_by(rx) |>
  ggplot(aes(y= epithelial_damage_extent, x = rx)) +
  geom_boxplot() +
  geom_quasirandom() +
   labs(x = "Treatment Group",
        y = "Epithelial Damage Extent Histology Score",
        title = "Epithelial Damage Extent Histology Scores by Treatment Group" ) +
   ggsignif::geom_signif(comparisons = list(
    c(1,3), c(3,4), c(3,5), c(4,5), c(1,4),
    c(1,5)),
    test = "t.test",
    step_increase = 0.10) +
  scale_x_discrete(labels = label_wrap(8)) +
  scale_y_continuous(limits = c(0,4.7), breaks = seq(0, 4, by = 1)) +
  theme_linedraw(base_size = 16, base_family = "Arial")

Code
histo2 |>
  group_by(rx) |>
  ggplot(aes(y= mucosal_hyperplasia, x = rx)) +
  geom_boxplot() +
  geom_quasirandom() +
   labs(x = "Treatment Group",
        y = "Mucosal Hyperplasia Histology Score",
        title = "Mucosal Hyperplasia Histology Scores by Treatment Group" ) +
  scale_x_discrete(labels = label_wrap(8)) +
  scale_y_continuous(limits = c(0,4.1), breaks = seq(0, 4, by = 1)) +
  theme_linedraw(base_size = 16, base_family = "Arial")

Code
histo2 |>
  group_by(rx) |>
  ggplot(aes(y= fibrosis, x = rx)) +
  geom_boxplot() +
  geom_quasirandom() +
   labs(x = "Treatment Group",
        y = "Fibrosis Histology Score",
        title = "Fibrosis Histology Scores by Treatment Group" ) +
  scale_x_discrete(labels = label_wrap(8)) +
  scale_y_continuous(limits = c(0,4.1), breaks = seq(0, 4, by = 1)) +
  theme_linedraw(base_size = 16, base_family = "Arial")

Code
histo2 |>
  group_by(rx) |>
  ggplot(aes(y= tot_histo_score, x = rx)) +
  geom_boxplot() +
  geom_quasirandom() +
   labs(x = "Treatment Group",
        y = "Total Histology Score",
        title = "Total Histology Scores by Treatment Group",
       caption = "Mean Values Shown in Red") +
   ggsignif::geom_signif(comparisons = list(
    c(1,3), c(3,4), c(3,5), c(4,5), c(1,4),
    c(1,5)),
    test = "t.test",
    step_increase = 0.10) +
  scale_x_discrete(labels = label_wrap(8)) +
  scale_y_continuous(breaks = seq(0, 15, by = 3)) +
  theme_linedraw(base_size = 16, base_family = "Arial")  +
  annotate("text", x = 2.49, y = 7.1, label = "7.1", size = 5, color = "red") +
  annotate("text", x = 3.49, y = 5.9, label = "5.9", size = 5, color = "red") +
  annotate("text", x = 4.49, y = 3.6, label = "3.6", size = 5, color = "red")

Code
histo2 |>
  group_by(rx) |>
  ggplot(aes(y= ied_score, x = rx)) +
  geom_boxplot() +
  geom_quasirandom() +
   labs(x = "Treatment Group",
        y = "IED (Inflammation, Edema, and Epithelial Damage)\nHistology Score",
        title = "IED (Inflammation, Edema, and Epithelial Damage)\nHistology Scores by Treatment Group",
        caption = "Mean Values Shown in Red") +
   ggsignif::geom_signif(comparisons = list(
    c(1,3), c(3,4), c(3,5), c(4,5), c(1,4),
    c(1,5)),
    test = "t.test",
    step_increase = 0.10) +
  scale_x_discrete(labels = label_wrap(8)) +
  scale_y_continuous(breaks = seq(0, 12, by = 3)) +
  theme_linedraw(base_size = 16, base_family = "Arial") +
  annotate("text", x = 2.48, y = 5.4, label = "5.4", size = 5, color = "red") +
  annotate("text", x = 3.48, y = 4.5, label = "4.5", size = 5, color = "red") +
  annotate("text", x = 4.48, y = 2.6, label = "2.6", size = 5, color = "red") 

Findings

  • Lots of bleeding peaking at day 8 in DSS
  • Slightly less bleeding with Upa
  • Slightly less bleeding with Vada/Upa
  • Ordinal, not truly continuous outcome, so problems with some p values (lots of ties)
  • Possibly need more recovery/healing time - 4 days on water without DSS plus treatment during this time?

Conclusions

In this DSS colitis model, we saw weight loss, bleeding, and short, thick colons as expected in the DSS arm. The drug control arm had minimal weight loss, no bleeding, and no other changes.

In this DSS colitis model, we saw weight loss, bleeding, and short, thick colons, with substantial histologic inflammation, edema, and epithelial damage as expected in the DSS arm. The drug control arm had minimal weight loss, no bleeding, and no other changes.

Upa alone did not improve weight loss, with minimal effects on bleeding and FITC leak, and modest effects on histologic inflammation, edema, and epithelial damage. There was partial improvement in BW-adjusted colon weight, BW-adjusted length, colon weight/length ratio, and spleen size.

The combination of Vada with Upa improved weight loss modestly, delayed bleeding by about 1 day, and significantly improved FITC leak back to near normal. There was more improvement in BW-adjusted colon weight, BW-adjusted length, colon weight/length ratio, all of which returned to near-normal (NS). The spleen size also improved more than with Upa alone, but did not return to normal. Histologically, Vada/Upa improved inflammation, edema, and epithelial damage scores significantly, and by more than Upa alone (not quite significant with N=10 per group), but not back to normal.

Next Steps:

We are continuing to examine:

  • Western blots of key proteins in barrier function and inflammation
  • Immunohistochemistry of key proteins in barrier function and inflammation

Future Micro-Experiments

  1. What is the optimal dose of Upa?
  2. What is the optimal dose of Vada?
  3. When is the optimal time to start Upa administration? (before, with, after DSS?)
  4. When is the optimal time to start Vada administration? (before, with, after DSS, overlap with Upa? after Upa?)
  5. What is the optimal duration of Upa administration? (with DSS only, longer than DSS?)
  6. What is the optimal duration of Vada administration? (with Upa only, longer than Upa?)
  7. What is the optimal duration of recovery time after DSS ends? (2 days, 4 days, 7 days?)
  8. One possible idea - treatment instead of prevention - 3% DSS for 7d, then start Upa/Vada x 3d, then vada alone for 3d vs. untreated d8-13 vs Upa only d8-13