geposan/R/method.R

68 lines
1.5 KiB
R
Raw Normal View History

#' Describe a new method for analyzing gene position data.
#'
#' @param id Unique identifier for the method.
#' @param name Human readable name.
#' @param description Slightly longer description.
#' @param func Function to apply the method. The function should accept two
#' parameters: an object of class `geposan_preset` as input and a function to
#' report progress information to as a numeric value. The return value should
#' be an object of class `geposan_result`.
#'
#' @return An object of class `geposan_method`.
#'
#' @export
method <- function(id, name, description, func) {
2022-05-26 12:42:19 +02:00
stopifnot(is.character(id) & length(id) == 1)
stopifnot(is.character(name) & length(name) == 1)
stopifnot(is.character(description) & length(description) == 1)
stopifnot(is.function(func))
2022-05-26 12:42:19 +02:00
structure(
list(
2022-08-12 12:41:56 +02:00
id = glue::glue("geposan_method_{id}"),
2022-05-26 12:42:19 +02:00
name = name,
description = description,
func = func
),
class = "geposan_method"
)
}
#' Get a list of all available methods.
#'
#' @export
all_methods <- function() {
2022-05-26 12:42:19 +02:00
list(
2022-08-11 12:39:21 +02:00
distance(),
adjacency(),
2022-05-26 12:42:19 +02:00
clustering(),
correlation(),
2022-08-11 12:32:57 +02:00
random_forest()
2022-05-26 12:42:19 +02:00
)
}
#' Print a method object.
#'
#' @param x The method to print.
#' @param ... Other parameters.
#'
#' @seealso [method()]
#'
#' @export
print.geposan_method <- function(x, ...) {
2022-05-26 12:42:19 +02:00
cat(sprintf(
paste0(
"geposan method:",
"\n Method ID: %s",
"\n Name: %s",
"\n Description: %s",
"\n"
),
x$id,
x$name,
x$description
))
2022-05-26 12:42:19 +02:00
invisible(x)
}