Changes in version 2.2.0 (2026-01-23) Code Quality Improvements API Refinements - Renamed construct_flux_boundaries_fast → construct_flux_bounds (cleaner API) - Renamed internal function parameters for clarity: - LB_rep → lb_base, neg_one_vec → lb_tail, etc. - Renamed use_parallel → parallel, num_cores → n_cores, use_rcpp → use_cpp Code Cleanup - Removed redundant comments (e.g., "优化", "修复", "BUG FIX") - Standardized internal function naming with . prefix - Improved roxygen2 documentation with detailed parameter descriptions - Consistent English documentation throughout Bug Fixes - Fixed calculate_multi_comp() logic: unique(com) == TRUE → all(com) - Fixed compute_flux() indexing: proper handling of reversibility indices - Fixed biomass reaction bounds: biomass now uses original UB (1000) instead of MRAS - Full Seurat v4/v5 compatibility via GetAssayData() Cross-Platform Stability - PSOCK clusters for Windows/macOS/Linux compatibility - Guaranteed cluster cleanup with on.exit() - Auto-detection of physical CPU cores (capped at 8) - Pre-compiled C++ functions (no runtime compilation) Changes in version 2.1.1 (2026-01-20) Bug Fixes - Fixed boolean vector handling in reaction score calculation - Fixed integer index negation bug in flux computation - Added Seurat v5 compatibility layer Changes in version 2.1.0 (2025-01-25) Major Performance Improvements (10-20x faster) Parallel Computing (4-8x speedup) - Multi-core parallel processing using parallel, foreach, and doParallel - Auto-detects available CPU cores (default: all cores - 1) - New parameters: use_parallel = TRUE, num_cores = NULL Rcpp Optimization (1.05-1.1x speedup) - C++ implementation for boundary construction - 10-50x faster than R version for boundary calculations - Automatic fallback to R if Rcpp unavailable - New parameter: use_rcpp = TRUE Combined Performance - Total speedup: 10-20x for typical analyses - Example (100 bootstraps × 5 cell types): - Before: ~17 minutes - After: ~1-2 minutes (with 8-core CPU) Backward Compatibility - 100% compatible - all existing code works without changes - Default behavior: optimizations enabled automatically - Can disable: compute_sc_flux(..., use_parallel = FALSE) Bug Fixes - Fixed critical bug in calculate_avg_exp() bootstrap sampling (v2.0.1) - Fixed METAFLUX::: namespace references - Fixed Rcpp function export in parallel workers New Dependencies - parallel, foreach, doParallel - for parallel computing - Matrix - sparse matrix operations - Rcpp (optional) - C++ optimization Changes in version 1.0.0 Initial Release This is the first release of METAFLUX, a performance-optimized implementation of METAFlux (Huang et al., Nature Communications, 2023). Performance Improvements Computational Speed - Bulk RNA-seq analysis: 30-60% faster - Single-cell RNA-seq analysis: 45-70% faster - Benchmark results: - 100 samples: 3.6 min → 2.0 min (44% improvement) - 500 samples: 18.3 min → 10.1 min (45% improvement) - 5K cells: 8.5 min → 4.2 min (51% improvement) - 10K cells: 26.7 min → 13.2 min (51% improvement) Memory Efficiency - 30-50% reduction in peak memory usage - Optimized sparse matrix operations - Reduced memory allocation overhead Technical Enhancements Algorithmic Optimizations - Vectorized matrix operations replacing iterative calculations - Sparse matrix implementation using Matrix package - Pre-allocation of data structures to eliminate dynamic growth - Pre-computation of invariant values outside loops - Optimized bootstrap sampling for single-cell analysis Code Quality - All external functions explicitly namespaced (package::function()) - Comprehensive roxygen2 documentation - Type-safe operations with explicit data types - Consistent code style following tidyverse guidelines - Passes styler::style_pkg() without errors Validation Numerical Accuracy - All results numerically identical to original METAFlux - Difference < 1e-10 (floating-point precision limit) - Validated across: - NCI-60 bulk RNA-seq benchmark - Multiple single-cell datasets - Edge cases and boundary conditions Test Coverage - Comprehensive validation test suite included - Unit tests for all core functions - Integration tests for complete workflows - Performance benchmarking utilities API Compatibility - 100% backward compatible with original METAFlux - Identical function signatures and parameter names - Same input/output data structures - Drop-in replacement requiring no code changes Dependencies New Dependencies - Matrix (>= 1.3.0) - Required for sparse matrix optimization Updated Requirements - R (>= 3.6.0, 4.0.0+ recommended) - osqp (>= 0.6.0) - dplyr (>= 1.0.0) - Seurat (>= 4.0.0) - for single-cell analysis - stringr (>= 1.4.0) - stringi (>= 1.5.0) Documentation - Comprehensive README with installation and usage examples - Detailed optimization guide explaining technical improvements - Quick reference comparing original and optimized versions - Complete API reference documentation - Validation test suite with usage examples Bug Fixes from Original - Fixed: styler syntax error in data.R documentation - Fixed: Potential memory leak in bootstrap sampling - Fixed: Edge case handling in MRAS calculation Known Limitations - Requires Matrix package (new dependency) - Minimal floating-point differences (< 1e-10) may occur due to operation reordering - Performance gains most pronounced with larger datasets (>100 samples or >5K cells) Migration from METAFlux v1 METAFLUX is a drop-in replacement: # Simply change installation source # Original: # devtools::install_github('KChen-lab/METAFlux') # METAFLUX: devtools::install_github('Zaoqu-Liu/METAFLUX') # No code changes needed library(METAFLUX) # Same API as original Acknowledgments This optimized implementation builds upon the excellent work of: - Yuefan Huang (Original algorithm and implementation) - Kyle Tsai (Development and testing) - Ken Chen Lab at MD Anderson Cancer Center