- When running
cTRAP()
, raise error ifcommonPath
does not exist - Fix modular graphical interface functions not showing dropdown choices
- Update icon names for FontAwesome 6
- Add cTRAP version to welcome modal
- Fix crash when submitting Celery job (included missing floweRy function)
- Fix large JSON responses from DT blocked by reverse proxy default settings
cTRAP()
: new global interface with all cTRAP functionality in one place- Sessions can be created and loaded via a token or a RDS file
- Session data is automatically saved in a RDS file to a folder in the working directory named based on the current session token
- Long-running tasks can be performed in the background using the Celery task manager via Flower's REST API and their output is automatically loaded in the corresponding session
- Loading icon in navigation menu when Shiny is busy
- Use the faster and efficient file format from R package
qs
instead ofRDS
:- Faster download and loading of pre-processed remote files (compound molecular descriptors and gene expression and drug sensitivity associations)
convertGeneIdentifiers()
replacesconvertENSEMBLtoGeneSymbols()
:- Use AnnotationHub to convert to gene symbols (instead of biomaRt that has been unstable)
loadENCODEsamples()
:- New argument to select folder where to download data
analyseDrugSetEnrichment()
:- Cross-match more compounds between datasets by discarding non-alphanumeric characters and ignoring case
- Fix incorrect columns used for each dataset when merging datasets
- Visual interface:
- Fix crash when plotting dataset comparison using values with too many zeroes for density estimation
- Add progress bars for slower tasks
- Fix crash when using shiny 1.7.0 (avoid malformed, custom UI elements)
- Drug set enrichment analysis interface:
- Show all drug sets available to (down)load
- Show loading indicator when loading different drug sets
- Hide "leading edge" column of the results by default
- Fix crash when opening CMap's visual interface functions with shiny 1.7.0
- New
launchDrugSetEnrichmentAnalysis()
function to analyse drug set enrichment and visualize respective results launchCMapDataLoader()
:- Now allows to load multiple CMap perturbation types simultaneously
- Keep selected timepoint, dosage and cell line options when selecting another perturbation type
- Add bubble plot of CMap perturbation types
launchResultPlotter()
:- Now allows to view tables below specific plots and drag-and-select those plots to filter data in those same tables
- When plotting targeting drugs and similar perturbations, update available columns and correctly use user-selected column to plot
launchMetadataViewer()
now correctly parses values fromInput
attributes as numeric
prepareCMapPerturbations()
: directly set perturbation type, cell line, timepoint and dosage conditions as argumentsrankSimilarPerturbations()
andpredictTargetingDrugs()
:- Avoid redundant loading of data chunks, slightly decreasing run time
- Lower memory footprint when using NCI60's gene expression and drug sensitivity association (now available in HDF5 files) by loading and processing data in chunks
- Faster GSEA-based score calculation (up to 4-7 times faster)
- New
threads
argument allows to set number of parallel threads (not supported on Windows) - New
chunkGiB
argument allows to set size of data chunks when reading from supported HDF5 files (decreases peak RAM usage) - New
verbose
argument allows to increase details printed in the console
prepareDrugSets()
: allow greater control on the creation of bins based on numeric columns, including the setting of maximum number of bins per column and minimum bin sizeanalyseDrugSetEnrichment()
andplotDrugSetEnrichment()
: allow to select columns to use when comparing compound identifiers between datasets
filterCMapMetadata()
: allow filtering CMap metadata based on multiple perturbation typesprepareDrugSets()
: fix issues with 3D descriptors containing missing valuesplot()
:- Fix wrong labels when plotting
targetingDrugs
objects - Avoid printing "NA" in labels identifying metadata for perturbations
- Fix wrong labels when plotting
plotTargetingDrugsVSsimilarPerturbations()
:- Fix highlighting of plot points depending whether drug activity is directly proportional to drug sensitivity
- Include rug plot
- When subsetting a
perturbationChanges
or anexpressionDrugSensitivityAssociation
object, passing only one argument extracts its columns as in previous versions of cTRAP (similarly to when subsetting adata.frame
) analyseDrugSetEnrichment()
: for the resulting table, the name of the first column was renamed frompathway
todescriptor
- New Shiny-based graphical interface functions:
launchDiffExprLoader()
: load differential expression datalaunchCMapDataLoader()
: load CMap datalaunchResultPlotter()
: view and plot data resultslaunchMetadataViewer()
: check metadata of a given object
downloadENCODEknockdownMetadata()
: metadata is automatically saved to a file in order to avoid downloading metadata every time this function is runplotTargetingDrugsVSsimilarPerturbations()
:- automatically look for matching compounds in multiple columns of both datasets
- allow to manually select columns on which to merge datasets
prepareDrugSets()
: drug sets based on numeric molecular descriptors are now prepared using evenly-distributed intervals- Simplify tutorial
listExpressionDrugSensitivityAssociation()
lists available gene expression and drug sensitivity associations- First argument of
rankSimilarPerturbations()
andpredictTargetingDrugs()
changed name fromdiffExprGenes
toinput
and now accepts:Named numeric vector
containing differential gene expression values with gene symbols as names, as before;Character vector
containing a custom gene set to test for enrichment (only to use with GSEA).
- In
rankSimilarPerturbations()
andpredictTargetingDrugs()
, when performinggsea
method, allow to set different gene set size for top up- and down-regulated genes withgeneSize
argument:- e.g.
geneSize=c(100, 200)
creates gene sets from the top 100 up- and top 200 down-regulated genes - using
geneSize=c(150, 150)
orgeneSize=150
is equivalent
- e.g.
- Plotting:
plot()
now supports plottingpredictTargetingDrugs()
results for a given drug, e.g.plot(targetingDrugs, "1425")
plot()
now allows to set plot title with argumenttitle
plot()
now plots results based on available methods instead of trying to plot based on results fromspearman
method only- GSEA plots now support two or less gene hits
- GSEA plots now support plotting of multiple perturbations
- GESA plots now show the first and last values of ranked genes
plotDrugSetEnrichment()
now returns a list whose names are drug set names
as.table()
improvements:- Return cell identifiers and gene information (if available and as needed)
- Support
predictTargetingDrugs()
results - Return results ordered as found on input
downloadENCODEknockdownMetadata()
now correctly retrieves metadata following a change in the metadata content from ENCODE- Fix bugs when rendering GSEA plots due to deprecated functions in
ggplot2
- Improve tutorial
- Copy-edit CMap-related console messages
- Copy-edit function documentation
- Predict targeting drugs (
predictTargetingDrugs()
):- Based on expression and drug sensitivity associations derived from NCI60,
CTRP and GDSC data (see
loadExpressionDrugSensitivityAssociation()
) - Compare user-provided differential expression profile with gene expression and drug sensitivity associations to predict targeting drugs and their targeted genes
- Compounds are ranked based on their relative targeting potential
- Plot candidate targeting drugs against ranked compound perturbations using
plotTargetingDrugsVSsimilarPerturbations()
, highlighting compounds that selectively select against cells with a similar differential gene expression profile
- Based on expression and drug sensitivity associations derived from NCI60,
CTRP and GDSC data (see
- Analyse drug set enrichment (
analyseDrugSetEnrichment()
):- Prepare drug sets based on a table with compound identifiers and
respective 2D and 3D molecular descriptors using
prepareDrugSets()
- Test drug set enrichment on results from
rankSimilarPerturbations()
(when ranking against compound perturbations) andpredictTargetingDrugs()
- Prepare drug sets based on a table with compound identifiers and
respective 2D and 3D molecular descriptors using
- Convert ENSEMBL identifiers to gene symbols using
convertENSEMBLtoGeneSymbols()
- Update the tutorial and function documentation
- Remove most
L1000
instances, including in function names:getL1000perturbationTypes()
->getCMapPerturbationTypes()
getL1000conditions()
->getCMapConditions()
downloadL1000data()
->loadCMapData()
filterL1000metadata()
->filterCMapMetadata()
loadL1000perturbations()
->prepareCMapPerturbations()
compareAgainstL1000()
->rankSimilarPerturbations()
plotL1000comparison()
->plot()
- Improve loading of ENCODE samples (
loadENCODEsamples()
):- Rename function from
downloadENCODEsamples()
toloadENCODEsamples()
- Load ENCODE samples regarding multiple cell lines and experiment targets
using
loadENCODEsamples()
- Rename function from
- Improve CMap data and metadata retrieval:
- By default, do not return control perturbation types when using
getCMapPerturbationTypes()
(unless if using argumentcontrol = TRUE
) - Parse CMap identifiers using
parseCMapID()
- Load CMap's compound metadata using
loadCMapData()
- Ask to download CMap perturbations z-scores file for differential expression if not found (avoiding downloading a huge file without user consent)
- By default, do not return control perturbation types when using
- Improve preparation of CMap perturbations (
prepareCMapPerturbations()
):- Allow to load CMap metadata directly from files when using file paths as
arguments of
prepareCMapPerturbations()
- Significantly decrease memory required to use cTRAP by loading chunks of
z-scores from CMap perturbations on-demand (a slight decrease in time
performance is expected), unless
prepareCMapPerturbations()
is run with argumentloadZscores = TRUE
- Display summary of loaded perturbations after running
prepareCMapPerturbations()
- Allow to load CMap metadata directly from files when using file paths as
arguments of
- Improve ranking of similar perturbations (
rankSimilarPerturbations()
):- Redesigned output: long (instead of wide) table
- By default, calculate mean across cell lines if there is more than one
cell line available; disabled if argument
cellLineMean = FALSE
- Allow to rank (or not) individual cell line perturbations (argument
rankIndividualCellLinePerturbations
) when the mean is calculated - Allow to perform multiple comparison methods if desired (by providing a
vector of supported methods via the
method
argument) - Calculate the rank product's rank to assess ranks across multiple methods
- Sort results based on rank product's rank (or the rank of the only comparison method performed, otherwise)
- Include information for calculated means across cell lines in metadata
- Include run time as an attribute
- Improve metadata display for a
similarPerturbations
object, obtained after runningrankSimilarPerturbations()
:- Show further metadata information (including compound data, if available)
related with a given perturbation by calling
print()
with asimilarPerturbations
object and a specific perturbation identifier - Show a complete table with metadata (and compound information, if
available) when calling
as.table()
with asimilarPerturbations
object
- Show further metadata information (including compound data, if available)
related with a given perturbation by calling
- Improve plotting (
plot()
):- Plot comparison results against all compared data by calling
plot()
with the results obtained after runningrankSimilarPerturbations()
orpredictTargetingDrugs()
; non-ranked compared data can also be plotted with argumentplotNonRankedPerturbations = TRUE
- Render scatter and Gene Set Enrichment Analysis (GSEA) plots between
differential expression results and a single perturbation by calling
plot()
with aperturbationChanges
object (if an identifier regarding the summary of multiple perturbations scores across cell lines is given, the plots are coloured by cell line) - When displaying GSEA plots, plot results for most up- and down-regulated user-provided differentially expressed genes (by default)
- Improve GSEA plot style, including rug plot in enrichment score plot (replacing the gene hit plot)
- Plot comparison results against all compared data by calling
- CMap metadata minor improvements:
- Improve list returned by
getCMapConditions()
, including sorting of dose and time points - Correctly set instances of
-666
in CMap metadata as missing values and fix specific issues with metadata (such as doses displayed as300 ng|300 ng
) - In compound metadata, fix missing values showing as literal "NA" values
- Improve list returned by
- CMap perturbation minor improvements:
- Fix error when subsetting a
perturbationChanges
object with only one row - Improve performance when subsetting
perturbationChanges
objects
- Fix error when subsetting a
- Minor improvements to
rankSimilarPerturbations()
:- Correctly set name of perturbations depending on their type (genes, biological agents or compounds)
- Improve performance when correlating against multiple cell lines
- Remove
cellLine
argument (please filter conditions with upstream functions such asfilterCMapMetadata()
) - Fix incorrect label of first column identifiers
- Report run time and settings used
- Perform comparisons against perturbations disregarding their cell lines (faster runtime)
- Fix error when trying to calculate the mean for cell lines with no intersecting conditions available
- Clearly state to the user when no intersecting genes were found between input dataset and CMap data
- Minor improvements to
plot()
:- Improve rendering performance of the GSEA plot
- Fix disproportionate height between top and bottom enrichment score panels in GSEA plots
- Update demo datasets:
- Update the
cmapPerturbationsCompounds
andcmapPerturbationsKD
datasets according to new internal changes and fix their respective code in the documentation
- Update the
- Include license and copyright text for
cmapR
code
- Add tag ImmunoOncology to BiocViews
- Fix comparison against CMap perturbations using gene set enrichment analysis (the resulting score was the additive inverse of the real scores)
- Update title, author names, version and README
- Remove biomaRt dependency
- By default,
getL1000conditions()
now shows CMap perturbation types except for controls - Compare against CMap perturbations (
compareAgainstL1000()
):- Remove "_t" from resulting column names (as the t-statistic may or may not be used)
- Select p-value adjustment method when performing correlation analyses (Benjamini-Hochberg is set by default)
- Documentation:
- Fix obsolete function calls in function documentation
- Hide non-exported functions from reference PDF manual