Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
4400389
Set options datashield.return_errors to FALSE
StuartWheater Oct 14, 2024
4cba902
Switch to Opal 5.0 final
StuartWheater Oct 15, 2024
1e427f9
Switch back to 'opal azure-pipeline'
StuartWheater Oct 17, 2024
29d3bd2
Updated to 'Armadillo 4.11.0'
StuartWheater Oct 21, 2024
18f1b8e
Updated to Armadillo 4.11.1
StuartWheater Oct 24, 2024
f48b419
Update package deployment
StuartWheater Nov 1, 2024
dbdd4f6
Align with other 'azure-pipelines' files
StuartWheater Nov 6, 2024
5cb3f4c
Switch to 'DSLiteDriver' as default Driver
StuartWheater Nov 7, 2024
ea94cd9
Updated dsBase tat.gz#
StuartWheater Nov 10, 2024
8ca0450
Update DESCRIPTION, R and DSI versions
StuartWheater Nov 11, 2024
e999dc6
Initial CircleCI
StuartWheater Nov 11, 2024
69c9aac
Switched to R 4.0.0, due to CircleCI
StuartWheater Nov 11, 2024
8bafd94
Rework docs source
StuartWheater Nov 11, 2024
de831d6
Regenerate 'docs'
StuartWheater Nov 11, 2024
9338d12
Initial attempts
StuartWheater Nov 11, 2024
b0cb9d4
Added '\' before '$'
StuartWheater Nov 11, 2024
fc316bf
Added '\' to '$'
StuartWheater Nov 11, 2024
59bf5e6
Update docker-compose_opal.yml to use Opal 5.0.1
StuartWheater Nov 11, 2024
da9b36c
Added system libraris
StuartWheater Nov 11, 2024
fb14de8
More added system libraris
StuartWheater Nov 11, 2024
7b94a61
More added system libraris
StuartWheater Nov 12, 2024
35bc5f4
Update codecov logging ro enabled
StuartWheater Nov 12, 2024
50fbdee
Initial CircleCI
StuartWheater Oct 29, 2024
977d031
chore: updated description
timcadman Nov 5, 2024
38d77b7
added tests for standardise function
timcadman Nov 5, 2024
c5a09a9
chore: renamed test to match new function name
timcadman Nov 5, 2024
72d2e7d
docs: use lifecycle package to deprecate functions
timcadman Nov 5, 2024
6652fe4
chore: ran check
timcadman Nov 5, 2024
3a31038
revert: mistakenly rebased from master not dev
timcadman Jun 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
12 changes: 0 additions & 12 deletions .Rbuildignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,8 @@
^\.Rproj\.user$
^LICENSE.md$
^azure-pipelines\.yml$
^opal_azure-pipelines\.yml$
^armadillo_azure-pipelines\.yml$
^azure-pipelines_site\.pp$
^azure-pipelines_site-dsdanger\.pp$
^azure-pipelines_check\.Rout$
^azure-pipelines_test\.Rout$
^tests/docker/armadillo/standard/log/.gitkeep$
^checkDocumentationUpdated\.sh$
^docker-compose_armadillo\.yml$
^docker-compose_opal\.yml$
^docker-compose\.yml$
^R/secure.global.ranking.md$
^_pkgdown\.yml$
^docs$
^dsBase_6.3.1.tar.gz$
^dsBase_6.3.1-permissive.tar.gz$
^dsDanger_6.3.1.tar.gz$
68 changes: 0 additions & 68 deletions .circleci/config.yml

This file was deleted.

2 changes: 0 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,3 @@
inst/tests/test-template.R
azure-pipelines.Rout
tests/testthat/connection_to_datasets/local_settings.csv
tests/docker/armadillo/standard/logs/
tests/docker/armadillo/standard/data/
16 changes: 6 additions & 10 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,24 +1,20 @@
Package: dsBaseClient
Title: DataSHIELD Client Functions
Version: 6.3.1
Author: DataSHIELD Developers <datashield@liverpool.ac.uk>
Maintainer: DataSHIELD Developers <datashield@liverpool.ac.uk>
Version: 6.1.1
Author: DataSHIELD Developers <datashield@newcastle.ac.uk>
Maintainer: DataSHIELD Developers <datashield@newcastle.ac.uk>
Description: DataSHIELD client functions for the client side.
License: GPL-3
Depends:
R (>= 3.5.0),
DSI (>= 1.3.0)
DSI (>= 1.2.0)
Imports:
fields,
metafor,
meta,
ggplot2,
gridExtra,
data.table,
panelaggregation,
methods,
dplyr
Suggests:
testthat
RoxygenNote: 7.3.2
methods
RoxygenNote: 7.1.1
Encoding: UTF-8
17 changes: 0 additions & 17 deletions NAMESPACE
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,13 @@ export(ds.abs)
export(ds.asCharacter)
export(ds.asDataMatrix)
export(ds.asFactor)
export(ds.asFactorSimple)
export(ds.asInteger)
export(ds.asList)
export(ds.asLogical)
export(ds.asMatrix)
export(ds.asNumeric)
export(ds.assign)
export(ds.auc)
export(ds.boxPlot)
export(ds.bp_standards)
export(ds.c)
export(ds.cbind)
export(ds.changeRefGroup)
Expand All @@ -31,22 +28,16 @@ export(ds.dataFrameSort)
export(ds.dataFrameSubset)
export(ds.densityGrid)
export(ds.dim)
export(ds.dmtC2S)
export(ds.elspline)
export(ds.exists)
export(ds.exp)
export(ds.forestplot)
export(ds.gamlss)
export(ds.getWGSR)
export(ds.glm)
export(ds.glmPredict)
export(ds.glmSLMA)
export(ds.glmSummary)
export(ds.glmerSLMA)
export(ds.heatmapPlot)
export(ds.hetcor)
export(ds.histogram)
export(ds.igb_standards)
export(ds.isNA)
export(ds.isValid)
export(ds.kurtosis)
Expand All @@ -62,7 +53,6 @@ export(ds.lmerSLMA)
export(ds.log)
export(ds.look)
export(ds.ls)
export(ds.lspline)
export(ds.make)
export(ds.matrix)
export(ds.matrixDet)
Expand All @@ -77,18 +67,13 @@ export(ds.meanByClass)
export(ds.meanSdGp)
export(ds.merge)
export(ds.message)
export(ds.metadata)
export(ds.mice)
export(ds.names)
export(ds.ns)
export(ds.numNA)
export(ds.qlspline)
export(ds.quantileMean)
export(ds.rBinom)
export(ds.rNorm)
export(ds.rPois)
export(ds.rUnif)
export(ds.ranksSecure)
export(ds.rbind)
export(ds.reShape)
export(ds.recodeLevels)
Expand All @@ -114,8 +99,6 @@ export(ds.tapply)
export(ds.tapply.assign)
export(ds.testObjExists)
export(ds.unList)
export(ds.unique)
export(ds.var)
export(ds.vectorCalc)
import(DSI)
import(data.table)
6 changes: 3 additions & 3 deletions R/ds.Boole.R
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
#'
#' @param V1 A character string specifying the name of the vector to which the Boolean operator
#' is to be applied.
#' @param V2 A character string specifying the name of the vector to compare with \code{V1}.
#' @param V2 A character string specifying the name of the vector to compare with \code{V1}.
#' @param Boolean.operator A character string specifying one of six possible Boolean operators:
#' \code{'==', '!=', '>', '>=', '<'} and \code{'<='}.
#' @param numeric.output logical. If TRUE the output variable should be of class numeric (\code{1/0}).
Expand Down Expand Up @@ -177,7 +177,7 @@ ds.Boole<-function(V1=NULL, V2=NULL, Boolean.operator=NULL, numeric.output=TRUE,
newobj <- paste0(V1,"_Boole")
}

# CALL THE MAIN SERVER SIDE FUNCTION
# CALL THE MAIN SERVER SIDE FUNCTION
calltext <- call("BooleDS", V1, V2, BO.n, na.assign,numeric.output)
DSI::datashield.assign(datasources, newobj, calltext)

Expand Down Expand Up @@ -209,7 +209,7 @@ for(j in 1:num.datasources){ #
if(!object.info[[j]]$test.obj.exists){ #
obj.name.exists.in.all.sources<-FALSE #
} #
if(is.null(object.info[[j]]$test.obj.class) || ("ABSENT" %in% object.info[[j]]$test.obj.class)){ #
if(is.null(object.info[[j]]$test.obj.class) || object.info[[j]]$test.obj.class=="ABSENT"){ #
obj.non.null.in.all.sources<-FALSE #
} #
} #
Expand Down
17 changes: 14 additions & 3 deletions R/ds.abs.R
Original file line number Diff line number Diff line change
Expand Up @@ -86,15 +86,26 @@ ds.abs <- function(x=NULL, newobj=NULL, datasources=NULL){
stop("Please provide the name of the input object!", call.=FALSE)
}

# check if the input object is defined in all the studies
isDefined(datasources, x)
# the input variable might be given as column table (i.e. D$x)
# or just as a vector not attached to a table (i.e. x)
# we have to make sure the function deals with each case
xnames <- extract(x)
varname <- xnames$elements
obj2lookfor <- xnames$holders

# check if the input object(s) is(are) defined in all the studies
if(is.na(obj2lookfor)){
defined <- isDefined(datasources, varname)
}else{
defined <- isDefined(datasources, obj2lookfor)
}

# call the internal function that checks the input object is of the same class in all studies.
typ <- checkClass(datasources, x)

# call the internal function that checks the input object(s) is(are) of the same class in all studies.
if(!('numeric' %in% typ) && !('integer' %in% typ)){
stop("Only objects of type 'numeric' or 'integer' are allowed.", call.=FALSE)
stop("Only objects of type 'numeric' or 'integer' are allowed.", call.=FALSE)
}

# create a name by default if the user did not provide a name for the new variable
Expand Down
11 changes: 4 additions & 7 deletions R/ds.asCharacter.R
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
#'
#' @title Converts a server-side R object into a character class
#' @description Converts the input object into a character class.
#' This function is based on the native R function \code{as.character}.
Expand All @@ -14,7 +13,8 @@
#' the default set of connections will be used: see \code{\link{datashield.connections_default}}.
#' @return \code{ds.asCharacter} returns the object converted into a class character
#' that is written to the server-side. Also, two validity messages are returned to the client-side
#' indicating the name of the \code{newobj} which has been created in each data source and if
#' indicating the name of the \code{newobj} which
#' has been created in each data source and if
#' it is in a valid form.
#' @examples
#' \dontrun{
Expand Down Expand Up @@ -54,7 +54,6 @@
#' }
#' @author DataSHIELD Development Team
#' @export
#'
ds.asCharacter <- function(x.name=NULL, newobj=NULL, datasources=NULL){

# look for DS connections
Expand All @@ -70,9 +69,7 @@ ds.asCharacter <- function(x.name=NULL, newobj=NULL, datasources=NULL){
if(is.null(x.name)){
stop("Please provide the name of the input vector!", call.=FALSE)
}

# check if the input object is defined in all the studies
isDefined(datasources, x.name)


# create a name by default if user did not provide a name for the new variable
if(is.null(newobj)){
Expand Down Expand Up @@ -110,7 +107,7 @@ for(j in 1:num.datasources){ #
if(!object.info[[j]]$test.obj.exists){ #
obj.name.exists.in.all.sources<-FALSE #
} #
if(is.null(object.info[[j]]$test.obj.class) || ("ABSENT" %in% object.info[[j]]$test.obj.class)){ #
if(is.null(object.info[[j]]$test.obj.class) || object.info[[j]]$test.obj.class=="ABSENT"){ #
obj.non.null.in.all.sources<-FALSE #
} #
} #
Expand Down
13 changes: 6 additions & 7 deletions R/ds.asDataMatrix.R
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@
#' }
#' @author DataSHIELD Development Team
#' @export
#'
ds.asDataMatrix <- function(x.name=NULL, newobj=NULL, datasources=NULL){

# look for DS connections
Expand All @@ -71,17 +70,17 @@ ds.asDataMatrix <- function(x.name=NULL, newobj=NULL, datasources=NULL){
if(is.null(x.name)){
stop("Please provide the name of the input vector!", call.=FALSE)
}

# check if the input object is defined in all the studies
isDefined(datasources, x.name)



# create a name by default if user did not provide a name for the new variable
if(is.null(newobj)){
newobj <- "asdatamatrix.newobj"
}

# call the server side function that does the job
# call the server side function that does the job

calltext <- call("asDataMatrixDS", x.name)

DSI::datashield.assign(datasources, newobj, calltext)


Expand Down Expand Up @@ -109,7 +108,7 @@ for(j in 1:num.datasources){ #
if(!object.info[[j]]$test.obj.exists){ #
obj.name.exists.in.all.sources<-FALSE #
} #
if(is.null(object.info[[j]]$test.obj.class) || ("ABSENT" %in% object.info[[j]]$test.obj.class)){ #
if(is.null(object.info[[j]]$test.obj.class) || object.info[[j]]$test.obj.class=="ABSENT"){ #
obj.non.null.in.all.sources<-FALSE #
} #
} #
Expand Down
Loading