Changelog
Source:NEWS.md
riemtan 0.2.5
New Features
Futureverse/furrr Parallel Processing
- Added comprehensive parallel processing support via the futureverse framework (future + furrr packages)
-
Cross-platform parallelization: Works on all platforms including Windows (replaces platform-specific
parallel::mclapply) - Intelligent auto-detection: Automatically uses parallel processing when beneficial based on data size
-
Flexible configuration: Users can control parallelization via
set_parallel_plan() - Progress reporting: Optional progress bars via progressr package integration
Parallel Processing Infrastructure
- New module
R/parallel_config.R:-
set_parallel_plan(): Configure parallel strategy (sequential, multisession, multicore, cluster) -
is_parallel_enabled(): Check parallel status -
should_parallelize(): Auto-detect when to parallelize based on threshold -
get_n_workers(): Query number of parallel workers -
reset_parallel_plan(): Reset to sequential mode
-
- New module
R/progress_utils.R:-
with_progress(): Execute expressions with progress reporting -
create_progressor(): Create progress reporters for loops -
configure_progress(): Configure progress handlers -
is_progress_available(): Check progressr availability
-
Enhanced Components with Parallel Support
-
TangentImageHandler (
R/tangent_handler.R):-
compute_tangents(): Parallel tangent space projections -
compute_vecs(): Parallel vectorization -
compute_conns(): Parallel exponential maps -
set_reference_point(): Parallel tangent relocation - All methods support optional
progressparameter
-
-
ParquetBackend (
R/parquet_backend.R):-
get_all_matrices(): Parallel matrix loading from Parquet files -
get_matrices_parallel(): New method for batch parallel loading - Automatic parallelization for I/O-bound operations
-
-
Core Algorithms (
R/other_utils.R):-
relocate(): Now usesfurrr::future_map()instead ofparallel::mclapply(cross-platform!) -
compute_frechet_mean(): Parallel processing support with progress parameter - Both functions support
progressparameter
-
-
CSample Class (
R/sample.R):-
compute_tangents(): Pass-through progress support -
compute_vecs(): Pass-through progress support -
compute_unvecs(): Parallel unvectorizati with progress -
compute_conns(): Pass-through progress support -
compute_fmean(): Pass-through progress support -
change_ref_pt(): Pass-through progress support -
load_connectomes_batched(): NEW - Batch loading with memory management for large Parquet datasets
-
Performance Improvements
- 5-10x speedup for loading large Parquet datasets (parallel I/O)
- 3-8x speedup for tangent computations on large samples (scales with workers)
- 2-5x speedup for Frechet mean computation (n > 100)
- Reduced overhead for small datasets via intelligent threshold-based auto-detection
Breaking Changes
-
relocate()function signature changed: added optionalprogressparameter (default: FALSE)- Existing code continues to work without modification
-
compute_frechet_mean()function signature changed: added optionalprogressparameter- Existing code continues to work without modification
Dependencies
- Added
futureto Imports (cross-platform parallel backend) - Added
furrrto Imports (future-based parallel map functions) - Added
progressrto Suggests (optional progress reporting)
Documentation
- Updated vignettes with parallel processing examples
- New performance benchmarking guidance
- Comprehensive roxygen2 documentation for all new functions
Internal Changes
- Removed dependency on
parallel::mclapply(platform-specific, Windows incompatible) - All parallel operations now use futureverse framework for consistency
- Progress reporting infrastructure integrated throughout codebase
riemtan 0.2.4
New Features
Apache Arrow/Parquet Support
- Added support for Apache Arrow Parquet format for efficient storage and lazy loading of large connectome datasets
- Introduced backend abstraction layer (
DataBackend,ListBackend,ParquetBackend) to decouple storage from business logic -
ListBackend: Wraps existing list-based storage for backwards compatibility -
ParquetBackend: Lazy-loads matrices from Parquet files with LRU caching (default cache size: 10 matrices) - New I/O functions:
-
write_connectomes_to_parquet(): Export matrices to Parquet format with metadata -
validate_parquet_directory(): Validate Parquet directory structure -
create_parquet_backend(): Convenience function to create ParquetBackend
-
-
CSamplenow acceptsbackendparameter for flexible storage options - Full backwards compatibility: existing code using lists continues to work unchanged
- Metadata support: Store subject IDs, data provenance, and custom metadata with Parquet datasets
- New vignette: “Using Parquet Storage for Large Datasets”
Validation Functions
- Added
validate_backend(): Validates backend objects - Added
validate_parquet_dir(): Validates Parquet directory structure
riemtan 0.2.0
riemtan 0.1.0
CRAN release: 2025-04-23
New Features
- Implements various Riemannian metrics for symmetric positive definite matrices, including:
- Affine Invariant Riemannian Metric (AIRM)
- Log-Euclidean
- Euclidean
- Log-Cholesky
- Bures-Wasserstein metrics
- Provides functions for:
- Computing logarithmic and exponential maps
- Vectorization
Documentation
- Added comprehensive documentation for all functions using
roxygen2. - Included vignettes demonstrating the usage of the package.
Dependencies
- Depends on R (>= 4.3.0)
- Imports the following packages:
- Matrix
- methods
- expm
- R6
- purrr
- MASS
- furrr
- Suggests the following packages for testing and documentation:
- testthat (>= 3.0.0)
- knitr
- rmarkdown
Miscellaneous
- Added a
LICENSEfile with the MIT license. - Maintainer: Nicolas Escobar nescoba@iu.edu