Select Central Genes from Meta-Networks via Eigenvector Centrality
select.central.genes.RdIdentifies "central" response and predictor genes from NeighbourNet
meta-networks by decomposing each meta-network into principal components
(via singular value decomposition, SVD) and selecting genes with the
highest absolute loadings on leading singular vectors. These loadings
correspond to each gene’s eigenvector centrality within the meta-network,
capturing genes that are most influential in the overall co-expression
structure. The function optionally operates directly on a supplied
meta-network tensor or retrieves it from a Seurat object prepared by
the NeighbourNet workflow.
Usage
select.central.genes(
seurat.obj = NULL,
network = NULL,
n.net = NULL,
k = 1,
n.per.component = 4,
keep.responses = FALSE
)Arguments
- seurat.obj
A
Seuratobject containing NeighbourNet results, with both cell-specific networks and meta-networks stored in theNNet.modlist within themiscslot. This list is generated byrun.nn.regand subsequently updated bybuild.meta.network.- network
Optional 3D tensor of networks with dimension order (responses x predictors x cells).
- n.net
A integer specifying the number of leading meta-networks from which central genes are extracted
- k
A integer specifying the number of leading eigenvectors (components) to extract from each meta-network when scoring central genes.
- n.per.component
Integer; number of top-scoring genes to select per eigenvector and per meta-network. Default:
4.- keep.responses
A logical to control whether responses are also selected.
If
FALSE(default), both responses and predictors are selected based on eigenvector centrality scores.If
TRUE, all responses are retained (no selection) and only predictors are selected as central genes.
Value
A list with elements:
central.responses: Character vector of selected central response genes. Whenkeep.responses = TRUE, this may contain all responses.central.predictors: Character vector of selected central predictor genes.response.module: Factor giving the meta-network membership label ("M1","M2", ...) for each uniquecentral.responses. Set toNULLwhen all responses are kept without assignment.predictor.module: Factor giving the meta-network membership label for each uniquecentral.predictors. Set toNULLwhen all predictors are kept without assignment.
Details
Eigenvector centrality interpretation
Each meta-network is treated as a weighted bipartite graph between response and predictor genes.
The singular vectors from SVD represent the principal axes of variation in this bipartite graph. Genes with high absolute loadings on leading singular vectors have strong co-expression links with other highly connected genes. This is analogous to high eigenvector centrality in network theory.
Selecting top-loading genes across singular vectors therefore yields a set of “hub-like” genes that summarise the co-expression pattern of each meta-network.
Selection strategy
For each meta-network, a truncated SVD is applied to the weighted adjancency matrix.
Absolute singular vector loadings are used as eigenvector centrality scores.
Genes with the highest loadings per component (up to
n.per.component) are selected.Previously selected genes are zeroed out before selecting additional components, ensuring diverse representation across meta-networks.
Examples
# From a Seurat object with NNet meta-networks
sel <- select.central.genes(seurat.obj,
n.net = 5,
k = 2,
n.per.component = 3)
#> Error: object 'seurat.obj' not found
# View top eigen-central genes
head(sel$central.predictors)
#> Error: object 'sel' not found