Coder Social home page Coder Social logo

ppcseq's People

Contributors

jeffreypullin avatar jwokaty avatar martinmodrak avatar nturaga avatar stemangiola avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

ppcseq's Issues

License is only stated in DESCRIPTION

The license this software is released under is unclear as there is no license file nor discussion in the README. The DESCRIPTION state GPL-3 but a LICENSE file would clarify things.

WISH: Please don't run on all cores by default => chaos on multi-tenant machines

Issue

Hi, I'm running reverse dependency checks on the future package, and I noticed that I caused the CPU load to explode on a 96-core machine that I shared with several other users.

I tracked it down to your ppcseq package that uses ncores = detect_cores() by default, where:

ppcseq/R/utilities.R

Lines 931 to 942 in c430833

#' @importFrom parallel detectCores
detect_cores = function(){
detectCores() %>% as.integer
# if(.Platform$OS.type == "unix")
# system("nproc", intern = TRUE) %>% as.integer %>% sum(-1)
# else if(.Platform$OS.type == "windows")
# parallel::detectCores() %>% as.integer %>% sum(-1)
# else stop("Your platform type is not recognised")
}

Suggestion

FWIW, over on CRAN, they ask you to test with a maximum of two cores, e.g. max(2L, parallel::detectCores()). On Bioconductor, I think they target 4 cores, e.g. BiocParallel respects environment variables BBS_HOME and BIOCPARALLEL_WORKER_NUMBER, and the former is set to 4 on their test machines. So, you could make your detect_cores() agile to those. If so, then people like I, but also sysadms, could set those environment variables to make your package run nicer on machines where there are other users running at the same time.

(Disclaimer: I'm the author). Alternatively, you could just replace parallel::detectCores() with parallelly::availableCores(). That functions respects above environment variables and much more, including nproc (as you've prototyped but commented out), and HPC scheduler allocations. It's designed to make your package play nice by respecting various kind of system and env var settings, cf. https://parallelly.futureverse.org/#availablecores-vs-paralleldetectcores.

Thanks.

Typos in README

I found some typos in the README:

You can identify anrtefactual calls from your differential transcribt anundance analysis, due to outliers.

Installation instructions blasts away user config without warning

The readme currently instructs users to run:

fileConn<-file("~/.R/Makevars")
writeLines(c( "CXX14FLAGS += -O3","CXX14FLAGS += -DSTAN_THREADS", "CXX14FLAGS += -pthread"), fileConn)
close(fileConn)

This blasts away any config a user may already have configured at ~/.R/Makevars and is accompanied with no warnings. Users should be strongly warned that this will happen.

Moreover, the whole instruction could be avoided by detecting platforms and available compiler features in configure. Users would then not have to do anything special to configure the build environment.

Your package breaks when defunct future::multiprocess will be removed

FYI, future::multiprocess has been deprecated since October 2020, and defunct since March 2023. It will soon be removed from future. When that happens, your package will break (see below). Could you please fix this? It's probably not used by your package anyway, since it's already defunct. Thank you.

* installing *source* package ‘ppcseq’ ...
** using staged installation
** libs


g++ -std=gnu++17 -I"/software/c4/cbi/software/R-4.2.2-gcc10/lib64/R/include" -DNDEBUG -I"../inst/include" -I"/c4/home/henrik/repositories/future/revdep/library/ppcseq/StanHeaders/include/src" -DBOOST_DISABLE_ASSERTS -DEIGEN_NO_DEBUG -DBOOST_MATH_OVERFLOW_ERROR_POLICY=errno_on_error  -D_HAS_AUTO_PTR_ETC=0 -I'/c4/home/henrik/repositories/future/revdep/library/ppcseq/BH/include' -I'/c4/home/henrik/repositories/future/revdep/library/ppcseq/Rcpp/include' -I'/c4/home/henrik/repositories/future/revdep/library/ppcseq/RcppEigen/include' -I'/c4/home/henrik/repositories/future/revdep/library/ppcseq/rstan/include' -I'/c4/home/henrik/repositories/future/revdep/library/ppcseq/StanHeaders/include' -I/usr/local/include   -I'/c4/home/henrik/repositories/future/revdep/library/ppcseq/RcppParallel/include' -D_REENTRANT -DSTAN_THREADS   -fpic  -g -O2 -c RcppExports.cpp -o RcppExports.o
In file included from /c4/home/henrik/repositories/future/revdep/library/ppcseq/RcppEigen/include/Eigen/Core:397,
                 from /c4/home/henrik/repositories/future/revdep/library/ppcseq/RcppEigen/include/Eigen/Dense:1,
                 from /c4/home/henrik/repositories/future/revdep/library/ppcseq/RcppEigen/include/RcppEigenForward.h:30,
                 from /c4/home/henrik/repositories/future/revdep/library/ppcseq/RcppEigen/include/RcppEigen.h:25,
...
installing to /c4/home/henrik/repositories/future/revdep/checks/ppcseq/new/ppcseq.Rcheck/00LOCK-ppcseq/00new/ppcseq/libs
** R
** data
*** moving datasets to lazyload DB
** inst
** byte-compile and prepare package for lazy loading
Error: object ‘multiprocess’ is not exported by 'namespace:future'
Execution halted
ERROR: lazy loading failed for package ‘ppcseq’
* removing ‘/c4/home/henrik/repositories/future/revdep/checks/ppcseq/new/ppcseq.Rcheck/ppcseq’

UPDATE: +2 hours later: I pasted the wrong installation output before. Corrected above.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.