Learn R Programming

MineICA (version 1.12.0)

plotCorGraph: 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.

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

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.

See Also

compareAn, nodeAttrs, compareAn2graphfile, runCompareIcaSets

Examples

Run this code
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)

Run the code above in your browser using DataLab