Error in checkForRemoteErrors(val) : one node produced an error: $ operator is invalid for atomic vectors

Hi, I am trying to the following: tune.BBM = tune.block.splsda(X = X, Y = Y, ncomp = 6,test.keepX = test.keepX, design = design, validation = 'loo',dist = "centroids.dist", cpus = 35)
on our server and keep getting this error after a long time running:
Error in checkForRemoteErrors(val) : one node produced an error: $ operator is invalid for atomic vectors
Do you know what I should be looking for in my input that may cause this error?
Thanks a lot for your support!
Cheers,
Stef

Hi @stepra,

Thanks for using mixOmics and letting us know about your issue.

Can you please do the following and re-try to see if it’s resolved in the latest version:

  1. install the latest devel using instructions in https://github.com/mixOmicsTeam/mixOmics#development-version

  2. see the help file ?tune.block.splsda and examples as we have made some changes to parallel code and it does not use cpus anymore

  3. change the parallel setup accordingly and re-run

Please let me know if the problem persists

Al

Thank you Al!
I updated to the dev version by running:
BiocManager::install(“mixOmicsTeam/mixOmics@devel”)
library(mixOmics)
I did not get a version message, so I am unsure the update worked.
I then proceeded to:

BPPARAM ← BiocParallel::MulticoreParam(workers = parallel::detectCores()-5)
tune.BBM = tune.block.splsda(X = X, Y = Y, ncomp = 5,test.keepX = test.keepX, design = design, validation = ‘loo’,dist = “mahalanobis.dist”, progressBar = T, scale=T, BPPARAM = BPPARAM)
and get this message:
You have provided a sequence of keepX of length: 20 for block taxa and 17 for block plasma and 18 for block olink.
This results in 6120 models being fitted for each component and each nrepeat, this may take some time to run, be patient!

You can look into the ‘cpus’ argument to speed up computation time.

tuning component 1
| | 0%Error in solve.default(t(Pmat) %*% Wmat) :
Lapack routine dgesv: system is exactly singular: U[2,2] = 0

So I get a different error here. As I still get the notification about cpus (making me suspicious, whether the update worked… However, when running ?tune.block.splsda, I did get the option on BPPARAM. So I am a bit confused) I even tried that:

tune.BBM = tune.block.splsda(X = X, Y = Y, ncomp = 5,test.keepX = test.keepX, design = design, validation = ‘loo’,dist = “mahalanobis.dist”, progressBar = T, scale=T, BPPARAM = BPPARAM, cpus=35)

You have provided a sequence of keepX of length: 20 for block taxa and 17 for block plasma and 18 for block olink.
This results in 6120 models being fitted for each component and each nrepeat, this may take some time to run, be patient!

As code is running in parallel, the progressBar is not available.

tuning component 1
| | 0%Error in checkForRemoteErrors(val) :
one node produced an error: $ operator is invalid for atomic vectors
So this is the same as the first error :frowning:

I hope you can help me solve this.
All the best,
Stef

Hi @stepra

The upgrade does not seem to have been successful because you should not see the cpus message anymore. You can try again and if failed also try devtools::install_github('mixOmicsTeam/mixOmics', ref = 'devel', upgrade = 'always'). Afterwards run packageVersion('mixOmics') and it should return a version greater than or equal to the one shown here https://github.com/mixOmicsTeam/mixOmics/blob/devel/DESCRIPTION#L4 (6.13.93)

Let us know how you go.

Best,

Al

Dear Al,
This is very strange. I ran as you suggested:
devtools::install_github(‘mixOmicsTeam/mixOmics’, ref = ‘devel’, upgrade = ‘always’)
Skipping install of ‘mixOmics’ from a github remote, the SHA1 (17fe1604) has not changed since last install.
Use force = TRUE to force installation

But even after
devtools::install_github(‘mixOmicsTeam/mixOmics’, ref = ‘devel’, upgrade = ‘always’, force=T)
Downloading GitHub repo mixOmicsTeam/mixOmics@devel

Skipping 34 packages ahead of CRAN: formatR, lambda.r, stringi, glue, fansi, colorspace, assertthat, pillar, cli, R6, stringr, Rcpp, withr, tibble, scales, rlang, reshape2, plyr, lazyeval, gtable, digest, RcppEigen, purrr, BH, tidyselect, pkgconfig, ggplot2, RSpectra, dplyr, ggrepel, matrixStats, tidyr, ellipse, igraph
✓ checking for file ‘/tmp/Rtmpi27k6z/remotes8bb61a61dfc3/mixOmicsTeam-mixOmics-17fe160/DESCRIPTION’ …
─ preparing ‘mixOmics’:
✓ checking DESCRIPTION meta-information …
─ checking for LF line-endings in source and make files and shell scripts
─ checking for empty or unneeded directories
─ looking to see if a ‘data/datalist’ file should be added
building ‘mixOmics_6.13.93.tar.gz’

Installing package into ‘/usr/local/lib/R/site-library’
(as ‘lib’ is unspecified)

packageVersion(‘mixOmics’)
[1] ‘6.13.93’

Kind regards,
Stef

Hi @stepra,

Thanks for the update. Did you continue to face the issue with the latest version? If so, can you please use mixOmics data from ?tune.block.splsda to see if the problem persists.

Otherwise, I’d appreciate if you could send us your code and minimal data.

You can click on this text to send us an email.
Alternatively, you can right-click on the above text and choose ‘Copy Email Address’

Best,

Al

Dear Al,
I have now tried again. perf.diablo0.25 = perf(MyResult.diablo0.25, validation = ‘loo’) works but when I want to move on to
tune.BBM0 = tune.block.splsda(X = X, Y = Y, ncomp = 3,test.keepX = test.keepX, design = design, validation = ‘loo’,dist = “mahalanobis.dist”, BPPARAM=BPPARAM) I now get a different error:
Error in solve.default(Sr) :
Lapack routine dgesv: system is exactly singular: U[1,1] = 0
What does it mean and what can I do about it?
i very much appreciate your help!
Kinnd regards,
Stef

Dear Al,
I have now discovered a faulty column in one of my datasets. After removing it, everything seems to work fine :slight_smile:
Thank you for your support!
/Stef