Nothing
## Copyright 2010 Laurent Jacob, Pierre Neuvial and Sandrine Dudoit.
## This file is part of DEGraph.
## DEGraph is free software: you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation, either version 3 of the License, or
## (at your option) any later version.
## DEGraph is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
## You should have received a copy of the GNU General Public License
## along with DEGraph. If not, see <http://www.gnu.org/licenses/>.
#########################################################################/**
## @RdocFunction laplacianFromA
##
## @title "Calculates the Laplacian associated to an adjacency matrix"
##
## \description{
## @get "title".
## }
##
## @synopsis
##
## \arguments{
## \item{A}{The adjacency matrix of the graph.}
## \item{k}{...}
## \item{ltype}{A @character value specifying the type of Laplacian to be
## calculated. Defaults to meanInfluence.}
## }
##
## \value{
## A @list containing the following components:
## \describe{
## \item{U}{Eigenvectors of the graph Laplacian.}
## \item{l}{Eigenvalues of the graph Laplacian}
## \item{kIdx}{Multiplicity of '0' as eigenvalue.}
## }
## }
##
## @author
##
## @examples "../incl/randomWAMGraph.Rex"
##
##*/########################################################################
## Types: unnormalized, normalized, meanInfluence, totalInfluence
laplacianFromA <- function(A, k=1, ltype=c("meanInfluence", "normalized", "unnormalized", "totalInfluence")) {
ltype <- match.arg(ltype)
tol <- 1e-8
rownames(A) <- NULL
colnames(A) <- NULL
ltype <- match.arg(ltype)
##if (!isSymmetric.matrix(A)) {
## print(A)
## throw("Argument 'A' must be a symmetric matrix")
##}
p <- nrow(A)
I <- diag(rep(1,p))
if(ltype %in% c("normalized","unnormalized")) # A must be made symmetric
{
tsIdx <- ((A == 0) & (t(A) != 0))
A[tsIdx] <- t(A)[tsIdx]
}
if(ltype == "normalized")
{
iDs <- diag(1/sqrt(rowSums(abs(A))))
L <- I - (iDs %*% A %*% iDs)
}
if(ltype == "unnormalized")
{
D <- diag(rowSums(abs(A)))
L <- D - A
}
if(ltype == "meanInfluence")
{
ImA <- diag(as.integer(rowSums(abs(t(A))) != 0)) - diag(1/pmax(1,rowSums(abs(t(A)))))%*%t(A)
L <- t(ImA)%*%ImA
}
if(ltype == "totalInfluence")
{
ImA <- diag(as.integer(rowSums(abs(t(A))) != 0)) - t(A)
L <- t(ImA)%*%ImA
}
edL <- eigen(L, symmetric=TRUE)
egVal <- rev(edL$values)
kIdx <- (egVal <= max(egVal[k], tol))
return(list(U=edL$vectors[,ncol(edL$vectors):1], l=egVal, kIdx=kIdx))
}
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.