WGCNA Hub Gene Selection Method
3
6
Entering edit mode
brohawndg ▴ 150
@brohawndg-7386
Last seen 9.3 years ago
United States

Hello,

I recently finished a WGCNA analysis with much success!

We found a module whose eigengene is highly associated with disease status and whose GO results indicate the module genes are associated with inflammatory processes that have been recurrently associated with the disease previously.

My question revolves around module hub gene selection methods. I know selecting a hub gene with a high gene significance value is important, but what about intramodular connectivity vs. kME values?

I have seen papers where folks select a hub gene based on it having a high intramodular k (connectivity) value within the module itself, and I have also seen people select a hub gene based on it having a high kME value (its expression values are highly correlated with that module's eigengene values across samples).

Does anyone understand the merits of using intramodular connectivity (k) vs. high modular membership (kME) values to pick a hub gene? 

Discussion of these merits or pointing me to a paper would be most appreciated as I am having trouble finding evidence for one being a superior selection method over another.

 

Thanks!


Dave

 

WGCNA Hub Genes KmE Intramodular Connectivity • 15k views
ADD COMMENT
4
Entering edit mode
@peter-langfelder-4469
Last seen 29 days ago
United States

Dave,

I'm glad you find WGCNA useful. I am not aware of any studies comparing the utility of kME to kIM. Most of the time these two are very strongly related in that the rankings they produce are very similar. We usually use kME because it is simpler to calculate, has an associated p-value, and kMEs can be compared across modules since they all lie between -1 and 1.

Whichever ranking you use, we recommend using the ranking only as a guide to prioritization for further follow-up because it is often the case that multiple genes have very similar, high values of kME and they could all be considered hubs. Other external information should be used as well (for example, a biologist can look at the list of top ranked genes and single out genes based on previous knowledge). 

Peter

ADD COMMENT
1
Entering edit mode

Just a small clarification. I hope kME mentioned here is module membership calculated as:

geneModuleMembership = as.data.frame(cor(datExpr, MEs, use = "p"));

Source: 3.b Gene relationship to trait and important modules: Gene Significance and Module Membership [Tutorial]

ADD REPLY
3
Entering edit mode
@peter-langfelder-4469
Last seen 29 days ago
United States

The R commands look good to me. There's also a function called signedKME which essentially does the same as your cor() call, but adds a bunch of checks for correct data formatting and for non-varying genes or genes with too many missing values.

You don't need to specify a signed network in these functions. kME is automatically signed while kIM is not.

Last comment regarding the "similar but not identical"... WGCNA produces a ranking of genes but the user needs to keep in mind that the ranking is always influenced by noise, experimental limitations, violations of assumptions about all aspects of data collection and processing, and other nightmares.  The ranking should be taken as a rough suggestion; as such, very similar rankings should be considered equivalent. The top ranked genes should be further filtered using prior knowledge or practical considerations (some genes are easier to study than others); if you see an interesting gene, it doesn't matter whether it's no. 3 or no. 7.

ADD COMMENT
0
Entering edit mode
brohawndg ▴ 150
@brohawndg-7386
Last seen 9.3 years ago
United States

Hello Dr. Langfelder,

 

Thanks for your response. We do have a number of interesting candidate genes with high kME values and high gene significance values within our module of interest. However, the ranking of these genes based on IM connectivity vs kME is similar, but not identical.

To ensure I am calculating MM and kIM correctly, can you confirm the commands below are appropriate?

For modular membership:

MM = as.data.frame(cor(datExpr, MEs, use = "p"));

For intramodular connectivity:

kIM = intramodularConnectivity(adjacency, moduleColors, scaleByMax = TRUE) 

 

To add a little more information, our adjacency matrix was generated as a signed network using bicor as we have a smaller # of samples. Should I indicate our network is signed when running the above commands?

 

 

Thanks!

 

Dave Brohawn

ADD COMMENT

Login before adding your answer.

Traffic: 771 users visited in the last hour
Help About
FAQ
Access RSS
API
Stats

Use of this site constitutes acceptance of our User Agreement and Privacy Policy.

Powered by the version 2.3.6