Below are two functions that you may find useful; "loadedges" illustrates how addGraphToGraph may be used.
plot.cy.2 <- function (cytoscape.file, edge.file) {
mydata <- new("graphNEL", edgemode='directed', nodes=as.character(cytoscape.file[, 1]))
# Set up and load all the node attributes
for (i in 2:ncol(cytoscape.file)) {
if (class(cytoscape.file[1,i]) != "numeric") {
mydata
<- initNodeAttribute (graph
=mydata
, attribute.name=names(cytoscape.file
[i
]), attribute.type
='char', default.value
=0.0) nodeData (mydata, n=as.character(cytoscape.file[, 1]), attr=names(cytoscape.file[i])) <- as.character(cytoscape.file[,i]) }
if (class(cytoscape.file[1,i])=="numeric") {
mydata
<- initNodeAttribute (graph
=mydata
, attribute.name=names(cytoscape.file
[i
]), attribute.type
='numeric', default.value
=0.0) nodeData (mydata, n=as.character(cytoscape.file[, 1]), attr=names(cytoscape.file[i])) <- as.numeric(cytoscape.file[,i]) }
}
# load standard edge attributes
mydata
<- initEdgeAttribute (graph
= mydata
, attribute.name='edgeType', attribute.type
='char', default.value
='undefined') mydata
<- initEdgeAttribute(mydata
, attribute.name = "Weight", attribute.type
= "numeric", default.value
= 0.0) mydata = addEdge (as.vector(edge.file$Gene.1, mode="character"), as.vector(edge.file$Gene.2, mode="character"), mydata)
edgeData (mydata, as.vector(edge.file$Gene.1, mode="character"), as.vector(edge.file$Gene.2, mode="character"), attr='edgeType') <- as.character(edge.file$edgeType)
edgeData (mydata, as.vector(edge.file$Gene.1, mode="character"), as.vector(edge.file$Gene.2, mode="character"), attr='Weight') <- edge.file$Weight
return(mydata) }
#
loadedges <- function (Cy_Wind, Network.File) {
filename=NULL
a = as.character(Network.File$Gene.1)
b = as.character(Network.File $Gene.2)
nodenames <- unique(c(a,b))
edgeTypes <- levels(as.factor(Network.File$edgeType))
sepedges <- dlply(Network.File, .(edgeType))
subgraph2 <- new("graphNEL", nodes= nodenames, edgemode='undirected')
subgraph2
<- initEdgeAttribute (graph
= subgraph2
, attribute.name='edgeType', attribute.type
='char', default.value
='undefined') subgraph2
<- initEdgeAttribute(subgraph2
, attribute.name = "Weight", attribute.type
= "numeric", default.value
= 0.0) #
for(i in 1:length(sepedges)) {
filename[i] <- paste(edgeTypes[i], noquote("edges"), sep=" ", collapse=NULL)
edgefile <- data.frame(sepedges[i])
names(edgefile) <- names(Network.File)
subgraph2 = addEdge (as.vector(edgefile$Gene.1, mode="character"), as.vector(edgefile$Gene.2, mode="character"), subgraph2)
edgeData (subgraph2, as.vector(edgefile$Gene.1, mode="character"), as.vector(edgefile$Gene.2, mode="character"), attr='edgeType') <- as.character(edgefile$edgeType)
edgeData (subgraph2, as.vector(edgefile$Gene.1, mode="character"), as.vector(edgefile$Gene.2, mode="character"), attr='Weight') <-edgefile$Weight
addGraphToGraph (Cy_Wind, subgraph2)
redraw(Cy_Wind)
cat("\n", filename[i], "\n")
}
cat("\n", filename)
showGraphicsDetails(Cy_Wind, TRUE)
}
#