Hello,
I’m trying to perform a WGCNA co-expression analysis and I’m sticking to the official tutorial. I’d like to identify hub genes in each module. Particularly, I’ve exported the nodes and edge lists to Cytoscape as shown here through the exportNetworktoCytoscape function.
However, while importing my edgelist as network to Cytoscape, I see a network resembling a sort of messed up hairball, even for a very small module including just 36 modes, but 621 edges.
I looked back at my edgelist
My guess is that I should keep only the edges whose weight is above a given threshold, which can be set in the option ‘threshold’ of the exportNetworktoCytoscape R function.
Default is 0.02 in the tutorial, 0.5 in the single function page. I’ve seen values can range between 0 and 1.
How can I choose a good threshold? My aim is to keep only the most significant connections and identify hub genes in each module.
Choosing threshold's is always tricky. You want to bring in enough data to understand the correlation between your genes of interest, but not so much data that you get a hairball. My suggestion would be to start by doing things interactively until you get a useful result. So, bring in your hairball, then go to the "Filter" tab in Cytoscape. Create a Column Filter (the + button) for Edge:weight. This should bring up a slider and allow you to interactively select edges with lower weights. Start by setting it to 0.5 as a starting point. Now, there are two possible things you could do next:
Delete the selected edges, and then relayout the network. If that looks better, you can repeat this cycle. If you've gone too far and you wind up with a number of singletons, then hit "undo" to undo the layout, then "undo" again to undo the delete. Then you can select a lower threshold.
You could also invert the selection (Select->Edges->Invert Edge Selection, Select->Nodes->Select all nodes) and then make a new network from the selected nodes, selected edges.
I would actually recommend #1 to get started and only go to #2 if you are trying to really compare between two values that both look good.