export of model metadata to JSON now follows the convention NA -> null
Added citation info to package and readme now references journal article
Update getPlottingData, plotStudy, and addPlots manuals
The release tarball includes version 1.9.3 of the web app
Fix bug in importStudy()
that resulted in mapping table not being imported.
The release tarball includes version 1.9.0 of the web app
Update getBarcodeData()
to pass lowest statistic value. Change enables barcode plot to accommodate negative numbers.
Add the appropriate PKGNAME-package \alias to the package overview help file as per "Documenting packages" in R-exts
Update invalid URLs in documentation and tests
The release tarball includes version 1.7.5 of the web app
Added optional arguments annotationID
and termID
to getResultsTable()
to
filter the results table to only include features in a given annotation term
The release tarball includes version 1.7.2 of the web app
Update mapping data to behave in the same way as the features, samples, etc. Each element of the list must be named after a modelID or "default" to be shared across multiple modelIDs (implemented by Marco Curado in PR #12)
""
). This update applies to all new as well as existing
study packages (ie it is backwards compatible) (reported by Marco
Curado)Update addMapping()
to add the mapping object as a list of data frames,
where each data frame consists of a distinct mapping. Mapping object is required
for plots combining features from multiple models (multiModel plots)
(implemented by Marco Curado in PR
#11)
For multiModel plots, getPlottingData()
returns a nested list where elements
are named after modelIDs, and each list element contains at least assays,
samples and features objects for the given modelID. If testID is passed to the
function, it also returns the results for the provided testIDs. In this case,
testID is required to be provided as a vector of the same length of modelID,
where the index positions indicate which testID relates to which modelID
(implemented by Marco Curado in PR
#11)
The release tarball includes version 1.6.7 of the web app
Bug fix: Do not allow empty sub-lists when adding elements that require a
nested list (e.g. addEnrichments()
). This can cause problems for
exportStudy()
/installStudy()
, and make it appear that data is available when
there is none (reported by Liang Jin and Brett
Engelmann)
The release tarball includes version 1.6.4 of the web app
New function combineStudies()
to combine two or more studies
The release tarball includes version 1.6.3 of the web app
Update importStudy()
to support study packages that don't have a Maintainer
listed. This was only possible prior to version 1.2.0.5. After that, any study
that hasn't explicitly provided a maintainer (and maintainer email) is assigned
the maintainer Unknown <unknown@unknown>
during export. It is highly
recommended to set the maintainer name and email for any study package that will
be shared. Furthermore, exportStudy()
will send a message when no maintainer
email has been provided for a study package
Fix infamous drop = FALSE
bug in
getUpsetCols()
. Previously, if the results tables for a given modelID only had
two total columns (the featureID column and one data column), getUpsetCols()
returned no common columns, and thus disabled the set interaction features in
the app (reported by Brett Engelmann)
The release tarball includes version 1.6.0 of the web app
Detect custom plotting functions with plotType == "plotly"
that don't
properly return an object with class "plotly"
plotType
"plotly"
to add
custom functions that return interactive plotly graphs (implemented by Joe
LoGrasso in PR
#9) Front-end support
will be added in a future release of the web appplotStudy()
, any required packages are
attached temporarily and then detached. When one package "Depends" on another
package (e.g. plotly Depends on ggplot2), the first package must be detached
before its dependency can be detached. Now this dependency order is taken into
account when detaching the packages (reported by Joe
LoGrasso)The release tarball includes version 1.4.1 of the web app
Breaking change: The function plotStudy()
now invisibly returns the
result from the custom plotting function. Previously it invisibly returned the
study object. It's unlikely you relied on this behavior. For a ggplot2 plot, the
return value will be the plotting object with class "ggplot"
.
plotStudy()
in the R console.
Support for multiModel plots in the app will be implemented in a future release.
For now, the app will send a harmless error if it encounters a multiModel plot
(implemented by Marco Curado in PR
#8)New study element mapping
for mapping featureIDs across models of a study
(see ?addMapping
and getMapping
). This will make it possible to create plots
that combine data across models, which will be enabled in future versions
(implemented by Marco Curado in PR
#7)
Bug fix: The validation of the enrichments table linkouts was too strict. It
required that the annotationID be present in the annotations created by
addAnnotations()
. This extra information about the annotationID is only
required for the network view. The validation now only throws an error if the
annotationID was not included for at least one modelID in the enrichments data
added with addEnrichments()
(reported by Anastasia
Galperina)
Bug fix: Now that custom plots can include data from the results table, it is no longer an error to include custom plots in a study without assays or samples data (reported by Joe LoGrasso). Also relaxed the validation requirement for custom plots so that the study can contain assays data but not corresponding samples data
Bug fix: Custom plotting functions cannot have the same name as any of the
functions defined in the base package. This error is now caught early with
addPlots()
(reported by Anastasia Galperina)
The release tarball includes version 1.3.2 of the web app
New plotType
of "multiTest"
. Include this when adding a custom plot with
addPlots()
to have the app pass the results tables for all testIDs for a given
modelID (implemented by Marco Curado in PR
#6)
Bug fix: The documentation states that the assays table must only contain
numeric columns. However, if a user added a data frame with non-numeric columns,
no warning or error occurred. Now addAssays()
will throw an error if it
detects any non-numeric columns (reported by Anastasia
Galperina in WebApp Issue
#57)
The release tarball includes version 1.2.1 of the web app
Both plotStudy()
and getPlottingData()
gained a new argument testID
. If
supplied, the R object passed to your custom plotting function will include the
element results
that contains the rows of the results table for that testID
for the provided featureID(s). The app always passes the testID when calling
plotStudy()
. If your plotting function doesn't need the information in the
results table, it will continue to work as before (implemented by Marco
Curado in PR
#4)
Bug fix: Prevent a single missing value in an ID column that is required to be unique (reported by Marco Rocha Curado)
Report the error message from R CMD build
as a warning if exportStudy()
fails to create a tarball for a study package
Add the argument reset
to addOverlaps()
. You would only potentially need
this if you are pre-calculating the annotation term overlaps prior to exporting
the study
Skip tests that fail only on CRAN Linux and macOS machines. The tests will continue to run on GitHub Actions
The release tarball includes version 1.1.9 of the web app
Optional support for model metadata via addModels()
and getModels()
.
Previously you could only add a single string to describe each modelID, which
would be displayed in the app as a tooltip. Now you also have the option to
provide a list with arbitrary metadata. The tooltip is derived from the list
element description
(if it exists)
New function importStudy()
to import an installed study package into R as an
onStudy
object. This is intended to be used to edit a study when you don't
have access to the original data and code that created it
Optional support for test metadata via addTests()
and getTests()
.
Previously you could only add a single string to describe each testID, which
would be displayed in the app as a tooltip. Now you also have the option to
provide a list with arbitrary metadata. The tooltip is derived from the list
element description
(if it exists)
The release tarball includes version 1.1.8 of the web app
New function removeStudy()
to remove an installed study package
New argument studyMeta
for createStudy()
. You can add metadata to
describe your study. See ?createStudy
and the User's Guide for more details.
New arguments maintainer
and maintainerEmail
for createStudy()
to make
it easier for others to know who to contact for questions about your study
listStudies()
now returns all the fields in DESCRIPTION
for each study
package
Fixed minor bug in listStudies()
. It couldn't find study packages in
directories not included in .libPaths()
. This likely only affected the unit
tests.
The release tarball includes version 1.1.7 of the web app
Added support for linkouts in metaFeatures table. See
?addMetaFeaturesLinkouts
for details. These linkouts will be displayed as
favicons in the metaFeatures table in a future release of the app.
The "add" functions have a new argument, reset
. If reset = TRUE
, then the
existing data is removed prior to adding the new data. The default continues to
be to add to or modify any existing data.
The release tarball includes version 1.1.5 of the web app
Fix bug in getResultsIntersection()
where adding additional filters resulted
in more results when notTests
were specified, instead of fewer (reported by
Terry Ernst, Brett Engelmann, and Wendy Waegell)
The release tarball includes version 1.1.2 of the web app
Bug fix: exportStudy()
can now export a study as a package tarball to a path
that contains spaces or quotes (reported by Naim Mahi and Brett Engelmann)
Bug fix: Study packages will now use custom description if supplied to
createStudy()
. Hover over the study name in the app to see the custom package
description (reported by Paul Nordlund and Brett Engelmann)
The release tarball includes version 1.1.1 of the web app
Bug fix: installApp()
now properly searches for the installed OmicNavigator
package. It usually worked before, but now it should always work.
New function installApp()
to download the web app after installing the R
package
Support for tibble and data.table input. For consistency, they will be be automatically converted to pure data frame objects internally.
Bug fix: exportStudy()
now properly overwrites an existing tarball when the
argument path
is used (reported by Brett Engelmann)
Bug fix: getResultsIntersection()
now properly returns the filtered table
in the original order from getResultsTable()
(reported by Paul Nordlund)
Breaking change: plotStudy()
and getPlottingData()
now accept multiple
featureIDs as input in order to visualize multiple feature in a single plot. The
object returned by getPlottingData()
is now a list of three data frames:
assays
, samples
, and features
. Thus you can annotate your plots with any
feature metadata. You will need to update your custom plotting functions to
accept one argument (you can name it whatever you like). Also, when adding plots
with addPlots()
, specify the plotType
as "singleFeature"
or
"multipleFeature"
to accept a single or multiple featureIDs, respectively. The
app currently only supports singleFeature custom plots, but will soon support
multiFeature plots as well. Study packages must be rebuilt with OmicNavigator
0.24.0.
Fix bug in getResultsUpset()
that failed when using the absolute value
filters (|<|
, |>|
)
getResultsUpset()
now throws an error when there are no features remaining
for plotting after the filters are applied
The release tarball includes version 0.3.6 of the web app
Use faviconPlease to find URLs to favicons for table linkouts
Optimize getResultsUpset()
for speed. Input remains unchanged. The plotting
data is now returned invisibly. The default font size for the UpSet plot was
increased.
Apply MIT license
Fix bug in getResultsIntersection()
when a modelID has no features table.
The "Set_Membership" column was returned in the first column instead of after
the featureID column (reported by Joe Dalen and Paul Nordlund)
Fix bug in getResultsUpset()
when the results tables have differing
number of features
getFavicons()
to obtain URLs to favicons to display table
linkouts. Currently just a wrapper around Google's favicon service, but in the
future will be more sophisticated.The release tarball includes version 0.3.3 of the web app
Improved support for numeric-looking featureIDs, e.g. 1234
or 0001
The release tarball includes version 0.3.1 of the web app
User's Guide:
Moved UpSetR to a suggested dependency. This allows for a light-weight installation when you only need to create a study and not run the app. As an example, a continuous integration job that builds a study package tarball.
Relax some of the validation requirements. Not all the featureIDs in the results tables must be in the features or metaFeatures tables.
If a study has no features table for a modelID, a study can still have linkouts to external resources in the results table, as long as the linkouts only refer to the featureID column.
validateStudy()
now throws an error if the results and features table for a
given modelID share any column names in addition to the featureID column. In
other words, it validates that the only column name in common between the two
tables is the first column.
The release tarball includes version 0.2.8 of the web app
validateStudy()
now throws an error if there are any featureIDs in the
metaFeatures table that are not included in the features table (reported by Paul
Nordlund)
Support for linkouts to external resources in results and enrichments tables
New function getPackageVersion()
for the app to conveniently query the
current installed version of the R package
The release tarball includes version 0.2.5 of the web app
validateStudy()
now throws a warning if the results tables for the tests of
a model have no common columns. The lack of common columns will disable the
UpSet filtering in the app for that model.
exportStudy()
- The argument type
has changed. Studies can no longer be
exported as RDS (type = "rds")
or text files (type = "text"
). This is
because these were no longer able to capture all of the information that can
potentially be included in a study package (e.g. custom plotting functions,
report files). Instead, the default is now the new option "tarball"
. This will
export the study package as a source package tarball, which is ready to be
installed directly with install.packages()
. The option "package"
remains; it
exports the study as a package directory.quiet
. Setting quiet = TRUE
will
suppress any messages, such as reporting unavailable data or the use of the
"default" data.Improved the messages from installStudy()
and exportStudy()
validateStudy()
now performs more in-depth check to validate that the
featureIDs are consistent between the results, features, and assays tables
Most package functions now consistently return empty data structures (e.g.
list()
) when a query requests data that is unavailable. Previously the
functions would throw an error if the requested data was unavailable. There is
a new section in the API vignette documenting this behavior for the functions
called by the app.
It is now possible to export a study that only contains a single results table.
addTests()
is now a named list, similar to addModels()
. You
will need to update your code and re-install any existing OmicNavigator study
packages.OmicNavigator.prefix
to control the prefix used to label
OmicNavigator study packages. The default is still "OAstudy". Run ?OmicNavigator
for more information on OmicNavigator package options.New User's Guide and API vignettes created with Sweave
Add summary()
method for OmicNavigator study objects (class onStudy
)
Bugfix: listStudies()
now works if its argument libraries
is pointed to a
specific directory
The release tarball includes version 0.1.9.1 of the web app
Remove the argument overwrite
for the add functions, e.g. addSamples()
.
Instead subsequent calls to the same add function will update the existing data
using the rules of utils::modifyList()
.
addMetaFeatures()
now automatically converts all columns to character. It
throws a warning if it detects any non-character columns.
getMetaFeatures()
and getMetaFeaturesTable()
always return the columns of
the features table as character strings, even if they appear numeric.
Support the option to manually calculate pairwise overlaps with
addOverlaps()
prior to installing or exporting the study package.
Support for linking to external analysis report files (addReports()
,
getReports()
, getReportLink()
). Accepts a URL or a path to file.
New function validateStudy()
to validate a study. It is automatically run
prior to exporting with exportStudy()
(controlled by the new argument
requireValid
). It can also be run directly.
createStudy()
now checks that the arguments name
, description
, and
version
are valid.
exportStudy()
no longer exports empty directories for unused elements of the
OmicNavigator study object.
Bug fix: getMetaFeaturesTable()
now properly returns a data frame even if
it only contains one column.
getResultsTable()
was changing the original row order. Bug
identified by Brett Engelmann.addFeatures()
now automatically converts all columns to character. It throws
a warning if it detects any non-character columns.
getFeatures()
and getResultsTable()
always return the columns of the
features table as character strings, even if they appear numeric.
This release includes substantial internal changes. The study data is now
exported as plaintext files instead of as an SQLite file. There are no changes
to the API, so no changes need to be made to R scripts or the JavaScript
frontend. However, since the storage mechanism has changed, all existing
OmicNavigator studies need to be reinstalled in order to be compatible with this
version. Furthermore, the dependencies have changed, so you may have to re-run
remotes::install_deps()
.
The release tarball includes version 0.1.5 of the web app
getEnrichmentsUpset()
has a new argument tests
, which restricts the UpSet
plot to only include the desired tests (#1, Justin Moore)
The release tarball includes version 0.1.4 of the web app
If startApp()
is unable to run because the package was installed without the
bundled web app, provide the URL for the releases page to download the tarball.
Also offer to open the page in the browser.
getMetaFeatures()
getMetaFeaturesTable()
Fix bug in getResultsIntersection()
introduced in commit ff1ac89 and
released in version 0.7.0
The release tarball includes version 0.1.2 of the web app
The release tarball includes version 0.1.0 of the web app. Run
startApp()
to run it locally.
New function getUpsetCols()
to get the columns common across all tests of a
model, and thus are available for filtering with UpSet.
getBarcodeData()
now returns data
in decreasing order of the statistic
column (requested by Paul Nordlund)
addBarcodes()
now has an additional optional field featureDisplay
. This
can be set to any column of the features table, and that feature metadata
variable will be used to label the barcode plot (requested by Paul Nordlund). If
featureDisplay
is not set, it will be automatically set to the feature
metadata variable used in the enrichment analysis. getBarcodeData()
now
returns three feature-related columns:
featureID
- The unique feature variable used in the inference results
tablefeatureEnrichment
- The feature variable used to perform the enrichment
analysis with the given annotation databasefeatureDisplay
- The feature variable to use to label the barcode plot
on hoverNote that these will all be identical in the simple case where the study
featureID
is used for the enrichment analysis.
getBarcodeData()
now returns both the study featureID (in the column
featureID
) and the featureID used by the annotation database (in the column
featureDisplay
). The former is needed to pass to plotStudy()
to generate any
custom plots. The latter is needed to display when hovering over the barcode
plot (reported by Paul Nordlund).
Fix bug in plotStudy()
related to detaching package namespaces. When a
custom plot specified more than one package dependency, the last package listed
would always be detached from the search path (even if it shouldn't have been
since it was already attached). Furthermore, the other packages would never be
detached (even if they should have been since they were not attached
beforehand). The bug was caused by calling detach()
with on.exit()
, which
used the latest value of the variable.
New function getPlottingData()
to return the data required by the first
argument of the custom plotting functions.
getResultsIntersection()
positions the column Set_Membership
between the
feature metadata variable columns and the results columns
Study packages that includes plots using base graphics now import the graphics package
Fix bug when querying model-specific barcode metadata. Affected both
getBarcodes()
and getBarcodeData()
(reported by Paul Nordlund)
Remove warning from graphics::par()
by only having plotStudy()
reset the
graphing parameters if they are changed by the custom plotting function
New function startApp()
to start the app running on local machine
Fix bug in getResultsIntersection()
so that it returns the feature metadata
columns that are included in getResultsTable()
Fix bug in getResults()
that returned columns of NA
for columns specific
to other tests (only affected study packages, not onStudy objects)
getPlots()
so that it returns model-specific custom plots from
the database of installed study packageChanged <=
and >=
to <
and >
, respectively, to match app UI. Affects
the functions getResultsIntersection()
, getEnrichmentsIntersection()
,
getResultsUpset()
, and getEnrichmentsUpset()
.
Support customization of barcode plots:
addBarcodes()
getBarcodes()
getBarcodeData()
getAnnotations()
Changed the input argument of plotStudy()
from feature
to featureID
Changed the argument name of custom plotting functions from feature
to
featureID
getResultsIntersection()
getEnrichmentsIntersection()
getResultsUpset()
getEnrichmentsUpset()