isa.sweep {isa2} | R Documentation |
Relate the biclusters found in many ISA runs on the same input data.
## S4 method for signature 'matrix': isa.sweep(data, ...) ## S4 method for signature 'list': sweep.graph(sweep.result, ...)
data |
The input matrix. |
... |
Additional arguments, see details
below. sweep.graph has no additional arguments currently. |
sweep.result |
An ISA result with hierarchy information in the
seed data, typically calculated by the isa.sweep function. |
isa.sweep
can be called as
isa.sweep(data, normed.data, isaresult, method = c("cor"), neg.cor = TRUE, cor.limit = 0.9)where the arguments are:
isa.normalize
function.isa
or isa.iterate
.cor
’
is supported, this is based on Pearson correlation.Many ISA runs with different thresholds typically create a bunch of biclusters and it is useful to visualize how these are related.
From a set of biclusters for which of the thr.row
and
thr.col
parameters was the same, but the other was not,
isa.sweep
creates a hierarchy of modules.
The hierarchy is a directed graph of modules in which every node has an out degree at most one. An edge pointing from module m to module n means that module n is “part of” module m; in the sense that an ISA iteration started from module n converges to module m at the (milder) thresholds of module m.
The information about the module relationships is stored in a column of the seed data.
sweep.graph
takes the output of isa.sweep
and creates a
graph object of it. For this the ‘igraph’ package is required
to be installed on the system.
isa.sweep
returns a named list with the same components as in
the input (isaresult
), but the ‘father
’ and the
‘level
’ columns are
added to the ‘seeddata
’ member. father
contains
the edges of the sweep graph: if bicluster m is the father of
bicluster n that means that bicluster n converges to
bicluster m at the same threshold parameters that were used to
find biclusters m.
level
is a simple numbering of the different thresholds for
which the sweep tree was built. I.e. the most strict threshold is
level one, the second most is level two, etc.
sweep.graph
returns and igraph graph with a lot of attributes:
1 |
The layout graph attribute contains a two-column matrix
with the coordinates for an optimal tree-like layout to plot the
graph. |
2 |
The width and height graph attributes contain the
optimal width and height of the plot, in inches. |
3 |
The thr vertex attribute contains the ISA threshold that
varies along the sweeping. |
4 |
The id vertex attribute contains the id of the module, these
correspond to the indices in the result matrix. |
5 |
The rows and cols vertex attributes contain the
number of rows and columns in the module. |
6 |
The shape , size , size2 , label vertex
attributes and the arrow.size edge attribute contain various
graphical parameters. |
Gabor Csardi Gabor.Csardi@unil.ch
Bergmann S, Ihmels J, Barkai N: Iterative signature algorithm for the analysis of large-scale gene expression data Phys Rev E Stat Nonlin Soft Matter Phys. 2003 Mar;67(3 Pt 1):031902. Epub 2003 Mar 11.
Ihmels J, Friedlander G, Bergmann S, Sarig O, Ziv Y, Barkai N: Revealing modular organization in the yeast transcriptional network Nat Genet. 2002 Aug;31(4):370-7. Epub 2002 Jul 22
Ihmels J, Bergmann S, Barkai N: Defining transcription modules using large-scale gene expression data Bioinformatics 2004 Sep 1;20(13):1993-2003. Epub 2004 Mar 25.
isa2-package for a short introduction on the Iterative
Signature Algorithm. See isa
for an easy way of running
ISA.
## In-silico data set.seed(1) insili <- isa.in.silico() ## Do ISA with a bunch of row thresholds while keeping the column ## threshold fixed. This is quite an artificial example... isares <- isa(insili[[1]], thr.row=c(0.5,1,2), thr.col=0) ## Create a nice tree from the modules, we need the normed data for this nm <- isa.normalize(insili[[1]]) isa.tree <- isa.sweep(insili[[1]], nm, isares) network <- sweep.graph(isa.tree) ## Plot the network of modules, only if a recent igraph package is ## installed if (interactive() && require(igraph) && compareVersion(packageDescription("igraph")$Version, "0.6")>=0) { lab <- paste(sep="", seq_len(ncol(isa.tree$rows)), ": ", colSums(isa.tree$rows!=0), ",", colSums(isa.tree$columns!=0)) par(mar=c(1,1,1,1)) roots <- tapply(topological.sort(network, mode="out"), clusters(network)$membership, function(x) x[1]) rootlevel <- isa.tree$seeddata$level-1 coords <- layout.reingold.tilford(network, root=roots, rootlevel=rootlevel[roots+1]) plot(network, layout=coords, vertex.shape="rectangle", vertex.color="green", vertex.label=lab, vertex.size=30, vertex.size2=10) } ## Plot the modules themselves as well if (interactive()) { plotModules(isa.tree) } ## Yet another plot, the scores for the rows within the modules if (interactive()) { layout(matrix( 1:15, nc=3 )) for (i in seq(ncol(isa.tree$rows))) { par(mar=c(2,2,1,1)) plot(isa.tree$rows[,i], axes=FALSE, ylim=c(-1,1)) axis(1); axis(2) text(nrow(isa.tree$rows), 1, adj=c(1,1), paste(sep="", "#", i), cex=2) } }