knitr::opts_chunk$set(echo = TRUE, warning=FALSE)

1. Environment Set Up

1.1 Values of RMarkdown parameters

for (i in 1:length(params))
  print(paste('Parameter:', names(params)[i], ' - Value:', params[[i]], '- Class:', class(params[[i]])))
## [1] "Parameter: InputFolder  - Value: ~/DataDir/steroidomics/ - Class: character"
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(DT)
library(viridis)
## Loading required package: viridisLite
InputFolder <- params$InputFolder

2. Data Upload

Steroidomics <- openxlsx::read.xlsx("./Normalized_Counts_Neuralorganoids_Steroidomics.xlsx")
head(Steroidomics)
##                Sample Timepoint    Sex   Line Condition dht pregnenolone
## 1  1_1CTL04EDay 50CTL     DAY50 Female CTL04E       CTL   0     202.4586
## 2  1_2CTL04EDay 50CTL     DAY50 Female CTL04E       CTL   0     304.2842
## 3  1_3CTL04EDay 50CTL     DAY50 Female CTL04E       CTL   0     172.5682
## 4 1_4CTL04EDay 50DMSO     DAY50 Female CTL04E      DMSO   0     205.2690
## 5 1_5CTL04EDay 50DMSO     DAY50 Female CTL04E      DMSO   0     213.8746
## 6 1_6CTL04EDay 50DMSO     DAY50 Female CTL04E      DMSO   0     359.4976
##   testosterone androstenedione corticosterone cortisol progesterone cortisone
## 1            0               0       527.3886 2.027865            0 1.8435876
## 2            0               0       669.2955 1.187653            0 0.4624972
## 3            0               0       506.3620 1.658182            0 1.3603737
## 4            0               0       402.3395 0.000000            0 0.0000000
## 5            0               0       475.0151 0.000000            0 0.0000000
## 6            0               0       688.0275 0.000000            0 0.0000000
##   DHEA Androsterone Androstanedione E1 17bE2 E3 17aE2
## 1    0            0               0  0     0  0     0
## 2    0            0               0  0     0  0     0
## 3    0            0               0  0     0  0     0
## 4    0            0               0  0     0  0     0
## 5    0            0               0  0     0  0     0
## 6    0            0               0  0     0  0     0
colnames(Steroidomics)
##  [1] "Sample"          "Timepoint"       "Sex"             "Line"           
##  [5] "Condition"       "dht"             "pregnenolone"    "testosterone"   
##  [9] "androstenedione" "corticosterone"  "cortisol"        "progesterone"   
## [13] "cortisone"       "DHEA"            "Androsterone"    "Androstanedione"
## [17] "E1"              "17bE2"           "E3"              "17aE2"

Measured compounds

  • dht
  • pregnenolone
  • testosterone
  • androstenedione
  • corticosterone
  • cortisol
  • progesterone
  • corticone
  • DHEA
  • Androsterone
  • Androstanedione
  • E1
  • 17bE2
  • E3
  • 17aB2
densPlot <- function(myData, compound){
  
  ggplot(data=myData, aes(x=(!!sym(compound)), group=Line, fill=Line)) +
  geom_density(adjust=1.5, alpha=.4) +
  scale_fill_viridis(discrete=TRUE) +
    theme_minimal() +
    theme(axis.title.y=element_blank())

  }



boxPlot <- function(myData, compound){
  
  ggplot(data=myData, aes(x=(!!sym(compound)), y=Condition, fill=Line)) +
  geom_boxplot(alpha=0.5, size=0.5) +
  scale_fill_viridis(discrete=TRUE) +
    theme_minimal() +
  theme(axis.title.y=element_blank())
  }



logPlot <- function(myData, compound){
  
  ggplot(data=myData, aes(y=log2(!!sym(compound)+0.01), x=Condition, fill=Line)) +
  geom_boxplot(alpha=0.5) +
  scale_fill_viridis(discrete=TRUE) +
    theme_minimal() +
    theme(axis.text.x=element_text(angle = 90), axis.title.x=element_blank(), 
          legend.position="bottom")
  }

3. DHT

Distribution

quantile(Steroidomics$dht, probs=(seq(0,1,by=0.1)))
##       0%      10%      20%      30%      40%      50%      60%      70% 
##   0.0000   0.0000   0.0000   0.0000   0.0000   0.0000   0.0000   0.0000 
##      80%      90%     100% 
##   0.0000   0.0000 613.1551
sum(Steroidomics$dht != 0)
## [1] 6
min(Steroidomics[Steroidomics$dht!=0, ]$dht)
## [1] 513.3291
compound = 'dht'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

4. Pregnenolone

Distribution

quantile(Steroidomics$pregnenolone, probs=(seq(0,1,by=0.1)))
##        0%       10%       20%       30%       40%       50%       60%       70% 
##  82.52382 139.19264 167.73287 190.56382 213.87455 232.38030 262.54671 297.49156 
##       80%       90%      100% 
## 338.51416 398.37493 601.95010
sum(Steroidomics$pregnenolone != 0)
## [1] 96
min(Steroidomics[Steroidomics$pregnenolone!=0, ]$pregnenolone)
## [1] 82.52382
compound = 'pregnenolone'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

5. Testosterone

Distribution

quantile(Steroidomics$testosterone, probs=(seq(0,1,by=0.1)))
##          0%         10%         20%         30%         40%         50% 
##    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000 
##         60%         70%         80%         90%        100% 
##    0.000000    0.000000    2.259961   18.583802 2165.672842
sum(Steroidomics$testosterone != 0)
## [1] 26
min(Steroidomics[Steroidomics$testosterone!=0, ]$testosterone)
## [1] 0.557104
compound = 'testosterone'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

6. Androstenedione

Distribution

quantile(Steroidomics$androstenedione, probs=(seq(0,1,by=0.1)))
##         0%        10%        20%        30%        40%        50%        60% 
##   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000   0.000000 
##        70%        80%        90%       100% 
##   0.000000   0.000000   2.192375 526.034008
sum(Steroidomics$androstenedione != 0)
## [1] 18
min(Steroidomics[Steroidomics$androstenedione!=0, ]$androstenedione)
## [1] 0.5588584
compound = 'androstenedione'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

7. Corticosterone

Distribution

quantile(Steroidomics$corticosterone, probs=(seq(0,1,by=0.1)))
##          0%         10%         20%         30%         40%         50% 
##    0.000000    8.489496   18.713579   54.532927  222.327325  374.992163 
##         60%         70%         80%         90%        100% 
##  474.670514  538.354417  623.771657  719.409447 2160.034311
sum(Steroidomics$corticosterone != 0)
## [1] 93
min(Steroidomics[Steroidomics$corticosterone!=0, ]$corticosterone)
## [1] 5.569155
compound = 'corticosterone'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

8. Cortisol

Distribution

quantile(Steroidomics$cortisol, probs=(seq(0,1,by=0.1)))
##        0%       10%       20%       30%       40%       50%       60%       70% 
## 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 
##       80%       90%      100% 
## 0.0000000 0.3164978 7.0978172
sum(Steroidomics$cortisol != 0)
## [1] 10
min(Steroidomics[Steroidomics$cortisol!=0, ]$cortisol)
## [1] 0.6329955
compound = 'cortisol'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

9. Progesterone

Distribution

quantile(Steroidomics$progesterone, probs=(seq(0,1,by=0.1)))
##         0%        10%        20%        30%        40%        50%        60% 
##    0.00000    0.00000    0.00000    0.00000    0.00000    0.00000   12.68861 
##        70%        80%        90%       100% 
##   23.10147   35.13130   67.97748 3146.76338
sum(Steroidomics$progesterone != 0)
## [1] 40
min(Steroidomics[Steroidomics$progesterone!=0, ]$progesterone)
## [1] 12.49231
compound = 'progesterone'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

10. Cortisone

Distribution

quantile(Steroidomics$cortisone, probs=(seq(0,1,by=0.1)))
##        0%       10%       20%       30%       40%       50%       60%       70% 
## 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 0.0000000 
##       80%       90%      100% 
## 0.5683052 0.7540392 2.1997760
sum(Steroidomics$cortisone != 0)
## [1] 28
min(Steroidomics[Steroidomics$cortisone!=0, ]$cortisone)
## [1] 0.3973228
compound = 'cortisone'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

11. DHEA

Distribution

quantile(Steroidomics$DHEA, probs=(seq(0,1,by=0.1)))
##       0%      10%      20%      30%      40%      50%      60%      70% 
##  0.00000  0.00000  0.00000  0.00000  0.00000  0.00000  0.00000  0.00000 
##      80%      90%     100% 
##  0.00000  0.00000 36.60423
sum(Steroidomics$DHEA != 0)
## [1] 3
min(Steroidomics[Steroidomics$DHEA!=0, ]$DHEA)
## [1] 24.42334
compound = 'DHEA'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

12. Androsterone

Distribution

quantile(Steroidomics$Androsterone, probs=(seq(0,1,by=0.1)))
##       0%      10%      20%      30%      40%      50%      60%      70% 
##    0.000    0.000    0.000    0.000    0.000    0.000    0.000    0.000 
##      80%      90%     100% 
##    0.000    0.000 2535.061
sum(Steroidomics$Androsterone != 0)
## [1] 6
min(Steroidomics[Steroidomics$Androsterone!=0, ]$Androsterone)
## [1] 723.3259
compound = 'Androsterone'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

13. Androstanedione

Distribution

quantile(Steroidomics$Androstanedione, probs=(seq(0,1,by=0.1)))
##       0%      10%      20%      30%      40%      50%      60%      70% 
##    0.000    0.000    0.000    0.000    0.000    0.000    0.000    0.000 
##      80%      90%     100% 
##    0.000    0.000 1047.017
sum(Steroidomics$Androstanedione != 0)
## [1] 3
min(Steroidomics[Steroidomics$Androstanedione!=0, ]$Androstanedione)
## [1] 971.4318
compound = 'Androstanedione'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

14. E1

Distribution

quantile(Steroidomics$E1, probs=(seq(0,1,by=0.1)))
##           0%          10%          20%          30%          40%          50% 
##    0.0000000    0.0000000    0.0000000    0.0000000    0.0000000    0.0000000 
##          60%          70%          80%          90%         100% 
##    0.3759819    0.6547111    1.8515653   46.4405075 3430.6624806
sum(Steroidomics$E1 != 0)
## [1] 46
min(Steroidomics[Steroidomics$E1!=0, ]$Androstanedione)
## [1] 0
compound = 'E1'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

15. E3

Distribution

quantile(Steroidomics$E3, probs=(seq(0,1,by=0.1)))
##      0%     10%     20%     30%     40%     50%     60%     70%     80%     90% 
## 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 0.00000 
##    100% 
## 1.00914
sum(Steroidomics$E3 != 0)
## [1] 6
min(Steroidomics[Steroidomics$E3!=0, ]$Androstanedione)
## [1] 0
compound = 'E3'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

16. 17aE2

Distribution

quantile(Steroidomics$`17aE2`, probs=(seq(0,1,by=0.1)))
##           0%          10%          20%          30%          40%          50% 
##    0.0000000    0.0000000    0.0000000    0.0000000    0.0000000    0.0000000 
##          60%          70%          80%          90%         100% 
##    0.0000000    0.0000000    0.4177229    8.6347623 1859.3658774
sum(Steroidomics$`17aE2` != 0)
## [1] 20
min(Steroidomics[Steroidomics$`17aE2`!=0, ]$`17aE2`)
## [1] 0.4177229
compound = '17aE2'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

17. 17bE2

Distribution

quantile(Steroidomics$`17bE2`, probs=(seq(0,1,by=0.1)))
##          0%         10%         20%         30%         40%         50% 
##    0.000000    0.000000    0.000000    0.000000    0.000000    0.000000 
##         60%         70%         80%         90%        100% 
##    0.000000    0.492749    2.539585  101.072799 5231.595390
sum(Steroidomics$`17bE2` != 0)
## [1] 31
min(Steroidomics[Steroidomics$`17bE2`!=0, ]$`17bE2`)
## [1] 0.490462
compound = '17bE2'
densPlot(Steroidomics, compound)

Boxplot

boxPlot(Steroidomics, compound)

Log Boxplot

logPlot(Steroidomics, compound)

18. SessionInfo

SessionInfo <- sessionInfo()
Date <- date()
Date
## [1] "Wed Aug 13 12:57:38 2025"
SessionInfo
## R version 4.2.1 (2022-06-23)
## Platform: x86_64-pc-linux-gnu (64-bit)
## Running under: Ubuntu 20.04.4 LTS
## 
## Matrix products: default
## BLAS:   /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0
## LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0
## 
## locale:
##  [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
##  [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
##  [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
##  [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
##  [9] LC_ADDRESS=C               LC_TELEPHONE=C            
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       
## 
## attached base packages:
## [1] stats     graphics  grDevices utils     datasets  methods   base     
## 
## other attached packages:
## [1] viridis_0.6.2     viridisLite_0.4.1 DT_0.27           ggplot2_3.4.1    
## [5] dplyr_1.1.0      
## 
## loaded via a namespace (and not attached):
##  [1] zip_2.2.2         Rcpp_1.0.10       highr_0.10        pillar_1.8.1     
##  [5] bslib_0.4.2       compiler_4.2.1    jquerylib_0.1.4   tools_4.2.1      
##  [9] digest_0.6.31     jsonlite_1.8.4    evaluate_0.20     lifecycle_1.0.3  
## [13] tibble_3.2.1      gtable_0.3.1      pkgconfig_2.0.3   rlang_1.1.1      
## [17] openxlsx_4.2.5.2  cli_3.6.1         rstudioapi_0.14   yaml_2.3.7       
## [21] xfun_0.37         fastmap_1.1.1     gridExtra_2.3     withr_2.5.0      
## [25] knitr_1.42        generics_0.1.3    vctrs_0.6.2       sass_0.4.5       
## [29] htmlwidgets_1.6.1 grid_4.2.1        tidyselect_1.2.0  glue_1.6.2       
## [33] R6_2.5.1          fansi_1.0.4       rmarkdown_2.20    farver_2.1.1     
## [37] magrittr_2.0.3    scales_1.2.1      htmltools_0.5.4   colorspace_2.1-0 
## [41] labeling_0.4.2    utf8_1.2.3        stringi_1.7.12    munsell_0.5.0    
## [45] cachem_1.0.7