Skip to contents

A grid of coloured tiles is drawn. There is one column for each sample and one row for each cross-validation result.

Usage

# S4 method for ClassifyResult
samplesMetricMap(results, ...)

# S4 method for list
samplesMetricMap(
  results,
  comparison = "auto",
  metric = "auto",
  featureValues = NULL,
  featureName = NULL,
  metricColours = list(c("#FFFFFF", "#CFD1F2", "#9FA3E5", "#6F75D8", "#3F48CC"),
    c("#FFFFFF", "#E1BFC4", "#C37F8A", "#A53F4F", "#880015")),
  classColours = c("#3F48CC", "#880015"),
  groupColours = c("darkgreen", "yellow2"),
  fontSizes = c(24, 16, 12, 12, 12),
  mapHeight = 4,
  title = "auto",
  showLegends = TRUE,
  xAxisLabel = "Sample Name",
  showXtickLabels = TRUE,
  yAxisLabel = "Analysis",
  showYtickLabels = TRUE,
  legendSize = grid::unit(1, "lines")
)

# S4 method for matrix
samplesMetricMap(
  results,
  classes,
  metric = c("Sample Error", "Sample Accuracy"),
  featureValues = NULL,
  featureName = NULL,
  metricColours = list(c("#3F48CC", "#6F75D8", "#9FA3E5", "#CFD1F2", "#FFFFFF"),
    c("#880015", "#A53F4F", "#C37F8A", "#E1BFC4", "#FFFFFF")),
  classColours = c("#3F48CC", "#880015"),
  groupColours = c("darkgreen", "yellow2"),
  fontSizes = c(24, 16, 12, 12, 12),
  mapHeight = 4,
  title = "Error Comparison",
  showLegends = TRUE,
  xAxisLabel = "Sample Name",
  showXtickLabels = TRUE,
  yAxisLabel = "Analysis",
  showYtickLabels = TRUE,
  legendSize = grid::unit(1, "lines")
)

Arguments

results

A list of ClassifyResult objects. Could also be a matrix of pre-calculated metrics, for backwards compatibility.

...

Parameters not used by the ClassifyResult method that does list-packaging but used by the main list method.

comparison

Default: "auto". The aspect of the experimental design to compare. Can be any characteristic that all results share.

metric

Default: "auto". The name of the performance measure or "auto". If the results are classification then sample accuracy will be displayed. Otherwise, the results would be survival risk predictions and then a sample C-index will be displayed. Valid values are "Sample Error", "Sample Error" or "Sample C-index". If the metric is not stored in the results list, the performance metric will be calculated automatically.

featureValues

If not NULL, can be a named factor or named numeric vector specifying some variable of interest to plot above the heatmap.

featureName

A label describing the information in featureValues. It must be specified if featureValues is.

metricColours

If the outcome is categorical, a list of vectors of colours for metric levels for each class. If the outcome is numeric, such as a risk score, then a single vector of colours for the metric levels for all samples.

classColours

Either a vector of colours for class levels if both classes should have same colour, or a list of length 2, with each component being a vector of the same length. The vector has the colour gradient for each class.

groupColours

A vector of colours for group levels. Only useful if featureValues is not NULL.

fontSizes

A vector of length 5. The first number is the size of the title. The second number is the size of the axes titles. The third number is the size of the axes values. The fourth number is the size of the legends' titles. The fifth number is the font size of the legend labels.

mapHeight

Height of the map, relative to the height of the class colour bar.

title

The title to place above the plot.

showLegends

Logical. IF FALSE, the legend is not drawn.

xAxisLabel

The name plotted for the x-axis. NULL suppresses label.

showXtickLabels

Logical. IF FALSE, the x-axis labels are hidden.

yAxisLabel

The name plotted for the y-axis. NULL suppresses label.

showYtickLabels

Logical. IF FALSE, the y-axis labels are hidden.

legendSize

The size of the boxes in the legends.

classes

If results is a matrix, this is a factor vector of the same length as the number of columns that results has.

Value

A grob is returned that can be drawn on a graphics device.

Details

The names of results determine the row names that will be in the plot. The length of metricColours determines how many bins the metric values will be discretised to.

Author

Dario Strbenac

Examples


  predicted <- DataFrame(sample = LETTERS[sample(10, 100, replace = TRUE)],
                          class = rep(c("Healthy", "Cancer"), each = 50))
  actual <- factor(rep(c("Healthy", "Cancer"), each = 5), levels = c("Healthy", "Cancer"))
  features <- sapply(1:100, function(index) paste(sample(LETTERS, 3), collapse = ''))
  result1 <- ClassifyResult(DataFrame(characteristic = c("Data Set", "Selection Name", "Classifier Name",
                                                         "Cross-validation"),
                            value = c("Example", "t-test", "Differential Expression", "2 Permutations, 2 Folds")),
                            LETTERS[1:10], features, list(1:100), list(sample(10, 10)),
                            list(function(oracle){}), NULL, predicted, actual)
  predicted[, "class"] <- sample(predicted[, "class"])
  result2 <- ClassifyResult(DataFrame(characteristic = c("Data Set", "Selection Name", "Classifier Name",
                                                         "Cross-validation"),
                            value = c("Example", "Bartlett Test", "Differential Variability", "2 Permutations, 2 Folds")),
                            LETTERS[1:10], features, list(1:100), list(sample(10, 10)),
                            list(function(oracle){}), NULL, predicted, actual)
  result1 <- calcCVperformance(result1)
  result2 <- calcCVperformance(result2)
  groups <- factor(rep(c("Male", "Female"), length.out = 10))
  names(groups) <- LETTERS[1:10]
  cholesterol <- c(4.0, 5.5, 3.9, 4.9, 5.7, 7.1, 7.9, 8.0, 8.5, 7.2)
  names(cholesterol) <- LETTERS[1:10]
  
  wholePlot <- samplesMetricMap(list(Gene = result1, Protein = result2))
#> Warning: Sample Accuracy not found in all elements of results. Calculating it now.
#> Warning: Removed 2 rows containing missing values (`geom_tile()`).
  wholePlot <- samplesMetricMap(list(Gene = result1, Protein = result2),
                                featureValues = groups, featureName = "Gender")
#> Warning: Sample Accuracy not found in all elements of results. Calculating it now.
#> Warning: Removed 2 rows containing missing values (`geom_tile()`).
#> Warning: Removed 2 rows containing missing values (`geom_tile()`).
  wholePlot <- samplesMetricMap(list(Gene = result1, Protein = result2),
                                featureValues = cholesterol, featureName = "Cholesterol")                                
#> Warning: Sample Accuracy not found in all elements of results. Calculating it now.
#> Warning: Removed 2 rows containing missing values (`geom_tile()`).