dataquieRThe goal of dataquieR is to provide functions for
assessing data quality issues in studies, that can be used alone or in a
data quality pipeline. dataquieR also implements one
generic pipeline producing htmltools based HTML5
reports.
See also
https://dataquality.qihs.uni-greifswald.de
You can install the released version of dataquieR from
CRAN
with:
install.packages("dataquieR")The suggested packages can be directly installed by:
install.packages("dataquieR", dependencies = TRUE)The developer version from GitLab.com
can be installed using:
if (!requireNamespace("remotes")) {
install.packages("remotes")
}
remotes::install_gitlab("libreumg/dataquier")For examples and additional documentation, please refer to our website.
To help us improve dataquieR, we invite you to provide
your feedback by completing this short survey (English or German version).
dataquieR reports can now use plotly
if installed. That means that, in the final report, you can zoom in the
figures and get information by hovering on the points, etc. To install
plotly type:
install.packages("plotly")To install all suggested packages, run:
prep_check_for_dataquieR_updates()This command can also check for new beta releases of
dataquieR from our own server, so not from
CRAN:
prep_check_for_dataquieR_updates(beta = TRUE)By default, dataquieR is kept small for CRAN
installation. The convenience update helper installs
dataquieR from source with byte-compiled R code:
prep_check_for_dataquieR_updates()If you want to keep the installed package smaller by installing without byte compilation, use:
prep_check_for_dataquieR_updates(byte_compile = FALSE)Hint If you are running
dataquieR in an un-trusted setting, namely, inside a server
application, please consider disabling the import of R-serialization
files to prevent users from importing RData (or
RDS or even R) files, that trigger code
execution on your machine, see, e.g., Ivan Krylov’s
blog for the reason:
# prevent rio from reading potentially code-containing files
options(rio.import.trust = FALSE)If you do so, the example data won’t be loaded any more.
If you are using a version >= 2.0.0 of rio, this will
be the default, so for running our examples, then, you’ll have to trust
our files by using e.g.
withr::with_options(list(rio.import.trust = FALSE), prep_get_data_frame("study_data"))
for loading our example study data into the data-frame cache, initially
and trusting our files loaded from
dq_report2() and friends can compute indicator calls in
parallel. The cores argument accepts:
PSOCK
cluster spawned by dataquieR itself,util_parallel_start),parallel cluster object of any type
(PSOCK, FORK, MPI via
Rmpi, …).If you have already registered a cluster via
parallel::setDefaultCluster(), pass
cores = NULL to reuse it. dataquieR then
leaves its lifecycle to you. An explicit cores value or
cluster takes precedence over the registered default cluster.
For local multicore work the default (PSOCK socket
cluster) is usually fine:
dq_report2(study_data, meta_data, ..., cores = 4)MPI clusters
(Rmpi / snow)Any cluster created through
parallel::makeCluster(..., type = "MPI") (or via the snow /
Rmpi
chain) plugs in like any other parallel cluster. Either
pass it as cores =:
library(Rmpi)
cl <- parallel::makeCluster(mpi.universe.size() - 1L, type = "MPI")
withr::defer(parallel::stopCluster(cl))
dq_report2(study_data, meta_data, ..., cores = cl)or register it as the default cluster up front and pass
cores = NULL to dq_report2() so that it uses
the registered cluster:
cl <- parallel::makeCluster(8, type = "MPI")
parallel::setDefaultCluster(cl)
withr::defer({ parallel::setDefaultCluster(NULL); parallel::stopCluster(cl) })
dq_report2(study_data, meta_data, ..., cores = NULL)The same pattern works for any other makeCluster()-style
backend (PSOCK to remote hosts, FORK on Unix,
etc.).
HPC
schedulers (SLURM, SGE,
Torque/PBS, LSF, …)For batch schedulers, use mode = "futures" together with
a future
plan from future.batchtools:
install.packages(c("future", "future.batchtools"))
library(future)
library(future.batchtools)
plan(batchtools_slurm, template = "slurm.tmpl") # or batchtools_sge / _torque / _lsf
dq_report2(study_data, meta_data, ..., mode = "futures")For parallel HTML rendering, the main process and rendering workers
need a shared, writable file system at the same path. This is usually
already true for local clusters; on distributed nodes, arrange a shared
directory (for example via NFS). If the file-system check fails,
dataquieR writes the pages serially instead.
Earlier versions reached the same schedulers through
options(parallelMap.mode = "BatchJobs") (or
"batchtools"). That dispatch path is no longer wired up;
the labels are still accepted by the new backend for source-level
compatibility but degrade to sequential execution.
mode = "futures" is the supported replacement.
German Research Foundation (https://www.dfg.de/)
(DFG: SCHM 2744/3–1 – initial concept and dataquieR
development, SCHM 2744/9-1 – NFDI Task Force
COVID-19 use case application; SCHM 2744/3-4 –
concept extensions, ongoing )
European Union’s Horizon 2020 research and innovation program: euCanSHare, grant agreement No. 825903 – dataquieR refinements and implementations in the Square2 web application.
National Research Data
Infrastructure for Personal Health Data: NFDI 13/1 –
extension based on revised metadata concept, ongoing.
German National Cohort (NAKO Gesundheitsstudie) NAKO
(https://nako.de/): BMBF
(https://www.bmbf.de/): 01ER1301A and
01ER1801A