Interpretation network vs circosPlot and adjusting for twin data?

Hi,

I am currently working on a multi-omics analysis using Multi-block sPLS-DA with 5 datasets using the following code, where ‘design’ is a full-weighted design.

list.keepX <- data.frame(
  Urine = c(5, 5, 5, 10, 15),
  Blood = c(13, 3, 3, 3, 3),
  Fecal = c(15, 20, 25, 25, 10),
  CSF = c(15, 5, 10, 5, 5),
  Plasma = c(10, 10, 5, 5, 5)
)

adjusted_MB_splsda <- block.splsda(X, Y, ncomp = 5,
                            keepX = list.keepX, design = design)

circosPlot(adjusted_MB_splsda, cutoff = 0.8, line = TRUE, comp = 1,
           size.variables = 1, size.labels = 1.2, size.legend = 1,
           color.blocks = c("#999999", "#E69F00", "#56B4E9", "#009E73", "#ffcad4"),
           color.cor = c("chocolate3","grey20"))

network(adjusted_MB_splsda, cutoff = 0.8,
        color.node = c("#E69F00", "#56B4E9"),
        save = 'pdf', name.save = 'images/MO_diablo-network_5D')

I have a few questions regarding the results:

  • Why do the network and circosPlot show different variables with the same cutoff selected? I believe the default blocks for network is (1,2), so (Urine, Blood), but the metals (blood) in the network don’t show up as a line in the circosPlot?

  • I’m working on data from a twin study, do I have to adjust for this in the analysis? And is there a way to test for/display variance ‘within pairs’ and ‘between pairs’ using their twin_id?

  • Is there a way to test for an association between the results and clinical phenotypes?

Thank you so much in advance for helping and making this amazing package!

hi @bonita

Thanks for sharing your code and results!

  • Why do the network and circosPlot show different variables with the same cutoff selected? I believe the default blocks for network is (1,2), so (Urine, Blood), but the metals (blood) in the network don’t show up as a line in the circosPlot?

I believe this is because by default network only shows comp = 1, so you would need to increase this to comp = c(1:5) while circosPlot shows comp = c(1:5) (see ?network and ?circosPlot).

  • I’m working on data from a twin study, do I have to adjust for this in the analysis? And is there a way to test for/display variance ‘within pairs’ and ‘between pairs’ using their twin_id?

The sample plot should visually inform you whether the variation within pairs is smaller than between pairs? if so, you may want to consider a multilevel approach, using the withinVariation function (Multilevel | mixOmics), see a previous post about this.

  • Is there a way to test for an association between the results and clinical phenotypes?

No, you will have to use classical univariate tests. Unless you want to integrate the clinical phenotypes as a data block, or as single response variables.

Kim-Anh