# NOT RUN {
## ------------------------------------------------
## Method `ParameterSet$new`
## ------------------------------------------------
id <- list("prob", "size")
value <- list(0.2, 5)
support <- list(set6::Interval$new(0, 1), set6::PosNaturals$new())
description <- list("Probability of success", NULL)
ParameterSet$new(id = id,
value = value,
support = support,
description = description
)
ParameterSet$new(id = "prob",
value = 0.2,
support = set6::Interval$new(0, 1),
description = "Probability of success"
)
## ------------------------------------------------
## Method `ParameterSet$getParameterSupport`
## ------------------------------------------------
ps <- ParameterSet$new(id = "prob",
value = 0.2,
support = set6::Interval$new(0, 1),
settable = TRUE,
description = "Probability of success"
)
ps$getParameterSupport("prob")
## ------------------------------------------------
## Method `ParameterSet$getParameterValue`
## ------------------------------------------------
ps <- ParameterSet$new(id = "prob",
value = 0.2,
support = set6::Interval$new(0, 1),
settable = TRUE,
description = "Probability of success"
)
ps$getParameterValue("prob")
## ------------------------------------------------
## Method `ParameterSet$setParameterValue`
## ------------------------------------------------
id <- list("rate", "scale")
value <- list(1, 1)
support <- list(set6::PosReals$new(), set6::PosReals$new())
settable <- list(TRUE, FALSE)
ps <- ParameterSet$new(
id, value, support, settable,
)
ps$addDeps("scale", "rate", function(self) 1 / self$getParameterValue("scale"))
ps$addDeps("rate", "scale", function(self) 1 / self$getParameterValue("rate"))
ps$getParameterValue(id = "rate")
ps$setParameterValue(rate = 2)
ps$getParameterValue("rate")
ps$getParameterValue("scale") # Auto-updated to 1/2
## ------------------------------------------------
## Method `ParameterSet$merge`
## ------------------------------------------------
ps1 <- ParameterSet$new(id = c("prob", "qprob"),
value = c(0.2, 0.8),
support = list(set6::Interval$new(0, 1), set6::Interval$new(0, 1))
)
ps1$addChecks("prob", function(x, self) x > 0)
ps1$addDeps("prob", "qprob", function(self) 1 - self$getParameterValue("prob"))
ps2 <- ParameterSet$new(id = "size",
value = 10,
support = set6::Interval$new(0, 10, class = "integer"),
)
ps2$addTrafos("size", function(x, self) x + 1)
ps1$merge(ps2)
ps1$print()
ps1$trafos
ps1$checks
ps1$deps
## ------------------------------------------------
## Method `ParameterSet$addDeps`
## ------------------------------------------------
id <- list("rate", "scale")
value <- list(1, 1)
support <- list(set6::PosReals$new(), set6::PosReals$new())
settable <- list(TRUE, FALSE)
ps <- ParameterSet$new(
id, value, support, settable
)
ps$addDeps("scale", "rate", function(self) 1 / self$getParameterValue("scale"))
ps$addDeps("rate", "scale", function(self) 1 / self$getParameterValue("rate"))
ps$deps
# Alternate method
ps <- ParameterSet$new(
id, value, support, settable
)
ps$addDeps(dt = data.table::data.table(x = c("scale", "rate"),
y = c("rate", "scale"),
fun = c(function(self) 1 / self$getParameterValue("scale"),
function(self) 1 / self$getParameterValue("rate"))
)
)
ps$deps
## ------------------------------------------------
## Method `ParameterSet$addChecks`
## ------------------------------------------------
id <- list("lower", "upper")
value <- list(1, 3)
support <- list(set6::PosReals$new(), set6::PosReals$new())
ps <- ParameterSet$new(
id, value, support
)
ps$addChecks("lower", function(x, self) x < self$getParameterValue("upper"))
ps$checks
# }
# NOT RUN {
# errors as check fails
ps$setParameterValue(lower = 4)
# }
# NOT RUN {
ps$setParameterValue(lower = 2)
# Alternate method (better with more parameters)
ps <- ParameterSet$new(
id, value, support
)
ps$addChecks(dt = data.table::data.table(
x = "lower",
fun = function(x, self) x < self$getParameterValue("upper")
))
## ------------------------------------------------
## Method `ParameterSet$addTrafos`
## ------------------------------------------------
ps <- ParameterSet$new(
"probs", list(c(1, 1)), set6::Interval$new(0,1)^2
)
ps$addTrafos("probs", function(x, self) return(x / sum(x)))
ps$trafos
ps$setParameterValue(probs = c(1, 2))
ps$getParameterValue("probs")
# Alternate method (better with more parameters)
ps <- ParameterSet$new(
"probs", list(c(1, 1)), set6::Interval$new(0,1)^2
)
ps$addTrafos(dt = data.table::data.table(
x = "probs",
fun = function(x, self) return(x / sum(x))
))
# }
Run the code above in your browser using DataLab