isa.sweep | 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.result |
An ISA result with hierarchy information in the
seed data, typically calculated by the |
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:
The input matrix.
The normalized input matrix, usually the output of
the isa.normalize
function.
An object containing the biclusters, the result of
isa
or isa.iterate
.
Character scalar giving the method to determine which
seed converged which bicluster. Right now only ‘cor
’
is supported, this is based on Pearson correlation.
Logical scalar, whether to consider negative correlation as convergence.
Numeric scalar giving the minimum correlation for convergence.
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 |
2 |
The |
3 |
The |
4 |
The |
5 |
The |
6 |
The |
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 the 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, ncol=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) } }
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.