Changelog
Source:NEWS.md
methylumi 2.59.3
Bug fixes
methylumIDAT()reads IDAT files from per-slide subdirectories, which is the layout Illumina’s own software produces (<idatPath>/<Slide>/<Slide>_<Array>_Grn.idat). Both the file-presence check and the code that actually opened the files assumed a flat directory, so a nested run reported every sample as missing. Flat layouts are unaffected. If the same basename appears under more than one subdirectory the read now errors and lists the candidates rather than picking one.getBarcodes()had the same blind spot and is fixed too. (#19)diagnostics()works on objects with no color-channel annotation, such as the bundled GoldenGatemldat. Threeif (annotation(x) == "...")tests errored outright on a zero-length annotation, and past those, the plotting loop split probes on aCOLOR_CHANNELcolumn that such objects do not have, so every panel would have been drawn from zero probes. The long-reported call to the non-existentplot.density()was real, on the same path, and is also fixed. (#23)methylumi.bgcorr()explains itself when asked fornoobcorrection on an object that has no out-of-band intensities. Objects built from GEO series matrices or GenomeStudio output viamethylumiR()carry only methylated/unmethylated/p-value data; OOB probes come only from reading raw IDATs. This used to fail deep inside method dispatch with “unable to find an inherited method for ‘intensities.OOB’”. (#24)
Deprecated and defunct
- The gamma-family background corrections —
method = "goob","gamma"and"mode"— have been removed. They calledgamma.mle(),gamma.mode()andgamma.integral()fromrGammaGamma, a GitHub-only package that is not available from CRAN or Bioconductor and was never declared as a dependency, so these methods have errored for years. Requesting one now produces an error saying so.method = "noob"(the default) is unaffected. (#18)
Internal changes
qc.probe.plot(),plotNAs()andplotProbeNAs()no longer use ggplot2’s deprecatedqplot(). Plot output is unchanged except inplotNAs(), where the segment layer now mapslinewidthrather than the also-deprecatedsize;scale_linewidthuses a linear palette wherescale_sizeused an area one, so line widths differ slightly. (#40)A pkgdown site is published to https://seandavi.github.io/methylumi/ from a GitHub Actions workflow. (#43)
methylumi 2.59.2
Bug fixes
The package installs again.
latticeremovedparallel()from its exports (it was renamedparallelplot()years ago, then deprecated, then made defunct). Because the import resolved at lazy-load time, this brokeR CMD INSTALLfor the whole package rather than justparplot(), and took several downstream packages with it.QCdata()is no longer silently lost when aMethyLumiSetis subset.eSet’s[method drops theQCslot, and the previous guard tried to subset it after that had already happened —NULL[, j, drop = FALSE]returnsNULLwithout erroring, so the guard was a no-op. QC data is now captured before dispatch and reattached. Feature indices no longer apply to QC probes, which live in their own feature space; only sample selection does. As a consequencecombine()no longer reports “Dropped control probes” when combining subsets.The example dataset
mldatno longer shares itsassayDatabetween copies. It had been saved withstorageMode = "environment"instead of"lockedEnvironment", sox <- mldat; methylated(x) <- ...silently mutated the original. The assay values themselves are unchanged.plotNegOob()works again. It had two independent ggplot2 breakages:scale_y_continuous(breaks = NA)(nowNULL) andopts()(removed from ggplot2 years ago, nowlabs()).
Internal changes
.mclapply()is now a thin wrapper aroundBiocParallel::bplapply()instead ofparallel::mclapply()behind arequire().mclapply()forks, so it degraded to serial on Windows regardless. The signature is unchanged, and parallel results are verified identical to serial results. Configure it the standard Bioconductor way, withBiocParallel::register().require()calls inside package code have been replaced with declared imports, or withrequireNamespace()guards that produce an actionable error for genuinely optional packages (MASS, Biostrings, lumi).require()returnsFALSErather than erroring, so a missing package used to change behaviour silently.Bare
T/Fare nowTRUE/FALSEthroughout (105 occurrences). These are ordinary variables, not reserved words, so a user with a variable namedTin scope could change the meaning of a default argument.1:length(x),1:nrow(x)and1:ncol(x)are nowseq_along()/seq_len(), which behave correctly when the length is zero.Base-package functions used by the package are now properly imported, rather than resolving by accident because the packages happened to be attached.
Documentation
Most man pages are generated from roxygen blocks now. The S4 class and generic documentation remains hand-written on purpose; see the note in
R/data.R.extractBarcodeAndPosition()was documented as returning three columns with numeric row and column. It returns five, androw/columnare strings such as"R006"; the numeric ones arerowNumber/columnNumber.
Testing and infrastructure
The package has a test suite for the first time: 36 tests covering import from IDAT and text, normalization, background correction, coercions, filtering, subsetting and every plotting entry point.
CI runs
R CMD checkagainst Bioconductor devel on GitHub Actions, replacing a.travis.ymlthat had not run in years.
Known issues
methylumi.bgcorr()withmethod = "gamma"ormethod = "mode"does not work. It callsgamma.mle(),gamma.mode()andgamma.integral()fromrGammaGamma, which is not declared as a dependency and is not available from CRAN or Bioconductor. The defaultnoobmethod is unaffected.qc.probe.plot(),plotNAs()andplotProbeNAs()still use ggplot2’s deprecatedqplot().