Skip to content

Commit 12af76f

Browse files
authored
Add help method for filters (#68)
* Filters now have a help method `$help()` which opens the respective help page (#68)
1 parent 64e9a51 commit 12af76f

40 files changed

+155
-46
lines changed

.pre-commit-config.yaml

+7-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,15 @@ repos:
33
rev: v0.0.0.9027
44
hooks:
55
- id: style-files
6-
args: [--style_fun=mlr_style]
6+
args: [--style_pkg=styler, --style_fun=mlr_style]
77
- id: parsable-R
88
- id: no-browser-statement
99
- id: readme-rmd-rendered
1010
- id: roxygenize
1111
- id: use-tidy-description
12-
- id: codemeta-description-updated
12+
#- id: codemeta-description-updated
13+
- repo: https://github.com/pre-commit/pre-commit-hooks
14+
rev: v2.5.0
15+
hooks:
16+
- id: check-added-large-files
17+
args: ['--maxkb=200']

DESCRIPTION

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Imports:
3535
backports,
3636
checkmate,
3737
data.table,
38-
mlr3 (>= 0.1.2),
38+
mlr3 (>= 0.1.8),
3939
mlr3misc,
4040
paradox,
4141
R6
@@ -52,7 +52,7 @@ Suggests:
5252
Encoding: UTF-8
5353
NeedsCompilation: no
5454
Roxygen: list(markdown = TRUE, r6 = TRUE)
55-
RoxygenNote: 7.0.2
55+
RoxygenNote: 7.1.0
5656
Collate:
5757
'Filter.R'
5858
'mlr_filters.R'

R/Filter.R

+17-1
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ Filter = R6Class("Filter",
3131
feature_types = NULL,
3232
packages = NULL,
3333

34+
#' @field man (`character(1)`)\cr
35+
#' String in the format `[pkg]::[topic]` pointing to a manual page for this object.
36+
#' Defaults to `NA`, but can be set by child classes.
37+
man = NULL,
38+
3439
#' @field scores
3540
#' Stores the calculated filter score values as named numeric vector.
3641
#' The vector is sorted in decreasing order with possible `NA` values
@@ -58,9 +63,13 @@ Filter = R6Class("Filter",
5863
#' Set of required packages.
5964
#' Note that these packages will be loaded via [requireNamespace()], and
6065
#' are not attached.
66+
#' @param man (`character(1)`)\cr
67+
#' String in the format `[pkg]::[topic]` pointing to a manual page for
68+
#' this object. The referenced help package can be opened via method
69+
#' `$help()`.
6170
initialize = function(id, task_type, task_properties = character(),
6271
param_set = ParamSet$new(), feature_types = character(),
63-
packages = character()) {
72+
packages = character(), man = NA_character_) {
6473

6574
self$id = assert_string(id)
6675
self$task_type = assert_subset(task_type, mlr_reflections$task_types$type,
@@ -73,6 +82,7 @@ Filter = R6Class("Filter",
7382
self$packages = assert_character(packages, any.missing = FALSE,
7483
unique = TRUE)
7584
self$scores = set_names(numeric(), character())
85+
self$man = assert_string(man, na.ok = TRUE)
7686
},
7787

7888
#' @description
@@ -95,6 +105,12 @@ Filter = R6Class("Filter",
95105
}
96106
},
97107

108+
#' @description
109+
#' Opens the corresponding help page referenced by field `$man`.
110+
help = function() {
111+
open_help(self$man) # nocov
112+
},
113+
98114
#' @description
99115
#' Calculates the filter score values for the provided [mlr3::Task] and
100116
#' stores them in field `scores`. `nfeat` determines the minimum number of

R/FilterAUC.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,8 @@ FilterAUC = R6Class("FilterAUC", inherit = Filter,
5252
task_type = task_type,
5353
task_properties = task_properties,
5454
feature_types = feature_types,
55-
packages = packages
55+
packages = packages,
56+
man = "mlr3filters::mlr_filters_auc"
5657
)
5758
}
5859
),

R/FilterAnova.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,8 @@ FilterAnova = R6Class("FilterAnova", inherit = Filter,
5454
id = id,
5555
packages = packages,
5656
feature_types = feature_types,
57-
task_type = task_type
57+
task_type = task_type,
58+
man = "mlr3filters::mlr_filters_anova"
5859
)
5960
}
6061
),

R/FilterCMIM.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ FilterCMIM = R6Class("FilterCMIM", inherit = Filter,
4747
task_type = task_type,
4848
param_set = param_set,
4949
feature_types = feature_types,
50-
packages = packages
50+
packages = packages,
51+
man = "mlr3filters::mlr_filters_cmim"
5152
)
5253
}
5354
),

R/FilterCarScore.R

+3-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ FilterCarScore = R6Class("FilterCarScore", inherit = Filter,
5757
task_type = task_type,
5858
param_set = param_set,
5959
feature_types = feature_types,
60-
packages = packages
60+
packages = packages,
61+
man = "mlr3filters::mlr_filters_carscore"
62+
6163
)
6264
self$param_set$values = list(verbose = FALSE)
6365
}

R/FilterCorrelation.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,8 @@ FilterCorrelation = R6Class("FilterCorrelation", inherit = Filter,
5757
task_type = task_type,
5858
param_set = param_set,
5959
feature_types = feature_types,
60-
packages = packages
60+
packages = packages,
61+
man = "mlr3filters::mlr_filters_correlation"
6162
)
6263
}
6364
),

R/FilterDISR.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ FilterDISR = R6Class("FilterDISR", inherit = Filter,
4747
task_type = task_type,
4848
param_set = param_set,
4949
feature_types = feature_types,
50-
packages = packages
50+
packages = packages,
51+
man = "mlr3filters::mlr_filters_disr"
5152
)
5253
}
5354
),

R/FilterFindCorrelation.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ FilterFindCorrelation = R6Class("FilterFindCorrelation", inherit = Filter,
6565
task_type = task_type,
6666
param_set = param_set,
6767
feature_types = feature_types,
68-
packages = packages
68+
packages = packages,
69+
man = "mlr3filters::mlr_filters_find_correlation"
6970
)
7071
}
7172
),

R/FilterImportance.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@ FilterImportance = R6Class("FilterImportance", inherit = Filter,
5555
task_type = task_type,
5656
feature_types = feature_types,
5757
packages = packages,
58-
param_set = param_set
58+
param_set = param_set,
59+
man = "mlr3filters::mlr_filters_importance"
5960
)
6061
}
6162
),

R/FilterInformationGain.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,8 @@ FilterInformationGain = R6Class("FilterInformationGain", inherit = Filter,
6464
task_type = task_type,
6565
param_set = param_set,
6666
feature_types = feature_types,
67-
packages = packages
67+
packages = packages,
68+
man = "mlr3filters::mlr_filters_information_gain"
6869
)
6970
}
7071
),

R/FilterJMI.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ FilterJMI = R6Class("FilterJMI", inherit = Filter,
4747
task_type = task_type,
4848
param_set = param_set,
4949
feature_types = feature_types,
50-
packages = packages
50+
packages = packages,
51+
man = "mlr3filters::mlr_filters_jmi"
5152
)
5253
}
5354
),

R/FilterJMIM.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ FilterJMIM = R6Class("FilterJMIM", inherit = Filter,
4747
task_type = task_type,
4848
param_set = param_set,
4949
feature_types = feature_types,
50-
packages = packages
50+
packages = packages,
51+
man = "mlr3filters::mlr_filters_jmim"
5152
)
5253
}
5354
),

R/FilterKruskalTest.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ FilterKruskalTest = R6Class("FilterKruskalTest", inherit = Filter,
5353
task_type = task_type,
5454
param_set = param_set,
5555
feature_types = feature_types,
56-
packages = packages
56+
packages = packages,
57+
man = "mlr3filters::mlr_filters_kruskal_test"
5758
)
5859
}
5960
),

R/FilterMIM.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ FilterMIM = R6Class("FilterMIM", inherit = Filter,
4747
task_type = task_type,
4848
param_set = param_set,
4949
feature_types = feature_types,
50-
packages = packages
50+
packages = packages,
51+
man = "mlr3filters::mlr_filters_mim"
5152
)
5253
}
5354
),

R/FilterMRMR.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ FilterMRMR = R6Class("FilterMRMR", inherit = Filter,
4747
task_type = task_type,
4848
param_set = param_set,
4949
feature_types = feature_types,
50-
packages = packages
50+
packages = packages,
51+
man = "mlr3filters::mlr_filters_mrmr"
5152
)
5253
}
5354
),

R/FilterNJMIM.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ FilterNJMIM = R6Class("FilterNJMIM", inherit = Filter,
4747
task_type = task_type,
4848
param_set = param_set,
4949
feature_types = feature_types,
50-
packages = packages
50+
packages = packages,
51+
man = "mlr3filters::mlr_filters_njmim"
5152
)
5253
}
5354
),

R/FilterPerformance.R

+5-7
Original file line numberDiff line numberDiff line change
@@ -46,29 +46,27 @@ FilterPerformance = R6Class("FilterPerformance", inherit = Filter,
4646
#' [mlr3::Resampling] to be used within resampling.
4747
#' @param measure ([mlr3::Measure])\cr
4848
#' [mlr3::Measure] to be used for evaluating the performance.
49-
#' @param packages (`character()`)\cr
50-
#' Set of required packages.
51-
#' Note that these packages will be loaded via [requireNamespace()], and
52-
#' are not attached.
5349
initialize = function(id = "performance",
5450
task_type = learner$task_type,
5551
param_set = learner$param_set,
5652
feature_types = learner$feature_types,
5753
learner = mlr3::lrn("classif.rpart"),
5854
resampling = mlr3::rsmp("holdout"),
59-
measure = mlr3::msr("classif.ce"),
60-
packages = learner$packages) {
55+
measure = mlr3::msr("classif.ce")) {
6156

6257
self$learner = learner = assert_learner(as_learner(learner, clone = TRUE),
6358
properties = "importance")
6459
self$resampling = assert_resampling(as_resampling(resampling))
6560
self$measure = assert_measure(as_measure(measure,
6661
task_type = learner$task_type, clone = TRUE), learner = learner)
62+
packages = unique(c(self$learner$packages, self$measure$packages))
6763

6864
super$initialize(
6965
id = id,
7066
task_type = task_type,
71-
feature_types = feature_types
67+
feature_types = feature_types,
68+
packages = packages,
69+
man = "mlr3filters::mlr_filters_performance"
7270
)
7371
}
7472
),

R/FilterVariance.R

+2-1
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,8 @@ FilterVariance = R6Class("FilterVariance", inherit = Filter,
4747
task_type = task_type,
4848
param_set = param_set,
4949
feature_types = feature_types,
50-
packages = packages
50+
packages = packages,
51+
man = "mlr3filters::mlr_filters_variance"
5152
)
5253
self$param_set$values = list(na.rm = TRUE)
5354
}

codemeta.json

+5-5
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@
1414
],
1515
"issueTracker": "https://github.com/mlr-org/mlr3filters/issues",
1616
"license": "https://spdx.org/licenses/LGPL-3.0",
17-
"version": "0.1.1.9002",
17+
"version": "0.2.0.9000",
1818
"programmingLanguage": {
1919
"@type": "ComputerLanguage",
2020
"name": "R",
21-
"version": "3.6.2",
21+
"version": "3.6.3",
2222
"url": "https://r-project.org"
2323
},
24-
"runtimePlatform": "R version 3.6.2 (2019-12-12)",
24+
"runtimePlatform": "R version 3.6.3 Patched (2020-02-29 r77919)",
2525
"provider": {
2626
"@id": "https://cran.r-project.org",
2727
"@type": "Organization",
@@ -226,7 +226,7 @@
226226
"@type": "SoftwareApplication",
227227
"identifier": "mlr3",
228228
"name": "mlr3",
229-
"version": ">= 0.1.2",
229+
"version": ">= 0.1.8",
230230
"provider": {
231231
"@id": "https://cran.r-project.org",
232232
"@type": "Organization",
@@ -274,7 +274,7 @@
274274
],
275275
"releaseNotes": "https://github.com/mlr-org/mlr3filters/blob/master/NEWS.md",
276276
"readme": "https://github.com/mlr-org/mlr3filters/blob/master/README.md",
277-
"fileSize": "22.613KB",
277+
"fileSize": "23.59KB",
278278
"contIntegration": "https://codecov.io/github/mlr-org/mlr3filters?branch=master",
279279
"keywords": [
280280
"filter",

0 commit comments

Comments
 (0)