Skip to content

Commit 65e46e6

Browse files
Merge pull request #396 from StuartWheater/v6.4.0-dev
Update with v6.3.3-dev changes
2 parents 35df3d2 + bdd3cd8 commit 65e46e6

301 files changed

Lines changed: 2270 additions & 54382 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.Rbuildignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@
99
^pkgdown$
1010
^\.circleci$
1111
^\.circleci/config\.yml$
12+
^\.github$

.circleci/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ jobs:
2525
sudo apt-get install -y libxml2-dev
2626
- run:
2727
command: |
28+
echo "options(Ncpus=4)" >> ~/.Rprofile
2829
sudo Rscript -e "install.packages('RANN', dependencies=TRUE)"
2930
sudo Rscript -e "install.packages('stringr', dependencies=TRUE)"
3031
sudo Rscript -e "install.packages('lme4', dependencies=TRUE)"

.github/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
*.html

.github/workflows/R-CMD-check.yaml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Workflow derived from https://github.com/r-lib/actions/tree/v2/examples
2+
# Need help debugging build failures? Start at https://github.com/r-lib/actions#where-to-find-help
3+
on:
4+
push:
5+
branches: [main, master]
6+
pull_request:
7+
8+
name: R-CMD-check.yaml
9+
10+
permissions: read-all
11+
12+
jobs:
13+
R-CMD-check:
14+
runs-on: ${{ matrix.config.os }}
15+
16+
name: ${{ matrix.config.os }} (${{ matrix.config.r }})
17+
18+
strategy:
19+
fail-fast: false
20+
matrix:
21+
config:
22+
- {os: macos-latest, r: 'release'}
23+
- {os: windows-latest, r: 'release'}
24+
- {os: ubuntu-latest, r: 'devel', http-user-agent: 'release'}
25+
- {os: ubuntu-latest, r: 'release'}
26+
- {os: ubuntu-latest, r: 'oldrel-1'}
27+
28+
env:
29+
GITHUB_PAT: ${{ secrets.GITHUB_TOKEN }}
30+
R_KEEP_PKG_SOURCE: yes
31+
32+
steps:
33+
- uses: actions/checkout@v4
34+
35+
- uses: r-lib/actions/setup-pandoc@v2
36+
37+
- uses: r-lib/actions/setup-r@v2
38+
with:
39+
r-version: ${{ matrix.config.r }}
40+
http-user-agent: ${{ matrix.config.http-user-agent }}
41+
use-public-rspm: true
42+
43+
- uses: r-lib/actions/setup-r-dependencies@v2
44+
with:
45+
extra-packages: any::rcmdcheck
46+
needs: check
47+
48+
- uses: r-lib/actions/check-r-package@v2
49+
with:
50+
upload-snapshots: true
51+
build_args: 'c("--no-manual", "--compact-vignettes=gs+qpdf")'

DESCRIPTION

Lines changed: 43 additions & 178 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,47 @@
11
Package: dsBase
2-
Title: DataSHIELD Server Site Base Functions
3-
Description: DataSHIELD Server Site Base Functions.
4-
Version: 6.4.0.9000
5-
Author: DataSHIELD Developers <datashield@liverpool.ac.uk>
6-
Maintainer: DataSHIELD Developers <datashield@liverpool.ac.uk>
2+
Title: 'DataSHIELD' Server Site Base Functions
3+
Description: Base 'DataSHIELD' functions for the server side. 'DataSHIELD' is a software package which allows
4+
you to do non-disclosive federated analysis on sensitive data. 'DataSHIELD' analytic functions have
5+
been designed to only share non disclosive summary statistics, with built in automated output
6+
checking based on statistical disclosure control. With data sites setting the threshold values for
7+
the automated output checks.
8+
Version: 6.4.0-9000
9+
Authors@R: c(person(given = "Paul",
10+
family = "Burton",
11+
role = c("aut")),
12+
person(given = "Rebecca",
13+
family = "Wilson",
14+
role = c("aut")),
15+
person(given = "Olly",
16+
family = "Butters",
17+
role = c("aut")),
18+
person(given = "Patricia",
19+
family = "Ryser-Welch",
20+
role = c("aut")),
21+
person(given = "Alex",
22+
family = "Westerberg",
23+
role = c("aut")),
24+
person(given = "Leire",
25+
family = "Abarrategui",
26+
role = c("aut")),
27+
person(given = "Roberto",
28+
family = "Villegas-Diaz",
29+
role = c("aut"),
30+
comment = c(ORCID = "0000-0001-5036-8661")),
31+
person(given = "Demetris",
32+
family = "Avraam",
33+
role = c("aut"),
34+
comment = c(ORCID = "0000-0001-8908-2441")),
35+
person(given = "Yannick",
36+
family = "Marcon",
37+
role = c("aut"),
38+
email = "yannick.marcon@obiba.org",
39+
comment = c(ORCID = "0000-0003-0138-2023")),
40+
person(given = "Stuart",
41+
family = "Wheater",
42+
role = c("aut", "cre"),
43+
email = "stuart.wheater@arjuna.com",
44+
comment = c(ORCID = "0009-0003-2419-1964")))
745
License: GPL-3
846
Depends:
947
R (>= 4.0.0)
@@ -25,178 +63,5 @@ Imports:
2563
tidyverse
2664
Suggests:
2765
testthat
28-
AggregateMethods:
29-
asFactorDS1,
30-
asListDS,
31-
aucDS,
32-
boxPlotGGDS,
33-
checkNegValueDS,
34-
classDS,
35-
colnamesDS,
36-
corTestDS,
37-
corDS,
38-
covDS,
39-
dataFrameSubsetDS1,
40-
densityGridDS,
41-
extractQuantilesDS1,
42-
extractQuantilesDS2,
43-
dimDS,
44-
gamlssDS,
45-
glmDS1,
46-
glmDS2,
47-
glmerSLMADS2,
48-
glmPredictDS.ag,
49-
glmSLMADS1,
50-
glmSLMADS2,
51-
glmSummaryDS.ag,
52-
heatmapPlotDS,
53-
hetcorDS,
54-
histogramDS1,
55-
histogramDS2,
56-
isNaDS,
57-
isValidDS,
58-
kurtosisDS1,
59-
kurtosisDS2,
60-
lengthDS,
61-
levelsDS,
62-
lexisDS1,
63-
listDisclosureSettingsDS,
64-
lmerSLMADS2,
65-
lsDS,
66-
matrixDetDS1,
67-
meanDS,
68-
meanSdGpDS,
69-
messageDS,
70-
metadataDS,
71-
miceDS,
72-
minMaxRandDS,
73-
namesDS,
74-
numNaDS,
75-
quantileMeanDS,
76-
rangeDS,
77-
ranksSecureDS1,
78-
ranksSecureDS3,
79-
rmDS,
80-
scatterPlotDS,
81-
scoreVectDS,
82-
setSeedDS,
83-
skewnessDS1,
84-
skewnessDS2,
85-
table1DDS,
86-
table2DDS,
87-
tableDS,
88-
tableDS2,
89-
tapplyDS,
90-
testObjExistsDS,
91-
varDS,
92-
exists=base::exists,
93-
is.character=base::is.character,
94-
is.factor=base::is.factor,
95-
is.list=base::is.list,
96-
is.null=base::is.null,
97-
is.numeric=base::is.numeric,
98-
NROW=base::NROW,
99-
t.test=stats::t.test
100-
AssignMethods:
101-
absDS,
102-
asCharacterDS,
103-
asDataMatrixDS,
104-
asFactorDS2,
105-
asFactorSimpleDS,
106-
asIntegerDS,
107-
asListDS,
108-
asLogicalDS,
109-
asMatrixDS,
110-
asNumericDS,
111-
blackBoxDS,
112-
blackBoxRanksDS,
113-
BooleDS,
114-
boxPlotGG_data_TreatmentDS,
115-
boxPlotGG_data_Treatment_numericDS,
116-
bp_standardsDS,
117-
cbindDS,
118-
cDS,
119-
changeRefGroupDS,
120-
completeCasesDS,
121-
dataFrameDS,
122-
dataFrameFillDS,
123-
dataFrameSortDS,
124-
dataFrameSubsetDS2,
125-
dmtC2SDS,
126-
elsplineDS,
127-
glmerSLMADS.assign,
128-
glmPredictDS.as,
129-
glmSLMADS.assign,
130-
glmSummaryDS.as,
131-
getWGSRDS,
132-
igb_standardsDS,
133-
listDS,
134-
lexisDS2,
135-
lexisDS3,
136-
lmerSLMADS.assign,
137-
lsplineDS,
138-
matrixDetDS2,
139-
matrixDiagDS,
140-
matrixDimnamesDS,
141-
matrixDS,
142-
matrixInvertDS,
143-
matrixMultDS,
144-
matrixTransposeDS,
145-
mergeDS,
146-
nsDS,
147-
qlsplineDS,
148-
ranksSecureDS2,
149-
ranksSecureDS4,
150-
ranksSecureDS5,
151-
rbindDS,
152-
rBinomDS,
153-
recodeLevelsDS,
154-
recodeValuesDS,
155-
repDS,
156-
replaceNaDS,
157-
reShapeDS,
158-
rNormDS,
159-
rowColCalcDS,
160-
rPoisDS,
161-
rUnifDS,
162-
sampleDS,
163-
seqDS,
164-
sqrtDS,
165-
tableDS.assign,
166-
tapplyDS.assign,
167-
uniqueDS,
168-
unListDS,
169-
vectorDS,
170-
as.character=base::as.character,
171-
as.null=base::as.null,
172-
as.numeric=base::as.numeric,
173-
attach=base::attach,
174-
c=dsBase::vectorDS,
175-
complete.cases=stats::complete.cases,
176-
list=base::list,
177-
exp=base::exp,
178-
log=base::log,
179-
sqrt=base::sqrt,
180-
abs=base::abs,
181-
sin=base::sin,
182-
cos=base::cos,
183-
tan=base::tan,
184-
asin=base::asin,
185-
acos=base::acos,
186-
atan=base::atan,
187-
sum=base::sum,
188-
unlist=base::unlist
189-
Options:
190-
datashield.privacyLevel=5,
191-
default.datashield.privacyControlLevel="banana",
192-
default.nfilter.glm=0.33,
193-
default.nfilter.kNN=3,
194-
default.nfilter.string=80,
195-
default.nfilter.subset=3,
196-
default.nfilter.stringShort=20,
197-
default.nfilter.tab=3,
198-
default.nfilter.noise=0.25,
199-
default.nfilter.levels.density=0.33,
200-
default.nfilter.levels.max=40
20166
RoxygenNote: 7.3.2
20267
Encoding: UTF-8

NAMESPACE

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ export(BooleDS)
44
export(absDS)
55
export(asCharacterDS)
66
export(asDataFrameDS)
7+
export(asDataMatrixDS)
78
export(asFactorDS1)
89
export(asFactorDS2)
910
export(asFactorSimpleDS)

R/BooleDS.R

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,13 @@
1616
#' the final output variable
1717
#' should be of class numeric (1/0) or class logical (TRUE/FALSE).
1818
#' @param na.assign.text A character string taking values 'NA', '1' or '0'. If 'NA'
19-
#' then any NA values in the input vector remain as NAs in the output vector. If '1'
20-
#' or '0' NA values in the input vector are all converted to 1 or 0 respectively.
21-
#' @return the levels of the input variable.
19+
#' then any NA values in the
20+
#' input vector remain as NAs in the output vector. If '1' or '0' NA values in the
21+
#' input vector are all converted to 1 or 0 respectively.
22+
#'
2223
#' @author DataSHIELD Development Team
24+
#'
25+
#' @return the levels of the input variable.
2326
#' @export
2427
#'
2528
BooleDS <- function(V1.name=NULL, V2.name=NULL, Boolean.operator.n=NULL, na.assign.text, numeric.output=TRUE){

R/absDS.R

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,19 @@
66
#' @param x a string character, the name of a numeric or integer vector
77
#' @return the object specified by the \code{newobj} argument
88
#' of \code{ds.abs} (or default name \code{abs.newobj})
9-
#' which is written to the serverside. The output object is of class numeric
9+
#' which is written to the serverside. The output object is of class numeric
1010
#' or integer.
1111
#' @author Demetris Avraam for DataSHIELD Development Team
1212
#' @export
1313
#'
14-
absDS <- function(x){
15-
16-
x.var <- eval(parse(text=x), envir = parent.frame())
14+
absDS <- function(x) {
15+
x.var <- eval(parse(text = x), envir = parent.frame())
1716

1817
# compute the absolute values of x
1918
out <- abs(x.var)
20-
19+
2120
# assign the outcome to the data servers
2221
return(out)
23-
2422
}
2523
# ASSIGN FUNCTION
2624
# absDS

R/asCharacterDS.R

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#'
1+
#'
22
#' @title Coerces an R object into class character
33
#' @description this function is based on the native R function \code{as.character}
44
#' @details See help for function \code{as.character} in native R
@@ -11,14 +11,12 @@
1111
#' details see help on the clientside function \code{ds.asCharacter}
1212
#' @author Amadou Gaye, Paul Burton, Demetris Avraam for DataSHIELD Development Team
1313
#' @export
14-
#'
15-
asCharacterDS <- function(x.name){
16-
17-
x <- eval(parse(text=x.name), envir = parent.frame())
14+
#'
15+
asCharacterDS <- function(x.name) {
16+
x <- eval(parse(text = x.name), envir = parent.frame())
1817

1918
output <- as.character(x)
2019
return(output)
21-
2220
}
2321
# ASSIGN FUNCTION
2422
# asCharacterDS

R/asDataMatrixDS.R

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,12 @@
1111
#' details see help on the clientside function \code{ds.asDataMatrix}
1212
#' @author Tim Cadman
1313
#' @export
14-
asDataFrameDS <- function (x.name){
15-
16-
if(is.character(x.name)){
17-
x <- eval(parse(text=x.name), envir = parent.frame())
18-
19-
}else{
20-
studysideMessage<-"ERROR: x.name must be specified as a character string"
21-
stop(studysideMessage, call. = FALSE)
14+
asDataMatrixDS <- function(x.name) {
15+
if (is.character(x.name)) {
16+
x <- eval(parse(text = x.name), envir = parent.frame())
17+
} else {
18+
studysideMessage <- "ERROR: x.name must be specified as a character string"
19+
stop(studysideMessage, call. = FALSE)
2220
}
2321

2422
output <- data.frame(x)

0 commit comments

Comments
 (0)