check_r() recognizes pak's github:: prefix in installed repository metadata, avoiding false source mismatches and unnecessary reinstallation while retaining repository and requested-ref checks.feat:
fit_trends() for GAM and PreTSA feature trends. Statistics include
fit scores, peak and valley times, P-values, and adjusted P-values.
fitted, lower, and upper are optional and stay in input order.
GAM bounds are +/- 2 standard errors on the link scale. PreTSA bounds
equal the fitted values.local_verbose() to set options(log_message.verbose) for the
calling frame and restore it on exit. Compiled log_message() reads
that option through get_verbose().--demo to the Python and Shell log_message scripts and remove
the standalone example files.inst/python/ to
inst/scripts/. The old path is removed.compatibility:
invoke_fun() requires a list or pairlist of argument values, or NULL.
Calls with arguments still use a temporary child environment: captured
expressions use temporary symbols, caller-frame side effects stay in that
environment, and captured model calls are not generally replayable.options(log_message.verbose), otherwise the message stays visible.LOG_MESSAGE_VERBOSE. An omitted
verbose stays visible.ask is no longer silenced when verbose = FALSE in R, Python, and
Shell. error still signals.NO_COLOR in the Python and Shell scripts so terminal styling
can be bypassed.fix:
invoke_fun() call-construction overhead while keeping large
objects outside captured calls. Preserve string function names, use the
same function lookup for empty and nonempty calls, avoid temporary-name
collisions, and preserve explicit missing arguments and their defaults.check_r() installation error when the optional
remotes package is not installed.parallelize_worker_error. Classification does
not depend on the language of R's connection messages. A serialization
failure, including a warning promoted to an error, is still raised
unchanged when the worker is alive.docs:
local_verbose in the pkgdown reference index.feat:
%|||% for NULL or zero-length fallbacks. %ss% remains
NULL-only so it does not mask rlang %||%.detect_cores(), which reports the number of CPU cores and clamps it
to an optional max_threads bound, falling back to 1 when the probe
fails. Supplying num_session gives the worker-count heuristic that
parallelize_fun() uses, so core detection lives in one place.col_maxs(), row_maxs(), fast_aggregate(), and
aggregate_matrix() for dense and sparse matrices. Sparse maxima treat
implicit zeros as zero.performance:
verbose = FALSE calls.fix:
parse_inline_expressions(). Vector-valued evaluations previously grew the
message text beyond length one and crashed the grepl-based replacement
loop with 'length = N' in coercion to 'logical(1)' before the real error
details could be reported.compatibility:
matrix_to_table(keep_zero = TRUE) default.
Compact table output remains an explicit choice.run_sparse_topk_by_column(). The new run_sparse_topk() includes implicit
sparse zeros by default so it matches ordinary dense-matrix semantics.feat:
run_dense_topk() with an explicit by = "col" or by = "row"
direction and a decreasing top-k default.run_sparse_topk() and run_sparse_topk_stored() with an explicit
by = "col" or by = "row" direction. The earlier column-wise names
remain available as compatibility wrappers.parallelize_fun(verbose = TRUE, progress = FALSE) to retain
standardized log_message() lifecycle output without a dynamic terminal
progress bar.sparse_cor() blockwise and add correlation threshold, dense
working-memory, and opt-in sparse output-size controls. The output limit
defaults to Inf for compatibility. Spearman and Kendall paths now check
their dense allocation boundary before conversion.compute_lisi().fix:
NA values instead of zeros.remove_inf = TRUE.docs:
tests:
log_message() now emits an actual R warning for message_type = "warning", so warnings are visible to tryCatch(), warn = 2, and warning() handlers.feat:
classification_metrics_compute() plus dense and sparse column-wise
top-k helpers, with native C++ implementations.fix:
check_r(): change dependencies default from TRUE to NA, so
hard dependencies (Depends, Imports, LinkingTo) are installed by
default while Suggests are excluded (#XXX).check_r() error reporting: traverse the full error chain via
rlang::cnd_message(e, inherit = TRUE) instead of only showing the
top-level message; strip ANSI escape codes to avoid printing garbage in
the log.check_r() by storing
error details per-package and reporting them once in the final summary.remotes when pak cannot parse a malformed
DESCRIPTION file.compute_simpson_index.feat:
collapse_sparse_rows(): collapse sparse matrix rows by group while preserving sparse output and row order.compute_lisi(): simplify nearest-neighbor backend selection by removing the hnsw path and using a more conservative "auto" strategy that prefers the package's exact backend only for very small problems.parallelize_fun(): refactor verbose multi-core execution to collect results dynamically while preserving input order and progress reporting across uneven workloads.log_message(): allow explicit verbose to override the global option and normalize captured cli alerts emitted inside expr.fix:
normalization() against degenerate inputs so zero-variance or zero-sum vectors return stable values instead of NaN/Inf.matrix_to_table() sparse keep_zero = TRUE handling to match dense output more reliably and make equal-magnitude sorting deterministic.table_to_matrix() to aggregate duplicate row/column coordinates consistently in both dense and sparse output paths.pak::pkg_install()/pak::pkg_remove() with explicit library handling.docs:
collapse_sparse_rows().compute_lisi() and log_message() documentation to match the current arguments and defaults.tests:
collapse_sparse_rows() edge cases, compute_lisi() backend consistency, captured cli messages in log_message(expr = ...), matrix conversion corner cases, parallelize_fun() ordering/export behavior, normalization on degenerate inputs, and startup suppression when verbose logging is disabled.feat:
compute_lisi(): compute per-cell Local Inverse Simpson's Index (LISI) scores for categorical variables.log_message(): add optional expr support to capture standard output, messages, and warnings from another expression and re-print them with log_message() formatting while returning the evaluated result.parallelize_fun():
"Error : Not a matrix.") and warnings during function execution in parallelize_fun() via stderr redirection and suppressWarnings().progress_bar_width to parallelize_fun() for direct progress bar width control; default width is now 10.fix:
parallelize_fun()
cores = 1: use output_list[i] <- list(result) instead of output_list[[i]] <- result to prevent NULL returns from shrinking the output list.parallel::detectCores(logical = FALSE) is unavailable or returns an invalid value, execution now falls back safely to at least one worker instead of failing.check_ci_env(): detect whether the current session should be treated as CI/pkgdown context; returns TRUE for interactive sessions and for GitHub Actions when GITHUB_ACTIONS=true and GITHUB_WORKFLOW=pkgdown (case-insensitive), otherwise returns FALSE.is_outlier(): detect outlier indices using median and MAD-based bounds (nmads, constant) with type = "both"|"lower"|"higher; NA values are also included in the returned index vector.check_pkg_status(): make the package/version checker available as a public API; it checks installation status in a target library (lib) and optionally verifies exact version match when version is provided.@examples for check_r() function.check_r(): check and install R packages from CRAN, Bioconductor, or GitHub; supports version pinning (pkg@version or pkg==version) and optional force reinstall; uses pak::pak() for installation with configurable lib and dependencies.remove_r(): check and remove installed R packages from the given library; uses pak::pkg_remove(); skips packages that are not installed and reports success or failure per package.add_pkg_file() dependency management: cli dependency is now added with correct comma separation, and both Imports and Suggests sections are automatically sorted alphabetically. The Suggests section is now enforced to follow Imports.add_pkg_file() flow: better metadata extraction/logging from DESCRIPTION, and smarter logo generation fallback when figlet fails. Generated package files now include @useDynLib only when src/ exists..onAttach() now shows package version, release date, and website link in both generated package files.matrix_to_table() C++ implementation: Improved dimnames handling using Rf_getAttrib and R_DimNamesSymbol for better compatibility. Enhanced keep_zero = TRUE logic to efficiently include all row/column combinations (including zeros) using unordered_set and unordered_map for optimized lookups.table_to_matrix() C++ implementation: Enhanced sparse matrix construction by ensuring zero values are not added to sparse matrices. Improved dimnames setting using Rf_setAttrib and R_DimNamesSymbol for better compatibility.parallelize_fun() function: Unified progress bar creation logic by removing conditional branches and using a single consistent format. Updated progress bar format string for better readability and consistency.get_namespace_fun() function.log_message() function: Added new "ask" message type for interactive user prompts. When message_type = "ask", the function uses utils::askYesNo() to prompt the user and returns TRUE for Yes, FALSE for No, and NA for Cancel.parallelize_fun() function: Improved progress bar status display in parallel processing mode. Now shows only the first item name/value with ellipsis ("…") instead of concatenating all chunk items, resulting in cleaner and more concise progress display.feat:
log_message() and add_pkg_file(): Converted private helper functions (prefixed with .) to public functions, improving code accessibility and maintainability. Functions affected include build_message(), validate_params(), output_message(), style_formatting(), plain_text_output(), get_caller_call(), extract_function_name(), make_color_style(), check_color(), and generate_content().docs:
@return documentation for thisutils_logo() and logo functions generated by add_pkg_file().timestamp_style parameter in log_message() function from TRUE to FALSE for cleaner default output.figlet() references to use HTTPS, addressing CRAN incoming NOTE.log_message() function: Added new plain_text parameter to suppress level, symbol, timestamp, and message type formatting while preserving color and multiline settings, allowing for cleaner text-only output.add_pkg_file() function: Enhanced message types and formatting, using more appropriate message types (warning, running) and improved file references in log messages.check_sparsity() function: Improved calculation logic by computing total counts upfront, avoiding redundant calculations for sparse and non-sparse matrices.normalization() function: Enhanced max_min and maximum methods by caching min/max values to avoid repeated calculations.parallelize_fun(): Replaced sapply() with vapply() for type-safe return values and optimized error handling logic.meanp(), sump(), votep()): Extracted validp variable to avoid repeated indexing and improved code efficiency.sump() function: Replaced loop-based calculation with vectorized operations for better performance.capitalize() and unnest_fun() functions: Replaced sapply() with vapply() for type safety.add_pkg_file() function: Now automatically checks for the existence of src directory and only adds @useDynLib directive when src folder is present in the package environment.log_message() function: Now automatically handles non-character objects (e.g., data.table, data.frame) by formatting them with capture.output(print(...)), allowing direct object input without manual string conversion.matrix_to_table() C++ implementation to iterate dgCMatrix slots directly, avoiding dense conversion and reducing memory/time cost on large sparse matrices.keep_zero/threshold semantics across C++/R: retain entries if abs(value) >= threshold; zeros are retained only when keep_zero = TRUE and threshold == 0.parallelize_fun() function: Added support for named vectors and vectors in progress display, showing current processing item names or values in the progress bar. Improved progress bar formatting with status information and enhanced parallel processing progress updates.add_pkg_file() and thisutils-package.R: Enhanced separator line display with grey color styling using cli::col_grey() for better visual consistency.add_pkg_file() function: Added automatic dependency checking to ensure cli package is included in DESCRIPTION file, and automatic pkgdown configuration checking to ensure proper package overview section setup.feat:
get_verbose() function: New exported function to get verbose option from global options or local arguments, providing better control over message display..onAttach() function: Now respects verbose settings and only displays startup messages when verbose mode is enabled, improving user experience.add_pkg_file() function: Generated .onAttach() function now includes verbose check using get_verbose(), ensuring consistency with package behavior.docs:
parse_inline_expressions().list_figlet_fonts() and rescale() functions.add_pkg_file() function: Simplified function parameters by removing manual parameter inputs and automatically extracting all package information from DESCRIPTION file. Enhanced error handling and improved logging messages.parallelize_fun() function with robust error handling: Added clean_result parameter to control automatic removal of failed results, and throw_error parameter to control detailed error message display. Functions now gracefully handle partial failures without stopping execution.parse_inline_expressions() function: High-performance inline expression parser that evaluates {} expressions while preserving CLI formatting markers like {.val ...}.log_message() function: Add new "running" message type with orange circle dotted symbol (◌) to indicate ongoing processes.wilkinsonp(), maximump(), minimump(), meanp(), votep(), and sump() for meta-analysis and multiple study result integration.max_depth() function to calculate the maximum depth of nested lists.add_pkg_file() function. Now, add_pkg_file() can automatically extract information of R package from DESCRIPTION file and save it in the ./R/ folder.str_wrap() function.feat:
purrr::map2() with mapply(), and delete purrr package in DESCRIPTION.methods::is() with inherits(), and delete methods package in DESCRIPTION.docs:
matrix_process() function.feat:
matrix_to_table() and table_to_matrix() functions for data conversion between matrix and table formats.sparse to return_sparse for as_matrix()docs: