# 0. help -----------------------------------------------------------------
#' Encrypt data from \code{get.data} or \code{is.get.fata.output}
#'
#' @description
#' \code{encrypt.data} encrypts data from \code{get.data} or \code{is.get.fata.output}
#'
#' @param data output from \code{get.data}
#'
#' @param germplasm_name Name of the germplasms in the encrypted data. "germplasms" by default
#'
#' @param person_name Name of the persons an selection persons in the encrypted data. "persons" by default
#'
#' @details
#' The following information is encrypted:
#' person,
#' year (from 2000),
#' project,
#' selection_person,
#' reproduction_type,
#' germplasm_type,
#' germplasm and
#' seed-lots
#'
#' All query.type can be encrypt unless "species", "variable", "reproduction.type" and "methods"
#'
#' The key is written in .RData format. To use it you should type load("key.RData").
#'
#' @return The function returns the data frame encrypted and writes in the work directory a file.RData with the key
#'
#' @examples
#' # See the vignette
#'
#' @author Pierre Rivière
#'
#' @seealso \code{\link{get.data}}, \code{\link{is.get.data.output}}
#'
#'
encrypt.data <- function(
data,
germplasm_name = "germplasm",
person_name = "person"
)
# lets go !!! ----
{
# 1. Check parameters ----------
shinemas2R.object = attributes(data$data)$shinemas2R.object
mess = "data must come from shinemas2R::get.data or shinemas2R:is.get.data.output and be"
if( is.null(shinemas2R.object) ) { stop(mess) }
if( is.element(shinemas2R.object, c("species", "variable", "reproduction.type", "methods") ) ) { stop(mess) }
# 2. Encrypt data ----------
message("Prepare key for encryption ...")
info_db = data$info_db
v = get.data(db_user = info_db$db_user, db_host = info_db$db_host, db_name = info_db$db_name, db_password = info_db$db_password, query.type = "person")$data
vec = paste(paste(person_name, "-", sep = ""), c(1:length(v)), sep = ""); names(vec) = v
vec_person = vec
v = get.data(db_user = info_db$db_user, db_host = info_db$db_host, db_name = info_db$db_name, db_password = info_db$db_password, query.type = "year")$data
vec = c(2000:(2000+length(v))); names(vec) = v
vec_year = vec
v = get.data(db_user = info_db$db_user, db_host = info_db$db_host, db_name = info_db$db_name, db_password = info_db$db_password, query.type = "project")$data
vec = paste("project-", c(1:length(v)), sep = ""); names(vec) = v
vec_project = vec
v = get.data(db_user = info_db$db_user, db_host = info_db$db_host, db_name = info_db$db_name, db_password = info_db$db_password, query.type = "reproduction.type")$data
vec = paste("repro.type-", c(1:length(v)), sep = ""); names(vec) = v
vec_repro_type = vec
v = get.data(db_user = info_db$db_user, db_host = info_db$db_host, db_name = info_db$db_name, db_password = info_db$db_password, query.type = "germplasm.type")$data
vec = paste("germplasm.type-", c(1:length(v)), sep = ""); names(vec) = v
vec_germplasm_type = vec
v = get.data(db_user = info_db$db_user, db_host = info_db$db_host, db_name = info_db$db_name, db_password = info_db$db_password, query.type = "germplasm")$data
vec = paste(paste(germplasm_name, "-", sep = ""), c(1:length(v)), sep = ""); names(vec) = v
vec_germplasm = vec
encrypt_sl = function(sl, vec_germplasm, vec_person, vec_year){
a = unlist(strsplit(as.character(sl), "_"))
gs = as.character(a[1])
gs = unlist(strsplit(as.character(gs), "#"))
g = vec_germplasm[as.character(gs[1])]
if( is.na(gs[2]) ) { s = NULL } else { s = paste("#", gs[2], sep = "") }
p = vec_person[as.character(a[2])]
y = vec_year[as.character(a[3])]
d = a[4]
sl = paste(g, s, "_", p, "_", y, "_", d, sep = "")
return(sl)
}
message("Encrypt data ...")
if( shinemas2R.object == "network"){
d = data$data$network
y = get.vertex.attribute(d, "year")
set.vertex.attribute(d, "year", value = vec_year[as.character(y)])
p = get.vertex.attribute(d, "person")
set.vertex.attribute(d, "person", value = vec_person[as.character(p)])
g = get.vertex.attribute(d, "germplasm")
set.vertex.attribute(d, "germplasm", value = vec_germplasm[as.character(g)])
gt = get.vertex.attribute(d, "germplasm_type")
set.vertex.attribute(d, "germplasm_type", value = vec_germplasm_type[as.character(gt)])
sl = network.vertex.names(d)
network.vertex.names(d) = sapply(sl, encrypt_sl, vec_germplasm, vec_person, vec_year)
data$data$network = d
d = data$data$network.info
d$germplasm = factor(vec_germplasm[as.character(d$germplasm)])
d$person = factor(vec_person[as.character(d$person)])
d$year = factor(vec_year[as.character(d$year)])
d$sl = sapply(d$sl, encrypt_sl, vec_germplasm, vec_person, vec_year)
data$data$network.info = d
d = data$data$Mdist
if( !is.null(d)){
colnames(d) = sapply(colnames(d), encrypt_sl, vec_germplasm, vec_person, vec_year)
rownames(d) = sapply(rownames(d), encrypt_sl, vec_germplasm, vec_person, vec_year)
data$data$Mdist = d
}
}
if( shinemas2R.object == "SL.mix"){
data$data$son_project = factor(vec_project[as.character(data$data$son_project)])
data$data$son = sapply(data$data$son, encrypt_sl, vec_germplasm, vec_person, vec_year)
data$data$son_germplasm = factor(vec_germplasm[as.character(data$data$son_germplasm)])
data$data$son_person = factor(vec_person[as.character(data$data$son_person)])
data$data$son_year = factor(vec_year[as.character(data$data$son_year)])
data$data$son_germplasm_type = factor(vec_germplasm_type[as.character(data$data$son_germplasm_type)])
data$data$father_project = factor(vec_project[as.character(data$data$father_project)])
data$data$father = sapply(data$data$father, encrypt_sl, vec_germplasm, vec_person, vec_year)
data$data$father_germplasm = factor(vec_germplasm[as.character(data$data$father_germplasm)])
data$data$father_person = factor(vec_person[as.character(data$data$father_person)])
data$data$father_year = factor(vec_year[as.character(data$data$father_year)])
data$data$father_germplasm_type = factor(vec_germplasm_type[as.character(data$data$father_germplasm_type)])
}
if( shinemas2R.object == "cross"){
data$data$sl = sapply(data$data$sl, encrypt_sl, vec_germplasm, vec_person, vec_year)
data$data$germplasm = factor(vec_germplasm[as.character(data$data$germplasm)])
data$data$germplasm_type = factor(vec_germplasm_type[as.character(data$data$germplasm_type)])
data$data$year = factor(vec_year[as.character(data$data$year)])
data$data$year_cross = factor(vec_year[as.character(data$data$year_cross)])
data$data$person = factor(vec_person[as.character(data$data$person)])
data$data$project = factor(vec_project[as.character(data$data$project)])
}
if( shinemas2R.object == "person"){
v = vec_person[as.character(data$data)]
names(v) = NULL
attributes(v)$shinemas2R.object = "person"
data$data = v
}
if( shinemas2R.object == "year"){
v = vec_year[as.character(data$data)]
names(v) = NULL
attributes(v)$shinemas2R.object = "year"
data$data = v
}
if( shinemas2R.object == "project"){
v = vec_project[as.character(data$data)]
names(v) = NULL
attributes(v)$shinemas2R.object = "project"
data$data = v
}
if( shinemas2R.object == "seed.lots"){
print(data$data)
v = sapply(data$data, encrypt_sl, vec_germplasm, vec_person, vec_year)
names(v) = NULL
attributes(v)$shinemas2R.object = "seed.lots"
data$data = v
}
if( shinemas2R.object == "selection.person"){
v = vec_person[as.character(data$data)]
names(v) = NULL
attributes(v)$shinemas2R.object = "selection.person"
data$data = v
}
if( shinemas2R.object == "germplasm"){
v = vec_germplasm[as.character(data$data)]
names(v) = NULL
attributes(v)$shinemas2R.object = "germplasm"
data$data = v
}
if( shinemas2R.object == "data-classic-seed-lots" |
shinemas2R.object == "data-S-seed-lots" |
shinemas2R.object == "data-SR-seed-lots"
){
toto = function(d, vec_germplasm, vec_person, vec_year){
d$sl = sapply(d$sl, encrypt_sl, vec_germplasm, vec_person, vec_year)
d$germplasm = factor(vec_germplasm[as.character(d$germplasm)])
d$germplasm_type = factor(vec_germplasm_type[as.character(d$germplasm_type)])
d$year = factor(vec_year[as.character(d$year)])
d$person = factor(vec_person[as.character(d$person)])
d$project = factor(vec_project[as.character(d$project)])
return(d)
}
if( !is.null(data$data$data) ) {
data$data$data = toto(data$data$data, vec_germplasm, vec_person, vec_year)
} else { data$data$data = NULL }
if( length(data$data$data.with.correlated.variables) > 0 ) {
for(i in 1:length(data$data$data.with.correlated.variables)) {
data$data$data.with.correlated.variables[[i]] = toto(data$data$data.with.correlated.variables[[i]], vec_germplasm, vec_person, vec_year)
}
} else { data$data$data.with.correlated.variables = NULL }
}
if( shinemas2R.object == "data-classic-relation" |
shinemas2R.object == "data-SR-relation" |
shinemas2R.object == "data-S-relation"
){
toto = function(d, vec_germplasm, vec_person, vec_year){
d$son = sapply(d$son, encrypt_sl, vec_germplasm, vec_person, vec_year)
d$son_germplasm = factor(vec_germplasm[as.character(d$son_germplasm)])
d$son_germplasm_type = factor(vec_germplasm_type[as.character(d$son_germplasm_type)])
d$son_year = factor(vec_year[as.character(d$son_year)])
d$son_person = factor(vec_person[as.character(d$son_person)])
d$son_project = factor(vec_project[as.character(d$son_project)])
d$father = sapply(d$father, encrypt_sl, vec_germplasm, vec_person, vec_year)
d$father_germplasm = factor(vec_germplasm[as.character(d$father_germplasm)])
d$father_germplasm_type = factor(vec_germplasm_type[as.character(d$father_germplasm_type)])
d$father_year = factor(vec_year[as.character(d$father_year)])
d$father_person = factor(vec_person[as.character(d$father_person)])
d$father_project = factor(vec_project[as.character(d$father_project)])
d$selection_person = factor(vec_person[as.character(d$selection_person)])
return(d)
}
if( !is.null(data$data$data) ) {
data$data$data = toto(data$data$data, vec_germplasm, vec_person, vec_year)
} else { data$data$data = NULL }
if( length(data$data$data.with.correlated.variables) > 0 ) {
for(i in 1:length(data$data$data.with.correlated.variables)) {
data$data$data.with.correlated.variables[[i]] = toto(data$data$data.with.correlated.variables[[i]], vec_germplasm, vec_person, vec_year)
}
} else { data$data$data.with.correlated.variables = NULL }
}
if( shinemas2R.object == "person.info"){
data$data$first_name = NA
data$data$last_name = NA
data$data$short_name = vec_person[as.character(data$data$short_name)]
}
if( shinemas2R.object == "grandfather"){
data$data$son_project = factor(vec_person[as.character(data$data$son_project)])
data$data$son = sapply(data$data$son, encrypt_sl, vec_germplasm, vec_person, vec_year)
data$data$son_germplasm = factor(vec_germplasm[as.character(data$data$son_germplasm)])
data$data$son_person = factor(vec_person[as.character(data$data$son_person)])
data$data$son_year = factor(vec_year[as.character(data$data$son_year)])
data$data$son_germplasm_type = factor(vec_germplasm_type[as.character(data$data$son_germplasm_type)])
data$data$father_project = factor(vec_person[as.character(data$data$father_project)])
data$data$father = sapply(data$data$father, encrypt_sl, vec_germplasm, vec_person, vec_year)
data$data$father_germplasm = factor(vec_germplasm[as.character(data$data$father_germplasm)])
data$data$father_person = factor(vec_person[as.character(data$data$father_person)])
data$data$father_year = factor(vec_year[as.character(data$data$father_year)])
data$data$father_germplasm_type = factor(vec_germplasm_type[as.character(data$data$father_germplasm_type)])
data$data$relation_year = factor(vec_year[as.character(data$data$relation_year)])
data$data$grandfather_project = factor(vec_person[as.character(data$data$grandfather_project)])
data$data$grandfather = sapply(data$data$grandfather, encrypt_sl, vec_germplasm, vec_person, vec_year)
data$data$grandfather_germplasm = factor(vec_germplasm[as.character(data$data$grandfather_germplasm)])
data$data$grandfather_person = factor(vec_person[as.character(data$data$grandfather_person)])
data$data$grandfather_year = factor(vec_year[as.character(data$data$grandfather_year)])
data$data$grandfather_germplasm_type = factor(vec_germplasm_type[as.character(data$data$grandfather_germplasm_type)])
data$data$relation_father_grandfather_year = factor(vec_year[as.character(data$data$relation_father_grandfather_year)])
}
key = list(
"vec_person" = vec_person,
"vec_year" = vec_year,
"vec_project" = vec_project,
"vec_repro_type" = vec_repro_type,
"vec_germplasm_type" = vec_germplasm_type,
"vec_germplasm" = vec_germplasm)
file = paste("key_", shinemas2R.object, "_", date(), ".RData", sep = "")
save(key, file = file)
message("The key has been written in ", getwd(), "/", file, sep = "")
# 3. Return results ----------
return(data)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.