NEWS
doppelgangR 1.41.1
New Features
- SummarizedExperiment Support: Added native, seamless support for
SummarizedExperiment inputs (and lists containing them) in the main doppelgangR() function. The objects are automatically coerced to ExpressionSet internally using robust S4 coercion (as(x, "ExpressionSet")), enabling direct compatibility without manual type conversions.
Migration to future Parallel Framework
- Replaced
BiocParallel package usage with the CRAN future and future.apply framework for parallel computing.
- Removed
BPPARAM parameter from doppelgangR() to align with future package best practices (enabling global backend configuration via future::plan()).
- Added a dummy parameter catcher in
doppelgangR(...) that throws a helpful deprecation warning if legacy BPPARAM is used.
Performance and Memory Optimizations
- Cartesian Product Vector Optimization: Added a vector fast path in
.outer2df to construct coordinates directly using vector replication (rep), yielding a 46x speedup on 2,000 samples and eliminating massive memory spikes from legacy string splits.
- Phenotype Distance Lookups: Precalculated value frequencies once per column in
phenoDist(), allowing vectorWeightedDist() to perform $O(1)$ lookups instead of scanning columns dynamically. This reduced complexity from cubic to quadratic and achieved a 2.3x speedup on 500 samples.
- Hamming Distance Helper Optimization: Replaced
length(na.omit(z)) with sum(!is.na(z)) inside vectorHammingDist() for an 8x speedup per call.
Bug Fixes & Compliance
- Recycling Warning Fixed: Resolved a vector length mismatch recycling warning in
doppelgangR() intermediate pruning when smoking guns are enabled. Replaced the element-wise logical OR on vectors of unequal sizes with a robust, key-based merging and subsetting strategy.
- BiocCheck & Code Style Compliance:
- Migrated unsafe
sapply() calls to type-safe vapply().
- Replaced manual integer ranges (
1:...) with seq_len().
- Removed
paste() and paste0() from inside error and warning condition signals.
- Replaced raw
cat and print calls in trace logging blocks with message().
doppelgangR 0.5.0
- Add knn imputation by default.
doppelgangR 0.1.1
- remove "smoking gun" columns from calculation of phenotype similarity.
doppelgangR 0.1.0