| Title: | Sparse Multiple Canonical Correlation Network Analysis Tool ('SmCCNet') |
| Version: | 2.0.6 |
| Date: | 2026-04-27 |
| Description: | A canonical correlation based framework ('SmCCNet') designed for the construction of phenotype-specific multi-omics networks. This framework adeptly integrates single or multiple omics data types along with a quantitative or binary phenotype of interest. It offers a streamlined setup process that can be tailored manually or configured automatically, ensuring a flexible and user-friendly experience. Methods are described in Shi et al. (2019) "Unsupervised discovery of phenotype-specific multi-omics networks" <doi:10.1093/bioinformatics/btz226>. |
| URL: | https://github.com/KechrisLab/SmCCNet, https://kechrislab.github.io/SmCCNet/, https://liux4283.github.io/SmCCNet/ |
| Depends: | R (≥ 3.5) |
| Imports: | EnvStats, future, pROC, spls, Matrix, pbapply, igraph, magrittr, rlist, furrr, purrr, pracma |
| License: | GPL-3 |
| Encoding: | UTF-8 |
| LazyData: | true |
| biocViews: | Network |
| RoxygenNote: | 7.3.3 |
| NeedsCompilation: | no |
| VignetteBuilder: | knitr |
| Suggests: | knitr, rmarkdown, testthat (≥ 3.0.0), dplyr, reshape2, shadowtext, tidyverse, parallel, mltools, caret, |
| Config/testthat/edition: | 3 |
| Packaged: | 2026-04-27 19:32:57 UTC; pundira |
| Author: | Abhinav Pundir [cre], Weixuan Liu [aut], Yonghua Zhuang [aut], W. Jenny Shi [aut], Thao Vu [aut], Iain Konigsberg [aut], Katherine Pratte [aut], Laura Saba [aut], Katerina Kechris [aut] |
| Maintainer: | Abhinav Pundir <abhinav.pundir@ucdenver.edu> |
| Repository: | CRAN |
| Date/Publication: | 2026-04-28 20:30:14 UTC |
Pipe operator
Description
See magrittr::%>% for details.
Usage
lhs %>% rhs
Arguments
lhs |
A value or the magrittr placeholder. |
rhs |
A function call using the magrittr semantics. |
Value
The result of calling 'rhs(lhs)'.
A synthetic mRNA expression dataset.
Description
A matrix containing simulated mRNA expression levels for 358 subjects (rows) and 500 features (columns).
Usage
X1
Format
An object of class matrix (inherits from array) with 358 rows and 500 columns.
A synthetic miRNA expression dataset.
Description
A matrix containing simulated miRNA expression levels for 358 subjects (rows) and 100 features (columns).
Usage
X2
Format
An object of class matrix (inherits from array) with 358 rows and 100 columns.
A synthetic phenotype dataset.
Description
A matrix containing simulated quantitative phenotype measures for 358 subjects (rows).
Usage
Y
Format
An object of class matrix (inherits from array) with 358 rows and 1 columns.
Aggregate and Save Cross-validation Result for Single-omics Analysis
Description
Saves cross-validation results in a table with the user-defined directory and outputs penalty term with the highest testing canonical correlation, lowest prediction error, and lowest scaled prediction error.
Usage
aggregateCVSingle(
CVDir,
SCCAmethod = "SmCCA",
K = 5,
NumSubsamp = 500,
verbose = FALSE
)
Arguments
CVDir |
A directory where the result is stored. |
SCCAmethod |
The canonical correlation analysis method that is used in the model, used to name cross-validation table file, default is set to 'SmCCA'. |
K |
number of folds for cross-validation. |
NumSubsamp |
Number of subsampling used. |
verbose |
Logical; if TRUE, print progress messages during execution, otherwise run silently. |
Value
A vector of length 3 with indices of the penalty term that (1) maximize the testing canonical correlation, (2) minimize the prediction error and (3) minimize the scaled prediction error.
Evaluation of Binary Classifier with Different Evaluation Metrics
Description
Evaluate binary classifier's performance with respect to user-selected metric (accuracy, auc score, precision, recall, f1 score) for binary phenotype.
Usage
classifierEval(
obs,
pred,
EvalMethod = "accuracy",
BinarizeThreshold = 0.5,
print_score = TRUE
)
Arguments
obs |
Observed phenotype, vector consists of 0, 1. |
pred |
Predicted probability of the phenotype, vector consists of any value between 0 and 1 |
EvalMethod |
Binary classifier evaluation method, should be one of the following: 'accuracy' (default), 'auc', 'precision', 'recall', and 'f1'. |
BinarizeThreshold |
Cutoff threshold to binarize the predicted probability, default is set to 0.5. |
print_score |
Whether to print out the evaluation score, default is set to |
Value
An evaluation score corresponding to the selected metric.
Examples
# simulate observed binary phenotype
obs <- rbinom(100,1,0.5)
# simulate predicted probability
pred <- runif(100, 0,1)
# calculate the score
pred_score <- classifierEval(obs, pred, EvalMethod = 'f1', print_score = FALSE)
preprocess a omics dataset before running omics SmCCNet
Description
Data preprocess pipeline to: (1) filter by coefficient of variation (cv), (2) center or scale data and (3) adjust for clinical covariates.
Usage
dataPreprocess(
X,
covariates = NULL,
is_cv = FALSE,
cv_quantile = 0,
center = TRUE,
scale = TRUE
)
Arguments
X |
dataframe with the size of |
covariates |
dataframe with covariates to be adjusted for. |
is_cv |
Whether to use coefficient of variation filter (small cv filter out). |
cv_quantile |
CV filtering quantile. |
center |
Whether to center the dataset X. |
scale |
Whether to scale the dataset X. |
Value
Processed omics data with the size of nxp.
Examples
X1 <- as.data.frame(matrix(rnorm(600, 0, 1), nrow = 60))
covar <- as.data.frame(matrix(rnorm(120, 0, 1), nrow = 60))
processed_data <- dataPreprocess(X = X1, covariates = covar, is_cv = TRUE,
cv_quantile = 0.5, center = TRUE, scale = TRUE)
Automated SmCCNet to Streamline the SmCCNet Pipeline
Description
Automated SmCCNet automatically identifies the project problem (single-omics vs multi-omics), and type of analysis (CCA for quantitative phenotype vs. PLS for binary phenotype) based on the input data that is provided. This method automatically preprocesses data, chooses scaling factors, subsampling percentage, and optimal penalty terms, then runs through the complete SmCCNet pipeline without the requirement for users to provide additional information. This function will store all the subnetwork information to a user-defined directory, as well as return all the global network and evaluation information. Refer to the automated SmCCNet vignette for more information.
Usage
fastAutoSmCCNet(
X,
Y,
AdjustedCovar = NULL,
preprocess = FALSE,
Kfold = 5,
EvalMethod = "accuracy",
subSampNum = 100,
DataType,
BetweenShrinkage = 2,
ScalingPen = c(0.1, 0.1),
CutHeight = 1 - 0.1^10,
min_size = 10,
max_size = 100,
summarization = "NetSHy",
saving_dir = tempdir(),
ncomp_pls = 3,
tuneLength = 5,
tuneRangeCCA = c(0.1, 0.5),
tuneRangePLS = c(0.5, 0.9),
seed = 123,
verbose = FALSE
)
Arguments
X |
A list of matrices with same set and order of subjects ( |
Y |
Phenotype variable of either numeric or binary, for binary variable, for binary |
AdjustedCovar |
A data frame of covariates of interest to be adjusted for through regressing-out approach, argument preprocess need to be set to TRUE if adjusting covariates are supplied. |
preprocess |
Whether the data preprocessing step should be conducted, default is set to FALSE. If regressing out covariates is needed, provide corresponding covariates to AdjustCovar argument. |
Kfold |
Number of folds for cross-validation, default is set to 5. |
EvalMethod |
The evaluation methods used to selected the optimal penalty parameter(s) when binary phenotype is given. The selections is among 'accuracy', 'auc', 'precision', 'recall', and 'f1', default is set to 'accuracy'. |
subSampNum |
Number of subsampling to run, the higher the better in terms of accuracy, but at a cost of computational time, we generally recommend 500-1000 to increase robustness for larger data, default is set to 100. |
DataType |
A vector indicating annotation of each dataset of |
BetweenShrinkage |
A real number > 0 that helps shrink the importance of omics-omics correlation component, the larger this number is, the greater the shrinkage it is, default is set to 2. |
ScalingPen |
A numeric vector of length 2 used as the penalty terms for scaling factor determination method: default set to 0.1 for both datasets, and should be between 0 and 1. |
CutHeight |
A numeric value specifying the cut height for hierarchical clustering, should be between 0 and 1, default is set to 1 - 0.1^10. |
min_size |
Minimally possible subnetwork size after network pruning, default set to 10. |
max_size |
Maximally possible subnetwork size after network pruning, default set to 100. |
summarization |
Summarization method used for network pruning and summarization, should be either 'NetSHy' or 'PCA'. |
saving_dir |
Directory where user would like to store the subnetwork results, default is set to the current working directory. |
ncomp_pls |
Number of components for PLS algorithm, only used when binary phenotype is given, default is set to 3. |
tuneLength |
The total number of candidate penalty term values for each omics data, default is set to 5. |
tuneRangeCCA |
A vector of length 2 that represents the range of candidate penalty term values for each omics data based on canonical correlation analysis,
default is set to |
tuneRangePLS |
A vector of length 2 that represents the range of candidate penalty term values for each omics data based on partial least squared discriminant analysis,
default is set to |
seed |
Random seed for result reproducibility, default is set to 123. |
verbose |
Logical; if TRUE, print progress messages during execution, otherwise run silently. |
Value
This function returns the global adjacency matrix, omics data details, network clustering outcomes, and cross-validation results. Pruned subnetwork modules are saved in the directory specified by the user.
Examples
library(SmCCNet)
set.seed(123)
Y <- rnorm(50)
X1 <- matrix(rnorm(2500), nrow = 50, ncol = 50)
colnames(X1) <- paste0("Gene_", 1:50)
X1[, 1:10] <- X1[, 1:10] + matrix(rep(Y, 10), ncol = 10)
X2 <- matrix(rnorm(1000), nrow = 50, ncol = 20)
colnames(X2) <- paste0("miRNA_", 1:20)
X2[, 1:5] <- X2[, 1:5] + matrix(rep(Y, 5), ncol = 5)
Y_binary <- ifelse(Y > median(Y), 1, 0)
## single-omics CCA
result <- fastAutoSmCCNet(X = list(X1), Y = Y,
Kfold = 3, preprocess = FALSE,
subSampNum = 10,
DataType = c('Gene'),
saving_dir = tempdir(),
summarization = 'NetSHy',
CutHeight = 1 - 0.1^10,
min_size = 5)
## single-omics PLS
result <- fastAutoSmCCNet(X = list(X1),
Y = as.factor(Y_binary),
Kfold = 3, subSampNum = 10,
DataType = c('Gene'),
saving_dir = tempdir(),
EvalMethod = 'auc',
summarization = 'NetSHy',
CutHeight = 1 - 0.1^10,
min_size = 5, ncomp_pls = 3)
Calculate similarity matrix based on canonical weights.
Description
Compute the similarity matrix based on the outer products of absolute canonical correlation weights, can be used for both single and multi-omics setting.
Usage
getAbar(Ws, FeatureLabel = NULL)
Arguments
Ws |
A canonical correlation weight vector or matrix. If |
FeatureLabel |
A vector of feature labels for each feature in the adjacency matrix |
Value
A p\times p symmetric non-negative matrix.
Examples
w <- matrix(rnorm(6), nrow = 3)
Ws <- apply(w, 2, function(x)return(x/sqrt(sum(x^2))))
abar <- getAbar(Ws, FeatureLabel = c('omics1', 'omics2', 'omics3'))
Internal functions called by getRobustPseudoWeights_single.
Description
Internal functions called by getRobustPseudoWeights_single.
Usage
getCCAout_single(X1, Trait, Lambda1, trace = FALSE)
Arguments
X1 |
data. |
Trait |
phenotype. |
Lambda1 |
penalty term |
trace |
Whether to display CCA algorithm trace. |
Canonical Correlation Value for SmCCA
Description
Calculate canonical correlation value for SmCCA given canonical weight vectors and scaling factor
Usage
getCanCorMulti(X, CCcoef, CCWeight, Y)
Arguments
X |
A list of data each with same number of subjects. |
CCcoef |
A vector of scaling factors indicating weights for each pairwise canonical correlation. |
CCWeight |
A list of canonical weight vectors corresponds to each data in |
Y |
A phenotype matrix, should have only one column. |
Value
A numeric value of the total canonical correlation
Examples
library(SmCCNet)
data("ExampleData")
getCanCorMulti(list(X1,X2), CCcoef = c(1,1,1),
CCWeight = list(rnorm(500,0,1), rnorm(100,0,1)), Y = Y)
Get Canonical Weight SmCCA Algorithm (No Subsampling)
Description
Run Sparse multiple Canonical Correlation Analysis (SmCCA) and return canonical weight vectors.
Usage
getCanWeightsMulti(
X,
Trait = NULL,
Lambda,
CCcoef = NULL,
NoTrait = TRUE,
trace = FALSE,
TraitWeight = FALSE
)
Arguments
X |
A list of omics data each with n subjects. |
Trait |
An |
Lambda |
Lasso penalty vector with length equals to the number of omics data ( |
CCcoef |
Optional scaling factors for the SmCCA pairwise canonical
correlations. If |
NoTrait |
Whether or not trait (phenotype) information is provided, default is set to |
trace |
Whether to display CCA algorithm trace, default is set to |
TraitWeight |
Whether to return canonical weight for trait (phenotype), default is set to |
Value
A canonical weight vector with size of p by 1.
Examples
x1 <- matrix(rnorm(1000), nrow = 50)
x2 <- matrix(rnorm(1000), nrow = 50)
y <- matrix(rnorm(50), nrow = 50)
X <- list(x1,x2)
result <- getCanWeightsMulti(X, Trait = y, Lambda = c(0.5,0.5), NoTrait = FALSE)
result <- getCanWeightsMulti(X, Trait = NULL, Lambda = c(0.5,0.5), NoTrait = TRUE)
cccoef <- c(1,10,10)
result <- getCanWeightsMulti(X, Trait = y, CCcoef = cccoef,
Lambda = c(0.5,0.5), NoTrait = FALSE)
Extract Omics Modules based on Similarity Matrix.
Description
Apply hierarchical tree cutting to the similarity matrix and extract multi/single-omics network modules.
Usage
getOmicsModules(Abar, CutHeight = 1 - 0.1^10, PlotTree = TRUE)
Arguments
Abar |
A similary matrix for all features (all omics data types). |
CutHeight |
Height threshold for the hierarchical tree cutting. Default
is |
PlotTree |
Logical. Whether to create a hierarchical tree plot, default is set to |
Value
A list of multi/single-omics modules.
Examples
set.seed(123)
w <- rnorm(5)
w <- w/sqrt(sum(w^2))
feature_name <- paste0('feature_', 1:5)
abar <- getAbar(w, FeatureLabel = feature_name)
modules <- getOmicsModules(abar, CutHeight = 0.5)
Run Sparse multiple Canonical Correlation Analysis and Obtain Canonical Weights (with Subsampling)
Description
SmCCNet algorithm with multi-omics data and quantitative phenotype. Calculate the canonical weights for SmCCA.
Usage
getRobustWeightsMulti(
X,
Trait,
Lambda,
s = NULL,
NoTrait = FALSE,
SubsamplingNum = 1000,
CCcoef = NULL,
trace = FALSE,
TraitWeight = FALSE
)
Arguments
X |
A list of omics data each with n subjects. |
Trait |
An |
Lambda |
Lasso penalty vector with length equals to the number of omics data ( |
s |
A vector with length equals to the number of omics data ( |
NoTrait |
Logical, default is |
SubsamplingNum |
Number of feature subsamples. Default is 1000. Larger number leads to more accurate results, but at a higher computational cost. |
CCcoef |
Optional scaling factors for the SmCCA pairwise canonical
correlations. If |
trace |
Whether to display the CCA algorithm trace, default is set to |
TraitWeight |
Whether to return canonical weight for trait (phenotype), default is set to |
Value
A canonical correlation weight matrix with p = \sum_{i} p_i rows, where p_i is the number of features for the ith omics. Each
column is the canonical correlation weights based on subsampled features. The number of columns is SubsamplingNum.
Examples
## For illustration, we only subsample 5 times.
set.seed(123)
X1 <- matrix(rnorm(600,0,1), nrow = 60)
X2 <- matrix(rnorm(600,0,1), nrow = 60)
Y <- matrix(rnorm(60,0,1), nrow = 60)
# Unweighted SmCCA
result <- getRobustWeightsMulti(X = list(X1, X2), Trait = Y, NoTrait = FALSE,
Lambda = c(0.5, 0.5),s = c(0.7, 0.7), SubsamplingNum = 20)
Run Sparse multiple Canonical Correlation Analysis and Obtain Canonical Weights (with Subsampling)
Description
SmCCNet algorithm with multi-omics data and binary phenotype. This is a stepwise approach (1) use SmCCA to identify relationship between omics (exlude phenotype), (2) within highly connected omics features selected in step 1, identify relationship between these selected omics features and phenotype of interest with sparse PLS. First, it computes PLSDA by assuming outcome is continuous to extract multiple latent factors, then uses latent factors to fit logistic regression, and weight latent factor by regression parameters. Refer to multi-omics vignette for more detail.
Usage
getRobustWeightsMultiBinary(
X,
Y,
Between_Discriminate_Ratio = c(1, 1),
SubsamplingPercent = NULL,
CCcoef = NULL,
LambdaBetween,
LambdaPheno = NULL,
SubsamplingNum = 1000,
ncomp_pls = 3,
EvalClassifier = FALSE,
testData = NULL,
verbose = FALSE
)
Arguments
X |
A list of omics data each with n subjects. |
Y |
A vector of binary variable, user needs to set the level of this variable to 0 and 1. |
Between_Discriminate_Ratio |
A vector with length 2 specifying the relative importance of between-omics relationship and omics-phenotype relationship. |
SubsamplingPercent |
A vector with length equal to the number of omics data ( |
CCcoef |
A vector of scaling factors only for between-omics relationship. |
LambdaBetween |
A vector of sparsity penalty value for each omics data. |
LambdaPheno |
A penalty term when running the sparse PLS with phenotype. |
SubsamplingNum |
Number of feature subsamples. |
ncomp_pls |
Number of latent components for PLS. |
EvalClassifier |
If TRUE, return latent factors for classification. |
testData |
A list of testing omics data matrix. |
verbose |
Logical; if TRUE, print progress/error messages, otherwise run silently. |
Value
Canonical weight matrix or latent projections depending on EvalClassifier.
Single-omics SmCCA with Quantitative Phenotype
Description
Compute aggregated (SmCCA) canonical weights for single omics data with quantitative phenotype (subampling enabled).
Usage
getRobustWeightsSingle(
X1,
Trait,
Lambda1,
s1 = 0.7,
SubsamplingNum = 1000,
trace = FALSE
)
Arguments
X1 |
An |
Trait |
An |
Lambda1 |
LASSO penalty parameter for |
s1 |
Proportion of features in |
SubsamplingNum |
Number of feature subsamples. Default is 1000. Larger number leads to more accurate results, but at a higher computational cost. |
trace |
Whether to display the CCA algorithm trace, default is set to FALSE. |
Value
A canonical correlation weight matrix with p_1 rows. Each
column is the canonical correlation weights based on subsampled X1
features. The number of columns is SubsamplingNum.
Examples
## For illustration, we only subsample 5 times.
set.seed(123)
# Single Omics SmCCA
W1 <- getRobustWeightsSingle(X1, Trait = Y, Lambda1 = 0.05,
s1 = 0.7,
SubsamplingNum = 5, trace = FALSE)
Single-omics SmCCA with Binary Phenotype
Description
Compute aggregated (SmCCA) canonical weights for single omics data with quantitative phenotype (subampling enabled).
Usage
getRobustWeightsSingleBinary(
X1,
Trait,
Lambda1,
s1 = 0.7,
SubsamplingNum = 1000,
K = 3
)
Arguments
X1 |
An |
Trait |
An |
Lambda1 |
LASSO penalty parameter for |
s1 |
Proportion of mRNA features to be included, default at |
SubsamplingNum |
Number of feature subsamples. Default is 1000. Larger number leads to more accurate results, but at a higher computational cost. |
K |
Number of hidden components for PLSDA, default is set to 3. |
Value
A partial least squared weight matrix with p_1 rows. Each
column is the canonical correlation weights based on subsampled X1
features. The number of columns is SubsamplingNum.
Examples
X <- matrix(rnorm(600,0,1), nrow = 60)
Y <- rbinom(60,1,0.5)
Ws <- getRobustWeightsSingleBinary(X1 = X, Trait = as.matrix(Y), Lambda1 = 0.8,
0.7, SubsamplingNum = 10)
Prunes Subnetwork and Return Final Pruned Subnetwork Module
Description
Prunes subnetworks with network pruning algorithm (see multi-omics vignette for detail), and save the final pruned subnetwork to the user-defined directory.
The final subnetwork is an .Rdata file with a name 'size_m_net_ind.Rdata', where m is the final pruned network size, and ind is the index of the subnetwork module after hierarchical clustering.
Usage
networkPruning(
Abar,
CorrMatrix,
data,
Pheno,
type,
ModuleIdx,
min_mod_size = 10,
max_mod_size,
damping = 0.9,
method = "NetSHy",
saving_dir = tempdir(),
verbose = FALSE
)
Arguments
Abar |
Adjacency matrix of subnetwork with size |
CorrMatrix |
The correlation matrix of features in |
data |
The omics data for the subnetwork. |
Pheno |
The trait (phenotype) data used for network pruning. |
type |
A vector with length equal to total number of features in the adjacency matrix
indicating the type of data for each feature. For instance, for a subnetwork with 2 genes and a protein, the |
ModuleIdx |
The index of the network module that summarization score is intended to be stored, this is used for naming the subnetwork file in user-defined directory. |
min_mod_size |
The minimally possible subnetwork size for the pruned network module, should be an integer from 1 to the largest possible size of the subnetwork, default is set to 10. |
max_mod_size |
the maximally possible subnetwork size for the pruned network module,
should be an integer from 1 to the largest possible size of the subnetwork, and it needs to be greater than the value specified in |
damping |
damping parameter for the PageRank algorithm, default is set to 0.9, see |
method |
Selection between NetSHy' and 'PCA', specifying the network summarization method used for network pruning, default is set to NetSHy. |
saving_dir |
User-defined directory to store pruned subnetwork. |
verbose |
Logical; if TRUE, print progress messages during execution, otherwise run silently. |
Value
A file stored in the user-defined directory, which contains the following: (1) correlation_sub: correlation matrix for the subnetwork. (2) M: adjacency matrix for the subnetwork. (3) omics_corelation_data: individual molecular feature correlation with phenotype. (4) pc_correlation: first 3 PCs correlation with phenotype. (5) pc_loading: principal component loadings. (6) pca_x1_score: principal component score and phenotype data. (7) mod_size: number of molecular features in the subnetwork. (8) sub_type: type of feature for each molecular features.
Examples
library(SmCCNet)
set.seed(123)
w <- rnorm(20)
w <- w/sqrt(sum(w^2))
X1 <- matrix(rnorm(1000,0,1),nrow = 50)
Y <- matrix(rnorm(50,0,1),nrow = 50)
labels <- paste0('feature_', 1:20)
colnames(X1) <- labels
abar <- getAbar(w, FeatureLabel = labels)
modules <- getOmicsModules(abar, CutHeight = 0.1)
x <- X1
corr <- stats::cor(x)
type <- c(rep(1,20))
# display only example
networkPruning(abar, corr, data = x, Pheno = Y, type = type,
ModuleIdx = 1, min_mod_size = 3, max_mod_size = 10, method = 'NetSHy', saving_dir = tempdir()
)
Scaling Factor Input Prompt
Description
Input the vector of the annotation of each type of dataset in the data list X (e.g., c('gene', 'protein')), and return prompt ask the user to supply the scaling
factor for SmCCNet algorithm to prioritize the correlation structures of
interest. All scaling factor values supplied should be numeric and nonnegative.
Usage
scalingFactorInput(DataType = NULL)
Arguments
DataType |
A character vector that contains the annotation of each type of omics dataset in X. |
Value
A numeric vector of scaling factors.
Examples
if(interactive()){scalingFactorInput(c('gene','mirna', 'phenotype'))}
NetSHy Summarization Score
Description
Implement NetSHy network summarization via a hybrid approach (Vu et al.,) to summarize network by considering the network topology with Laplacian matrix.
Usage
summarizeNetSHy(X, A, npc = 1)
Arguments
X |
An |
A |
Corresponding adjacency matrix of size |
npc |
Number of principal components used to summarize the network, default is set to 1. |
Value
A list consists of (1) subject-level network summarization score, (2) principal component importance information: standard deviation, percent of variance explained, and cumulative proportion of variance explained, and (3) principal component feature-level loadings.
References
Vu, Thao, Elizabeth M. Litkowski, Weixuan Liu, Katherine A. Pratte, Leslie Lange, Russell P. Bowler, Farnoush Banaei-Kashani, and Katerina J. Kechris. "NetSHy: network summarization via a hybrid approach leveraging topological properties." Bioinformatics 39, no. 1 (2023): btac818.
Examples
# simulate omics data
OmicsData <- matrix(rnorm(200,0,1), nrow = 10, ncol = 20)
# simulate omics adjacency matrix
set.seed(123)
w <- rnorm(20)
w <- w/sqrt(sum(w^2))
featurelabel <- paste0('omics',1:20)
abar <- getAbar(w, FeatureLabel = featurelabel)
# extract NetSHy summarization score
netshy_score <- summarizeNetSHy(OmicsData, abar)