R: Create a hierarchical structure of ISA biclusters

isa.sweep {isa2} | R Documentation

## Create a hierarchical structure of ISA biclusters

### Description

Relate the biclusters found in many ISA runs on the same input data.

### Usage

    ## S4 method for signature 'matrix'
    isa.sweep(data, ...)
    ## S4 method for signature 'list'
    sweep.graph(sweep.result, ...)

### Arguments

`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.

### Details

`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:

data

  The input matrix.

normed.data

  The normalized input matrix, usually the output of the `isa.normalize` function.

isaresult

  An object containing the biclusters, the result of `isa` or `isa.iterate`.

method

  Character scalar giving the method to determine which seed converged which bicluster. Right now only ‘`cor`’ is supported, this is based on Pearson correlation.

neg.cor

  Logical scalar, whether to consider negative correlation as convergence.

cor.limit

  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.

### Value

`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.

### Author(s)

Gabor Csardi Gabor.Csardi@unil.ch

### References

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.

### See Also

isa2-package for a short introduction on the Iterative Signature Algorithm. See `isa` for an easy way of running ISA.

### Examples

    ## 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)
      }
    }

[Package isa2 version 0.3.5 Index]