Search
Question: How to know which soft threshold to use for blockwise modules in WGCNA?
0
8 months ago by
jol.espinoz20
jol.espinoz20 wrote:

I want to try blockwise modules for WGCNA but I think I'm missing some points in logic.

If you have a dataset too large to run WGCNA (e.g. 100k genes) and want to run blockwise modules, how do you know which soft threshold to use to get a good scalefree topology for each of the networks?

If your data split into 10 blocks each with 10000 genes (block_1 - block_10) and block_1 - block_5 required a soft threshold of 6 to get a scalefree topology of 0.88 and block_6 - block_10 required a soft threshold of 11 to get a scalefree topology of 0.93. Would these subnetworks be comparable even though they have different scalefree topologies?

What function could you use to determine a soft threshold for each of the blocks individually?

modified 8 months ago by Peter Langfelder1.6k • written 8 months ago by jol.espinoz20
2
8 months ago by
United States
Peter Langfelder1.6k wrote:

The usual function to determine a suitable soft threshold, pickSoftThreshold, works on (almost) arbitrarily large data sets. It does not need the entire correlation or similarity matrix at once, so it calculates it in smaller pieces which are not the same as the blocks used in blockwiseModules and related functions. The results of pickSoftThresholds do not depend on what blocks this function uses, they are the same as if the entire data set was processed in one block.

I personally don't see a good reason to ever use different thresholds on different blocks; the networks would certainly not be comparable if they were calculated with different thresholds. Since the blocks are not random subsets of the entire data set, but rather preferentially contain correlated genes, a scale-free topology analysis within each block may not make sense, especially if there are large modules whose size is comparable to block size.

As for a function to determine a soft threshold in each block separately, there is none. If you insist on doing so, run projectiveKMeans first to split data into blocks, then run pickSoftThreshold on each block separately. Don't be surprised if the results don't make much sense though; you were warned.

Peter