Skip to contents

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
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 progress parameter
  • 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):
  • 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 optional progress parameter (default: FALSE)
    • Existing code continues to work without modification
  • compute_frechet_mean() function signature changed: added optional progress parameter
    • Existing code continues to work without modification

Dependencies

  • Added future to Imports (cross-platform parallel backend)
  • Added furrr to Imports (future-based parallel map functions)
  • Added progressr to 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:
  • CSample now accepts backend parameter 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

Internal Changes

  • Modified CSample to use backend abstraction internally
  • Updated CSample$connectomes active binding to support lazy loading
  • CSuperSample works transparently with all backend types

Dependencies

  • Added arrow to Imports for Parquet support

Documentation

  • Updated package documentation with roxygen2
  • Added comprehensive test suite for Parquet backend (50+ tests)
  • New vignette explaining Parquet backend usage

riemtan 0.2.0

New Features

  • Added super_sample.R, introducing the CSuperSample class for handling and analyzing collections of CSample objects.
  • Added comprehensive tests for CSuperSample in test-csupersample.R.

Dependency Changes

  • Moved the Matrix package from Depends to Imports in the DESCRIPTION file.

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 LICENSE file with the MIT license.
  • Maintainer: Nicolas Escobar