Title: | iSEE Universe |
---|---|
Description: | iSEEu (the iSEE universe) contains diverse functionality to extend the usage of the iSEE package, including additional classes for the panels, or modes allowing easy configuration of iSEE applications. |
Authors: | Kevin Rue-Albrecht [aut, cre] , Charlotte Soneson [aut] , Federico Marini [aut] , Aaron Lun [aut] , Michael Stadler [ctb] |
Maintainer: | Kevin Rue-Albrecht <[email protected]> |
License: | MIT + file LICENSE |
Version: | 1.19.0 |
Built: | 2024-12-19 03:41:44 UTC |
Source: | https://github.com/bioc/iSEEu |
Implements an aggregated dot plot where each feature/group combination is represented by a dot. The color of the dot scales with the mean assay value across all samples for a given group, while the size of the dot scales with the proportion of non-zero values across samples in that group.
The following slots control the choice of features:
CustomRows
, a logical scalar indicating whether custom rows in CustomRowsText
should be used.
If TRUE
, the feature identities are extracted from the CustomRowsText
slot;
otherwise they are defined from a transmitted row selection.
Defaults to TRUE
.
CustomRowsText
, a string containing the names of the features of interest,
typically corresponding to the row names of the SummarizedExperiment.
Names should be new-line separated within this string.
Defaults to the name of the first row in the SummarizedExperiment.
The following slots control the specification of groups:
ColumnDataLabel
, a string specifying the name of the colData
field to use to group cells.
The chosen field should correspond to a categorical factor.
Defaults to the first categorical field.
ColumnDataFacet
, a string specifying the name of the colData
field to use for faceting.
The chosen field should correspond to a categorical factor.
Defaults to "---"
, i.e., no faceting.
The following slots control the choice of assay values:
Assay
, a string specifying the name of the assay containing continuous values,
to use for calculating the mean and the proportion of non-zero values.
Defaults to the first valid assay name.
The following slots control the visualization parameters:
VisualBoxOpen
, a logical scalar indicating whether the visual parameter box should be open on initialization.
Defaults to FALSE
.
VisualChoices
, a character vector specifying the visualization options to show.
Defaults to "Color"
but can also include "Transform"
and "Legend"
.
The following slots control the transformation of the mean values:
MeanNonZeroes
, a logical scalar indicating whether the mean should only be computed over non-zero values.
Defaults to FALSE
.
Center
, a logical scalar indicating whether the means for each feature should be centered across all groups.
Defaults to FALSE
.
Scale
, a logical scalar indicating whether the standard deviation for each feature across all groups should be scaled to unity.
Defaults to FALSE
.
The following slots control the color:
UseCustomColormap
, a logical scalar indicating whether to use a custom color scale.
Defaults to FALSE
, in which case the application-wide color scale defined by ExperimentColorMap
is used.
CustomColorLow
, a string specifying the low color (i.e., at an average of zero) for a custom scale.
Defaults to "grey"
.
CustomColorHigh
, a string specifying the high color for a custom scale.
Defaults to "red"
.
CenteredColormap
, a string specifying the divergent colormap to use when Center
is TRUE
.
Defaults to "blue < grey < orange"
; other choices are "purple < black < yellow"
, "blue < grey < red"
and "green < grey < red"
.
In addition, this class inherits all slots from its parent Panel class.
AggregatedDotPlot(...)
creates an instance of a AggregatedDotPlot class,
where any slot and its value can be passed to ...
as a named argument.
In the following code snippets, x
is an instance of an AggregatedDotPlot class.
Refer to the documentation for each method for more details on the remaining arguments.
For setting up data values:
.cacheCommonInfo(x)
adds a "AggregatedDotPlot"
entry
containing continuous.assay.names
and discrete.colData.names
.
.refineParameters(x, se)
returns x
after setting "Assay"
,
"ColumnDataLabel"
and "ColumnDataFacet"
to valid values.
If continuous assays or discrete colData
variables are not available, NULL
is returned instead.
For defining the interface:
.defineInterface(x, se, select_info)
creates an interface to modify the various parameters in the slots,
mostly by calling the parent method and adding another visualization parameter box.
.defineDataInterface(x, se, select_info)
creates an interface to modify the data-related parameters,
i.e., those that affect the position of the points.
.defineOutput(x)
defines the output HTML element.
.panelColor(x)
will return the specified default color for this panel class.
.fullName(x)
will return "Aggregated dot plot"
.
.hideInterface(x)
will return TRUE
for UI elements related to multiple row selections.
For monitoring reactive expressions:
.createObservers(x, se, input, session, pObjects, rObjects)
will create all relevant observers for the UI elements.
For generating output:
.generateOutput(x, se, all_memory, all_contents)
will return the aggregated dot plot as a ggplot object,
along with the commands used for its creation.
.renderOutput(x, se, output, pObjects, rObjects)
will render the aggregated dot plot onto the interface.
.exportOutput(x, se, all_memory, all_contents)
will save the aggregated dot plot to a PDF file named after x
,
returning the path to the new file.
For providing documentation:
.definePanelTour(x)
will return a data.frame to be used in rintrojs as a panel-specific tour.
Aaron Lun
Panel, for the immediate parent class.
ComplexHeatmapPlot, for another panel with multi-row visualization capability.
library(scRNAseq) # Example data ---- sce <- ReprocessedAllenData(assays="tophat_counts") class(sce) library(scater) sce <- logNormCounts(sce, exprs_values="tophat_counts") # launch the app itself ---- if (interactive()) { iSEE(sce, initial=list( AggregatedDotPlot(ColumnDataLabel="Primary.Type") )) }
library(scRNAseq) # Example data ---- sce <- ReprocessedAllenData(assays="tophat_counts") class(sce) library(scater) sce <- logNormCounts(sce, exprs_values="tophat_counts") # launch the app itself ---- if (interactive()) { iSEE(sce, initial=list( AggregatedDotPlot(ColumnDataLabel="Primary.Type") )) }
Create the commands required to populate FeatureSetTables with commonly used gene sets.
createGeneSetCommands( collections = c("GO", "KEGG"), organism = "org.Hs.eg.db", identifier = "ENTREZID" )
createGeneSetCommands( collections = c("GO", "KEGG"), organism = "org.Hs.eg.db", identifier = "ENTREZID" )
collections |
Character vectors specifying the gene set collections of interest. |
organism |
String containing the org.*.eg.db package to use to extract mappings of gene sets to gene IDs. |
identifier |
String specifying the identifier to use to extract IDs for the organism package. |
GO terms are extracted using the "GOALL"
mode,
which extracts both direct and indirect children of each term.
A description for each GO term is extracted using the GO.db package.
Mappings of genes to KEGG pathway are extracted from the organism package using the "PATH"
term.
Unfortunately, this is not up to date due to the licensing around KEGG terms.
Descriptions for each pathway are extracted from http://rest.kegg.jp/list/pathway.
The output of this function can be used as the commands
argument of registerFeatureSetCommands
.
It is also used by default in the FeatureSetTable
constructor when no collections are registered.
A list of two character vectors describing how to create collections and retrieve gene sets.
This follows the expectations for commands
in registerFeatureSetCommands
.
Aaron Lun
FeatureSetTable, where the commands are intended for use.
registerFeatureSetCommands
, to use the commands globally.
out <- createGeneSetCommands() cat(out$collections['GO'], "\n") cat(out$sets['GO'], "\n")
out <- createGeneSetCommands() cat(out$collections['GO'], "\n") cat(out$sets['GO'], "\n")
Pretty much as it says here. These functions are all defunct and should not be used.
.getAcceptablePValueFields(...) .getAcceptableAveAbFields(...) .getAcceptableLogFCFields(...) .setAcceptablePValueFields(...) .setAcceptableAveAbFields(...) .setAcceptableLogFCFields(...)
.getAcceptablePValueFields(...) .getAcceptableAveAbFields(...) .getAcceptableLogFCFields(...) .setAcceptablePValueFields(...) .setAcceptableAveAbFields(...) .setAcceptableLogFCFields(...)
... |
Ignored. |
All functions error out with a defunct message pointing towards its replacement (if available).
Aaron Lun
A table that dynamically identifies marker genes for a selected subset of samples. Comparisons are made between the active selection in the transmitting panel and (i) all non-selected points, if no saved selections are available; or (ii) each subset of points in each saved selection.
The following slots control the test procedure:
LogFC
, a numeric scalar indicating the log-fold change threshold to test against.
Defaults to zero.
TestMethod
, string indicating the test to use (based on the findMarkers
function from scran).
This can be "t"
(default), "wilcox"
or "binom"
.
Assay
, string indicating the assay to use for testing.
Defaults to the first named assay in the SummarizedExperiment.
The following slots control the rendered table:
ExtraFields
, a character vector containing names of rowData
columns to be included in the table.
Set to the output of getTableExtraFields
.
This cannot be changed once the application starts.
In addition, this class inherits all slots from its parent RowTable, Table and Panel classes.
DynamicMarkerTable(...)
creates an instance of a DynamicMarkerTable class,
where any slot and its value can be passed to ...
as a named argument.
In the following code snippets, x
is an instance of a DynamicMarkerTable class.
Refer to the documentation for each method for more details on the remaining arguments.
For setting up data values:
.cacheCommonInfo(x)
adds a "DynamicMarkerTable"
entry
containing valid.assay.names
and valid.rowdata.names
.
This will also call the equivalent RowTable method.
.refineParameters(x, se)
returns x
after setting "Assay"
to the first valid value.
This will also call the equivalent RowTable method for further refinements to x
.
If valid assay names are not available, NULL
is returned instead.
Any "ExtraFields"
are intersected with the valid rowData
names.
For defining the interface:
.defineDataInterface(x, se, select_info)
returns a list of interface elements for manipulating all slots described above.
.panelColor(x)
will return the specified default color for this panel class.
.fullName(x)
will return "Dynamic marker table"
.
.hideInterface(x)
will return TRUE
for UI elements related to multiple row selections,
otherwise calling the method for RowTable.
For monitoring reactive expressions:
.createObservers(x, se, input, session, pObjects, rObjects)
sets up observers for all new slots described above, as well as in the parent classes via the RowTable method.
For creating the table:
.generateTable(x, envir)
will create a data.frame of newly computed statistics in envir
.
The method will return the commands required to do so.
For documentation:
.definePanelTour(x)
returns an data.frame containing the steps of a panel-specific tour.
library(scRNAseq) library(scater) sce <- ReprocessedAllenData(assays="tophat_counts") sce <- logNormCounts(sce, exprs_values="tophat_counts") sce <- runPCA(sce, ncomponents=4) sce <- runTSNE(sce) dst <- DynamicMarkerTable(PanelId=1L, PanelWidth=8L, ColumnSelectionSource="ReducedDimensionPlot1") rdp <- ReducedDimensionPlot(PanelId=1L, ColorByFeatureSource="DynamicMarkerTable1") if (interactive()) { iSEE(sce, initial=list(rdp, dst)) }
library(scRNAseq) library(scater) sce <- ReprocessedAllenData(assays="tophat_counts") sce <- logNormCounts(sce, exprs_values="tophat_counts") sce <- runPCA(sce, ncomponents=4) sce <- runTSNE(sce) dst <- DynamicMarkerTable(PanelId=1L, PanelWidth=8L, ColumnSelectionSource="ReducedDimensionPlot1") rdp <- ReducedDimensionPlot(PanelId=1L, ColorByFeatureSource="DynamicMarkerTable1") if (interactive()) { iSEE(sce, initial=list(rdp, dst)) }
A dimensionality reduction plot that dynamically recomputes the coordinates for the samples, based on the selected subset of samples (and possibly features) in transmitting panels. All samples in active and saved multiple selections are used here.
The following slots control the thresholds used in the visualization:
Type
, a string specifying the type of dimensionality reduction method to use.
This can be "PCA"
(default), "TSNE"
or "UMAP"
,
which uses the relevant functions from the scater package.
NGenes
, an integer scalar specifying the number of highly variable genes to use in the dimensionality reduction.
Only used if an explicit selection of features is not made in the app.
Defaults to 1000.
Assay
, string indicating the assay to use for the calculations.
Defaults to the first named assay in the SummarizedExperiment.
In addition, this class inherits all slots from its parent ColumnDotPlot, DotPlot and Panel classes.
DynamicReducedDimensionPlot(...)
creates an instance of a DynamicReducedDimensionPlot class,
where any slot and its value can be passed to ...
as a named argument.
In the following code snippets, x
is an instance of a DynamicReducedDimensionPlot class.
Refer to the documentation for each method for more details on the remaining arguments.
For setting up data values:
.cacheCommonInfo(x)
adds a "DynamicReducedDimensionPlot"
entry containing valid.assay.names
.
This will also call the equivalent ColumnDotPlot method.
.refineParameters(x, se)
returns x
after setting "Assay"
to the first valid value.
This will also call the equivalent ColumnDotPlot method for further refinements to x
.
If valid assay names are not available, NULL
is returned instead.
For defining the interface:
.defineDataInterface(x, se, select_info)
returns a list of interface elements for manipulating all slots described above.
.panelColor(x)
will return the specified default color for this panel class.
.fullName(x)
will return "Dynamic reduced dimension plot"
.
For monitoring reactive expressions:
.createObservers(x, se, input, session, pObjects, rObjects)
sets up observers for all new slots described above, as well as in the parent classes via the ColumnDotPlot method.
For creating the plot:
.generateDotPlotData(x, envir)
will create a data.frame of newly computed coordinates in envir
.
The method will return the commands required to do so as well as a list of labels.
For handling multiple selections:
.multiSelectionInvalidated(x)
will always return TRUE
,
as any change in the upstream selection of points will alter the coordinates and invalidate any brush/lasso on x
.
For documentation:
.definePanelTour(x)
returns an data.frame containing the steps of a panel-specific tour.
Aaron Lun
library(scRNAseq) library(scater) sce <- ReprocessedAllenData(assays="tophat_counts") sce <- logNormCounts(sce, exprs_values="tophat_counts") sce <- runPCA(sce, ncomponents=4) sce <- runTSNE(sce) drdp <- DynamicReducedDimensionPlot(PanelId=1L, Assay="logcounts", ColumnSelectionSource="ReducedDimensionPlot1") if (interactive()) { iSEE(sce, initial=list(ReducedDimensionPlot(PanelId=1L), drdp)) }
library(scRNAseq) library(scater) sce <- ReprocessedAllenData(assays="tophat_counts") sce <- logNormCounts(sce, exprs_values="tophat_counts") sce <- runPCA(sce, ncomponents=4) sce <- runTSNE(sce) drdp <- DynamicReducedDimensionPlot(PanelId=1L, Assay="logcounts", ColumnSelectionSource="ReducedDimensionPlot1") if (interactive()) { iSEE(sce, initial=list(ReducedDimensionPlot(PanelId=1L), drdp)) }
A table where each row is itself a feature set and can be clicked to transmit a multiple feature selection to another panel.
This relies on feature set collections that have been registered in the input SummarizedExperiment,
see registerFeatureSetCollections
for more details.
If no collections have been registered, we default to the GO and KEGG collections from createGeneSetCommands
.
The following slots control the feature sets in use:
Collection
, string specifying the type of feature set collection to show.
Defaults to the first registered collection in the SummarizedExperiment.
The following slots control the table selections:
Selected
, a string containing the name of the currently selected gene set.
Defaults to ""
, i.e., no selection.
Search
, a string containing the regular expression for the global search.
Defaults to ""
, i.e., no search.
SearchColumns
, a character vector where each entry contains the search string for each column.
Defaults to an empty character vector, i.e., no search.
In addition, this class inherits all slots from its parent Panel class.
FeatureSetTable(...)
creates an instance of a FeatureSetTable class,
where any slot and its value can be passed to ...
as a named argument.
In the following code snippets, x
is an instance of a FeatureSetTable class.
Refer to the documentation for each method for more details on the remaining arguments.
For setting up data values:
.cacheCommonInfo(x)
adds a "FeatureSetTable"
entry containing available.sets
, a named list of DataFrames containing information about the individual gene sets for each collection.
This will also call the equivalent Panel method.
.refineParameters(x, se)
replaces NA
values in Collection
with the first valid collection.
It also replaces NA
values for Selected
with the first valid set in the chosen collection.
This will also call the equivalent Panel method.
For defining the interface:
.defineDataInterface(x, se, select_info)
returns a list of interface elements for manipulating all slots described above.
.panelColor(x)
will return the specified default color for this panel class.
.fullName(x)
will return "Gene set table"
.
.hideInterface(x)
will return TRUE
for UI elements related to multiple selections,
otherwise calling the method for Panel.
.defineOutput(x)
will return a HTML element containing a datatable
widget.
For monitoring reactive expressions:
.createObservers(x, se, input, session, pObjects, rObjects)
sets up observers for all new slots described above, as well as in the parent classes via the Panel method.
For creating the table:
.generateOutput(x, envir)
will create a data.frame of gene set descriptions in envir
.
It will also return the commands required to do so and the name of the variable corresponding to said data.frame.
.renderOutput(x, se, ..., output, pObjects, rObjects)
will add a datatable
widget to the output,
which is used to render the aforementioned data.frame.
For controlling the multiple selections:
.multiSelectionDimension(x)
returns "row"
.
.multiSelectionCommands(x, index)
returns a string specifying the commands to be used to extract the identities of the genes in the currently selected set.
index
is ignored.
.multiSelectionActive(x)
returns the name of the currently selected gene set,
unless no selection is made, in which case NULL
is returned.
.multiSelectionClear(x)
returns x
but with the Selected
slot replaced by an empty string.
.multiSelectionAvailable(x, contents)
returns contents$available
,
which is set to the number of features in se
.
For documentation:
.definePanelTour(x)
returns an data.frame containing the steps of a panel-specific tour.
Aaron Lun
library(scRNAseq) sce <- LunSpikeInData(location=FALSE) library(scater) sce <- logNormCounts(sce) library(scran) rowData(sce) <- cbind(rowData(sce), modelGeneVarWithSpikes(sce, "ERCC")) cmds <- createGeneSetCommands(collections="GO", organism="org.Mm.eg.db", identifier="ENSEMBL") sce <- registerFeatureSetCommands(sce, cmds) # Setting up the application. gst <- FeatureSetTable(PanelId=1L) rdp <- RowDataPlot(RowSelectionSource="FeatureSetTable1", ColorBy="Row selection", XAxis="Row data", XAxisRowData="mean", YAxis="total") rdt <- RowDataTable(RowSelectionSource="FeatureSetTable1") if (interactive()) { iSEE(sce, initial=list(gst, rdp, rdt)) }
library(scRNAseq) sce <- LunSpikeInData(location=FALSE) library(scater) sce <- logNormCounts(sce) library(scran) rowData(sce) <- cbind(rowData(sce), modelGeneVarWithSpikes(sce, "ERCC")) cmds <- createGeneSetCommands(collections="GO", organism="org.Mm.eg.db", identifier="ENSEMBL") sce <- registerFeatureSetCommands(sce, cmds) # Setting up the application. gst <- FeatureSetTable(PanelId=1L) rdp <- RowDataPlot(RowSelectionSource="FeatureSetTable1", ColorBy="Row selection", XAxis="Row data", XAxisRowData="mean", YAxis="total") rdt <- RowDataTable(RowSelectionSource="FeatureSetTable1") if (interactive()) { iSEE(sce, initial=list(gst, rdp, rdt)) }
A table where each row is a gene set and can be clicked to transmit a multiple feature selection to another panel. This has been deprecated in favor of the simpler FeatureSetTable.
The following slots control the type of gene sets to show:
Type
, string specifying the type of gene set collection to show.
Defaults to "GO"
.
The following slots control the table selections:
Selected
, a string containing the name of the currently selected gene set.
Defaults to ""
, i.e., no selection.
Search
, a string containing the regular expression for the global search.
Defaults to ""
, i.e., no search.
SearchColumns
, a character vector where each entry contains the search string for each column.
Defaults to an empty character vector, i.e., no search.
In addition, this class inherits all slots from its parent Panel class.
GeneSetTable(...)
creates an instance of a GeneSetTable class,
where any slot and its value can be passed to ...
as a named argument.
In the following code snippets, x
is an instance of a GeneSetTable class.
Refer to the documentation for each method for more details on the remaining arguments.
For defining the interface:
.defineDataInterface(x, se, select_info)
returns a list of interface elements for manipulating all slots described above.
.panelColor(x)
will return the specified default color for this panel class.
.fullName(x)
will return "Gene set table"
.
.hideInterface(x)
will return TRUE
for UI elements related to multiple selections,
otherwise calling the method for Panel.
.defineOutput(x)
will return a HTML element containing a datatable
widget.
For monitoring reactive expressions:
.createObservers(x, se, input, session, pObjects, rObjects)
sets up observers for all new slots described above, as well as in the parent classes via the Panel method.
For creating the table:
.generateOutput(x, envir)
will create a data.frame of gene set descriptions in envir
,
based on the mode="show"
output of .getGeneSetCommands
.
It will also return the commands required to do so and the name of the variable corresponding to said data.frame.
.renderOutput(x, se, ..., output, pObjects, rObjects)
will add a datatable
widget to the output,
which is used to render the aforementioned data.frame.
For controlling the multiple selections:
.multiSelectionDimension(x)
returns "row"
.
.multiSelectionCommands(x, index)
returns a string specifying the commands to be used to extract the identities of the genes in the currently selected set, based on the mode="extract"
output of .getGeneSetCommands
.
index
is ignored.
.multiSelectionActive(x)
returns the name of the currently selected gene set,
unless no selection is made, in which case NULL
is returned.
.multiSelectionClear(x)
returns x
but with the Selected
slot replaced by an empty string.
.multiSelectionAvailable(x, contents)
returns contents$available
,
which is set to the number of features in se
.
Aaron Lun
library(scRNAseq) sce <- LunSpikeInData(location=FALSE) library(scater) sce <- logNormCounts(sce) library(scran) rowData(sce) <- cbind(rowData(sce), modelGeneVarWithSpikes(sce, "ERCC")) # This defaults to 'org.Hs.eg.db' with 'ENTREZID'. .setOrganism("org.Mm.eg.db") .setIdentifierType("ENSEMBL") gst <- GeneSetTable(PanelId=1L) rdp <- RowDataPlot(RowSelectionSource="GeneSetTable1", ColorBy="Row selection", XAxis="Row data", XAxisRowData="mean", YAxis="total") rdt <- RowDataTable(RowSelectionSource="GeneSetTable1") if (interactive()) { iSEE(sce, initial=list(gst, rdp, rdt)) }
library(scRNAseq) sce <- LunSpikeInData(location=FALSE) library(scater) sce <- logNormCounts(sce) library(scran) rowData(sce) <- cbind(rowData(sce), modelGeneVarWithSpikes(sce, "ERCC")) # This defaults to 'org.Hs.eg.db' with 'ENTREZID'. .setOrganism("org.Mm.eg.db") .setIdentifierType("ENSEMBL") gst <- GeneSetTable(PanelId=1L) rdp <- RowDataPlot(RowSelectionSource="GeneSetTable1", ColorBy="Row selection", XAxis="Row data", XAxisRowData="mean", YAxis="total") rdt <- RowDataTable(RowSelectionSource="GeneSetTable1") if (interactive()) { iSEE(sce, initial=list(gst, rdp, rdt)) }
Get or set patterns for acceptable names of rowData
columns related to a differential expression analysis.
These functions are deprecated; use their counterparts in ?"registerPValuePatterns"
instead.
getPValuePattern() getLogFCPattern() getAveAbPattern() setPValuePattern(value) setLogFCPattern(value) setAveAbPattern(value)
getPValuePattern() getLogFCPattern() getAveAbPattern() setPValuePattern(value) setLogFCPattern(value) setAveAbPattern(value)
value |
A character vector containing the acceptable prefixes for each statistic. |
These utilities allow users to easily get and set the patterns of acceptable fields in all
VolcanoPlots, MAPlots and LogFCLogFCPlots at once.
Any global settings only take effect (i) during setup of the iSEE
application
and (ii) if the first panel of each class does not have existing values in the
"PValueFields"
, "LogFCFields"
or "AveAbFields"
slots (which take precedence if present).
Each of these global settings are treated as patterns for partial matching.
For the "PValue"
pattern, columns with the names "PValue.X"
and "X.PValue"
will be considered acceptable matches.
All partial matching must be exact - regular expressions are not supported.
getPValuePattern
returns the patterns for acceptable column names for p-values.
getLogFCPattern
returns the patterns for acceptable column names for log-fold changes.
getAveAbPattern
returns the patterns for acceptable column names for the average abundances.
The corresponding setters set the global parts for each statistic and return NULL
invisibly.
Aaron Lun
VolcanoPlot, MAPlot and LogFCLogFCPlot, which are affected by these globals.
old <- getPValuePattern() setPValuePattern(LETTERS) getPValuePattern() setPValuePattern(old)
old <- getPValuePattern() setPValuePattern(LETTERS) getPValuePattern() setPValuePattern(old)
Get or set the names of the extra fields to include in a table.
getTableExtraFields() setTableExtraFields(value)
getTableExtraFields() setTableExtraFields(value)
value |
A character vector containing the names of extra fields to include. |
These utilities allow users to easily set the feature set commands for all DynamicMarkerTables at once.
Any global settings only take effect (i) during setup of the iSEE
application
and (ii) if the first DynamicMarkerTable does not have an existing values in the "TableExtraFields"
slots.
getTableExtraFields
returns the current global extra table fields.
setTableExtraFields
will set the current global extra table fields and return NULL
invisibly.
Aaron Lun
old <- getTableExtraFields() setTableExtraFields(LETTERS) getTableExtraFields() setTableExtraFields(old)
old <- getTableExtraFields() setTableExtraFields(LETTERS) getTableExtraFields() setTableExtraFields(old)
The LogFCLogFCPlot is a RowDataPlot subclass that is dedicated to creating a scatter plot of two log-fold changes. Each axis contains the log-fold change for a differential expression analysis and each point represents a feature.
The following slots control the thresholds used in the visualization:
XPValueField
, a string specifying the field of rowData
containing the p-values for the x-axis comparison.
YPValueField
, a string specifying the field of rowData
containing the p-values for the y-axis comparison.
PValueThreshold
, a numeric scalar in (0, 1] specifying the threshold to use on the (adjusted) p-value.
Defaults to 0.05.
LogFCThreshold
, a non-negative numeric scalar specifying the threshold to use on the log-fold change.
Defaults to 0.
PValueCorrection
, a string specifying the multiple testing correction to apply.
Defaults to "BH"
, but can take any value from p.adjust.methods
.
In addition, this class inherits all slots from its parent RowDataPlot, RowDotPlot, DotPlot and Panel classes.
LogFCLogFCPlot(...)
creates an instance of a LogFCLogFCPlot class,
where any slot and its value can be passed to ...
as a named argument.
Users are expected to load relevant statistics into the rowData
of a SummarizedExperiment.
There should be two columns for the p-values from each comparison - and another two for the corresponding log-fold changes - for each gene/row, see Examples.
The expected column names (and how to tune them) are listed at ?"registerPValueFields"
.
In the following code snippets, x
is an instance of a RowDataPlot class.
Refer to the documentation for each method for more details on the remaining arguments.
For setting up data values:
.cacheCommonInfo(x, se)
returns se
after being loaded with class-specific constants.
This includes "valid.p.fields"
and "valid.lfc.fields"
, character vectors containing the names of valid rowData
columns for the p-values and log-fold changes, respectively.
.refineParameters(x, se)
returns x
after setting XAxis="Row data"
as well as "PValuePattern"
and "LogFCPattern"
to their corresponding cached values.
This will also call the equivalent RowDataPlot method for further refinements to x
.
If valid p-value and log-fold change fields are not available, NULL
is returned instead.
For defining the interface:
.defineDataInterface(x, se, select_info)
returns a list of interface elements for manipulating all slots described above.
.panelColor(x)
will return the specified default color for this panel class.
.allowableXAxisChoices(x, se)
returns a character vector specifying the acceptable log-fold change-related variables in rowData(se)
that can be used as choices for the x-axis.
.allowableYAxisChoices(x, se)
returns a character vector specifying the acceptable log-fold change-related variables in rowData(se)
that can be used as choices for the y-axis.
.hideInterface(x, field)
will return TRUE
for field="XAxis"
,
otherwise it will call the RowDataPlot method.
.fullName(x)
will return "LogFC-logFC plot"
.
For monitoring reactive expressions:
.createObservers(x, se, input, session, pObjects, rObjects)
sets up observers for all new slots described above, as well as in the parent classes via the RowDataPlot method.
For creating the plot:
.generateDotPlotData(x, envir)
will create a data.frame of row metadata variables in envir
.
This contains the two sets of log-fold changes on both axes,
plus an extra field specifying whether or not the feature was considered to be significantly up or down.
The method will return the commands required to do so as well as a list of labels.
.prioritizeDotPlotData(x, envir)
will create variables in envir
marking the priority of points.
Significant features receive higher priority (i.e., are plotted over their non-significant counterparts) and are less aggressively downsampled when Downsample=TRUE
.
The method will return the commands required to do this as well as a logical scalar indicating that rescaling of downsampling resolution is performed.
.colorByNoneDotPlotField(x)
will return a string specifying the field of the data.frame (generated by .generateDotPlotData
) containing the significance information.
This is to be used for coloring when ColorBy="None"
.
.colorByNoneDotPlotScale(x)
will return a string containing a ggplot2 command to add a default color scale when ColorBy="None"
.
.generateDotPlot(x, labels, envir)
returns a list containing plot
and commands
, using the inital ColumnDataPlot ggplot and adding horizontal lines demarcating the log-fold change threshold.
For documentation:
.definePanelTour(x)
returns an data.frame containing the steps of a panel-specific tour.
.getDotPlotColorHelp(x, color_choices)
returns a function that generates an rintrojs tour for the color choice UI.
Aaron Lun
RowDataPlot, for the base class.
# Making up some results: se <- SummarizedExperiment(matrix(rnorm(10000), 1000, 10)) rownames(se) <- paste0("GENE_", seq_len(nrow(se))) rowData(se)$PValue1 <- runif(nrow(se)) rowData(se)$LogFC1 <- rnorm(nrow(se)) rowData(se)$PValue2 <- runif(nrow(se)) rowData(se)$LogFC2 <- rnorm(nrow(se)) if (interactive()) { iSEE(se, initial=list(LogFCLogFCPlot(XAxisRowData="LogFC1", YAxis="LogFC2", XPValueField="PValue1", YPValueField="PValue2"))) }
# Making up some results: se <- SummarizedExperiment(matrix(rnorm(10000), 1000, 10)) rownames(se) <- paste0("GENE_", seq_len(nrow(se))) rowData(se)$PValue1 <- runif(nrow(se)) rowData(se)$LogFC1 <- rnorm(nrow(se)) rowData(se)$PValue2 <- runif(nrow(se)) rowData(se)$LogFC2 <- rnorm(nrow(se)) if (interactive()) { iSEE(se, initial=list(LogFCLogFCPlot(XAxisRowData="LogFC1", YAxis="LogFC2", XPValueField="PValue1", YPValueField="PValue2"))) }
The MAPlot is a RowDataPlot subclass that is dedicated to creating a MA plot. It retrieves the log-fold change and average abundance and creates a row-based plot where each point represents a feature.
The following slots control the thresholds used in the visualization:
PValueField
, a string specifying the field of rowData
containing the p-values.
PValueThreshold
, a numeric scalar in (0, 1] specifying the threshold to use on the (adjusted) p-value.
Defaults to 0.05.
LogFCThreshold
, a non-negative numeric scalar specifying the threshold to use on the log-fold change.
Defaults to 0.
PValueCorrection
, a string specifying the multiple testing correction to apply.
Defaults to "BH"
, but can take any value from p.adjust.methods
.
In addition, this class inherits all slots from its parent RowDataPlot, RowDotPlot, DotPlot and Panel classes.
MAPlot(...)
creates an instance of a MAPlot class,
where any slot and its value can be passed to ...
as a named argument.
Users are expected to load relevant statistics into the rowData
of a SummarizedExperiment.
This panel expects one or more columns containing the p-values, log-fold changes and average abundances for each gene/row - see Examples.
The expected column names (and how to tune them) are listed at ?"registerPValueFields"
.
In the following code snippets, x
is an instance of a RowDataPlot class.
Refer to the documentation for each method for more details on the remaining arguments.
For setting up data values:
.cacheCommonInfo(x, se)
returns se
after being loaded with class-specific constants.
This includes "valid.p.fields"
, "valid.ab.fields"
and "valid.lfc.fields"
, which are character vectors containing the names of valid rowData
columns for the p-values, average abundances and log-fold changes, respectively.
.refineParameters(x, se)
returns x
after setting XAxis="Row data"
and the various *Pattern
fields to their cached values.
This will also call the equivalent RowDataPlot method for further refinements to x
.
If valid p-value, abundance and log-fold change fields are not available, NULL
is returned instead.
For defining the interface:
.defineDataInterface(x, se, select_info)
returns a list of interface elements for manipulating all slots described above.
.panelColor(x)
will return the specified default color for this panel class.
.allowableXAxisChoices(x, se)
returns a character vector specifying the acceptable average abundance-related variables in rowData(se)
that can be used as choices for the x-axis.
.allowableYAxisChoices(x, se)
returns a character vector specifying the acceptable log-fold change-related variables in rowData(se)
that can be used as choices for the y-axis.
.hideInterface(x, field)
will return TRUE
for field="XAxis"
,
otherwise it will call the RowDataPlot method.
.fullName(x)
will return "MA plot"
.
For monitoring reactive expressions:
.createObservers(x, se, input, session, pObjects, rObjects)
sets up observers for all new slots described above, as well as in the parent classes via the RowDataPlot method.
For creating the plot:
.generateDotPlotData(x, envir)
will create a data.frame of row metadata variables in envir
.
This should contain average abundances on the x-axis and log-fold changes on the y-axis,
in addition to an extra field specifying whether or not the feature was considered to be significantly up or down.
The method will return the commands required to do so as well as a list of labels.
.prioritizeDotPlotData(x, envir)
will create variables in envir
marking the priority of points.
Significant features receive higher priority (i.e., are plotted over their non-significant counterparts) and are less aggressively downsampled when Downsample=TRUE
.
The method will return the commands required to do this as well as a logical scalar indicating that rescaling of downsampling resolution is performed.
.colorByNoneDotPlotField(x)
will return a string specifying the field of the data.frame (generated by .generateDotPlotData
) containing the significance information.
This is to be used for coloring when ColorBy="None"
.
.colorByNoneDotPlotScale(x)
will return a string containing a ggplot2 command to add a default color scale when ColorBy="None"
.
.generateDotPlot(x, labels, envir)
returns a list containing plot
and commands
, using the inital ColumnDataPlot ggplot and adding horizontal lines demarcating the log-fold change threshold.
For documentation:
.definePanelTour(x)
returns an data.frame containing the steps of a panel-specific tour.
.getDotPlotColorHelp(x, color_choices)
returns a function that generates an rintrojs tour for the color choice UI.
Aaron Lun
RowDataPlot, for the base class.
# Making up some results: se <- SummarizedExperiment(matrix(rnorm(10000), 1000, 10)) rownames(se) <- paste0("GENE_", seq_len(nrow(se))) rowData(se)$PValue <- runif(nrow(se)) rowData(se)$LogFC <- rnorm(nrow(se)) rowData(se)$AveExpr <- rnorm(nrow(se)) if (interactive()) { iSEE(se, initial=list(MAPlot())) }
# Making up some results: se <- SummarizedExperiment(matrix(rnorm(10000), 1000, 10)) rownames(se) <- paste0("GENE_", seq_len(nrow(se))) rowData(se)$PValue <- runif(nrow(se)) rowData(se)$LogFC <- rnorm(nrow(se)) rowData(se)$AveExpr <- rnorm(nrow(se)) if (interactive()) { iSEE(se, initial=list(MAPlot())) }
The MarkdownBoard class renders user-supplied Markdown into HTML to display inside the app. This is useful for displaying information alongside other panels, or for users to jot down their own notes.
The following slots are relevant to the rendered content:
Content
, a string containing Markdown-formatted text.
This will be rendered to HTML for display inside the app.
In addition, this class inherits all slots from its parent Panel class.
MarkdownBoard(...)
creates an instance of a MarkdownBoard class,
where any slot and its value can be passed to ...
as a named argument.
In the following code snippets, x
is an instance of a RowDataPlot class.
Refer to the documentation for each method for more details on the remaining arguments.
For defining the interface:
.defineDataInterface(x, se, select_info)
returns a list of interface elements for editing the Content
.
.panelColor(x)
will return the specified default color for this panel class.
.hideInterface(x, field)
will return TRUE
for all selection-related parameters.
.fullName(x)
will return "Volcano plot"
.
For monitoring reactive expressions:
.createObservers(x, se, input, session, pObjects, rObjects)
sets up observers for all new slots described above,
as well as in the parent classes via the RowDataPlot method.
For rendering the display:
.defineOutput(x)
will return a UI element to display the HTML.
.renderOutput(x, se, ..., output, pObjects, rObjects)
will add reactive expressions to render the HTML.
.generateOutput(x, se, all_memory, all_contents)
will render the Markdown to HTML via the rmarkdown package,
returning a string containing the rendered content in the text
element of the output list.
The Markdown-formatted content is converted into an R comment for code tracking purposes.
.exportOutput(x, se, all_memory, all_contents)
will create a HTML containing the rendered Markdown, and return a string containing the path to that HTML.
For documentation:
.definePanelTour(x)
returns an data.frame containing the steps of a panel-specific tour.
Not that there's a great deal to say here.
Aaron Lun
Panel, for the base class.
if (interactive()) { iSEE(SummarizedExperiment(), initial=list(MarkdownBoard())) }
if (interactive()) { iSEE(SummarizedExperiment(), initial=list(MarkdownBoard())) }
This mode launches an app that does not display any panel.
modeEmpty(...)
modeEmpty(...)
... |
Arguments passed to |
This mode presents the advantage to launch an interface in a minimal amount of time,
as it does not need to render any panel when the interface is launched.
Users can then use the "Organize panels"
widget to select panels to display in the interface.
A Shiny app object is returned.
example("SingleCellExperiment") rownames(sce) <- paste0("G", 1:200) colnames(sce) <- paste0("C", 1:100) app <- modeEmpty(sce) if (interactive()) { shiny::runApp(app, port=1234) }
example("SingleCellExperiment") rownames(sce) <- paste0("G", 1:200) colnames(sce) <- paste0("C", 1:100) app <- modeEmpty(sce) if (interactive()) { shiny::runApp(app, port=1234) }
This mode launches a Shiny App preconfigured with multiple chain-linked
feature expression plots for interactive data exploration of the
SingleCellExperiment or
SummarizedExperiment
object.
modeGating(se, features, plotAssay = NA_character_, ..., plotWidth = 4)
modeGating(se, features, plotAssay = NA_character_, ..., plotWidth = 4)
se |
An object that coercible to SingleCellExperiment-class |
features |
|
plotAssay |
The assay (one of assayNames(se)) to use for the plots
(character vector of length either 1 or equal to |
... |
Additional arguments passed to |
plotWidth |
The grid width of linked plots (numeric vector of
length either 1 or equal to |
A Shiny app object is returned.
library(scRNAseq) # Example data ---- sce <- ReprocessedAllenData(assays="tophat_counts") class(sce) library(scater) sce <- logNormCounts(sce, exprs_values="tophat_counts") # Select top variable genes ---- plot_count <- 6 rv <- rowVars(assay(sce, "tophat_counts")) top_var <- head(order(rv, decreasing=TRUE), plot_count*2) top_var_genes <- rownames(sce)[top_var] plot_features <- data.frame( x=head(top_var_genes, plot_count), y=tail(top_var_genes, plot_count), stringsAsFactors=FALSE ) # launch the app itself ---- app <- modeGating(sce, features = plot_features) if (interactive()) { shiny::runApp(app, port=1234) }
library(scRNAseq) # Example data ---- sce <- ReprocessedAllenData(assays="tophat_counts") class(sce) library(scater) sce <- logNormCounts(sce, exprs_values="tophat_counts") # Select top variable genes ---- plot_count <- 6 rv <- rowVars(assay(sce, "tophat_counts")) top_var <- head(order(rv, decreasing=TRUE), plot_count*2) top_var_genes <- rownames(sce)[top_var] plot_features <- data.frame( x=head(top_var_genes, plot_count), y=tail(top_var_genes, plot_count), stringsAsFactors=FALSE ) # launch the app itself ---- app <- modeGating(sce, features = plot_features) if (interactive()) { shiny::runApp(app, port=1234) }
This mode launches a Shiny App preconfigured with multiple linked reduced
dimension plots for interactive data exploration of the
SingleCellExperiment
object.
modeReducedDim( se, includeNames = reducedDimNames(se), colorBy = NULL, ..., plotWidth = NULL )
modeReducedDim( se, includeNames = reducedDimNames(se), colorBy = NULL, ..., plotWidth = NULL )
se |
An object that coercible to SingleCellExperiment |
includeNames |
Character vector with the names of reduced dimensions
to display as individual panels. The default uses all available in
|
colorBy |
Character scalar controlling coloring of cells. Must match either
to one of |
... |
Additional arguments passed to |
plotWidth |
The grid width of linked plots (numeric vector of length
either 1 or equal to |
A Shiny app object is returned.
library(scRNAseq) # Example data ---- sce <- ReprocessedAllenData(assays="tophat_counts") class(sce) library(scater) sce <- logNormCounts(sce, exprs_values="tophat_counts") sce <- runPCA(sce, ncomponents = 30) sce <- runTSNE(sce) sce <- runUMAP(sce) reducedDimNames(sce) # launch the app ---- # ... coloring by a column data variable app <- modeReducedDim(sce, colorBy = "Primary.Type") if (interactive()) { shiny::runApp(app, port=1234) } # ... coloring by a feature app <- modeReducedDim(sce, colorBy = "Scnn1a") if (interactive()) { shiny::runApp(app, port=1234) }
library(scRNAseq) # Example data ---- sce <- ReprocessedAllenData(assays="tophat_counts") class(sce) library(scater) sce <- logNormCounts(sce, exprs_values="tophat_counts") sce <- runPCA(sce, ncomponents = 30) sce <- runTSNE(sce) sce <- runUMAP(sce) reducedDimNames(sce) # launch the app ---- # ... coloring by a column data variable app <- modeReducedDim(sce, colorBy = "Primary.Type") if (interactive()) { shiny::runApp(app, port=1234) } # ... coloring by a feature app <- modeReducedDim(sce, colorBy = "Scnn1a") if (interactive()) { shiny::runApp(app, port=1234) }
Register the names of fields containing various DE statistics, to populate the user interface of DE-related Panels.
registerPValueFields(se, fields) registerAveAbFields(se, fields) registerLogFCFields(se, fields) registerPValuePatterns(se, patterns) registerAveAbPatterns(se, patterns) registerLogFCPatterns(se, patterns) getPValueFields(se) getAveAbFields(se) getLogFCFields(se) getPValuePatterns(se, defaults = c("PValue", "p.value", "pval")) getAveAbPatterns(se, defaults = c("AveExpr", "logCPM")) getLogFCPatterns(se, defaults = c("logFC", "LogFC"))
registerPValueFields(se, fields) registerAveAbFields(se, fields) registerLogFCFields(se, fields) registerPValuePatterns(se, patterns) registerAveAbPatterns(se, patterns) registerLogFCPatterns(se, patterns) getPValueFields(se) getAveAbFields(se) getLogFCFields(se) getPValuePatterns(se, defaults = c("PValue", "p.value", "pval")) getAveAbPatterns(se, defaults = c("AveExpr", "logCPM")) getLogFCPatterns(se, defaults = c("logFC", "LogFC"))
se |
A SummarizedExperiment to be visualized with various DE-related Panels.
This is expected to have a number of DE-related fields in its |
fields |
A character vector containing the names of the relevant fields containing the DE statistics.
Alternatively |
patterns |
A character vector containing partial names,
to match against the |
defaults |
Character vector specifying the default patterns to provide when no patterns were registered in |
DE-related Panels need to find relevant rowData
fields containing p-values, log-fold changes, etc. to set appropriate defaults in the user interface.
These functions allow a user to tune the definition of what those Panels consider to be relevant,
which is occasionally necessary if the DE statistics are stored in a rowData
field with an unusual column name.
The idea is to register
the relevant fields in se
, which can then be supplied to iSEE
with the affected Panels - see Examples.
The registered fields
should be the names of appropriate columns in rowData
containing continuous variables.
Columns containing categorical or non-atomic variables will generally be ignored.
For each DE statistic, if any fields
are registered in se
, they will be used directly and patterns
will be ignored.
The registered patterns
are used for partial name matching to the names of appropriate columns of rowData
.
All partial matching must be exact - regular expressions are not supported.
Matches can occur anywhere in the name.
For example, with "PValue"
, columns with the names "PValue.X"
and "X.PValue"
will be considered acceptable matches.
If no patterns
are supplied, the Panels will use the values in defaults
.
All register
functions will return se
, modified to contain the supplied patterns
or fields
.
These will be used as suggestions by DE-related Panels to identify the relevant fields.
All get
functions will return a character vector containing the value set by the corresponding register
function;
or NULL
, if nothing was set.
Aaron Lun
# Making up some results with unusual names. se <- SummarizedExperiment(matrix(rnorm(10000), 1000, 10)) rownames(se) <- paste0("GENE_", seq_len(nrow(se))) rowData(se)$pvalue <- runif(nrow(se)) rowData(se)$lfc <- rnorm(nrow(se)) rowData(se)$average <- rnorm(nrow(se)) se <- registerPValueFields(se, "pvalue") getPValueFields(se) se <- registerAveAbFields(se, "average") getAveAbFields(se) se <- registerLogFCFields(se, "lfc") getLogFCFields(se) if (interactive()) { iSEE(se, initial=list(MAPlot())) }
# Making up some results with unusual names. se <- SummarizedExperiment(matrix(rnorm(10000), 1000, 10)) rownames(se) <- paste0("GENE_", seq_len(nrow(se))) rowData(se)$pvalue <- runif(nrow(se)) rowData(se)$lfc <- rnorm(nrow(se)) rowData(se)$average <- rnorm(nrow(se)) se <- registerPValueFields(se, "pvalue") getPValueFields(se) se <- registerAveAbFields(se, "average") getAveAbFields(se) se <- registerLogFCFields(se, "lfc") getLogFCFields(se) if (interactive()) { iSEE(se, initial=list(MAPlot())) }
Register feature set collations and their annotations for display in FeatureSetTables.
registerFeatureSetCollections(se, collections) registerFeatureSetCommands(se, commands) getFeatureSetCollections(se) getFeatureSetCommands(se)
registerFeatureSetCollections(se, collections) registerFeatureSetCommands(se, commands) getFeatureSetCollections(se) getFeatureSetCommands(se)
se |
The SummarizedExperiment object to be used in |
collections |
A named list containing one or more CharacterList objects. Each entry represents a collection of feature sets (see Details) and should be named. |
commands |
A named list containing two character vectors of commands to use to generate collections and sets. |
Arbitrary feature sets are challenging as there is no obvious place to store them.
registerFeatureSetCollections
and friends will insert these sets into the metadata
of the SummarizedExperiment object,
allowing the corresponding getter functions to quickly extract them later within the iSEE
app.
collections
should be a named list containing CharacterList objects.
Each CharacterList represents a collection where each entry is a feature set, i.e., a character vector corresponding to some of the row names of se
.
The mcols
can contain additional per-set fields (e.g., descriptions, enrichment statistics) that will be shown in the FeatureSetTable.
commands
should be a list containing:
collections
, a named character vector where each entry is named after a feature set collection.
Each entry should be a string containing R commands to define a data.frame named tab
, where each row is a feature set and the row names are the names of those sets.
sets
, a character vector where each entry is named after a feature set collection in the same order as commands$collections
.
Each entry should be a string containing R commands to define a character vector named selected
containing the identity of all rows of the SummarizedExperiment in the set of interest.
(These commands can assume that a .set_id
variable is present containing the name of the chosen feature set,
as well as the se
variable containing the input SummarizedExperiment object.)
If neither collections
nor commands
are provided, any previously registered content in se
is removed.
For registerFeatureSetCollections
and registerFeatureSetCommands
,
a modified se
is returned that contains the feature set collections or commands, respectively.
This can be used with FeatureSetTables in iSEE
calls.
For getFeatureSetCollections
, the list of CharacterLists is returned.
Alternatively NULL
, if no such list was stored by registerFeatureSetCollections
.
For getFeatureSetCommands
, the list of of commands is returned containing collections
and sets
.
Alternatively NULL
, if no such list was stored by registerFeatureSetCommands
.
Aaron Lun
library(scRNAseq) sce <- LunSpikeInData(location=FALSE) # Make up some random collections. random <- CharacterList( Aaron = sample(rownames(sce), 10), Kevin = sample(rownames(sce), 20), Charlotte = sample(rownames(sce), 30), Fed = sample(rownames(sce), 40) ) mcols(random)$p.value <- runif(4) # Storing the collections inside our SummarizedExperiment. sce <- registerFeatureSetCollections(sce, list(random=random)) getFeatureSetCollections(sce) if (interactive()) { iSEE(sce, initial=list(FeatureSetTable())) }
library(scRNAseq) sce <- LunSpikeInData(location=FALSE) # Make up some random collections. random <- CharacterList( Aaron = sample(rownames(sce), 10), Kevin = sample(rownames(sce), 20), Charlotte = sample(rownames(sce), 30), Fed = sample(rownames(sce), 40) ) mcols(random)$p.value <- runif(4) # Storing the collections inside our SummarizedExperiment. sce <- registerFeatureSetCollections(sce, list(random=random)) getFeatureSetCollections(sce) if (interactive()) { iSEE(sce, initial=list(FeatureSetTable())) }
Set the commands to define the global collection of feature sets.
This is deprecated in favor of registerFeatureSetCommands
.
setFeatureSetCommands(value)
setFeatureSetCommands(value)
value |
A list of two character vectors named |
setFeatureSetCommands
will set the current global feature set commands and return NULL
invisibly.
Aaron Lun
createGeneSetCommands
, for one method of generating value
.
old <- getFeatureSetCommands() new.cmds <- createGeneSetCommands(organism="org.Mm.eg.db", identifier="SYMBOL") setFeatureSetCommands(new.cmds) getFeatureSetCommands() setFeatureSetCommands(old)
old <- getFeatureSetCommands() new.cmds <- createGeneSetCommands(organism="org.Mm.eg.db", identifier="SYMBOL") setFeatureSetCommands(new.cmds) getFeatureSetCommands() setFeatureSetCommands(old)
Utility functions to control the behavior of the GeneSetTable.
.getIdentifierType() .setIdentifierType(value) .getOrganism() .setOrganism(value) .getGeneSetCommands(collection, mode) .setGeneSetCommands(value)
.getIdentifierType() .setIdentifierType(value) .getOrganism() .setOrganism(value) .getGeneSetCommands(collection, mode) .setGeneSetCommands(value)
value |
For For |
collection |
String specifying the gene set collection. |
mode |
String specifying the mode of operation for the returned commands. |
By default, .getGeneSetCommands
will extract GO and KEGG terms.
The organism and identifier type relates to the manner in which this default extraction is performed.
Users can add their own gene set collections by supplying a named list to .setGeneSetCommands
.
Each element of the list should be a named character vector of length two,
with names "show"
and "extract"
- see the return value for what these are.
The names of the list should be unique and will be used in the GeneSetTable interface.
Alternatively, any element of the list may be NULL
, in which case it is excluded from the interface.
This is useful for setting, e.g., GO=NULL
to ignore the in-built GO terms.
.getIdentifierType
will return the identifier type to use, defaulting to "ENTREZID"
.
.getOrganism
will return the organism package to use, defaulting "org.Hs.eg.db"
.
.getGeneSetCommands
will return:
If mode="show"
, a string containing R commands that create tab
,
a data.frame of all gene sets for a given collection
.
If mode="extract"
, a format string containing R commands that (after formatting) create selected
,
a character vector of gene identities for the selected gene set.
This format string should accept one string argument corresponding to the deparsed name of the gene set.
Each of the setter functions will set the corresponding option and return NULL
, invisibly.
Aaron Lun
GeneSetTable, where these functions have their effect.
.setIdentifierType("ENSEMBLID") .getIdentifierType() .setOrganism("org.Mm.eg.db") .getOrganism() .getGeneSetCommands("GO", "show") .getGeneSetCommands("GO", "extract") .setGeneSetCommands( list(AaronRandomCollection= c( show='tab <- some_function_to_list_my_gene_sets()', extract='selected <- some_function_to_get_one_gene_set(%s)' ) ) ) .getGeneSetCommands("AaronRandomCollection", "show") .getGeneSetCommands("AaronRandomCollection", "extract")
.setIdentifierType("ENSEMBLID") .getIdentifierType() .setOrganism("org.Mm.eg.db") .getOrganism() .getGeneSetCommands("GO", "show") .getGeneSetCommands("GO", "extract") .setGeneSetCommands( list(AaronRandomCollection= c( show='tab <- some_function_to_list_my_gene_sets()', extract='selected <- some_function_to_get_one_gene_set(%s)' ) ) ) .getGeneSetCommands("AaronRandomCollection", "show") .getGeneSetCommands("AaronRandomCollection", "extract")
The VolcanoPlot is a RowDataPlot subclass that is dedicated to creating a volcano plot. It retrieves the log-fold change and p-value from and creates a row-based plot where each point represents a feature.
The following slots control the thresholds used in the visualization:
PValueThreshold
, a numeric scalar in (0, 1] specifying the threshold to use on the (adjusted) p-value.
Defaults to 0.05.
LogFCThreshold
, a non-negative numeric scalar specifying the threshold to use on the log-fold change.
Defaults to 0.
PValueCorrection
, a string specifying the multiple testing correction to apply.
Defaults to "BH"
, but can take any value from p.adjust.methods
.
In addition, this class inherits all slots from its parent RowDataPlot, RowDotPlot, DotPlot and Panel classes.
VolcanoPlot(...)
creates an instance of a VolcanoPlot class,
where any slot and its value can be passed to ...
as a named argument.
Users are expected to load relevant statistics into the rowData
of a SummarizedExperiment.
This panel expects one or more columns containing the p-values and log-fold changes for each gene/row - see Examples.
The expected column names (and how to tune them) are listed at ?"registerPValueFields"
.
In the following code snippets, x
is an instance of a RowDataPlot class.
Refer to the documentation for each method for more details on the remaining arguments.
For setting up data values:
.cacheCommonInfo(x, se)
returns se
after being loaded with class-specific constants.
This includes "valid.p.fields"
and "valid.lfc.fields"
, character vectors containing the names of valid rowData
columns for the p-values and log-fold changes, respectively.
.refineParameters(x, se)
returns x
after setting XAxis="Row data"
and the various *Pattern
fields to their cached values.
This will also call the equivalent RowDataPlot method for further refinements to x
.
If valid p-value and log-fold change fields are not available, NULL
is returned instead.
For defining the interface:
.defineDataInterface(x, se, select_info)
returns a list of interface elements for manipulating all slots described above.
.panelColor(x)
will return the specified default color for this panel class.
.allowableXAxisChoices(x, se)
returns a character vector specifying the acceptable log-fold change-related variables in rowData(se)
that can be used as choices for the x-axis.
.allowableYAxisChoices(x, se)
returns a character vector specifying the acceptable p-value-related variables in rowData(se)
that can be used as choices for the y-axis.
.hideInterface(x, field)
will return TRUE
for field="XAxis"
,
otherwise it will call the RowDataPlot method.
.fullName(x)
will return "Volcano plot"
.
For monitoring reactive expressions:
.createObservers(x, se, input, session, pObjects, rObjects)
sets up observers for all new slots described above, as well as in the parent classes via the RowDataPlot method.
For creating the plot:
.generateDotPlotData(x, envir)
will create a data.frame of row metadata variables in envir
.
This should contain negative log-transformed p-values on the y-axis and log-fold changes on the x-axis,
in addition to an extra field specifying whether or not the feature was considered to be significantly up or down.
The method will return the commands required to do so as well as a list of labels.
.prioritizeDotPlotData(x, envir)
will create variables in envir
marking the priority of points.
Significant features receive higher priority (i.e., are plotted over their non-significant counterparts) and are less aggressively downsampled when Downsample=TRUE
.
The method will return the commands required to do this as well as a logical scalar indicating that rescaling of downsampling resolution is performed.
.colorByNoneDotPlotField(x)
will return a string specifying the field of the data.frame (generated by .generateDotPlotData
) containing the significance information.
This is to be used for coloring when ColorBy="None"
.
.colorByNoneDotPlotScale(x)
will return a string containing a ggplot2 command to add a default color scale when ColorBy="None"
.
.generateDotPlot(x, labels, envir)
returns a list containing plot
and commands
, using the inital ColumnDataPlot ggplot and adding vertical lines demarcating the log-fold change threshold.
For documentation:
.definePanelTour(x)
returns an data.frame containing the steps of a panel-specific tour.
.getDotPlotColorHelp(x, color_choices)
returns a function that generates an rintrojs tour for the color choice UI.
Aaron Lun
RowDataPlot, for the base class.
# Making up some results: se <- SummarizedExperiment(matrix(rnorm(10000), 1000, 10)) rownames(se) <- paste0("GENE_", seq_len(nrow(se))) rowData(se)$PValue <- runif(nrow(se)) rowData(se)$LogFC <- rnorm(nrow(se)) rowData(se)$AveExpr <- rnorm(nrow(se)) if (interactive()) { iSEE(se, initial=list(VolcanoPlot())) }
# Making up some results: se <- SummarizedExperiment(matrix(rnorm(10000), 1000, 10)) rownames(se) <- paste0("GENE_", seq_len(nrow(se))) rowData(se)$PValue <- runif(nrow(se)) rowData(se)$LogFC <- rnorm(nrow(se)) rowData(se)$AveExpr <- rnorm(nrow(se)) if (interactive()) { iSEE(se, initial=list(VolcanoPlot())) }