diff --git a/NAMESPACE b/NAMESPACE index 2fb2325..fd6962c 100644 --- a/NAMESPACE +++ b/NAMESPACE @@ -49,6 +49,7 @@ export(multiomics_modules) export(multiomics_network) export(multiomics_network_matrix) export(pathway_analysis_enrichr) +export(pathway_report) export(plot_OpenTarget) export(plot_communities) export(plot_components) @@ -61,6 +62,7 @@ export(process_rna) export(processed_proteomics) export(processed_rna) export(protein_DE_analysis) +export(proteomics_report) export(pseudotime_inference) export(qc_report) export(rna_DE_analysis) @@ -68,6 +70,7 @@ export(sign_signature) export(single_omic_comparisons) export(single_omic_report) export(vertical_integration) +export(visualise_pathway) export(volcano_interactive) export(volcano_interactive_comparison) export(volcano_plot_deseq) @@ -79,6 +82,7 @@ import(circlize) import(dplyr) import(ggplot2) import(igraph) +import(visNetwork) importFrom(ActivePathways,read.GMT) importFrom(AnnotationDbi,mapIds) importFrom(DESeq2,DESeq) diff --git a/R/TF_enrichment.R b/R/TF_enrichment.R index 98d055f..95c3829 100644 --- a/R/TF_enrichment.R +++ b/R/TF_enrichment.R @@ -19,12 +19,19 @@ Transcription_Factor_enrichment <- function(communities, weights, TF_gmt = "Enrichr_Queries.gmt", - threshold = 0.2, + threshold = 1.5, direction = "negative") { TF_genelist <- ActivePathways::read.GMT(TF_gmt) TF_genelist_list <- lapply(TF_genelist, function(x) { x$genes }) + + mean_weight <- mean(weights$weights_df$protein$Weights) + sd_weight <- sd(weights$weights_df$protein$Weights) + + # Identify rows where Weight is over 2 SD above the mean + threshold <- mean_weight + threshold * sd_weight + if (direction == "negative") { TF_targets <- names(TF_genelist_list)[names(TF_genelist_list) %in% weights$weights_df$protein$Feature[which(weights$weights_df$protein$Weights <= -threshold)]] diff --git a/R/extract_weights.R b/R/extract_weights.R index d41d4a3..0c138c3 100644 --- a/R/extract_weights.R +++ b/R/extract_weights.R @@ -4,7 +4,7 @@ #' @param model MOFA model from integration in #' `multiassay@metadata$integration$MOFA` #' @param factor Factor to extract weight from -#' @param threshold Absolute threshold to filter weights +#' @param threshold Number of standard deviation away from the mean weight #' @param sense_check_variable default to `NULL`. High weights should #' coincide with stronger correlation if the sense_check_variable is an #' important driver of variation in the designated factor. Will be used to @@ -26,7 +26,7 @@ #' extract_weigths <- function(model, factor = 1, - threshold = 0.3, + threshold = 1.5, sense_check_variable = NULL) { weights_rna_1 <- MOFA2::get_weights(model, view = "mRNA", @@ -36,7 +36,6 @@ extract_weigths <- function(model, as.data.frame = FALSE ) - weights_prot_1 <- MOFA2::get_weights(model, view = "proteins", factor = factor, @@ -56,6 +55,12 @@ extract_weigths <- function(model, rna_1$model_feature <- rownames(rna_1) protein_1$model_feature <- rownames(protein_1) + + mean_weight <- mean(rna_1$Weights) + sd_weight <- sd(rna_1$Weights) + + # Identify rows where Weight is over 2 SD above the mean + threshold <- mean_weight + threshold * sd_weight protein_positive <- protein_1 %>% dplyr::arrange(dplyr::desc(Weights), dplyr::desc(Feature)) %>% diff --git a/R/integrative_results_unsupervised.R b/R/integrative_results_unsupervised.R index 4db9920..3fe02ff 100644 --- a/R/integrative_results_unsupervised.R +++ b/R/integrative_results_unsupervised.R @@ -1,7 +1,7 @@ #' Downstream analysis for integrated multi-omics data #' #' @param multiassay Multiassay experiment object generated by Omix -#' @param integration_model Possible unsupervised integration methods are `MOFA`, +#' @param integration_model Possible unsupervised integration methods are `MOFA` #' @param dependent Dependent variable for groups. #' @param correlation_threshold Absolute correlation threshold to draw edges #' in the network @@ -11,7 +11,7 @@ #' @param sense_check_variable sense check #' @param covariates cov #' @param time tim -#' @param weights_threshold weights threshold +#' @param weights_threshold weights threshold (+/- SD from the mean) #' @param community_detection community detection method #' @param pseudotime_analysis TRUE/ FALSE #' @param TF_fp file path GMT file with Transcription Factors and target genes. Check `https://maayanlab.cloud/chea3/` @@ -33,7 +33,7 @@ integrative_results_unsupervised <- function(multiassay, dependent = "diagnosis", sense_check_variable = "PHF1", covariates = c("PHF1", "amyloid", "AT8"), - weights_threshold = 0.2, + weights_threshold = 1.5, correlation_threshold = 0.4, community_detection = "leading_eigen", pseudotime_analysis = TRUE, diff --git a/R/pathway_report.R b/R/pathway_report.R new file mode 100644 index 0000000..be1438f --- /dev/null +++ b/R/pathway_report.R @@ -0,0 +1,62 @@ +#' Generate a report for single omic analysis +#' +#' @param pathways list of pathways +#' @param report_folder_path report_folder_path folder path to save the report. +#' @param report_file filename for report (without an extension). +#' @param database Enrichment database `GO_Molecular_Function_2021`,`GO_Cellular_Component_2021`, +#' `GO_Biological_Process_2021`, `Reactome_2016` , `KEGG_2021_Human` , `MSigDB_Hallmark_2020` +#' @family Report +#' @return Single omic analyses report html +#' @export +#' +pathway_report <- function(pathways, + report_folder_path = getwd(), + report_file = "single_omic_report_Omix", + database='Reactome_2016', + num_path=20){ + uniomic=list() + uniomic$param$pathways=pathways + uniomic$param$database=database + uniomic$param$num_path=num_path + + + report_file <- tools::file_path_sans_ext(report_file) + + cli::cli_h2("Generating report for pathways analyses") + + + metadata_tmp_path <- file.path(tempdir(), "metadata.qs") + + cli::cli_text("Writing temp files for report...") + qs::qsave( + uniomic, + metadata_tmp_path + ) + + krd <- file.path(tempdir(), "krdqc") + intd <- file.path(tempdir(), "idqc") + dir.create(krd, showWarnings = FALSE) + dir.create(intd, showWarnings = FALSE) + + cli::cli_text("Generating Pathway report...") + rmarkdown::render( + system.file( + "rmarkdown/templates/pathways/skeleton.Rmd", + package = "Omix" + ), + params = list( + metadata_path = metadata_tmp_path + ), + output_dir = report_folder_path, + output_file = report_file, + knit_root_dir = krd, + intermediates_dir = intd, + quiet = TRUE + ) + + report_file_name <- paste(report_file, ".html", sep = "") + + + +} + diff --git a/R/process_protein.R b/R/process_protein.R index a3e469f..036fb3b 100644 --- a/R/process_protein.R +++ b/R/process_protein.R @@ -228,7 +228,7 @@ process_protein <- function(multiassay, outliers processing_outputs[["remove_sample_outliers"]]=list(sample_outliers= dim5 - dim6, - percentage_outliers= (dim5 - dim6)/dim4, + percentage_outliers= (dim5 - dim6)/dim5, detected_sample_outliers= outliers) } diff --git a/R/proteomics_report.R b/R/proteomics_report.R new file mode 100644 index 0000000..7695b41 --- /dev/null +++ b/R/proteomics_report.R @@ -0,0 +1,70 @@ +#' Generate a report for single omic analysis +#' +#' @param multiassay Multiassay experiment object generated by Omix +#' @param report_folder_path report_folder_path folder path to save the report. +#' @param report_file filename for report (without an extension). +#' @param slot Slot of interest +#' @param database Enrichment database `GO_Molecular_Function_2021`,`GO_Cellular_Component_2021`, +#' `GO_Biological_Process_2021`, `Reactome_2016` , `KEGG_2021_Human` , `MSigDB_Hallmark_2020` +#' @param clinical_covariates clinical covariates for table1 +#' @family Report +#' @return Single omic analyses report html +#' @export +#' +proteomics_report <- function(multiassay, + report_folder_path = getwd(), + report_file = "single_omic_report_Omix", + slot='ADvsControl', + database='Reactome_2016', + num_path=20, + clinical_covariates=c('PHF1','amyloid','PMD')){ + uniomic=list() + uniomic=multiassay@metadata[c('DEP')] + uniomic$param$slot=slot + uniomic$param$database=database + uniomic$param$num_path=num_path + uniomic$metadata=multiassay@colData + uniomic$parameters_analysis_protein = multiassay@metadata$parameters$single_omic$de$protein + uniomic$parameters_processing_protein = multiassay@metadata$parameters$processing$protein + uniomic$clinical_covariates= clinical_covariates + + report_file <- tools::file_path_sans_ext(report_file) + + cli::cli_h2("Generating report for single omic analyses") + + + metadata_tmp_path <- file.path(tempdir(), "metadata.qs") + + cli::cli_text("Writing temp files for report...") + qs::qsave( + uniomic, + metadata_tmp_path + ) + + krd <- file.path(tempdir(), "krdqc") + intd <- file.path(tempdir(), "idqc") + dir.create(krd, showWarnings = FALSE) + dir.create(intd, showWarnings = FALSE) + + cli::cli_text("Generating single omic analyses report...") + rmarkdown::render( + system.file( + "rmarkdown/templates/proteomics/skeleton.Rmd", + package = "Omix" + ), + params = list( + metadata_path = metadata_tmp_path + ), + output_dir = report_folder_path, + output_file = report_file, + knit_root_dir = krd, + intermediates_dir = intd, + quiet = TRUE + ) + + report_file_name <- paste(report_file, ".html", sep = "") + + + +} + diff --git a/R/visualise_pathway.R b/R/visualise_pathway.R new file mode 100644 index 0000000..f44983b --- /dev/null +++ b/R/visualise_pathway.R @@ -0,0 +1,144 @@ +#' visualise_pathway +#' +#' @param pathways dataframe of enrichment results +#' @param gene_data LogFC +#' @param num_path number of pathways to plot +#' @family Plotting +#' @import RColorBrewer +#' @import visNetwork +#' @import dplyr +#' @return viridis +#' @export +#' +visualise_pathway <- function(pathways,gene_data=NULL,num_path=10){ + + pathways <- pathways %>% + arrange(FDR) %>% # Sort the dataframe by the FDR column in ascending order + slice_head(n = num_path) + + color_palette <- colorRampPalette(rev(brewer.pal(9, "Blues")))(100) + fdr_colors <- rev(viridis(100, option = "D")[as.numeric(cut(pathways$FDR, breaks = 100))]) + + # Initialize vectors for edges + gene_names <- c() + pathway_ids <- c() + + # Loop through each row and extract genes + for (i in 1:nrow(pathways)) { + genes <- unlist(strsplit(as.character(pathways$genes[i]), ";")) + gene_names <- c(gene_names, genes) + pathway_ids <- c(pathway_ids, rep(pathways$description[i], length(genes))) + } + + # Create an edge dataframe + edges <- data.frame(from = pathway_ids, to = gene_names) + + # Create a nodes dataframe with labels and types + pathway_labels <- setNames(pathways$description, pathways$geneset) + names(pathway_labels) <-pathways$description + gene_labels <- unique(gene_names) + node_labels <- c(pathway_labels, setNames(gene_labels, gene_labels)) + nodes <- data.frame(id = names(node_labels), label = node_labels) + + # Distinguish between pathway and gene nodes + nodes$type <- ifelse(nodes$id %in% names(pathway_labels), "Pathway", "Gene") + + # Add FDR colors to pathway nodes + pathway_fdr_colors <- setNames(fdr_colors, names(pathway_labels)) + + nodes$type <- ifelse(nodes$id %in% names(pathway_labels), "Pathway", "Gene") + + nodes$color <- ifelse(nodes$type == "Pathway", pathway_fdr_colors[nodes$id], NA) + edges$color <- 'lightgrey' + # Customize node sizes and label font sizes + nodes$size <- ifelse(nodes$type == "Pathway", 30, 10) + nodes$font.size <- ifelse(nodes$type == "Pathway", 30, 20) + nodes$font.color <- ifelse(nodes$type == "Pathway", "black", "black") + nodes$font.style <- ifelse(nodes$type == "Pathway", "bold", "normal") + + insertLineBreaks <- function(label, words_per_line = 2) { + # Split the label into words + words <- unlist(strsplit(label, " ")) + + # Initialize an empty string for the new label + new_label <- "" + + # Iterate over the words and insert line breaks + for (i in seq_along(words)) { + new_label <- paste0(new_label, words[i], + ifelse(i %% words_per_line == 0 && i < length(words), "\n", " ")) + } + + return(trimws(new_label)) + } + + # Example usage + new_label <- insertLineBreaks("This is an example label with more than three words", 3) + + # Apply the function to the label column + nodes$label <- sapply(nodes$label, insertLineBreaks) + + # Merge the gene_data with the nodes dataframe + if(!is.null(gene_data)){ + nodes <- merge(nodes, gene_data, by.x = "id", by.y = "gene", all.x = TRUE) + } + + # Scale the size of gene nodes based on avg_log2FC + # You may need to adjust the scaling factor to get a desirable range of sizes + max_size <- 40 # Maximum size for any node + min_size <- 5 # Minimum size for gene nodes + scale_factor <- 25 # Adjust this factor to scale sizes + + # Handling missing or NA avg_log2FC values + if(!is.null(gene_data)){ + nodes$avg_log2FC[is.na(nodes$avg_log2FC)] <- min(nodes$avg_log2FC, na.rm = TRUE) + + + # Scale node sizes + nodes$size <- ifelse(nodes$type == "Pathway", max_size, + min_size + scale_factor * abs(nodes$avg_log2FC)) + + } + # Generate Viridis color scale + fdr_scale <- seq(0, 1, length.out = 100) + fdr_colors <- rev(viridis(100, option = "D")) + + # Create a dataframe for the legend + legend_df <- data.frame(FDR = fdr_scale, Color = fdr_colors) + + # Create a legend plot using ggplot2 + legend=ggplot(legend_df, aes(x = FDR, y = 1, fill = Color)) + + geom_tile() + + scale_fill_identity() + + theme_minimal() + + theme(axis.text.y = element_blank(), + axis.ticks.y = element_blank(), + axis.title.y = element_blank(), + axis.title.x = element_text(size = 10)) + + labs(x = "FDR", y = "") + + + ## + library(igraph) + network_igraph <- graph_from_data_frame(d = edges, vertices = nodes) + # Convert to undirected graph + network_igraph_undirected <- as.undirected(network_igraph, mode = "collapse") + + communities <- cluster_fast_greedy(network_igraph_undirected) + + nodes$group <- communities$membership + + # Plot the network with customized node properties + visNetwork(nodes, edges, width = "100%",height = "800px") %>% + visNodes(size = "size", font = list(size = "font.size" )) %>% visIgraphLayout()%>% + visPhysics( + solver = "forceAtlas2Based", + forceAtlas2Based = list(gravitationalConstant = 0, centralGravity = 0.01, + springLength = 20, springConstant = 0.08) + )%>% + visOptions(highlightNearest = list(enabled = T, degree = 1, hover = T), + selectedBy = "group") + + + +} \ No newline at end of file diff --git a/README.Rmd b/README.Rmd index a4a5f3a..d4f1424 100644 --- a/README.Rmd +++ b/README.Rmd @@ -12,7 +12,6 @@ knitr::opts_chunk$set( ) library(readr) library(badger) -comparison_table <- read_csv("man/figures/comparison_table_new.csv") ``` @@ -22,19 +21,17 @@ comparison_table <- read_csv("man/figures/comparison_table_new.csv") -## Pipeline overview +## Omix: A Transcriptomics-Proteomics Integration Pipeline -The `Omix` pipeline offers an integration and analysis framework for multi-omics intended to pre-process, analyse, and visualise multimodal data flexibly to address research questions. Omix is built on four consecutive blocks, (1) preparation of the multimodal container, (2) processing and quality control, (3) single omic analyses, and (4) multi-omics vertical integration. +The `Omix` pipeline is a specialised framework for pre-processing, analysing, integrating, and visualising bulk transcriptomics and proteomics data. By embedding state of the art bioinformatics tools with novel features into a user-friendly wrapper, Omix streamlines the integrative analysis of bulk transcriptomics and proteomics data, thereby facilitating complex biological investigations, from biomarker discovery to patient stratification. Pipeline outputs are standardised and include publication-quality plots, tables, and interactive reports. ```{r out.width = '100%', echo = FALSE} -knitr::include_graphics("man/figures/Omix-pipeline.png") +knitr::include_graphics("man/figures/Omix-pipeline.jpg") ``` -Omix offers a range of state-of-the-art processing functions and integrative models, equipped with versatile parameters and quality control features. This empowers researchers to explore different integration strategies easily, enhancing the speed, scalability, and flexibility of multi-omics analyses. - -While the current version focuses on bulk transcriptomics and proteomics, future iterations aim to encompass a broader range of omics types, expanding the software’s applicability and usefulness. +The Omix pipeline offers an integration and analysis framework for multi-omics intended to pre-process, analyse, and visualise multimodal data flexibly to address research questions. Omix is a wrapper tool built on five consecutive blocks, (1) preparation of the multimodal container, (2) data processing and quality control, (3) single omic analyses, and (4) Transcriptomics-Proteomics vertical integration, (5) Joint Transcriptomics-Proteomics post-integration downstream analyses ## Installation @@ -82,16 +79,6 @@ devtools::install_github("eleonore-schneeg/Omix") Omix implements these modular steps and displays results in interactive reports. -## Benchmark of multi-omics integration softwares - -```{r, echo=F} -library(knitr) -colnames(comparison_table)[1]='Tool' -kable(head(comparison_table)) -``` - -Biomarker Discovery (BD), Biological Mechanisms (BM), Sample stratification (STR) - ## Getting started The Getting Started section of the documentation contains downloadable examples on how to use Omix. @@ -128,7 +115,7 @@ An RStudio server session can be accessed via a browser at localhost:8787 using Please cite `Omix` as: -Eléonore Schneegans, Nurun Fancy, Michael Thomas, Nanet Willumsen, Paul M Matthews, Johanna Jackson (2023) Omix: A Multi-Omics Integration Pipeline +Eléonore Schneegans, Nurun Fancy, Michael Thomas, Nanet Willumsen, Paul M Matthews, Johanna Jackson (2023) Omix: A Transcriptomics-Proteomics Integration Pipeline ## Contributing diff --git a/README.md b/README.md index f287c3e..d0b96d6 100644 --- a/README.md +++ b/README.md @@ -9,29 +9,28 @@ v3](https://img.shields.io/badge/License-GPLv3-green.svg)](https://www.gnu.org/licenses/gpl-3.0) -## Pipeline overview +## Omix: A Transcriptomics-Proteomics Integration Pipeline -The `Omix` pipeline offers an integration and analysis framework for -multi-omics intended to pre-process, analyse, and visualise multimodal -data flexibly to address research questions. Omix is built on four -consecutive blocks, (1) preparation of the multimodal container, (2) -processing and quality control, (3) single omic analyses, and (4) -multi-omics vertical integration. +The `Omix` pipeline is a specialised framework for pre-processing, +analysing, integrating, and visualising bulk transcriptomics and +proteomics data. By embedding state of the art bioinformatics tools with +novel features into a user-friendly wrapper, Omix streamlines the +integrative analysis of bulk transcriptomics and proteomics data, +thereby facilitating complex biological investigations, from biomarker +discovery to patient stratification. Pipeline outputs are standardised and include publication-quality plots, tables, and interactive reports. - - -Omix offers a range of state-of-the-art processing functions and -integrative models, equipped with versatile parameters and quality -control features. This empowers researchers to explore different -integration strategies easily, enhancing the speed, scalability, and -flexibility of multi-omics analyses. + -While the current version focuses on bulk transcriptomics and -proteomics, future iterations aim to encompass a broader range of omics -types, expanding the software’s applicability and usefulness. +The Omix pipeline offers an integration and analysis framework for +multi-omics intended to pre-process, analyse, and visualise multimodal +data flexibly to address research questions. Omix is a wrapper tool +built on five consecutive blocks, (1) preparation of the multimodal +container, (2) data processing and quality control, (3) single omic +analyses, and (4) Transcriptomics-Proteomics vertical integration, (5) +Joint Transcriptomics-Proteomics post-integration downstream analyses ## Installation @@ -102,19 +101,6 @@ devtools::install_github("eleonore-schneeg/Omix") Omix implements these modular steps and displays results in interactive reports. -## Benchmark of multi-omics integration softwares - -| Tool | Supported omics | Pre-processing | Single omic analysis | Integrative models | Use case | Downstream analyses | Interactive visualisations | Language | Ref | -|:----------|:---------------------------------|:---------------|:---------------------|:-----------------------------------------------|:------------|:-------------------------------------------------------------------------------------------------|:---------------------------|:---------|:-------------------------| -| Miodin | SNP, RNA, methylation, Proteins, | \+ | \- | MOFA | BM | \- | \- | R | Ulfenborg, B. (2019). | -| MiBiOmics | miRNA, RNA, Proteins | \- | \- | Co-inertia analysis | BD | Multi-omics networks | \+ | Web | (Zoppi et al., 2021) | -| Muon | Single cell omics | \- | \- | MOFA, WNN | NA | \- | \- | Python | (Bredikhin et al., 2022) | -| Movics | SNP, RNA, methylation, Proteins | \- | \- | Range of clustering algorithm | STR | Survival analysis, enrichment | \- | R | (Lu, 2020) | -| Omix | RNA, Proteins | \+ | \+ | MOFA,MEIFESTO, sMBPLS, MBPLS, DIABLO, iCluster | BD, BM, STR | Multi-omics signatures, networks, modules, functional/ cell type/ TF enrichment, pseudotime, etc | \+ | R | NA | - -Biomarker Discovery (BD), Biological Mechanisms (BM), Sample -stratification (STR) - ## Getting started The Getting Started section of the documentation contains downloadable @@ -131,6 +117,7 @@ registered users. (Project SynID: syn36812517) - Get started data: syn51533729 - Pseudo-temporal multi-omics integration data: syn51516099 + ## Docker image @@ -157,8 +144,8 @@ localhost:8787 using Username: rstudio and Password: password Please cite `Omix` as: Eléonore Schneegans, Nurun Fancy, Michael Thomas, Nanet Willumsen, Paul -M Matthews, Johanna Jackson (2023) Omix: A Multi-Omics Integration -Pipeline +M Matthews, Johanna Jackson (2023) Omix: A Transcriptomics-Proteomics +Integration Pipeline ## Contributing diff --git a/docs/articles/Omix_vignette_MAP_CV_pseudotemporal.html b/docs/articles/Omix_vignette_MAP_CV_pseudotemporal.html index 1def2fc..87996a5 100644 --- a/docs/articles/Omix_vignette_MAP_CV_pseudotemporal.html +++ b/docs/articles/Omix_vignette_MAP_CV_pseudotemporal.html @@ -88,7 +88,7 @@

Omix - Pseudotemporal multi-omics

This vignette was created by Eléonore Schneegans and Nurun Fancy

-

20 July, 2023

+

12 January, 2024

@@ -171,13 +171,13 @@

Running OmixGO_fp <- file.path(outputDir, "GO_Biological_Process_2021.txt") -download.file(url = "https://raw.githubusercontent.com/eleonore-schneeg/OmixData/main/ctd-2.rds",destfile=ctd_fp ,headers = c(Authorization = paste("token", Sys.getenv("GH_TOKEN")))) +download.file(url = "https://raw.githubusercontent.com/eleonore-schneeg/OmixData/main/ctd-2.rds",destfile=ctd_fp) -download.file(url = "https://raw.githubusercontent.com/eleonore-schneeg/OmixData/main/ensembl_mappings_human.tsv",destfile=ensembl_fp ,headers = c(Authorization = paste("token", Sys.getenv("GH_TOKEN")))) +download.file(url = "https://raw.githubusercontent.com/eleonore-schneeg/OmixData/main/ensembl_mappings_human.tsv",destfile=ensembl_fp) -download.file(url = "https://raw.githubusercontent.com/eleonore-schneeg/OmixData/main/Enrichr_Queries.gmt.txt",destfile=TF_fp ,headers = c(Authorization = paste("token", Sys.getenv("GH_TOKEN")))) +download.file(url = "https://raw.githubusercontent.com/eleonore-schneeg/OmixData/main/Enrichr_Queries.gmt.txt",destfile=TF_fp) -download.file(url = "https://raw.githubusercontent.com/eleonore-schneeg/OmixData/main/GO_Biological_Process_2021.txt",destfile=GO_fp ,headers = c(Authorization = paste("token", Sys.getenv("GH_TOKEN")))) +download.file(url = "https://raw.githubusercontent.com/eleonore-schneeg/OmixData/main/GO_Biological_Process_2021.txt",destfile=GO_fp) synapser::synLogin(email=Sys.getenv("SYNAPSE_ID"), password=Sys.getenv("SYNAPSE_PASSWORD")) @@ -677,7 +677,7 @@

Ext
 weights=extract_weigths(integrated_object,
                            factor=6,
-                           threshold=0.2,
+                           threshold=1.5,
                            sense_check_variable='PHF1')

Weights distribution in Factor 6 @@ -721,20 +721,17 @@

Selected features based on
  • rlength(weights\(weights\)ranked_weights_negative$rna)` RNAs have weights below -0.3 in factor 6

  • -
  • 327 proteins have weights below -0.3 in factor 6

  • +
  • 176 proteins have weights below -0.3 in factor 6

Some driving features may overlap between transcriptomics and proteomics

 intersect(weights$weights$ranked_weights_negative$rna,weights$weights$ranked_weights_negative$protein)
-
##  [1] "ANXA1"   "B2M"     "ICAM5"   "COL18A1" "S100A10" "C4A"     "GFAP"   
-##  [8] "RLBP1"   "ITPR1"   "S100A4"  "GJA1"    "VIM"     "PRELP"   "CLIC1"  
-## [15] "AKAP5"   "FLNA"    "HSPG2"   "CAPS"    "AHNAK"   "COL6A2"  "CAPG"   
-## [22] "TAGLN"   "FABP7"   "C1QA"    "MYL9"    "F13A1"   "C3"      "COL14A1"
-## [29] "OGN"     "ANXA2"   "C1QC"    "CRABP1"  "DCN"     "COL1A1"  "COL6A3" 
-## [36] "CALB2"
+
##  [1] "AKAP5"   "FLNA"    "HSPG2"   "AHNAK"   "COL6A2"  "CAPG"    "TAGLN"  
+##  [8] "FABP7"   "F13A1"   "C3"      "COL14A1" "ANXA2"   "C1QC"    "CRABP1" 
+## [15] "DCN"     "COL1A1"  "CALB2"
    -
  • 13 features overlap between omic layers
  • +
  • 7 features overlap between omic layers

@@ -785,7 +782,7 @@

Community detection withi list(extend = 'csv', exportOptions = list(columns=':visible')), list(extend = 'excel', exportOptions = list(columns=':visible')))))
-