plotCorGraph {MineICA} | R Documentation

## Plots graph using

### Description

This function plots the correlation graph in an interactive device using function `tkplot`.

### Usage

      plotCorGraph(dataGraph, edgeWeight = "cor", nodeAttrs,
        nodeShape, nodeCol = "labAn", nodeName = "indComp",
        col, shape, title = "", reciproCol = "reciprocal",
        tkplot = FALSE, ...)

### Arguments

`dataGraph` | A data.frame containing the graph description. It must have two columns `n1` and `n2`, each row denoting that there is an edge from n1 to n2. Node labels in columns `n1` and `n2` of `dataGraph` must correspond to node IDs in column `id` of `nodeAttrs`.
`edgeWeight` | The column of dataGraph used to weight edges.
`nodeAttrs` | A data.frame with node description, see function `nodeAttrs`.
`nodeShape` | Denotes the column of `nodeAttrs` used to attribute the node shapes.
`nodeCol` | Denotes the column of `nodeAttrs` used to color the nodes in the graph.
`nodeName` | Denotes the column of `nodeAttrs` used as labels for the nodes in the graph.
`col` | A vector of colors, for the nodes, indexed by the unique elements of `nodeCol` column from `nodeAttrs`. If missing, colors will be automatically attributed.
`shape` | A vector of shapes indexed by the unique elements of column `nodeShape` from `nodeAttrs`. If missing, shapes will be automatically attributed.
`title` | Title for the plot
`reciproCol` | Denotes the column of `dataGraph` containing `TRUE` if the row defines a reciprocal node, else `FALSE`. See `annotReciprocal`.
`tkplot` | If TRUE, performs interactive plot with function `tkplot`, else uses `plot.igraph`.
`...` | Additional parameters as required by `tkplot`.

### Details

You have to slighly move the nodes to see cliques because strongly related nodes are often superimposed. The `edgeWeight` column is used to weight the edges within the fruchterman.reingold layout available in the package `igraph`.

The argument `nodeCol` typically denotes the column containing the names of the datasets. Colors are automatically attributed to the nodes using palette Set3 of package `RColorBrewer`. The corresponding colors can be directly specified in the 'col' argument. In that case, 'col' must be a vector of colors indexed by the unique elements contained in `nodeCol` column (e.g dataset ids).

As for colors, one can define the column of `nodeAttrs` that is used to define the node shapes. The corresponding shapes can be directly specified in the `shape` argument. In that case, `shape` must be one of `c("circle","square", " vcsquare", "rectangle", "crectangle", "vrectangle")` and must be indexed by the unique elements of `nodeShape` column.

Unfortunately, shapes can't be taken into account when tkplot is TRUE (interactive plot).

If `reciproCol` is not missing, it is used to color the edges, either in grey if the edge is not reciprocal or in black if the edge is reciprocal.

### Value

A list consisting of

dataGraph

  a data.frame defining the correlation graph

nodeAttrs

  a data.frame describing the node of the graph

graph

  the graph as an object of class `igraph`

graphid

  the id of the graph plotted using `tkplot`

### Author(s)

Anne Biton

### See Also

`compareAn`, `nodeAttrs`, `compareAn2graphfile`, `runCompareIcaSets`

### Examples

    dat1 <- data.frame(matrix(rnorm(10000),ncol=10,nrow=1000))
    rownames(dat1) <- paste("g", 1:1000, sep="")
    colnames(dat1) <- paste("s", 1:10, sep="")
    dat2 <- data.frame(matrix(rnorm(10000),ncol=10,nrow=1000))
    rownames(dat2) <- paste("g", 1:1000, sep="")
    colnames(dat2) <- paste("s", 1:10, sep="")

    ## run ICA
    resJade1 <- runICA(X=dat1, nbComp=3, method = "JADE")
    resJade2 <- runICA(X=dat2, nbComp=3, method = "JADE")

    ## build params
    params <- buildMineICAParams(resPath="toy/")

    ## build IcaSet object
    icaSettoy1 <- buildIcaSet(params=params, A=data.frame(resJade1$A), S=data.frame(resJade1$S),
                              dat=dat1, alreadyAnnot=TRUE)$icaSet
    icaSettoy2 <- buildIcaSet(params=params, A=data.frame(resJade2$A), S=data.frame(resJade2$S),
                              dat=dat2, alreadyAnnot=TRUE)$icaSet
    icaSets <- list(icaSettoy1, icaSettoy2)

    resCompareAn <- compareAn(icaSets=list(icaSettoy1,icaSettoy2), labAn=c("toy1","toy2"),
                             type.corr="pearson", level="genes", cutoff_zval=0)

    ## Build a graph where edges correspond to maximal correlation value (useVal="cor"),
    dataGraph <- compareAn2graphfile(listPairCor=resCompareAn, useMax=TRUE, useVal="cor", file="myGraph.txt")

    ## construction of the data.frame with the node description
    nbComp <- rep(3,2) #each IcaSet contains 3 components
    nbAn <- 2 # we are comparing 2 IcaSets
    # labels of components created as comp*i*
    labComp <- foreach(icaSet=icaSets, nb=nbComp, an=1:nbAn) %do% {
                      paste(rep("comp",sum(nb)),1:nbComp(icaSet),sep = "")}

    # creation of the data.frame with the node description
    nodeDescr <- nodeAttrs(nbAn = nbAn, nbComp = nbComp, labComp = labComp,
                           labAn = c("toy1","toy2"), file = "nodeInfo.txt")

    ## Plot correlation graph, slightly move the attached nodes to make the cliques visible
    ## use tkplot=TRUE to have an interactive graph
    res <- plotCorGraph(title = "Compare toy 1 and 2", dataGraph = dataGraph, nodeName = "indComp", tkplot = FALSE,
                     nodeAttrs = nodeDescr, edgeWeight = "cor", nodeShape = "labAn", reciproCol = "reciprocal")

    ## Not run:
    ## load two microarray datasets
    library(breastCancerMAINZ)
    library(breastCancerVDX)
    data(mainz)
    data(vdx)

    ## Define a function used to build two examples of IcaSet objects
    treat <- function(es, annot="hgu133a.db") {
       es <- selectFeatures_IQR(es,10000)
       exprs(es) <- t(apply(exprs(es),1,scale,scale=FALSE))
       colnames(exprs(es)) <- sampleNames(es)
       resJade <- runICA(X=exprs(es), nbComp=10, method = "JADE", maxit=10000)
       resBuild <- buildIcaSet(params=buildMineICAParams(), A=data.frame(resJade$A), S=data.frame(resJade$S),
                            dat=exprs(es), pData=pData(es), refSamples=character(0),
                            annotation=annot, typeID= typeIDmainz,
                            chipManu = "affymetrix", mart=mart)
       icaSet <- resBuild$icaSet
    }
    ## Build the two IcaSet objects
    icaSetMainz <- treat(mainz)
    icaSetVdx <- treat(vdx)

    icaSets <- list(icaSetMainz, icaSetVdx)
    labAn <- c("Mainz", "Vdx")

    ## correlations between gene projections of each pair of IcaSet
    resCompareAn <- compareAn(icaSets = icaSets, level = "genes", type.corr= "pearson",
                              labAn = labAn, cutoff_zval=0)

    ## construction of the correlation graph using previous output
    dataGraph <- compareAn2graphfile(listPairCor=resCompareAn, useMax=TRUE, file="corGraph.txt")

    ## construction of the data.frame with the node description
    nbComp <- rep(10,2) #each IcaSet contains 10 components
    nbAn <- 2 # we are comparing 2 IcaSets
    # labels of components created as comp*i*
    labComp <- foreach(icaSet=icaSets, nb=nbComp, an=1:nbAn) %do% {
                      paste(rep("comp",sum(nb)),1:nbComp(icaSet),sep = "")}

    # creation of the data.frame with the node description
    nodeDescr <- nodeAttrs(nbAn = nbAn, nbComp = nbComp, labComp = labComp,
        labAn = labAn, file = "nodeInfo.txt")

    ## Plot correlation graph, slightly move the attached nodes to make the cliques visible
    res <- plotCorGraph(title = "Compare two ICA decomsitions obtained on \n two
                     microarray-based data of breast tumors", dataGraph = dataGraph, nodeName = "indComp",
                     nodeAttrs = nodeDescr, edgeWeight = "cor", nodeShape = "labAn", reciproCol = "reciprocal")

    ## End(Not run)

[Package MineICA version 1.26.0 Index]