From 3cd2ce3f4fe1d6f44d6d83027dcbc123ca683453 Mon Sep 17 00:00:00 2001 From: oliviaAB Date: Tue, 12 Mar 2024 15:56:13 +1300 Subject: [PATCH] Still working on overview chapter (not done) --- docs/images/dag_diablo_design_matrix.png | Bin 0 -> 43695 bytes docs/images/dag_transformation.png | Bin 0 -> 32205 bytes docs/overview.html | 342 +++++++++++++++++- .../figure-html/diablo-circos-plot-1.png | Bin 0 -> 506963 bytes .../mofa-samples-score-covariate-1.png | Bin 0 -> 68620 bytes .../mofa-samples-score-ggpairs-1.png | Bin 0 -> 169087 bytes .../figure-html/mofa-top-features-1.png | Bin 0 -> 480522 bytes .../figure-html/mofa-variance-explained-1.png | Bin 0 -> 88871 bytes .../figure-html/moiraine-circos-plot-1.png | Bin 0 -> 426266 bytes .../figure-html/pca-screeplot-1.png | Bin 0 -> 120105 bytes .../figure-html/show-pca-res-snps-1.png | Bin 0 -> 188654 bytes .../figure-html/so2pls-plot-summary-1.png | Bin 0 -> 102808 bytes docs/search.json | 39 +- images/dag_diablo_design_matrix.png | Bin 0 -> 43695 bytes images/dag_transformation.png | Bin 0 -> 32205 bytes overview.qmd | 297 ++++++++++++++- 16 files changed, 664 insertions(+), 14 deletions(-) create mode 100644 docs/images/dag_diablo_design_matrix.png create mode 100644 docs/images/dag_transformation.png create mode 100644 docs/overview_files/figure-html/diablo-circos-plot-1.png create mode 100644 docs/overview_files/figure-html/mofa-samples-score-covariate-1.png create mode 100644 docs/overview_files/figure-html/mofa-samples-score-ggpairs-1.png create mode 100644 docs/overview_files/figure-html/mofa-top-features-1.png create mode 100644 docs/overview_files/figure-html/mofa-variance-explained-1.png create mode 100644 docs/overview_files/figure-html/moiraine-circos-plot-1.png create mode 100644 docs/overview_files/figure-html/pca-screeplot-1.png create mode 100644 docs/overview_files/figure-html/show-pca-res-snps-1.png create mode 100644 docs/overview_files/figure-html/so2pls-plot-summary-1.png create mode 100644 images/dag_diablo_design_matrix.png create mode 100644 images/dag_transformation.png diff --git a/docs/images/dag_diablo_design_matrix.png b/docs/images/dag_diablo_design_matrix.png new file mode 100644 index 0000000000000000000000000000000000000000..de7833027878f92c54f43574e5293d9456744e57 GIT binary patch literal 43695 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 Np35jnmr5B2{2yr4pt1k} literal 0 HcmV?d00001 diff --git a/docs/overview.html b/docs/overview.html index 7d73ffc..132504a 100644 --- a/docs/overview.html +++ b/docs/overview.html @@ -274,6 +274,11 @@

1&nbs @@ -296,11 +301,17 @@

library(moiraine) ## For custom colour palettes -library(circlize) +library(ggplot2) +library(circlize) + +## For working with lists +library(purrr) + +## For visualising sO2PLS summary +library(OmicsPLS)
-
mo_set <- tar_read(mo_set_de)
-tar_load(interesting_features)
+

1.1 Input data

@@ -339,7 +350,11 @@

-
Code
colours_list <- list(                       
+
Code
head(interesting_features) ## vector of feature IDs
+#> [1] "ARS-BFGL-NGS-27468" "BovineHD2300010006" "BovineHD0300000351"
+#> [4] "BovineHD1900011146" "BovineHD0900026231" "ENSBTAG00000022715"
+
+colours_list <- list(                       
   "status" = c("Control" = "gold", "BRD" = "lightblue"),
   "day_on_feed" = colorRamp2(c(5, 70), c("white", "pink3")),
   "de_status" = c("downregulated" = "deepskyblue", 
@@ -350,14 +365,14 @@ 

mo_set, # the MultiDataSet object interesting_features, # vector of feature IDs of interest center = TRUE, # centering and scaling data for - scale = TRUE, # easier visualisation - show_column_names = FALSE, # customising the heatmap + scale = TRUE, # easier visualisation + show_column_names = FALSE, # hide sample IDs only_common_samples = TRUE, # only samples present in all omics samples_info = c("status", "day_on_feed"), # add info about samples features_info = c("de_status"), # add info about features colours_list = colours_list, # customise colours label_cols = list( # specify features label - "rnaseq" = "Name", # from features metadata + "rnaseq" = "Name", # from features metadata "metabolome" = "name" ), truncate = 20 @@ -369,7 +384,318 @@

plot_samples_upset()), or generating a density plot for each omics dataset (plot_density_data()).

1.2 Data pre-processing

-

Target factories have been implemented to facilitate the application of similar tasks across the different omics datasets. For example, transformation_datasets_factory()

+

Target factories have been implemented to facilitate the application of similar tasks across the different omics datasets. For example, the transformation_datasets_factory() function generates a sequence of targets to apply one of many possible transformations (from the vsn, DESeq2, or bestNormalize packages, for example) on each omics dataset, store information about each transformation performed, and generate a new MultiDataSet object in which the omics measurements have been transformed:

+
+Code +
+
+
transformation_datasets_factory(
+  mo_set_de,                                   # MultiDataSet object
+  c("rnaseq" = "vst-deseq2",                   # VST through DESeq2 for RNAseq
+    "metabolome" = "logx"),                    # log2-transf. for NMR dataset
+  log_bases = 2,                               # Base for log transformation
+  pre_log_functions = zero_to_half_min,        # Handling 0s in log2-transf.
+  transformed_data_name = "mo_set_transformed" # New MultiDataSet object
+)
+
+
+

+

Note that there is also the option for users to apply their own custom transformations to the datasets.

+

Similarly, the pca_complete_data_factory generates a list of targets to run a PCA on each omics dataset via the pcaMethods package, and if necessary imputes missing values through NIPALS-PCA. The PCA results can be easily visualised for all or specific omics datasets:

+
+
Code
plot_screeplot_pca(pca_runs_list)
+
+

+
+
+
+
Code
plot_samples_coordinates_pca(
+  pca_runs_list,                              # List of PCA results
+  datasets = "snps",                          # Dataset to plot
+  pcs = 1:3,                                  # Principal components to display
+  mo_data = mo_set,                           # MultiDataSet object
+  colour_upper = "geno_comp_cluster",         # Samples covariate
+  shape_upper = "status",                     # Samples covariate
+  colour_lower = "feedlot",                   # Samples covariate
+  scale_colour_lower = scale_colour_brewer(palette = "Set1") # Custom palette
+) +
+  theme(legend.box = "vertical")              # Plot legend vertically
+
+

+
+
+

+1.3 Data pre-filtering

+

The created MultiDataSet object can be filtered in a number of ways, both in terms of samples and features: via a list of sample or feature IDs, or using logical tests on samples or features metadata. In addition, we implement targets factories to retain only the most variable features in each omics dataset (unsupervised filtering), or to retain the features most associated with an outcome of interest, via sPLS-DA from mixOmics (supervised filtering). This pre-filtering step is essential to reduce the size of the datasets prior to multi-omics integration.

+
+Code +
+
+
feature_preselection_splsda_factory(
+  mo_set_complete,            # A MultiDataSet object
+  group = "status",           # Sample covariate to use for supervised filtering
+  to_keep_ns = c(             # Number of features to retain per dataset
+    "snps" = 1000, 
+    "rnaseq" = 1000
+  ), 
+  filtered_set_target_name = "mo_presel_supervised" # Name of filtered object
+)
+
+
+
+
#> Object of class 'MultiDataSet'
+#>  . assayData: 3 elements
+#>     . snps: 1000 features, 139 samples 
+#>     . rnaseq: 994 features, 143 samples 
+#>     . metabolome: 55 features, 139 samples 
+#>  . featureData:
+#>     . snps: 1000 rows, 13 cols (feature_id, ..., p_value)
+#>     . rnaseq: 994 rows, 15 cols (feature_id, ..., de_signif)
+#>     . metabolome: 55 rows, 16 cols (feature_id, ..., de_signif)
+#>  . rowRanges:
+#>     . snps: YES
+#>     . rnaseq: YES
+#>     . metabolome: NO
+#>  . phenoData:
+#>     . snps: 139 samples, 10 cols (id, ..., geno_comp_3)
+#>     . rnaseq: 143 samples, 10 cols (id, ..., geno_comp_3)
+#>     . metabolome: 139 samples, 10 cols (id, ..., geno_comp_3)
+
+

+1.4 Multi-omics data integration

+

At the moment, moiraine provides functions and target factories to facilitate the use of five integration methods: sPLS and DIABLO from the mixOmics package, sO2PLS from OmicsPLS, as well as MOFA and MEFISTO from MOFA2.

+

This involves providing functions to transform a MultiDataSet object into the required input format for each integration method; for example for sPLS:

+
+
Code
spls_input <- get_input_spls(
+  mo_presel_supervised,
+  mode = "canonical",
+  datasets = c("rnaseq", "metabolome")
+)
+
+map(spls_input, \(x) x[1:5, 1:5])
+
+
+
+
#> $rnaseq
+#>       ENSBTAG00000000020 ENSBTAG00000000046 ENSBTAG00000000056
+#> R9497           3.486141           7.211634           10.25302
+#> R5969           3.486141           7.436865           10.45008
+#> R5327           4.005139           6.731310           10.72323
+#> R5979           3.486141           7.538956           10.46189
+#> R9504           4.252314           7.493829           10.20723
+#>       ENSBTAG00000000061 ENSBTAG00000000113
+#> R9497           5.028442           13.49233
+#> R5969           4.285078           12.95106
+#> R5327           5.313842           13.14427
+#> R5979           4.333030           12.55548
+#> R9504           4.784574           12.71693
+#> 
+#> $metabolome
+#>       HMDB00001 HMDB00008 HMDB00042 HMDB00043 HMDB00060
+#> R9497  3.397217  3.405992  9.654099  7.559186 0.5849625
+#> R5969  3.318827  2.137504  7.639522  6.539159 2.5849625
+#> R5327  3.721137  6.270529  6.963474  6.024586 2.6322682
+#> R5979  3.326626  2.232661  8.401306  7.394891 2.5849625
+#> R9504  3.603548  5.675251  7.879583  7.669594 0.8479969
+
+

moiraine also offers helper functions and target factories to facilitate the application of these integration tools. For example, the diablo_predefined_design_matrix() function generates one of the three recommended design matrices for DIABLO (null, full or weighted full) for a given DIABLO input object, while the diablo_pairwise_pls_factory() factory creates a list of targets to estimate the optimal design matrix to use for DIABLO based on datasets pairwise correlations estimated using PLS:

+
+Code +
+
+
list(
+  tar_target(
+    diablo_input,
+    get_input_mixomics_supervised(
+      mo_presel_supervised,                  # MultiDataSet object (prefiltered)
+      group = "status"                       # Samples covariate of interest
+    )
+  ),
+  diablo_pairwise_pls_factory(diablo_input)  # Target factory for design matrix
+                                             #   estimation
+)
+
+
+

+

In addition, several plotting functions e.g. diablo_plot_tune() to show the results of model tuning in DIABLO or so2pls_plot_summary(), shown below, to visualise the percentage of variance explained by each latent component constructed by sO2PLS:

+
+
Code
so2pls_plot_summary(so2pls_final_run)
+
+

+
+
+
+
+
+ +
+
+Note +
+
+
+

Wouldn’t it be nice to have informative labels for the features in DIABLO’s circos plots? With moiraine, it is possible to use information from the features metadata provided as labels for the features in the plots. So, we can go from:

+
+
Code
mixOmics::circosPlot(
+  diablo_final_run,
+  cutoff = 0.7,
+  size.variables = 0.5,
+  comp = 1
+)
+
+

+
+
+

to:

+
+
Code
diablo_plot_circos(
+  diablo_final_run,
+  mo_set,
+  label_cols = list(
+    "rnaseq" = "Name",
+    "metabolome" = "name"
+  ),
+  cutoff = 0.7,
+  size.variables = 0.5,
+  comp = 1
+)
+
+

+
+
+
+
+

+1.5 Intepreting the integration results

+

One of the main goals of moiraine is to facilitate the interpretation of the omics integration results. To this end, the outcome of any of the supported integration methods can be converted to a standardised integration output format, e.g.:

+
+
Code
get_output(mofa_trained)
+
+
+
+
#> $features_weight
+#> # A tibble: 10,245 × 5
+#>    feature_id                  dataset latent_dimension     weight importance
+#>    <chr>                       <fct>   <fct>                 <dbl>      <dbl>
+#>  1 21-25977541-C-T-rs41974686  snps    Factor 1          0.000374      0.139 
+#>  2 22-51403583-A-C-rs210306176 snps    Factor 1          0.0000535     0.0199
+#>  3 24-12959068-G-T-rs381471286 snps    Factor 1          0.000268      0.0999
+#>  4 8-85224224-T-C-rs43565287   snps    Factor 1         -0.000492      0.183 
+#>  5 ARS-BFGL-BAC-16973          snps    Factor 1         -0.000883      0.329 
+#>  6 ARS-BFGL-BAC-19403          snps    Factor 1         -0.000500      0.186 
+#>  7 ARS-BFGL-BAC-2450           snps    Factor 1          0.000555      0.207 
+#>  8 ARS-BFGL-BAC-2600           snps    Factor 1         -0.0000325     0.0121
+#>  9 ARS-BFGL-BAC-27911          snps    Factor 1         -0.000568      0.212 
+#> 10 ARS-BFGL-BAC-35925          snps    Factor 1          0.000803      0.299 
+#> # ℹ 10,235 more rows
+#> 
+#> $samples_score
+#> # A tibble: 720 × 3
+#>    sample_id latent_dimension score
+#>    <chr>     <fct>            <dbl>
+#>  1 G1979     Factor 1          1.95
+#>  2 G2500     Factor 1          1.98
+#>  3 G3030     Factor 1          3.39
+#>  4 G3068     Factor 1          3.65
+#>  5 G3121     Factor 1          1.57
+#>  6 G3315     Factor 1         -1.81
+#>  7 G3473     Factor 1         -2.63
+#>  8 G3474     Factor 1         -2.30
+#>  9 G3550     Factor 1          2.98
+#> 10 G3594     Factor 1         -1.88
+#> # ℹ 710 more rows
+#> 
+#> $variance_explained
+#> # A tibble: 15 × 3
+#>    latent_dimension dataset    prop_var_expl
+#>    <fct>            <fct>              <dbl>
+#>  1 Factor 1         snps           0.000313 
+#>  2 Factor 1         rnaseq         0.496    
+#>  3 Factor 1         metabolome     0.137    
+#>  4 Factor 2         snps           0.239    
+#>  5 Factor 2         rnaseq         0.000197 
+#>  6 Factor 2         metabolome     0.0108   
+#>  7 Factor 3         snps           0.000108 
+#>  8 Factor 3         rnaseq         0.199    
+#>  9 Factor 3         metabolome     0.0000872
+#> 10 Factor 4         snps           0.0000927
+#> 11 Factor 4         rnaseq         0.0759   
+#> 12 Factor 4         metabolome     0.0194   
+#> 13 Factor 5         snps           0.000205 
+#> 14 Factor 5         rnaseq         0.0198   
+#> 15 Factor 5         metabolome     0.0296   
+#> 
+#> attr(,"class")
+#> [1] "output_dimension_reduction"
+#> attr(,"method")
+#> [1] "MOFA"
+
+

This object can then be used to visualise the integration results in a number of ways, including:

+
    +
  • percentage of variance explained:
  • +
+
+
Code +
+

+
+
+
    +
  • Sample scores as pairwise scatterplots:
  • +
+
+
Code
plot_samples_score(
+  mofa_output,                                        # MOFA standardised output
+  latent_dimensions = paste("Factor", 1:3),           # MOFA factors to display
+  mo_data = mo_set,                                   # MultiDataSet object
+  colour_upper = "status",                            # Sample covariate
+  scale_colour_upper = scale_colour_brewer(palette = "Set1"), # Custom palette
+  shape_upper = "gender",                             # Sample covariate
+  colour_lower = "geno_comp_cluster"                  # Sample covariate
+) +
+  theme(legend.box = "vertical")
+
+

+
+
+
    +
  • Sample scores against samples covariate of interest (either categorical or continuous):
  • +
+
+
Code
plot_samples_score_covariate(
+  mofa_output,                             # MOFA standardised output
+  mo_set,                                  # MultiDataSet object
+  "status",                                # Sample covariate of interest
+  colour_by = "status",                    # Other sample covariate
+  shape_by = "geno_comp_cluster",          # Other sample covariate
+  latent_dimensions = paste("Factor", 1:2) # MOFA factors to display
+)
+#> Warning: Removed 4 rows containing missing values (`geom_point()`).
+
+

+
+
+
    +
  • Top contributing features:
  • +
+
+
Code
plot_top_features(
+  mofa_output,                             # MOFA standardised output
+  mo_data = mo_set,                        # MultiDataSet object
+  label_cols = list(                       # Custom labels for features from
+    "rnaseq" = "Name",                     #   features metadata
+    "metabolome" = "name"
+  ),
+  latent_dimensions = paste("Factor", 1:2) # MOFA factors to display
+)
+
+

+
+
+

+1.6 Evaluating the integration results

+

+1.7 Comparison different integration results