This is a test version of Biostars. For the public version, visit https://www.biostars.org.
Construct gene coexpression network

How can I construct a gene co-expression network in R from the expression value I have in Excel sheet?

Please tell me what packages are the helpful or share any tutorial for the construction of the co-expression network in R.

Thank you

r gene

Please show some effort of trying. Post input data, and expected output? At the least post some links to published papers. As it stands this post is too broad and unclear.

1 answer

Reading your normalized gene expression data in r which has been saved as .txt and genes are in rows and samples are in columns

    mycounts <- read.table("data.txt", header = T, sep = "\t",row.names = 1)
    # watching the head of uploaded file
    head(mycounts[,1:4])
    # watching the dimension of matrix
    dim(mycounts)

Using this R package for instance, you must put your working directory in where gene3.R and your expression files are. You must also install these packages in R that all help you to illustrate your network in Cytoscape. Download geneie3.R source from this link clicking on R/randomForest part

library(GENIE3)
        library(igraph)
        library(RCy3)
        library(Rgraphviz)
        weight.matrix <- GENIE3(mycounts)
        link.list <- linkList(weight.matrix, report.max=1000)
        edge_listsi <- link.list[!duplicated(link.list),]

        Gsi <- graph.data.frame(edge_listsi,directed = F)

        Asi <- get.adjacency(Gsi,sparse = F,attr = "weight",type = "both")

        g_arasi <- graph.adjacency(Asi,mode = "undirected",weighted = T)

        g.cyto <- igraph.to.graphNEL(g_arasi)

        cw = createNetworkFromGraph("net", graph=g.cyto)

        displayGraph (cw)

Hi F I used your commands for my data but after "weight.matrix <- GENIE3(mycounts)" I got error:

Error in (function (classes, fdef, mtable)  : 
  unable to find an inherited method for function ‘GENIE3’ for signature ‘"data.frame"

my data are log2 of FPKM and I have -INF in some rows, could you help? Thanks

Sorry, Perhaps you should add up 1 to your data before taking log2 to avoid INF. Hereafter, you please read your find as matrix

as.matrix(read.table("data.txt", header = T, sep = "\t",row.names = 1))

Genes are in rows and columns are your samples

yes, genes are in rows and samples are in columns. you think is it wise to replace -inf with 0?

Mamnun :)

Sorry no idea but you can try that and compare your resulted network with when you are taking log2 after adding up 1

:)

I have about 40K genes and 12 samples, should remove low expressed ones?

Of course because all of these genes are not informative even Cytoscape would get in trouble for loading such a big interactiobs. have you done any differential expression to reduce your genes ?

yes, I have the DE genes, but I think we should not include just DE genes and we need to filter the low expressed ones just according the normalized expression.right?

If you have raw read counts, before normalization the first step would be removing some genes with totally 0 read counts or another threshold. I guess I am not sure

Log in to answer this question.