Skip to contents

Metabolite compound name transformation

Metabolite compound name transform to RefMet name

This step requires networking

RefMet: A Reference list of Metabolite names.The main objective of RefMet is to provide a standardized reference nomenclature for both discrete metabolite structures and metabolite species identified by spectroscopic techniques in metabolomics experiments.

compound_name <- c("2-Hydroxybutyric acid",
                   "1-Methyladenosine",
                   "tt",
                   "2-Aminooctanoic acid")
## transform the compound name to refmet name
refmetid_result <- name2refmet(compound_name)
head(refmetid_result)
##              Input_name           Refmet_name    Formula   Super_class
## 1 2-Hydroxybutyric acid 2-Hydroxybutyric acid     C4H8O3   Fatty Acyls
## 2     1-Methyladenosine     1-Methyladenosine C11H15N5O4 Nucleic acids
## 3                    tt                    tt          -             -
## 4  2-Aminooctanoic acid  2-Aminocaprylic acid   C8H17NO2   Fatty Acyls
##    Main_class              Sub_class
## 1 Fatty acids             Hydroxy FA
## 2     Purines Purine ribonucleosides
## 3           -                      -
## 4 Fatty acids               Amino FA

Metabolite compound name transform to KEGG ID

This step requires networking

Transform the metabolites compound name to KEGG ID

compound_name <- c("2-Hydroxybutyric acid",
                   "1-Methyladenosine",
                   "tt",
                   "2-Aminooctanoic acid")
## transform the compound name to KEGG ID, some metabolites have several KEGG ID
keggid_result <- name2keggid(compound_name) %>%
  separate_rows(KEGG_id, sep = ";")
head(keggid_result)
## # A tibble: 4 × 2
##   Name                  KEGG_id
##   <chr>                 <chr>  
## 1 2-Hydroxybutyric acid C05984 
## 2 1-Methyladenosine     C02494 
## 3 tt                    NA     
## 4 2-Aminooctanoic acid  NA

Metabolite name corresponding to kegg pathway

This step requires networking

Search the kegg pathway corresponding to the metabolite name

compound_name <- c("2-Hydroxybutyric acid",
                   "1-Methyladenosine",
                   "tt",
                   "2-Aminooctanoic acid")
## Search the kegg pathway corresponding to the metabolite name
result_all <- name2pathway(compound_name)
head(result_all)
## $name2pathway
## # A tibble: 1 × 5
##   Name                  KEGG_id Pathway              Pathway_category Pathway_id
##   <chr>                 <chr>   <chr>                <chr>            <chr>     
## 1 2-Hydroxybutyric acid C05984  Propanoate metaboli… Carbohydrate me… hsa00640  
## 
## $pathway
## # A tibble: 1 × 16
##   name       nAnno nOverlap    fc zscore pvalue  adjp    or   CIl   CIu distance
##   <chr>      <dbl>    <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <chr>   
## 1 Propanoat…    42        1  76.6   8.69      0     0   Inf  1.94   Inf 1       
## # ℹ 5 more variables: namespace <chr>, members_Overlap <chr>,
## #   members_Anno <chr>, members_Overlap_name <chr>, members_Anno_name <chr>
## 
## $kegg_id
## # A tibble: 4 × 2
##   Name                  KEGG_id
##   <chr>                 <chr>  
## 1 2-Hydroxybutyric acid C05984 
## 2 1-Methyladenosine     C02494 
## 3 tt                    NA     
## 4 2-Aminooctanoic acid  NA
##### Output is the each metabolite related pathway
result_name2pathway <- result_all$name2pathway
head(result_name2pathway)
## # A tibble: 1 × 5
##   Name                  KEGG_id Pathway              Pathway_category Pathway_id
##   <chr>                 <chr>   <chr>                <chr>            <chr>     
## 1 2-Hydroxybutyric acid C05984  Propanoate metaboli… Carbohydrate me… hsa00640
## the KEGG ID of the metabolite name
result_name2keggid <- result_all$kegg_id
head(result_name2keggid)
## # A tibble: 4 × 2
##   Name                  KEGG_id
##   <chr>                 <chr>  
## 1 2-Hydroxybutyric acid C05984 
## 2 1-Methyladenosine     C02494 
## 3 tt                    NA     
## 4 2-Aminooctanoic acid  NA
## the pathway of the metabolite name
result_name2enrichpathway <- result_all$pathway
head(result_name2enrichpathway)
## # A tibble: 1 × 16
##   name       nAnno nOverlap    fc zscore pvalue  adjp    or   CIl   CIu distance
##   <chr>      <dbl>    <dbl> <dbl>  <dbl>  <dbl> <dbl> <dbl> <dbl> <dbl> <chr>   
## 1 Propanoat…    42        1  76.6   8.69      0     0   Inf  1.94   Inf 1       
## # ℹ 5 more variables: namespace <chr>, members_Overlap <chr>,
## #   members_Anno <chr>, members_Overlap_name <chr>, members_Anno_name <chr>

Metabolite KEGG ID transform to KEGG pathway

KEGG ID transform to KEGG pathway

keggid <- c("C05984", "C02494")
##### the output is the each metabolite related pathway
keggpathway_result <- keggid2pathway(keggid)
head(keggpathway_result)
## # A tibble: 1 × 5
##   ENTRY  NAME                                         PATHWAY pathway_type V2   
##   <chr>  <chr>                                        <chr>   <chr>        <chr>
## 1 C05984 2-Hydroxybutanoic acid;///2-Hydroxybutyrate… Propan… Carbohydrat… hsa0…

Pathway information

Get the gene and the metabolite in the pathway

## the genes and metabolites in pathway 'hsa00630'
result <- pathwayinfo("hsa00630")

## the genes and metabolites in pathway 'Glyoxylate and dicarboxylate metabolism'
result <- pathwayinfo("Glyoxylate and dicarboxylate metabolism")

head(result$gene_info[1:2, ])
##   type  name kegg_pathwayid                        kegg_pathwayname
## 1 gene HOGA1       hsa00630 Glyoxylate and dicarboxylate metabolism
## 2 gene AFMID       hsa00630 Glyoxylate and dicarboxylate metabolism
##             kegg_category
## 1 Carbohydrate metabolism
## 2 Carbohydrate metabolism
head(result$compound_info[1:2, ])
##         type   name kegg_pathwayid                        kegg_pathwayname
## 1 metabolite C00007       hsa00630 Glyoxylate and dicarboxylate metabolism
## 2 metabolite C00011       hsa00630 Glyoxylate and dicarboxylate metabolism
##             kegg_category
## 1 Carbohydrate metabolism
## 2 Carbohydrate metabolism

Pathway name transform to pathway id

Transform the KEGG pathway name to KEGG pathway ID

## the KEGG pathway ID of pathway name
pathwayid <- pathway2pathwayid("Glycolysis / Gluconeogenesis")
head(pathwayid)
##                        PATHWAY pathwayid
## 1 Glycolysis / Gluconeogenesis  hsa00010

Group-wise analyses

PCA plot

PCA of the data

### the pca plot
p_PCA <- pPCA(meta_dat, group)
p_PCA$p1

p_PCA$p2

p_PCA$p3

Differnetial metabolite analysis

Function ‘mlimma’

## mlimma is the function of Differential Metabolite analysis by limma
diff_result <- mlimma(meta_dat, group)
head(diff_result)
## # A tibble: 6 × 8
##   logFC AveExpr     t  P.Value    adj.P.Val     B  logP name  
##   <dbl>   <dbl> <dbl>    <dbl>        <dbl> <dbl> <dbl> <chr> 
## 1  2.86    22.6  9.25 1.52e-10 0.0000000332 14.1   7.48 C02045
## 2  2.44    26.2  7.80 6.83e- 9 0.000000748  10.4   6.13 C00267
## 3 -1.82    27.1 -6.80 1.10e- 7 0.00000622    7.64  5.21 C00073
## 4 -3.78    20.9 -6.79 1.14e- 7 0.00000622    7.61  5.21 C05674
## 5 -2.20    21.4 -6.58 2.07e- 7 0.00000907    7.02  5.04 C00255
## 6 -2.37    21.6 -6.45 2.98e- 7 0.0000109     6.66  4.96 C00242

Function ‘DM’

## DM is the function of Differential Metabolite analysis by OPLS-DA
diff_result <- DM(2 ** meta_dat, group)
## OPLS-DA
## 31 samples x 219 variables and 1 response
## standard scaling of predictors and response(s)
##       R2X(cum) R2Y(cum) Q2(cum) RMSEE pre ort pR2Y  pQ2
## Total    0.485    0.864   0.697 0.194   1   1 0.05 0.05

head(diff_result)
## # A tibble: 6 × 7
##   Name   Fold_change  PValue_t   Padj_t PValue_wilcox Padj_wilcox    VIP
##   <chr>        <dbl>     <dbl>    <dbl>         <dbl>       <dbl>  <dbl>
## 1 C09642       0.842 0.168     0.221         0.173       0.224    0.520 
## 2 C05581       0.402 0.000793  0.00220       0.00192     0.00494  1.12  
## 3 C03264       0.434 0.0000617 0.000338      0.000187    0.000855 1.33  
## 4 C15025       0.683 0.00266   0.00614       0.00763     0.0165   0.995 
## 5 C00408       1.63  0.00688   0.0142        0.0187      0.0359   1.03  
## 6 C02918       0.497 0.677     0.734         0.0855      0.125    0.0628
## filter the differential metabolites by default fold change >1.3 or < 1/1.3 ,fdr < 0.05 and VIP>0.8

diff_result_filter <- diff_result %>%
  filter(Fold_change > 1.3 | Fold_change < 1 / 1.3) %>%
  filter(Padj_wilcox < 0.1) %>%
  filter(VIP > 0.8)
head(diff_result_filter)
## # A tibble: 6 × 7
##   Name    Fold_change  PValue_t   Padj_t PValue_wilcox Padj_wilcox   VIP
##   <chr>         <dbl>     <dbl>    <dbl>         <dbl>       <dbl> <dbl>
## 1 C05581        0.402 0.000793  0.00220      0.00192      0.00494  1.12 
## 2 C03264        0.434 0.0000617 0.000338     0.000187     0.000855 1.33 
## 3 C15025        0.683 0.00266   0.00614      0.00763      0.0165   0.995
## 4 C00408        1.63  0.00688   0.0142       0.0187       0.0359   1.03 
## 5 C06178        0.397 0.0000155 0.000121     0.0000839    0.000510 1.41 
## 6 C02220        0.452 0.0403    0.0631       0.0552       0.0876   0.983

Differential metabolites’ volcano

Volcano plot of metabolites using the function “pVolcano”

p_volcano <- pVolcano(diff_result, foldchange_threshold = 1.5)
## [1] 1.5
p_volcano

Differential metabolites’ heatmap

Heatmap plot of differentital metabolites using the function “pHeatmap”

meta_dat_diff <- meta_dat[rownames(meta_dat) %in% diff_result_filter$Name, ]
p_heatmap <- pHeatmap(
  meta_dat_diff,
  group,
  fontsize_row = 5,
  fontsize_col = 4,
  clustering_method = "ward.D",
  clustering_distance_cols = "correlation"
)

Differential metabolites’ zscore

Zscore plot of differentital metabolites using the function “pZscore”

p_zscore <- pZscore(meta_dat_diff, group, ysize = 3)
p_zscore

Feature selection

Boruta

Using machine learning “Boruta” for feature selection

#group <- rep("normal",length(names(meta_dat)))
#group[grep("TUMOR",names(meta_dat))] <- "tumor"
meta_dat1 <- t(meta_dat) %>%
  as.data.frame() %>%
  mutate(group = group)

result_ML_Boruta <- ML_Boruta(meta_dat1)
head(result_ML_Boruta)
##     name  meanImp medianImp      minImp   maxImp  normHits  decision
## 1 C03264 1.807909  1.890535 -1.00100150 3.192239 0.6052104 Confirmed
## 2 C02630 3.904201  3.907530  2.23148770 5.273588 1.0000000 Confirmed
## 3 C00170 2.320137  2.383305  0.03629764 3.677534 0.8496994 Confirmed
## 4 C18170 3.504635  3.485503  1.99657024 4.950293 0.9979960 Confirmed
## 5 C06192 2.226020  2.252420 -0.15535207 3.605125 0.8136273 Confirmed
## 6 C00267 4.249434  4.265181  2.71962194 5.732876 1.0000000 Confirmed

Random Forest

Using machine learning “Random Forest” for feature selection

result_ML_RF <- ML_RF(meta_dat1)
result_ML_RF$p

result_ML_RF$feature_result
## # A tibble: 119 × 6
##    normal tumor MeanDecreaseAccuracy MeanDecreaseGini names   raw    
##     <dbl> <dbl>                <dbl>            <dbl> <chr>   <fct>  
##  1   4.98  4.74                 5.29            0.702 C00073  C00073 
##  2   4.82  4.46                 4.95            0.725 C02045  C02045 
##  3   4.41  4.69                 4.84            0.645 C05938. C05938 
##  4   4.45  4.44                 4.75            0.613 C02291  C02291 
##  5   3.90  4.03                 4.54            0.454 C03413  C03413 
##  6   4.02  3.34                 4.33            0.545 C00365  C00365 
##  7   3.98  3.52                 4.19            0.454 C00022  C00022 
##  8   4.05  3.50                 3.92            0.540 C05674  C05674 
##  9   3.58  3.36                 3.83            0.332 C00242  C00242 
## 10   3.60  3.54                 3.76            0.369 C00267  C00267 
## # ℹ 109 more rows

XGBoost

Using machine learning ” XGBoost” for feature selection

result_ML_xgboost <- ML_xgboost(meta_dat1)
## [1]  train-rmse:0.364289 test-rmse:0.472248 
## [2]  train-rmse:0.265516 test-rmse:0.429406 
## [3]  train-rmse:0.193648 test-rmse:0.410893 
## [4]  train-rmse:0.141388 test-rmse:0.413385 
## [5]  train-rmse:0.103498 test-rmse:0.413192 
## [6]  train-rmse:0.076135 test-rmse:0.393103 
## [7]  train-rmse:0.056497 test-rmse:0.394706 
## [8]  train-rmse:0.042323 test-rmse:0.397109 
## [9]  train-rmse:0.031939 test-rmse:0.401043 
## [10] train-rmse:0.024251 test-rmse:0.397340 
## [11] train-rmse:0.018686 test-rmse:0.399668 
## [12] train-rmse:0.014473 test-rmse:0.401372 
## [13] train-rmse:0.011318 test-rmse:0.402748 
## [14] train-rmse:0.008898 test-rmse:0.404315 
## [15] train-rmse:0.007107 test-rmse:0.405550 
## [16] train-rmse:0.005741 test-rmse:0.406239 
## [17] train-rmse:0.004693 test-rmse:0.406766 
## [18] train-rmse:0.003864 test-rmse:0.407297 
## [19] train-rmse:0.003204 test-rmse:0.407712 
## [20] train-rmse:0.002669 test-rmse:0.408034 
## [21] train-rmse:0.002233 test-rmse:0.408283 
## [22] train-rmse:0.001895 test-rmse:0.408476 
## [23] train-rmse:0.001593 test-rmse:0.408622 
## [24] train-rmse:0.001345 test-rmse:0.408739 
## [25] train-rmse:0.001144 test-rmse:0.408767 
## [26] train-rmse:0.000986 test-rmse:0.408763 
## [27] train-rmse:0.000852 test-rmse:0.408799 
## [28] train-rmse:0.000737 test-rmse:0.408795 
## [29] train-rmse:0.000656 test-rmse:0.408799 
## [30] train-rmse:0.000591 test-rmse:0.408801 
## [31] train-rmse:0.000540 test-rmse:0.408806 
## [32] train-rmse:0.000467 test-rmse:0.408816 
## [33] train-rmse:0.000429 test-rmse:0.408818 
## [34] train-rmse:0.000400 test-rmse:0.408809 
## [35] train-rmse:0.000399 test-rmse:0.408804 
## [36] train-rmse:0.000399 test-rmse:0.408801 
## [37] train-rmse:0.000399 test-rmse:0.408798 
## [38] train-rmse:0.000399 test-rmse:0.408797 
## [39] train-rmse:0.000399 test-rmse:0.408796 
## [40] train-rmse:0.000398 test-rmse:0.408795 
## [41] train-rmse:0.000398 test-rmse:0.408794 
## [42] train-rmse:0.000398 test-rmse:0.408794 
## [43] train-rmse:0.000398 test-rmse:0.408793 
## [44] train-rmse:0.000398 test-rmse:0.408793 
## [45] train-rmse:0.000398 test-rmse:0.408793 
## [46] train-rmse:0.000398 test-rmse:0.408793 
## [47] train-rmse:0.000398 test-rmse:0.408793 
## [48] train-rmse:0.000398 test-rmse:0.408793 
## [49] train-rmse:0.000398 test-rmse:0.408793 
## [50] train-rmse:0.000398 test-rmse:0.408793 
## [51] train-rmse:0.000398 test-rmse:0.408793 
## [52] train-rmse:0.000398 test-rmse:0.408793 
## [53] train-rmse:0.000398 test-rmse:0.408793 
## [54] train-rmse:0.000398 test-rmse:0.408793 
## [55] train-rmse:0.000398 test-rmse:0.408793 
## [56] train-rmse:0.000398 test-rmse:0.408793 
## [57] train-rmse:0.000398 test-rmse:0.408793 
## [58] train-rmse:0.000398 test-rmse:0.408793 
## [59] train-rmse:0.000398 test-rmse:0.408793 
## [60] train-rmse:0.000398 test-rmse:0.408793 
## [61] train-rmse:0.000398 test-rmse:0.408793 
## [62] train-rmse:0.000398 test-rmse:0.408793 
## [63] train-rmse:0.000398 test-rmse:0.408793 
## [64] train-rmse:0.000398 test-rmse:0.408793 
## [65] train-rmse:0.000398 test-rmse:0.408793 
## [66] train-rmse:0.000398 test-rmse:0.408793 
## [67] train-rmse:0.000398 test-rmse:0.408793 
## [68] train-rmse:0.000398 test-rmse:0.408793 
## [69] train-rmse:0.000398 test-rmse:0.408793 
## [70] train-rmse:0.000398 test-rmse:0.408793

result_ML_xgboost$p

result_ML_xgboost$feature_result
##     Feature        Gain      Cover  Frequency  Importance
##      <fctr>       <num>      <num>      <num>       <num>
##  1:  C02630 0.418245537 0.10869565 0.08333333 0.418245537
##  2:  C05378 0.222139328 0.10869565 0.08333333 0.222139328
##  3:  C00365 0.118081109 0.10869565 0.08333333 0.118081109
##  4:  C00153 0.062837738 0.10869565 0.08333333 0.062837738
##  5:  C15025 0.062351511 0.05652174 0.08333333 0.062351511
##  6:  C00408 0.049560801 0.11304348 0.16666667 0.049560801
##  7: C05938  0.032905764 0.10869565 0.08333333 0.032905764
##  8:  C02045 0.017491197 0.10869565 0.08333333 0.017491197
##  9:  C05581 0.008762626 0.05652174 0.08333333 0.008762626
## 10:  C03264 0.007624389 0.12173913 0.16666667 0.007624389

LASSO

Using machine learning “LASSO” for feature selection

result_ML_lasso <- ML_alpha(meta_dat1, method = "lasso")
head(result_ML_lasso)
##   feature           s1
## 1  C02045  0.382767479
## 2  C00073 -0.035166629
## 3  C00022  0.091768275
## 4  C00255 -0.002267242

elastic network

Using machine learning “elastic network” for feature selection

result_ML_elastic <- ML_alpha(meta_dat1, method = "elastic")
head(result_ML_elastic)
##      feature          s1
## 1 `C01879  ` -0.21481371
## 2     C00267  0.19533009
## 3     C00010 -0.09682168
## 4     C00519 -0.04822683
## 5     C02291 -0.17148409
## 6     C02045  0.76645813

Pathway analysis

Pathview only metabolites

kegg_id <- c("C02494", "C03665", "C01546", "C05984", "C14088", "C00587")
value <- c(-0.3824620,
           0.1823628,
           -1.1681486,
           0.5164899,
           1.6449798,
           -0.7340652)
names(value) <- kegg_id
cpd.data <- value

gene_name <- c("LDHA", "BCKDHB", "PCCA", "ACSS1")
gene_value <- c(1, 0.5, -1, -1)
names(gene_value) <- gene_name

## pathview plot of metabolites
pPathview(cpd.data, outdir = "result_v0131")

Pathview contains metabolites and genes

## pathview plot of genes and metabolites
pPathview(cpd.data = cpd.data,
          gene.data = gene_value,
          outdir = "result_v0131")

Clinical analysis

Time series of clinical

Column contains the time, group, clinical index(such as ALT), low and high

clinical_index[1:5, ]
##   time group ALT low high
## 1    1     B  13  10   64
## 2    2     B  13  10   64
## 3    3     B  14  10   64
## 4    4     B  24  10   64
## 5    5     B 255  10   64
time_series_ALT <- pCliTS(clinical_index, "ALT")
time_series_ALT

Survival analysis

names(aml)[3] = "group"
p = survCli(aml)
p

Metabolites’ survival plot

metabolites <- c("C03819", "C02918", "C03916")
survMet(dat_surv,
        metabolites,
        cluster_method = "mean",
        out_dir = "result_v0131/survival/")

Cox analysis

result <- MetCox(dat_surv)
head(result)
## # A tibble: 6 × 5
##   name   beta     `HR (95% CI for HR)` wald.test p.value
##   <chr>  <chr>    <chr>                <chr>     <chr>  
## 1 C03819 1.2e-06  1 (1-1)              0.31      0.58   
## 2 C02918 4.8e-07  1 (1-1)              0.1       0.75   
## 3 C03916 -1.7e-07 1 (1-1)              0.11      0.74   
## 4 C04102 -3.1e-08 1 (1-1)              0.07      0.79   
## 5 C01885 6.3e-07  1 (1-1)              0.12      0.73   
## 6 C07326 -5.1e-06 1 (1-1)              0.22      0.64

Session information

## R version 4.4.1 (2024-06-14)
## Platform: x86_64-apple-darwin20
## Running under: macOS Ventura 13.7.1
## 
## Matrix products: default
## BLAS:   /Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/lib/libRblas.0.dylib 
## LAPACK: /Library/Frameworks/R.framework/Versions/4.4-x86_64/Resources/lib/libRlapack.dylib;  LAPACK version 3.12.0
## 
## locale:
## [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
## 
## time zone: Asia/Shanghai
## tzcode source: internal
## 
## attached base packages:
## [1] stats4    stats     graphics  grDevices utils     datasets  methods  
## [8] base     
## 
## other attached packages:
##  [1] caret_6.0-94           lattice_0.22-6         pathview_1.46.0       
##  [4] org.Hs.eg.db_3.20.0    AnnotationDbi_1.68.0   IRanges_2.40.0        
##  [7] S4Vectors_0.44.0       Biobase_2.66.0         BiocGenerics_0.52.0   
## [10] clusterProfiler_4.14.1 RColorBrewer_1.1-3     ggplot2_4.0.1         
## [13] stringr_1.5.1          knitr_1.49             tidyr_1.3.1           
## [16] survival_3.6-4         tibble_3.2.1           dplyr_1.1.4           
## [19] MNet_1.2.0            
## 
## loaded via a namespace (and not attached):
##   [1] fs_1.6.5                    matrixStats_1.4.1          
##   [3] bitops_1.0-9                enrichplot_1.26.2          
##   [5] lubridate_1.9.3             httr_1.4.7                 
##   [7] Rgraphviz_2.50.0            tools_4.4.1                
##   [9] backports_1.5.0             utf8_1.2.4                 
##  [11] R6_2.5.1                    mgcv_1.9-1                 
##  [13] lazyeval_0.2.2              withr_3.0.2                
##  [15] gridExtra_2.3               cli_3.6.3                  
##  [17] textshaping_0.4.0           labeling_0.4.3             
##  [19] sass_0.4.9                  KEGGgraph_1.66.0           
##  [21] filesstrings_3.4.0          survMisc_0.5.6             
##  [23] S7_0.2.0                    readr_2.1.5                
##  [25] randomForest_4.7-1.2        proxy_0.4-27               
##  [27] pkgdown_2.1.1               yulab.utils_0.1.8          
##  [29] systemfonts_1.1.0           gson_0.1.0                 
##  [31] foreign_0.8-86              DOSE_4.0.0                 
##  [33] R.utils_2.12.3              DMwR2_0.0.2                
##  [35] parallelly_1.39.0           limma_3.62.1               
##  [37] strex_2.0.1                 TTR_0.24.4                 
##  [39] rstudioapi_0.17.1           RSQLite_2.3.7              
##  [41] shape_1.4.6.1               gridGraphics_0.5-1         
##  [43] generics_0.1.3              car_3.1-3                  
##  [45] GO.db_3.20.0                Matrix_1.7-0               
##  [47] qqman_0.1.9                 fansi_1.0.6                
##  [49] abind_1.4-8                 R.methodsS3_1.8.2          
##  [51] lifecycle_1.0.4             yaml_2.3.10                
##  [53] carData_3.0-5               SummarizedExperiment_1.36.0
##  [55] qvalue_2.38.0               recipes_1.1.0              
##  [57] SparseArray_1.6.0           grid_4.4.1                 
##  [59] blob_1.2.4                  promises_1.3.0             
##  [61] crayon_1.5.3                ggtangle_0.0.4             
##  [63] MultiDataSet_1.34.0         cowplot_1.1.3              
##  [65] KEGGREST_1.46.0             pillar_1.9.0               
##  [67] fgsea_1.32.0                GenomicRanges_1.58.0       
##  [69] xgboost_1.7.8.1             future.apply_1.11.3        
##  [71] codetools_0.2-20            fastmatch_1.1-4            
##  [73] glue_1.8.0                  ggfun_0.1.7                
##  [75] data.table_1.16.2           MultiAssayExperiment_1.32.0
##  [77] treeio_1.30.0               vctrs_0.6.5                
##  [79] png_0.1-8                   gtable_0.3.6               
##  [81] cachem_1.1.0                dnet_1.1.7                 
##  [83] gower_1.0.1                 xfun_0.49                  
##  [85] S4Arrays_1.6.0              mime_0.12                  
##  [87] prodlim_2025.04.28          timeDate_4041.110          
##  [89] pheatmap_1.0.12             iterators_1.0.14           
##  [91] KMsurv_0.1-5                hardhat_1.4.0              
##  [93] lava_1.8.0                  statmod_1.5.0              
##  [95] ipred_0.9-15                nlme_3.1-164               
##  [97] ggtree_3.14.0               xts_0.14.1                 
##  [99] bit64_4.5.2                 GenomeInfoDb_1.42.0        
## [101] bslib_0.8.0                 rpart_4.1.23               
## [103] colorspace_2.1-1            DBI_1.2.3                  
## [105] Hmisc_5.2-3                 nnet_7.3-19                
## [107] tidyselect_1.2.1            bit_4.5.0                  
## [109] compiler_4.4.1              curl_6.0.0                 
## [111] glmnet_4.1-8                graph_1.84.0               
## [113] htmlTable_2.4.3             desc_1.4.3                 
## [115] DelayedArray_0.32.0         checkmate_2.3.2            
## [117] scales_1.4.0                hexbin_1.28.4              
## [119] supraHex_1.43.0             digest_0.6.37              
## [121] rmarkdown_2.29              XVector_0.46.0             
## [123] htmltools_0.5.8.1           pkgconfig_2.0.3            
## [125] base64enc_0.1-3             MatrixGenerics_1.18.0      
## [127] fastmap_1.2.0               rlang_1.1.6                
## [129] htmlwidgets_1.6.4           UCSC.utils_1.2.0           
## [131] quantmod_0.4.26             shiny_1.9.1                
## [133] farver_2.1.2                jquerylib_0.1.4            
## [135] zoo_1.8-12                  jsonlite_1.8.9             
## [137] BiocParallel_1.40.0         R.oo_1.27.0                
## [139] GOSemSim_2.32.0             ropls_1.38.0               
## [141] ModelMetrics_1.2.2.2        RCurl_1.98-1.16            
## [143] magrittr_2.0.4              ggplotify_0.1.2            
## [145] Formula_1.2-5               GenomeInfoDbData_1.2.13    
## [147] patchwork_1.3.2             Rcpp_1.0.13-1              
## [149] ape_5.8                     stringi_1.8.4              
## [151] pROC_1.18.5                 zlibbioc_1.52.0            
## [153] MASS_7.3-60.2               plyr_1.8.9                 
## [155] ggrepel_0.9.6               parallel_4.4.1             
## [157] listenv_0.9.1               survminer_0.5.0            
## [159] Biostrings_2.74.0           splines_4.4.1              
## [161] hms_1.1.3                   Boruta_8.0.0               
## [163] ranger_0.17.0               igraph_2.1.1               
## [165] ggpubr_0.6.0                ggsignif_0.6.4             
## [167] reshape2_1.4.4              XML_3.99-0.17              
## [169] evaluate_1.0.1              calibrate_1.7.7            
## [171] tzdb_0.4.0                  foreach_1.5.2              
## [173] httpuv_1.6.15               purrr_1.2.0                
## [175] future_1.34.0               km.ci_0.5-6                
## [177] broom_1.0.7                 xtable_1.8-4               
## [179] e1071_1.7-16                tidytree_0.4.6             
## [181] rstatix_0.7.2               later_1.3.2                
## [183] class_7.3-22                ragg_1.3.3                 
## [185] aplot_0.2.3                 memoise_2.0.1              
## [187] cluster_2.1.6               timechange_0.3.0           
## [189] globals_0.16.3