≥, ≤, ∈) with ASCII equivalents (>=,
<=, in) in roxygen2 comments and .Rd files to fix LaTeX errors in the
PDF manual.
(#88)summariseDMRsByGene() example in \donttest{} to keep
R CMD check within the 10-minute limit (~52 s saved).
(#88)bioconductor/bioconductor_docker,
dropping conda; devcontainer and CI now share the same toolchain. The
R (>=) line in DESCRIPTION is the single source of truth: Bioc version
and image tag are derived automatically; upgrading R requires editing that
one line only.
(#92)testthat blocks with skip_long_checks() to keep
R CMD check within the Bioconductor 15-minute limit.
(#84)skip_long_checks() guard to the calculateCGEnrichment test, which
also fails in CI due to a missing strand<- in the MEDIPS namespace.
(#84)GPL-3 to GPL (>=2).
(#80)qsea::getExampleQseaSet() calls in getUMAP() examples with
exampleTumourNormal, removing slow synthetic data generation from
R CMD check example runs.
(#77)addNormalisation() examples in \donttest{}: the function
requires windows across a range of CpG densities for background
estimation, which the pre-filtered example datasets do not provide.
(#77)plotly PNG device error on headless build servers
(#75)ragg_png device in PCA vignette chunks to resolve
Cairo/X11 dependency issues in CI
(#75)R CMD check TIMEOUT: skip_long_checks() read options()
instead of getOption(), so slow tests never skipped. Also set
options(skip_long_checks = TRUE) in tests/testthat.R.
(#77)qsea::getExampleQseaSet() builds via
cachedExampleQset() (helper-fixtures.R) and gated the slowest
test_that() blocks behind skip_long_checks().
(#77)addHMMcopyCNV(): replaced qsea:::makeGenomeWindows() with a
fixed-width GRanges reimplementation, correcting window widths and
boundaries.
(#77)addHyperStableFraction() now uses identical() for the BSgenome
check, avoiding an "argument is of length zero" error when the
BSgenome parameter is missing (NULL).
(#77)mixSamples() now reports which sample name(s) are absent from the
qseaSet instead of a generic stopifnot() failure, restoring the
diagnostics lost when qsea:::checkSamples() was dropped.
(#77)mixThreeQsetSamples() likewise now names the absent sample(s) rather
than failing with a generic stopifnot() message.
(#77)qsea via @import
(R/mesa-package.R), replaced all qsea:::/janitor::: calls with
public-API equivalents or inline slot assignments, and declared five
data-object names in utils::globalVariables().
(#77)LINE_LENGTH notes; where :: cannot be broken across
lines, replaced long namespace-qualified names with getExportedValue()
(for annotation-package objects in R/genome.R, R/qseaExtra.R) and
utils::data() (for package datasets in R/calculateEnrichment.R,
R/qseaExtra.R) — both are semantically equivalent to pkg::name but
can be formatted across multiple lines
(#76)\donttest{} across getPCA(), getUMAP(),
getDimRed(), plotUMAP(), plotDimRed(), makeQset(), annotateWindows(),
getGenomicFeatureDistribution(), plotRegionsHeatmap(), plotGeneHeatmap(),
plotGenomicFeatureDistribution(), summariseDMRsByGene(), writeDMRsToExcel(),
writeDMRsToBed(), and calculateCGEnrichmentGRanges() — fixes R CMD check
TIMEOUT on Bioconductor build machines.
(#74)@examples block in plotRegionsHeatmap() that caused
identical examples to appear twice in the generated Rd file.
(#74)\code{\link[pkg]{function}} syntax —
R-devel (4.6) is stricter about package-anchored topic resolution.
(#73)hg38UltraStableProbes, plotRegionsHeatmap,
renameSamples, and sliceDMRs documentation to stay within 100 characters.
(#73)inst/scripts/install_mesa.R — standard BiocManager::install()
is sufficient for installation.
(#73)devtools::check() and BiocCheck::BiocCheck().
(#73)sliceDMRs to take the 'top' DMRs in each contrast, based on a specified ranking column. !24getMesaGenome(), getMesaTxDb(), and getMesaAnnoDb() functions to complete mesa's genome management system. Supports hg38, hg19, and mm10 with extensible architecture. !68plotGenomicFeatureDistribution() now supports multiple genomes via genome, TxDb, and annoDb parameters. Function now works with mesa's genome system via setMesaGenome() or custom genome builds. No longer limited to hg38. !68inst/scripts/install_mesa.R: one-shot installer that automatically sets the correct Bioconductor version and validates environment consistency — see README for usage. !72plotPCA into a submethod for the qsea defined method. !11plotPCA gains a verbose option to turn off most of the messages produced. !11plotPCA and plotUMAP now default to filled shapes rather than empty shapes if less than 6 shapes are required. !36plotPCA and plotUMAP can now specify the shapes used via shapePalette, even if no shape annotation is being given. !36getSampleTable is now defined for PCA/UMAP objects. !11plotGeneHeatmap now automatically retries if it fails to connect to biomaRt, and fails with a clear error message if it cannot connect. !44fdrThres changed to FDRthres in calculateDMRs and subsetWindowsOverBackground. !48makeQset now checks that the chromosomes provided match with those present in the BSgenome. !32"PairedAndR1s" coverage method for makeQset will now only process reads that are present in the regions, this should reduce memory requirements and fix issues when _alt chromosomes exist in the bam files. This means the fragment size measurements are now only calculated over the selected regions. !32plotPCA and plotUMAP no longer take the qseaSet as an input. The PCA/UMAP object has a copy of the sampleTable which may be modified instead. !58seq_along rather than 1:n throughout. !67actions/checkout@v2 to v4; added system info step to CI for easier debugging. !71plotGenomicFeatureDistribution and getGenomicFeatureDistribution internal as they currently only work for hg38. !14calculateFractionReadsInGRanges internal as it seems to be returning the fraction of windows that overlap not reads. !14countWindowsAboveCutoff internal as it needs the arguments renaming and better documentation. !14getAnnotationDataFrame and getAnnotationDataFrameIndividual as they are superseded by getAnnotation and the shift to tidy evaluation via sampleAnnotation in the plotting functions. !14colnames function definion on a qseaSet, which was not working anyway. !14dropAvgFragDetails as no longer required. !63.Rbuildignore to exclude .github, .devcontainer, docs/ and other non-package files from the build — silences related R CMD check notes. !70installDependencies.R. !72makeTransposedTable no longer adds chr to the window names even if they already had a chr prefix. !14... inside plotGeneHeatmap and plotRegionsHeatmap. !14writeDMRsToBed should now correctly export the files. !14plotRegionsHeatmap was given more than one region that overlapped one window. !21addMedipsEnrichmentFactors (thanks @daonslog for reporting). !14makeQset, renameSamples and renameQsetNames will no longer accept sample names that are not valid column names in R without quotation. !31fragmentLength when calling makeQset with the CNVmethod = "MeCap" option, and fix an issue with hg19 GRanges. !21plotPCA now plots a shape column that contains NA values without needing to also specifying NAshape. !36plotPCA and plotUMAP no longer print a NULLcol or NULLshape column in the legend when using filled shapes. !36plotPCA and plotUMAP now show the fill colour as opposed to black points in the legend when using filled shapes. !36fragmentLength when calling makeQset with the CNVmethod = "MeCap" option, and fix an issue with hg19 GRanges. !21makeQset printed the wrong number of paired reads being filtered out due to having an insert size outside of the selected size range. !32plotPCA when using ggplot2 4.0.0. !55plotGenomicFeatureDistribution that occurred with Bioconductor 3.21 when multiple chromosome columns existed after ChIPseeker annotation. !68plotGeneHeatmap() examples to handle transient Ensembl connection errors during R CMD check. !70plyranges::mutate() calls throughout the package — plyranges 1.30 no longer re-exports dplyr::mutate(). !72GRanges-class Rd cross-references in liftOverHg19(), getCGPositions(), and qseaTableToChrGRanges(). !72plotGeneHeatmap() examples failing during R CMD check due to transient Ensembl connection timeouts. !72This is the first released version on github, following a lengthy period of internal development. Many things have changed in a major overhaul of the package.
summariseDMRsByGene now correctly summarises genes when they have different positions or lengths in different windows. !5plotCorrelationMatrix no longer crashes when no annotation is being used. !5covr coverage.getPCA() and getUMAP() now return an object of class mesaDimRed, which wraps the previous list based output. This object now contains a copy of the sampleTable, which may be edited using mutate and left_join.plotGeneHeatmap.plotPCA() and plotUMAP() no longer require passing the qseaSet, as the sampleTable is stored in the object.setMesaGenome, setMesaTxDb and setMesaAnnoDb to set global defaults for the annotation packages required by annotateWindows. This has the effect that annotateWindows will no longer assume hg38 by default with no arguments.summariseDMRsByGene function now requires annotateWindows to have already been called on the DMRs (previously it called this internally if necessary).poolSamples now returns data frames instead of matrices in the libraries slot.select now works when dropping a column. !6downSample now works correctly again following changes to how table and enframe interact.calculateDMRs now correctly returns an empty data frame if no DMRs are found.plotPCA now works when colouring by a factor variable.mutate now cannot be used to change the sample_name in the sample table of a qseaSet which breaks the object. renameQsetNames or renameSamples must be used for this.gc_hg38_10kb and map_hg38_10kb (GC and mappability tracks for hg38 at 10kb resolution) for package size reasons.Fixed how the relative enrichment (relH/GoGe) calculation is performed (addMedipsEnrichmentFactors) when using the qsea default method for reads (#1).
Filtering a qseaSet now works correctly when a qseaSet has no cnv data.
Fixed pull to work directly on a qseaSet to return a column of the sampleTable.
Removed mutateQset, filterQset, arrangeQset, sortQset, pullQset, leftJoinQset as these just work on the dplyr verbs directly.
Combined getBetaMeans and getNormalisedReadSum into new function called summariseAcrossWindows.
This allows an arbitrary function to be (e.g. mean or sd) to be applied over all the windows in each sample, and returns a data frame with one result per sample.
Added a new function addSummaryAcrossWindows that performs summariseAcrossWindows but returns the qseaSet with the results added to the sampleTable.
Added a function asValidGranges that checks if an object can be coerced to a GRanges object and does so if possible.
Added setMesaGenome function to globally set which genome to be used for plotting functions.
Standardised on using "Windows" instead of "Regions".
For instance, filterRegions is now filterWindows, and plotGRangesHeatmap is now plotRegionsHeatmap.
Added a function getWindows to mimic getRegions from qsea.
Complete overhaul of the PCA functionality.
getPCA and plotPCA, and the getPCAwithBatch function has been removed.UMAP functionality added, using the same framework as PCAs, with getUMAP and getPCA.
This is still experimental.
Changed pivotDMRsLonger to return columns "group1" and "group2" instead of "sample1" and "sample2".
In DMR results, moved the betaDelta columns to be after the equivalent adjPval columns instead of all being at the end.
Renamed the contrastsToDo argument of makeDMRs to just contrasts.
mixSamples (formerly mixQsetSamples) no longer sets type and tumour in the sampleTable of the returned qseaSet.
Changes to heatmap plotting functions (plotRegionsHeatmap and plotGeneHeatmap, plotCNVHeatmap):
plotGRangesHeatmap is now renamed as plotRegionsHeatmap
Both support a useGroups argument, to determine whether to average over the "group" column of the sampleTable or not.
Argument signatureGR of plotRegionsHeatmap changed to regionsToOverlap.
Changed from pheatmap package to ComplexHeatmap package for the plotting.
The method of adding sample annotations has been overhauled.
This is now specified using sampleAnnotation (instead of annotationCol), and does not support the use of the getAnnotationDataFrame function.
These options now directly take the name of the features to be plotted, supporting unquoted tidy evaluation, i.e. all of these work:
sampleAnnotation = group
sampleAnnotation = c(group, type)
sampleAnnotation = c("group","type")
Heatmaps can now have windows annotated with the use of windowAnnotation.
This supports unquoted tidy evaluation as well, and can use anything on the qseaSet regions slot or on the regionsToOverlap argument.
The getAnnotationDataFrame and getAnnotationDataFrameIndividual functions have been removed.
The colours for the annotations have been overhauled. These now try to choose appropriate colour scales for continuous data based on whether they are strictly positive or not. For discrete annotations, the colours are set globally for the entire annotation set, to try and prevent the occurrance of different annotations using very similar colours.
getDataTable function can now keep the suffix (e.g. _nrpm or _beta) if required.
removeWindowsOverCutoff and keepWindowsOverCutoff have been replaced by a more general function called subsetWindowsBySignal.
This allows for a general function to be specified (for instance mean or max) as well as a threshold, enabling for the filtering of windows based on that function.
Parallelisation of functions is now controlled explicitly by the setMesaParallel function.
This must be used to enable multicore evaluation.
When calculating DMRs, by default the qseaSet will now be filtered to only include samples which are present in the contrasts for the calculating of the dispersion estimates in the generalised linear model.
This can be controlled by the calcDispersionAll option.
The pre-filtering of windows based on expression is unchanged - this only uses samples included in the contrasts.
The difference in mean beta values in the DMR output has been renamed from betaDelta to deltaBeta to reflect the mathematical usage \tex{\Delta \beta}.
Updated documentation in many functions.
Authors updated to include Paddy Harker, Kevin Brennan and Katarzyna Kamieniecka.
Removed exporting of internal functions: dropAvgFragDetails, getBamCoveragePairedAndUnpairedR1, mixThreeQsetSamples, getCGPositions, fitQseaGLM, getDMRsData, subsetWindowsOverBackground.
Renamed many functions throughout the package:
| Previous Function Name | New Function Name |
|---------------------------------|--------------------------------|
| addQseaNormalisationSteps | addNormalisation |
| annotateData | annotateWindows |
| calculateArrayBetas | convertToArrayBetaTable |
| calculateCpGEnrichment | calculateCGEnrichment |
| calculateCpGEnrichmentGRanges | calculateCGEnrichmentGRanges |
| countWindowsOverCutoff | countWindowsAboveCutoff |
| downsampleQsea | downSample |
| filterRegions | filterWindows |
| liftOverhg19 | liftOverHg19 |
| mixQsetSamples | mixSamples |
| plotDMRUpSet | plotDMRUpset |
| qseaWriteDMRsBeds | writeDMRsToBed |
| qseaWriteDMRsExcel | writeDMRsToExcel |
| relabelQset | renameSamples |
| summariseByGene | summariseDMRsByGene |
Six functions have been replaced by different functions (detailed above).
+---------------------------+--------------------------+
| Previous Function | Replacement Function(s) |
+===========================+==========================+
| getQseaPCA | getPCA/plotPCA |
| | |
| getPCAwithBatch | |
+---------------------------+--------------------------+
| getBetaMeans | summariseAcrossWindows |
| | |
| getNormalisedReadSum | |
+---------------------------+--------------------------+
| removeWindowsOverCutoff | subsetWindowsBySignal |
| | |
| keepWindowsOverCutoff | |
+---------------------------+--------------------------+
Renamed data objects:
| Previous data name | New data name |
|---------------------------|-----------------------|
| encodeBlacklist | ENCODEbadRegions |
| examplePairedTumourQset | exampleTumourNormal |
plotGeneHeatmap now uses bioMaRt to find the gene details, based on the genome or mart supplied.
filterByOverlaps now works when the `qseaSet` regions contains "chr" but the regions to filter by do not or vice versa.
Removed all references to PooledControl sample (previously suggested for normalisation).
Various R CMD check warning issues fixed.!6
filterByOverlaps no longer allows the option to take a list of window ID numbers.
Fixed addMedipsEnrichmentFactors function inside makeQset when using the "qseaPaired" coverageMethod.
Fixed tests for addMedipsEnrichmentFactors.
* pull is not working directly, pullQset must be used.
Version set for initial release in v2.0.1 of the internal CBC Nextflow pipeline.