This certainly works. I created a function to do this, pasted below, for cytoscape files in which
But it is still no clear why addGraphToGraph works sometimes and fails at other times.
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) }