--- title: "Apul MixOmics" output: html_document date: "2024-10-01" editor_options: chunk_output_type: console --- ```{r setup, include=FALSE} knitr::opts_chunk$set(echo = TRUE) ``` Script to analyzed relationships between RNA-sRNA-WGBS using mixOmics. # Set up Load libraries ```{r} library(tidyverse) library(ggplot2) library(mixOmics) ``` # Read in files Read in count matrices. ```{r} mrna<-read.table("D-Apul/output/04-Apul-RNA-sRNA-WGCNA/Apul_counts_RNA_normalized.txt") srna<-read.table("D-Apul/output/04-Apul-RNA-sRNA-WGCNA/Apul_counts_sRNA_normalized.txt") metadata <- data.frame( sample = c("sample145", "sample140", "sample173", "sample178", "sample150"), species = "Apul" ) ``` Transpose the count matrices. ```{r} mrna<-t(mrna) srna<-t(srna) ``` Follow the mixOmics tutorial for conducting correlations between these two data sets. All data sets have dimensions of 5 samples. We can add additional species to this as we go. # Conduct mixOmics Set matrices. ```{r} dim(mrna) dim(srna) dim(metadata) ``` ## Conduct preliminary PCA ```{r} pca.mrna <- pca(mrna, ncomp = 4, center = TRUE, scale = TRUE) pca.srna <- pca(srna, ncomp = 4, center = TRUE, scale = TRUE) plot(pca.mrna) plot(pca.srna) ``` Similar variance explained because we are dealing with individual samples within a species. This will change as we add more species. ```{r} plotIndiv(pca.mrna, comp = c(1, 2), group = metadata$species, ind.names = metadata$sample, legend = TRUE, title = 'mRNA, PCA comp 1 - 2') plotIndiv(pca.srna, comp = c(1, 2), group = metadata$species, ind.names = metadata$sample, legend = TRUE, title = 'sRNA, PCA comp 1 - 2') ``` ## PLS model Build initial sPLS model. Using 4 components since we have 5 samples and components = n-1. Tune for number of components to keep. ```{r} # set range of test values for number of variables to use from X dataframe list.keepX <- c(seq(20, 2000, 20)) # set range of test values for number of variables to use from Y dataframe list.keepY <- c(seq(20, 20000, 100)) tune.spls <- tune.spls(mrna, srna, ncomp = 2, test.keepX = list.keepX, test.keepY = list.keepY, nrepeat = 1, # use 10 folds validation=c("loo"), progressBar=TRUE) plot(tune.spls) # use the correlation measure for tuning ``` Not working with small number of samples. Temporarily set the number of components to keep as a smaller number. ```{r} keep.X<-c("comp1"=50, "comp2"=50) keep.Y<-c("comp1"=50, "comp2"=50) ``` ```{r} pls <- spls(X = mrna, Y = srna, ncomp = 4, mode = 'regression', keepX=keep.X, keepY=keep.Y) ``` ```{r} plotIndiv(pls, ind.names = TRUE, rep.space = "X-variate", # plot in X-variate subspace group = metadata$sample, # colour by time group pch = as.factor(metadata$species), legend = TRUE, legend.title = 'Sample', legend.title.pch = 'Sample', title="mRNA") plotIndiv(pls, ind.names = TRUE, rep.space = "Y-variate", # plot in X-variate subspace group = metadata$sample, # colour by time group pch = as.factor(metadata$species), legend = TRUE, legend.title = 'Sample', legend.title.pch = 'Sample', title="sRNA") plotIndiv(pls, ind.names = TRUE, rep.space = "XY-variate", # plot in X-variate subspace group = metadata$sample, # colour by time group pch = as.factor(metadata$species), legend = TRUE, legend.title = 'Sample', legend.title.pch = 'Sample', title="sRNA&mRNA") ``` Plot line plot to show agreement between data sets. ```{r} plotArrow(pls, ind.names = TRUE, group = metadata$sample, # colour by time group legend.title = 'mRNA.sRNA') ``` High agreement between datasets. ## Visualizations View correlation circle plot. ```{r} plotVar(pls, cex = c(3,4), var.names = c(FALSE, FALSE)) ``` Cim plot. ```{r} pdf("D-Apul/output/05-Apul-mixOmics/cim-sRNA-mRNA.pdf", width=10, height=10) cim(pls, comp = 1:2, xlab="sRNA", ylab="mRNA") dev.off() ``` Network plot. ```{r} color.edge <- color.GreenRed(50) # set the colours of the connecting lines network(pls, comp = 1:2, cutoff = 0.95, # only show connections with a correlation above threshold shape.node = c("rectangle", "circle"), color.node = c("cyan", "pink"), color.edge = color.edge, interactive = FALSE, lwd.edge = 2) ``` Not super helpful.