DESeq2 check failure on Linux ARM64
1
0
Entering edit mode
@6f6493f5
Last seen 7 months ago
Bulgaria

Hello,

There is an initiative to make Bioconductor packages runnable on Linux ARM64 - https://stat.ethz.ch/pipermail/bioc-devel/2023-January/019398.html

We face an error while running CMD check for DESeq2:

> ### ** Examples
> 
> 
> # some artificial data
> cts <- matrix(c(80,50,1,100,
+                 1,1,60,100,
+                 0,50,60,100), ncol=4, byrow=TRUE)
> # make a DESeqDataSet
> dds <- DESeqDataSetFromMatrix(cts,
+   data.frame(row.names=seq_len(ncol(cts))), ~1)
converting counts to integer mode
> colnames(dds) <- paste0("sample",1:4)
> 
> # note! here you would instead use
> # estimateSizeFactors() to do actual normalization
> sizeFactors(dds) <- rep(1, ncol(dds))
> 
> norm.cts <- counts(dds, normalized=TRUE)
> 
> # 'pure' should also have normalized counts...
> pure <- matrix(c(10,0,0,
+                  0,0,10,
+                  0,10,0), ncol=3, byrow=TRUE)
> colnames(pure) <- letters[1:3]
> 
> # for real data, you need to find alpha after fitting estimateDispersions()
> mix <- unmix(norm.cts, pure, alpha=0.01)
Warning in sqrt(alpha * q) : NaNs produced
Error in optim(par = rep(1, ncol(pure)), fn = sumLossVST, gr = NULL, i,  : 
  L-BFGS-B needs finite values of 'fn'
Calls: unmix -> lapply -> lapply -> FUN -> optim
Execution halted

Full logs: https://yikun.github.io/bioconductor-0301/report/DESeq2/kunpeng1-checksrc.html

The problem seems to be around here - https://github.com/mikelove/DESeq2/blob/master/R/helper.R#L93-L97 But I don't understand it well enough yet to propose an improvement.

Any ideas ?

Thanks! Martin

DESeq2 • 577 views
ADD COMMENT
0
Entering edit mode
@mikelove
Last seen 20 hours ago
United States

My guess is that something negative is sneaking in, but p is supposed to be non-negative by the bounds I set in L-BFGS-B. pure is positive.

I can look into it. But since it doesn't generate an error on my side, do you have recommendations how to test?

ADD COMMENT
0
Entering edit mode

Thank you for the quick reply and for offering your help, Michael Love !

Here are few options how that come to my mind:

1) use a free cloud VM

E.g. Oracle Cloud offer such. I have an article explaining how to use such as a Github Actions self-hosted runner at https://martin-grigorov.medium.com/github-actions-arm64-runner-on-oracle-cloud-a77cdf7a325a

The downside is that you need to provide credit card details during the registration. They don't charge it as long as you don't use any of their paid services. The best is to use a disposable card

2) use Docker with QEMU emulation

An article: https://martin-grigorov.medium.com/building-linux-packages-for-different-cpu-architectures-with-docker-and-qemu-d29e4ebc9fa5 It boils down to:

  • docker run -it --rm --privileged multiarch/qemu-user-static --credential yes --persistent yes
  • docker run -it --rm arm64v8/ubuntu:22.10 bash

The downside is that it is slow because it is an emulation!

3) I can give you a temporary SSH access to my VM. If you prefer this option then please send me a SSH public key and your static IP address to martin.grigorov at gmail com

4) tell me what changes to test and I will do it!

I am in Slack #arm-linux and some more channels

ADD REPLY

Login before adding your answer.

Traffic: 511 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