Experimental treatment with edaravone in a mouse model of spinocerebellar ataxia 1

Citrate synthase activity

Author

Martina Sucha, Simona Benediktova, Filip Tichanek, Jan Jedlicka, Stepan Kapl, Dana Jelinkova, Zdenka Purkartova, Jan Tuma, Jitka Kuncova, Jan Cendelin

This page shows R code for the study Sucha et al. (2023, International Journal of Molecular Science).

Citation:

Sucha M, Benediktova S, Tichanek F, Jedlicka J, Kapl S, Jelinkova D, Purkartova Z, Tuma J, Kuncova J, Cendelin J. Experimental Treatment with Edaravone in a Mouse Model of Spinocerebellar Ataxia 1. International Journal of Molecular Sciences. 2023; 24(13):10689. https://doi.org/10.3390/ijms241310689

GitHub page: https://github.com/filip-tichanek/edaravonSCA1

Citrate synthase activity is related to mitochondria abundance and was assessed in cerebellar (cb) and hippocampal (hp) tissue. There are 2 technical replicates per animal. The factor of animal (id) will thus represent random-intercept.

1 Upload of packages

rm(list = ls())

suppressWarnings(suppressMessages( {
library(brms)
library(beeswarm)
library(vioplot)
library(glmmTMB)
library(car)
library(cowplot)
library(ggplot2)
library(tidyverse)
library(bayesplot)
library(gtsummary)
library(vegan)
library(knitr)  
library(ggplot2)  
  } ) )

2 Data upload and wrangling

## Data upload
load("source_data/myEnvironment.RData")

## defining new variable
csyn$sex_num <- ifelse(csyn$sex=="F",-0.5,0.5)
csyn$group_sex <- interaction(csyn$group, csyn$sex)
csyn$group_sex <- factor(csyn$group_sex,
                         levels=c('ctrl.wt.F','ctrl.wt.M',
                                  'eda.wt.F','eda.wt.M',
                                  'ctrl.sca.F','ctrl.sca.M',
                                  'eda.sca.F','eda.sca.M'))

## subsetting cerebellar and hippocampal datasets
csyn_hp <- subset(csyn, csyn$tissue == 'hippocampus')
csyn_cb <- subset(csyn, csyn$tissue == 'cerebellum')

## data summary
summary(csyn)
       id      sex    genotype treatment         tissue         cs          
 1      :  2   F:71   sca:79   ctrl:80   cerebellum :77   Min.   :0.006127  
 2      :  2   M:83   wt :75   eda :74   hippocampus:77   1st Qu.:0.009835  
 3      :  2                                              Median :0.011520  
 4      :  2                                              Mean   :0.012113  
 5      :  2                                              3rd Qu.:0.014216  
 6      :  2                                              Max.   :0.023529  
 (Other):142                                                                
 mereni      group       sex_num              group_sex 
 a:77   ctrl.wt :40   Min.   :-0.50000   eda.wt.M  :24  
 b:77   eda.wt  :35   1st Qu.:-0.50000   ctrl.wt.F :20  
        ctrl.sca:40   Median : 0.50000   ctrl.wt.M :20  
        eda.sca :39   Mean   : 0.03896   ctrl.sca.F:20  
                      3rd Qu.: 0.50000   ctrl.sca.M:20  
                      Max.   : 0.50000   eda.sca.F :20  
                                         (Other)   :30  

3 Data exploration

## setting spacing
par(mfrow=c(3,2))
par(mar=c(4,3.5,1,1))
par(mgp=c(4,0.6,0))

## both sex together
plot(csyn_hp$cs~csyn_hp$group,
     col=cola, cex.axis=0.8)

plot(csyn_cb$cs~csyn_cb$group,
     col=cola, cex.axis=0.8)

## by both group and sex
plot(csyn_hp$cs~csyn_hp$group_sex,
     col=cola[c(1,1,2,2,3,3,4,4)],cex.axis=0.8, las=2)

plot(csyn_cb$cs~csyn_cb$group_sex,
     col=cola[c(1,1,2,2,3,3,4,4)],cex.axis=0.8, las=2)

## data distribution
hist(csyn_hp$cs, 12)
hist(csyn_cb$cs, 12)

There is no apparent sex effect. As the distribution seems slightly asymmetric, we will use gamma likelihood.

4 Hippocampus

4.1 Modelling

4.1.1 Prior specification

Data summary

## mean
mean(log(csyn_hp$cs))
[1] -4.342288
## SDs
sd(log(csyn_hp$cs))*5
[1] 1.249979
sd(log(csyn_hp[csyn_hp$genotype == 'sca',]$cs))*5
[1] 1.054387

Setting priors

  prior01 <- c(set_prior("student_t(3, -4.34, 1.24)", class = "b", coef = "Intercept"),
               set_prior("normal(0, 2)", class = "b", coef = "groupctrl.wt"),
               set_prior("normal(0, 2)", class = "b", coef = "groupeda.wt"),
               set_prior("normal(0, 1.2)", class = "b", coef = "groupeda.sca"))

4.1.2 Model fit and diagnostics

## model fit
m_csyn_hp <- run_model(
           brm(cs~0+Intercept+group+ (1|id),
                  data=csyn_hp, prior = prior01,
                  family=Gamma(link='log'),
                  save_pars = save_pars(all = TRUE),
                  iter=8000, warmup=2000,chains=2,cores=2,seed=17,
                  control = list(adapt_delta = 0.99)),
             'output/brm/m_csyn_hp', reuse = TRUE)

## chains mixing and convergence
mcmc_trace(m_csyn_hp, pars = c('b_Intercept',
                               'b_groupctrl.wt',
                               'b_groupeda.wt',
                               'b_groupeda.sca'))

## model summary
summary(m_csyn_hp)
 Family: gamma 
  Links: mu = log; shape = identity 
Formula: cs ~ 0 + Intercept + group + (1 | id) 
   Data: csyn_hp (Number of observations: 77) 
  Draws: 2 chains, each with iter = 8000; warmup = 2000; thin = 1;
         total post-warmup draws = 12000

Group-Level Effects: 
~id (Number of levels: 39) 
              Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
sd(Intercept)     0.23      0.04     0.17     0.31 1.00     2483     4752

Population-Level Effects: 
             Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept       -4.38      0.08    -4.54    -4.22 1.00     2198     3492
groupctrl.wt     0.06      0.11    -0.16     0.29 1.00     2358     3632
groupeda.wt      0.04      0.12    -0.20     0.26 1.00     2633     4567
groupeda.sca     0.07      0.11    -0.15     0.30 1.00     2467     4145

Family Specific Parameters: 
      Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
shape    58.44     13.67    34.59    88.55 1.00     4202     6452

Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
and Tail_ESS are effective sample size measures, and Rhat is the potential
scale reduction factor on split chains (at convergence, Rhat = 1).

Convergence is fine, chains are well mixed, Rhat values are 1, ESS sufficient

4.1.3 PPC

pp_check(m_csyn_hp,type='dens_overlay',ndraws = 50)

pp_check(m_csyn_hp,type='dens_overlay_grouped',ndraws = 50,group='group')

pp_check(m_csyn_hp,type='scatter_avg', ndraws = 50)

pp_check(m_csyn_hp,type="stat_2d", stat = c("max", "min"),ndraws=100)

pp_check(m_csyn_hp,type="stat_2d", stat = c("mean", "sd"),ndraws=100)

PPC seems fine

4.1.4 Posterior draws extraction

post_fix_hp<-as.data.frame(m_csyn_hp, variable = c("b_Intercept","b_groupctrl.wt",
                                                   "b_groupeda.wt","b_groupeda.sca"))
names(post_fix_hp)[1]<-"sca_ctrl"

post_fix_hp$wt_ctrl<-post_fix_hp$sca_ctrl+post_fix_hp$b_groupctrl.wt
post_fix_hp$wt_eda<-post_fix_hp$sca_ctrl+post_fix_hp$b_groupeda.wt
post_fix_hp$sca_eda<-post_fix_hp$sca_ctrl+post_fix_hp$b_groupeda.sca
post_fix_hp$wt_contrast<-post_fix_hp$wt_eda-post_fix_hp$wt_ctrl
summary(post_fix_hp)
    sca_ctrl      b_groupctrl.wt     b_groupeda.wt      b_groupeda.sca     
 Min.   :-4.733   Min.   :-0.46234   Min.   :-0.38644   Min.   :-0.368559  
 1st Qu.:-4.435   1st Qu.:-0.01080   1st Qu.:-0.04078   1st Qu.:-0.001021  
 Median :-4.383   Median : 0.06427   Median : 0.03715   Median : 0.073324  
 Mean   :-4.382   Mean   : 0.06402   Mean   : 0.03689   Mean   : 0.073787  
 3rd Qu.:-4.329   3rd Qu.: 0.13976   3rd Qu.: 0.11463   3rd Qu.: 0.147812  
 Max.   :-4.056   Max.   : 0.53849   Max.   : 0.48139   Max.   : 0.546332  
    wt_ctrl           wt_eda          sca_eda        wt_contrast      
 Min.   :-4.673   Min.   :-4.712   Min.   :-4.616   Min.   :-0.54445  
 1st Qu.:-4.372   1st Qu.:-4.401   1st Qu.:-4.361   1st Qu.:-0.10599  
 Median :-4.318   Median :-4.345   Median :-4.310   Median :-0.02743  
 Mean   :-4.318   Mean   :-4.345   Mean   :-4.308   Mean   :-0.02713  
 3rd Qu.:-4.264   3rd Qu.:-4.289   3rd Qu.:-4.255   3rd Qu.: 0.05123  
 Max.   :-3.973   Max.   :-4.002   Max.   :-3.978   Max.   : 0.48769  

4.2 Data and model visualization

In data visualization, individual points represent average per subject. Violin plot (area indicating data distribution) was, in contrast, constructed on the basis of individual data points (non-averaged, 1 animals thus generated two data-points)

suppressWarnings(suppressMessages( {
range<-c(0,0.04);scal<-range[2]-range[1]

groupquant<-sapply(post_fix_hp[,c(5,6,1,7)],function(p) quantile(p, probs = c(0.025,0.975,0.5)))
groupquant<-exp(groupquant)

par(mfrow=c(1,2))
par(mar=c(2,3,0.2,0.2))
par(mgp=c(2,0.6,0))


csyn_hp$group<-factor(csyn_hp$group,levels=c('ctrl.wt', 'eda.wt','ctrl.sca','eda.sca'))


xrange<-c(0.5,4.5);xscal=xrange[2]-xrange[1]
plot(NULL,xlim=c(xrange[1],xrange[2]),ylim=c(range[1],range[2]),xlab="",
     ylab="Citrate synthase in hippocampus",las=1, axes=FALSE,cex.lab=1.1)

rect(xrange[1],range[2],xrange[2],range[1],col="grey92",border=NA)
x<-range[1]
repeat{
  lines(c(xrange[1],xrange[2]),c(x,x),col="white",lwd=0.7)
  x=x+0.01;if(x>range[2]){break}}

x<-0
repeat{
  lines(c(x,x),c(range[1],range[2]),col="white",lwd=0.7)
  x=x+1;if(x>3.5){break}}

vioplot(csyn_hp$cs~csyn_hp$group,col=colb,at=c(1:4),add=T,
        border=cola,axes=FALSE,drawRect=F,lwd=1,wex=0.8)

csyn_hp_sum <- csyn_hp %>% group_by(id, group, sex_num) %>% summarize(cbcsl = mean(cs))

beeswarm(csyn_hp_sum$cbcsl~csyn_hp_sum$group,col=cola, at=c(1:4),
         add=T,pwpch=(16.5+csyn_hp_sum$sex_num), cex=1.2 )

tp<-(groupquant[3,])
xx<-1;wid=0.25
repeat{
  lines(c(xx-wid,xx+wid),c(tp[xx],tp[xx]),lwd=2,col="black");
  lines(c(xx,xx),c(groupquant[1,xx],groupquant[2,xx]),lwd=1.7,col="black")
  xx<-xx+1
  if(xx>4){break}}

tckk=-0.02

axis(2,las=2,cex.axis=1.1,at = seq(range[1],range[2],by=0.01),
     pos=xrange[1], tck=tckk)


axis(side=1,las=1,cex.axis=1.1,at=c(seq(1,4,by=1)),
     labels=c(rep("",length(seq(1,4,by=1)))),pos=range[1],tck=tckk)
lines(c(xrange[1],xrange[2]),c(range[1],range[1]))
text(c(1:4),c(rep(range[1]-0.046*scal,3)),xpd=T,cex=1.1,col=cola,
     c("Wt","Wt", "SCA1", "SCA1"))
ypo<-c(range[1]-0.1*scal,range[1]-0.1*scal)
text(c(1:4),c(ypo[1],ypo[2],ypo[1],ypo[2]),xpd=T,cex=1.1,col=cola,
     c("0", "0", "edv"))

ypos<-0.038
xpos=1
points(xpos,ypos,pch=16,cex=1.4,col=rgb(0.4,0.4,0.4,alpha=0.6))
text(xpos+0.24*xscal,ypos,"Females",col="grey40",cex=1.2)
points(xpos,ypos-0.08*scal,pch=17,cex=1.4,col=rgb(0.4,0.4,0.4,alpha=0.6))
text(xpos+0.24*xscal,ypos-0.08*scal,"Males",col="grey40",cex=1.2)

### probability distributions --------
ypos<-0.6;xpos=1
range=c(0, 24)
scal = 12
par(mar=c(2.2,1,0,0))
dif<-data.frame(post_fix_hp$wt_contrast,post_fix_hp$b_groupeda.sca,
                post_fix_hp$b_groupctrl.wt)
dif<-exp(dif)

yla<- "Fold-difference in CS in HP"
tckk=-0.018
ste<-seq(0.4,1.7,by=0.2)
mons_poste(dif,1)

zpos=seq(0,1,1/3)
xx=1;ind=0.4;xpol<-0.65
text(xpol,zpos[xx]+zpos[2]*ind,
     "Wt: ed x 0 ",cex=1)
xx=xx+1

text(xpol,zpos[xx]+zpos[2]*ind,
     "SCA1: ed x 0 ",cex=1)
xx=xx+1

text(xpol,zpos[xx]+zpos[2]*ind,
     "0: Wt x SCA1",cex=1)

} ) )

5 Cerebellum

5.1 Modelling

5.1.1 Prior specification

Data summary

## mean
mean(log(csyn_cb$cs))
[1] -4.555682
## SDs
sd(log(csyn_cb$cs))*5
[1] 1.206754
sd(log(csyn_cb[csyn_cb$genotype == 'sca',]$cs))*5
[1] 1.308766

Setting priors

  prior01 <- c(set_prior("student_t(3, -4.56, 1.2)", class = "b", coef = "Intercept"),
               set_prior("normal(0, 2)", class = "b", coef = "groupctrl.wt"),
               set_prior("normal(0, 2)", class = "b", coef = "groupeda.wt"),
               set_prior("normal(0, 1.2)"  , class = "b", coef = "groupeda.sca"))

5.1.2 Model fit and diagnostics

## model fit
m_csyn_cb <- run_model(
           brm(cs~0+Intercept+group+ (1|id),
                  data=csyn_cb, prior = prior01,
                  family=Gamma(link='log'),
                  save_pars = save_pars(all = TRUE),
                  iter=8000, warmup=2000,chains=2,cores=2,seed=17,
                  control = list(adapt_delta = 0.99)),
             'output/brm/m_csyn_cb', reuse = TRUE)

## chains mixing and convergence
mcmc_trace(m_csyn_cb, pars = c('b_Intercept',
                               'b_groupctrl.wt',
                               'b_groupeda.wt',
                               'b_groupeda.sca'))

## model summary
summary(m_csyn_cb)
 Family: gamma 
  Links: mu = log; shape = identity 
Formula: cs ~ 0 + Intercept + group + (1 | id) 
   Data: csyn_cb (Number of observations: 77) 
  Draws: 2 chains, each with iter = 8000; warmup = 2000; thin = 1;
         total post-warmup draws = 12000

Group-Level Effects: 
~id (Number of levels: 39) 
              Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
sd(Intercept)     0.19      0.04     0.12     0.26 1.00     3021     3718

Population-Level Effects: 
             Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
Intercept       -4.51      0.07    -4.65    -4.38 1.00     2995     4769
groupctrl.wt     0.02      0.10    -0.17     0.22 1.00     3003     5358
groupeda.wt     -0.08      0.10    -0.28     0.11 1.00     3483     5663
groupeda.sca    -0.06      0.10    -0.26     0.14 1.00     3505     5502

Family Specific Parameters: 
      Estimate Est.Error l-95% CI u-95% CI Rhat Bulk_ESS Tail_ESS
shape    36.62      8.41    22.07    55.16 1.00     4232     5650

Draws were sampled using sampling(NUTS). For each parameter, Bulk_ESS
and Tail_ESS are effective sample size measures, and Rhat is the potential
scale reduction factor on split chains (at convergence, Rhat = 1).

Convergence is fine, chains are well mixed, Rhat values are 1, ESS sufficient

5.1.3 PPC

pp_check(m_csyn_cb,type='dens_overlay',ndraws = 50)

pp_check(m_csyn_cb,type='dens_overlay_grouped',ndraws = 50,group='group')

pp_check(m_csyn_cb,type='scatter_avg', ndraws = 50)

pp_check(m_csyn_cb,type="stat_2d", stat = c("max", "min"),ndraws=100)

pp_check(m_csyn_cb,type="stat_2d", stat = c("mean", "sd"),ndraws=100)

PPC seems fine

5.1.4 Posterior draws extraction

post_fix_cb<-as.data.frame(m_csyn_cb, variable = c("b_Intercept","b_groupctrl.wt",
                                                   "b_groupeda.wt","b_groupeda.sca"))
names(post_fix_cb)[1]<-"sca_ctrl"

post_fix_cb$wt_ctrl<-post_fix_cb$sca_ctrl+post_fix_cb$b_groupctrl.wt
post_fix_cb$wt_eda<-post_fix_cb$sca_ctrl+post_fix_cb$b_groupeda.wt
post_fix_cb$sca_eda<-post_fix_cb$sca_ctrl+post_fix_cb$b_groupeda.sca
post_fix_cb$wt_contrast<-post_fix_cb$wt_eda-post_fix_cb$wt_ctrl
summary(post_fix_cb)
    sca_ctrl      b_groupctrl.wt     b_groupeda.wt      b_groupeda.sca    
 Min.   :-4.824   Min.   :-0.36183   Min.   :-0.53782   Min.   :-0.46811  
 1st Qu.:-4.559   1st Qu.:-0.04349   1st Qu.:-0.15215   1st Qu.:-0.12820  
 Median :-4.514   Median : 0.02231   Median :-0.08505   Median :-0.06249  
 Mean   :-4.514   Mean   : 0.02327   Mean   :-0.08461   Mean   :-0.06160  
 3rd Qu.:-4.467   3rd Qu.: 0.08963   3rd Qu.:-0.01867   3rd Qu.: 0.00511  
 Max.   :-4.198   Max.   : 0.44294   Max.   : 0.30466   Max.   : 0.40804  
    wt_ctrl           wt_eda          sca_eda        wt_contrast      
 Min.   :-4.780   Min.   :-4.931   Min.   :-4.938   Min.   :-0.56282  
 1st Qu.:-4.539   1st Qu.:-4.648   1st Qu.:-4.623   1st Qu.:-0.17759  
 Median :-4.490   Median :-4.599   Median :-4.575   Median :-0.10795  
 Mean   :-4.490   Mean   :-4.598   Mean   :-4.575   Mean   :-0.10788  
 3rd Qu.:-4.442   3rd Qu.:-4.549   3rd Qu.:-4.527   3rd Qu.:-0.04017  
 Max.   :-4.205   Max.   :-4.286   Max.   :-4.319   Max.   : 0.37646  

5.2 Data and model visualization

In data visualization, individual points represent average per subject. Violin plot (area indicating data distribution) was, in contrast, constructed on the basis of individual data points (non-averaged, 1 animals thus generated two data-points)

suppressWarnings(suppressMessages( {
range<-c(0,0.04);scal<-range[2]-range[1]

groupquant<-sapply(post_fix_cb[,c(5,6,1,7)],function(p) quantile(p, probs = c(0.025,0.975,0.5)))
groupquant<-exp(groupquant)

par(mfrow=c(1,2))
par(mar=c(2,3,0.2,0.2))
par(mgp=c(2,0.6,0))


csyn_cb$group<-factor(csyn_cb$group,levels=c('ctrl.wt', 'eda.wt','ctrl.sca','eda.sca'))


xrange<-c(0.5,4.5);xscal=xrange[2]-xrange[1]
plot(NULL,xlim=c(xrange[1],xrange[2]),ylim=c(range[1],range[2]),xlab="",
     ylab="Citrate synthase in cerebellum",las=1, axes=FALSE,cex.lab=1.1)

rect(xrange[1],range[2],xrange[2],range[1],col="grey92",border=NA)
x<-range[1]
repeat{
  lines(c(xrange[1],xrange[2]),c(x,x),col="white",lwd=0.7)
  x=x+0.01;if(x>range[2]){break}}

x<-0
repeat{
  lines(c(x,x),c(range[1],range[2]),col="white",lwd=0.7)
  x=x+1;if(x>3.5){break}}

vioplot(csyn_cb$cs~csyn_cb$group,col=colb,at=c(1:4),add=T,
        border=cola,axes=FALSE,drawRect=F,lwd=1,wex=0.8)

csyn_cb_sum <- csyn_cb %>% group_by(id, group, sex_num) %>% summarize(cbcsl = mean(cs))


beeswarm(csyn_cb_sum$cbcsl~csyn_cb_sum$group,col=cola, at=c(1:4),
         add=T,pwpch=(16.5+csyn_cb_sum$sex_num), cex=1.2 )

tp<-(groupquant[3,])
xx<-1;wid=0.25
repeat{
  lines(c(xx-wid,xx+wid),c(tp[xx],tp[xx]),lwd=2,col="black");
  lines(c(xx,xx),c(groupquant[1,xx],groupquant[2,xx]),lwd=1.7,col="black")
  xx<-xx+1
  if(xx>4){break}}

tckk=-0.02

axis(2,las=2,cex.axis=1.1,at = seq(range[1],range[2],by=0.01),
     pos=xrange[1], tck=tckk)


axis(side=1,las=1,cex.axis=1.1,at=c(seq(1,4,by=1)),
     labels=c(rep("",length(seq(1,4,by=1)))),pos=range[1],tck=tckk)
lines(c(xrange[1],xrange[2]),c(range[1],range[1]))
text(c(1:4),c(rep(range[1]-0.046*scal,3)),xpd=T,cex=1.1,col=cola,
     c("Wt","Wt", "SCA1", "SCA1"))
ypo<-c(range[1]-0.1*scal,range[1]-0.1*scal)
text(c(1:4),c(ypo[1],ypo[2],ypo[1],ypo[2]),xpd=T,cex=1.1,col=cola,
     c("0", "0", "edv"))

ypos<-0.038
xpos=1
points(xpos,ypos,pch=16,cex=1.4,col=rgb(0.4,0.4,0.4,alpha=0.6))
text(xpos+0.24*xscal,ypos,"Females",col="grey40",cex=1.2)
points(xpos,ypos-0.08*scal,pch=17,cex=1.4,col=rgb(0.4,0.4,0.4,alpha=0.6))
text(xpos+0.24*xscal,ypos-0.08*scal,"Males",col="grey40",cex=1.2)

### probability distributions --------
ypos<-0.6;xpos=1
range=c(0, 24)
scal = 12
par(mar=c(2.2,1,0,0))
dif<-data.frame(post_fix_cb$wt_contrast,post_fix_cb$b_groupeda.sca,
                post_fix_cb$b_groupctrl.wt)
dif<-exp(dif)

yla<- "Fold-difference in CS in cb"
tckk=-0.018
ste<-seq(0.4,1.7,by=0.2)
mons_poste(dif,1)

zpos=seq(0,1,1/3)
xx=1;ind=0.4;xpol<-0.62
text(xpol,zpos[xx]+zpos[2]*ind,
     "Wt: ed x 0 ",cex=1)
xx=xx+1

text(xpol,zpos[xx]+zpos[2]*ind,
     "SCA1: ed x 0 ",cex=1)
xx=xx+1

text(xpol,zpos[xx]+zpos[2]*ind,
     "0: Wt x SCA1",cex=1)

} ) )

In conclusion, there is neither evidence for the effect of genotype nor edaravone in terms of citrate synthase activity.

6 Session info

sessionInfo()
R version 4.2.2 (2022-10-31 ucrt)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19045)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.utf8 
[2] LC_CTYPE=English_United States.utf8   
[3] LC_MONETARY=English_United States.utf8
[4] LC_NUMERIC=C                          
[5] LC_TIME=English_United States.utf8    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
 [1] knitr_1.42       vegan_2.6-4      lattice_0.20-45  permute_0.9-7   
 [5] gtsummary_1.7.0  bayesplot_1.10.0 lubridate_1.9.2  forcats_1.0.0   
 [9] stringr_1.5.0    dplyr_1.1.0      purrr_1.0.1      readr_2.1.4     
[13] tidyr_1.3.0      tibble_3.1.8     tidyverse_2.0.0  ggplot2_3.4.1   
[17] cowplot_1.1.1    car_3.1-1        carData_3.0-5    glmmTMB_1.1.5   
[21] vioplot_0.4.0    zoo_1.8-11       sm_2.2-5.7.1     beeswarm_0.4.0  
[25] brms_2.18.0      Rcpp_1.0.10     

loaded via a namespace (and not attached):
  [1] backports_1.4.1      plyr_1.8.8           igraph_1.4.1        
  [4] TMB_1.9.2            splines_4.2.2        crosstalk_1.2.0     
  [7] TH.data_1.1-2        rstantools_2.2.0     inline_0.3.19       
 [10] digest_0.6.31        htmltools_0.5.4      fansi_1.0.4         
 [13] magrittr_2.0.3       checkmate_2.1.0      cluster_2.1.4       
 [16] tzdb_0.3.0           RcppParallel_5.1.7   matrixStats_0.63.0  
 [19] xts_0.13.0           sandwich_3.0-2       timechange_0.2.0    
 [22] prettyunits_1.1.1    colorspace_2.1-0     xfun_0.37           
 [25] callr_3.7.3          crayon_1.5.2         jsonlite_1.8.4      
 [28] lme4_1.1-31          survival_3.5-3       glue_1.6.2          
 [31] gtable_0.3.1         emmeans_1.8.6        V8_4.2.2            
 [34] distributional_0.3.1 pkgbuild_1.4.0       rstan_2.26.16       
 [37] abind_1.4-5          scales_1.2.1         mvtnorm_1.1-3       
 [40] miniUI_0.1.1.1       xtable_1.8-4         stats4_4.2.2        
 [43] StanHeaders_2.26.16  DT_0.27              htmlwidgets_1.6.1   
 [46] threejs_0.3.3        posterior_1.4.0      ellipsis_0.3.2      
 [49] pkgconfig_2.0.3      loo_2.5.1            farver_2.1.1        
 [52] utf8_1.2.3           labeling_0.4.2       tidyselect_1.2.0    
 [55] rlang_1.1.1          reshape2_1.4.4       later_1.3.0         
 [58] munsell_0.5.0        tools_4.2.2          cli_3.6.0           
 [61] generics_0.1.3       evaluate_0.20        fastmap_1.1.1       
 [64] yaml_2.3.7           processx_3.8.0       nlme_3.1-162        
 [67] mime_0.12            projpred_2.6.0       xml2_1.3.3          
 [70] compiler_4.2.2       shinythemes_1.2.0    rstudioapi_0.14     
 [73] curl_5.0.0           gamm4_0.2-6          gt_0.9.0            
 [76] broom.helpers_1.13.0 stringi_1.7.12       ps_1.7.2            
 [79] Brobdingnag_1.2-9    Matrix_1.5-3         nloptr_2.0.3        
 [82] markdown_1.5         shinyjs_2.1.0        tensorA_0.36.2      
 [85] vctrs_0.5.2          pillar_1.8.1         lifecycle_1.0.3     
 [88] bridgesampling_1.1-2 estimability_1.4.1   httpuv_1.6.9        
 [91] R6_2.5.1             promises_1.2.0.1     gridExtra_2.3       
 [94] codetools_0.2-19     boot_1.3-28.1        colourpicker_1.2.0  
 [97] MASS_7.3-58.2        gtools_3.9.4         withr_2.5.0         
[100] shinystan_2.6.0      multcomp_1.4-25      mgcv_1.8-41         
[103] parallel_4.2.2       hms_1.1.2            grid_4.2.2          
[106] coda_0.19-4          minqa_1.2.5          rmarkdown_2.23      
[109] numDeriv_2016.8-1.1  shiny_1.7.4          base64enc_0.1-3     
[112] dygraphs_1.1.1.6