To store the assigned data in the Armadillo service, you can use workspaces to make sure a certain state of the data is maintained on the service.
Saving the workspaces can be done during datashield.logout
or at runtime.
library(dsBaseClient)
library(DSMolgenisArmadillo)
# specify server url
<- "https://armadillo-demo.molgenis.net/"
armadillo_url
# get token from central authentication server
<- armadillo.get_token(armadillo_url) token
## [1] "We're opening a browser so you can log in with code R8VPYX"
# build the login dataframe
<- DSI::newDSLoginBuilder()
builder $append(server = "armadillo",
builderurl = armadillo_url,
token = token,
table = "gecko/2_1-core-1_0/nonrep",
driver = "ArmadilloDriver")
# create loginframe
<- builder$build()
logindata
<- DSI::datashield.login(login = logindata) conns
##
## Logging into the collaborating servers
##
[-------------------------------------------------------------------------------------] 0% / 0s
Login armadillo [==================================>-----------------------------------] 50% / 0s
Logged in all servers [================================================================] 100% / 0s
datashield.assign.table(conns = conns,
table = "gecko/2_1-core-1_0/nonrep",
symbol = "J",
variables = c("recruit_age", "child_id"))
##
[-------------------------------------------------------------------------------------] 0% / 0s
Checking armadillo (J <- `gecko/2_1-core-1_0/nonrep`) [--------------------------------] 0% / 0s
Waiting... (J <- ...) [---------------------------------------------------------------] 0% / 0s
Checking armadillo (J <- `gecko/2_1-core-1_0/nonrep`) [--------------------------------] 0% / 0s
Waiting... (J <- ...) [---------------------------------------------------------------] 0% / 0s
Checking armadillo (J <- `gecko/2_1-core-1_0/nonrep`) [--------------------------------] 0% / 0s
Waiting... (J <- ...) [---------------------------------------------------------------] 0% / 0s
Checking armadillo (J <- `gecko/2_1-core-1_0/nonrep`) [--------------------------------] 0% / 0s
Waiting... (J <- ...) [---------------------------------------------------------------] 0% / 0s
Checking armadillo (J <- `gecko/2_1-core-1_0/nonrep`) [--------------------------------] 0% / 0s
Finalizing assignment armadillo (J <- `gecko/2_1-core-1_0/nonrep`) [=========>---------] 50% / 0s
Assigned all table (J <- ...) [========================================================] 100% / 0s
datashield.logout(conns, save = "my-workspace")
##
[-------------------------------------------------------------------------------------] 0% / 0s
Logout armadillo [=================================>-----------------------------------] 50% / 0s
Logged out from all servers [==========================================================] 100% / 0s
<- DSI::datashield.login(logins = logindata,
conns assign = FALSE,
restore = "my-workspace")
##
## Logging into the collaborating servers
##
[-------------------------------------------------------------------------------------] 0% / 0s
Login armadillo [==================================>-----------------------------------] 50% / 0s
Logged in all servers [================================================================] 100% / 0s
datashield.symbols(conns)
## $armadillo
## [1] "J"
datashield.workspace_save(conns, "my-workspace-version-2")
You can overwrite workspaces using the same name again when saving the workspace.
datashield.logout(conns)
##
[-------------------------------------------------------------------------------------] 0% / 0s
Logout armadillo [=================================>-----------------------------------] 50% / 0s
Logged out from all servers [==========================================================] 100% / 0s
<- DSI::datashield.login(logins = logindata) conns
##
## Logging into the collaborating servers
##
[-------------------------------------------------------------------------------------] 0% / 0s
Login armadillo [==================================>-----------------------------------] 50% / 0s
Logged in all servers [================================================================] 100% / 0s
datashield.assign.table(conns = conns,
table = "gecko/2_1-core-1_0/nonrep",
symbol = "H")
##
[-------------------------------------------------------------------------------------] 0% / 0s
Checking armadillo (H <- `gecko/2_1-core-1_0/nonrep`) [--------------------------------] 0% / 0s
Waiting... (H <- ...) [---------------------------------------------------------------] 0% / 0s
Checking armadillo (H <- `gecko/2_1-core-1_0/nonrep`) [--------------------------------] 0% / 0s
Waiting... (H <- ...) [---------------------------------------------------------------] 0% / 0s
Checking armadillo (H <- `gecko/2_1-core-1_0/nonrep`) [--------------------------------] 0% / 0s
Waiting... (H <- ...) [---------------------------------------------------------------] 0% / 0s
Checking armadillo (H <- `gecko/2_1-core-1_0/nonrep`) [--------------------------------] 0% / 0s
Waiting... (H <- ...) [---------------------------------------------------------------] 0% / 0s
Checking armadillo (H <- `gecko/2_1-core-1_0/nonrep`) [--------------------------------] 0% / 0s
Finalizing assignment armadillo (H <- `gecko/2_1-core-1_0/nonrep`) [=========>---------] 50% / 0s
Assigned all table (H <- ...) [========================================================] 100% / 0s
datashield.workspace_save(conns, "my-workspace-overwritten")
datashield.workspace_save(conns, "my-workspace-overwritten")
You can list the workspaces as well.
datashield.workspaces(conns$armadillo)
## name size lastAccessDate user
## 1 armadillo:my-workspace-overwritten 172073 2023-10-24T09:22:41.747Z
## 2 armadillo:my-workspace 3611 2023-10-24T09:22:40.615Z
## 3 armadillo:my-workspace-version-2 3611 2023-10-24T09:22:40.847Z
Remove workspaces.
datashield.workspace_rm(conns, "my-workspace-overwritten")
datashield.workspaces(conns)
## server name..armadillo.my.workspace. name..armadillo.my.workspace.version.2. user
## 1 armadillo armadillo:my-workspace armadillo:my-workspace-version-2
## 2 armadillo armadillo:my-workspace armadillo:my-workspace-version-2
## lastAccessDate..2023.10.24T09.22.40.615Z. lastAccessDate..2023.10.24T09.22.40.847Z. size.3611L size.3611L.1
## 1 2023-10-24T09:22:40.615Z 2023-10-24T09:22:40.847Z 3611 3611
## 2 2023-10-24T09:22:40.615Z 2023-10-24T09:22:40.847Z 3611 3611