Substantially updated and optimized the exir function for improved
scalability, flexibility, and usability across bulk and single-cell
omics datasets.
Updated exir to accept experimental data in multiple formats,
including data frames, tibbles, matrices, sparse matrices, and Seurat
objects.
Updated the expected non-Seurat experimental data format for exir to
support the common omics layout, with features/genes in rows and
samples/cells in columns. Internally, exir automatically converts
the input to the required analysis format.
Replaced the previous Condition_colname workflow with the more
flexible condition argument. The condition argument can now be
either a condition row/column name or a character/factor vector with
the same order as the samples/cells in the input data. For Seurat
objects, condition can be the name of a metadata column.
Added Seurat object support to exir via the new assay and layer
arguments.
Added the Exptl_data_type argument to specify whether the
experimental data are "bulk" or "sc", enabling data-type-aware
preprocessing, normalization, pseudo-sampling, and warnings.
Restored and redesigned the normalize argument. For bulk count-like
data, normalize = TRUE now applies TMM normalization followed by
logCPM transformation using edgeR. For single-cell data,
normalization is applied after pseudo-bulk aggregation when
pseudo-sampling is enabled.
Added pseudo-sampling/pseudo-bulking support to exir through the new
pseudo_sample and pseudo_samples_per_group arguments. This is
particularly useful for large datasets and single-cell RNA-seq data.
Implemented condition-stratified, non-overlapping pseudo-sampling. For
bulk data, pseudo-samples are generated by averaging normalized
expression values within condition-specific groups. For single-cell
data, pseudo-bulk samples are generated by summing raw counts within
condition-specific groups followed by TMM/logCPM normalization using
edgeR.
Added the Exptl_data_size_check argument to optionally prompt users
to consider pseudo-sampling when the number of samples/cells is large.
Added conservative feature filtering to exir through the new
feature_filter, min_feature_prevalence, min_feature_total,
min_feature_variance, and always_keep_diff_features arguments.
This filter removes uninformative features with insufficient
prevalence, total signal, or variance without performing highly
variable gene selection. Features in Diff_data and Desired_list
can be forced to remain in the analysis.
Optimized exir data preparation to delay dense conversion of sparse
input data until after optional pseudo-sampling and feature filtering,
reducing memory pressure for large omics datasets.
Optimized PCA in exir by replacing full PCA with truncated PCA using
irlba::prcomp_irlba for the first principal component.
Optimized the correlation table handling in exir to avoid
unnecessary full-table duplication while preserving the original
association analysis logic and output.
Optimized graph reconstruction in exir by removing unintended
self-loops while preserving multiple edges.
Optimized neighbourhood score calculation in exir by replacing
row-by-row igraph::neighbors() calls with sparse adjacency matrix
multiplication.
Vectorized row-wise scoring and classification operations in exir,
including primitive driver score calculation and driver/biomarker type
assignment.
Optimized the extraction of first- and second-order associated drivers
for mediator tables by replacing repeated regex-based grep()
searches with batched neighbourhood retrieval and set-based matching.
Optimized several IVI-related routines while preserving output consistency with the original implementation.
Optimized clusterRank by avoiding repeated degree calculations and
reducing redundant graph traversal.
Optimized lh_index and h_index by precomputing repeated
neighbourhood-size and H-index components where possible.
Optimized neighborhood.connectivity by precomputing first-order
neighbourhood sizes and reducing repeated calls to
igraph::neighborhood.size.
Optimized collective.influence while preserving identical output.
Replaced older verbose output in exir with cleaner cli-based
progress and stage reporting.
Updated error and warning messages in the exir workflow using cli
for clearer user-facing feedback.
Updated the ExIR vignette to document the new input formats, data orientation, condition handling, normalization options, pseudo-sampling workflow, Seurat support, and conservative feature filtering.
Updated exir documentation to clarify recommended input requirements
for bulk and single-cell data.
Updated exir documentation to clarify that TMM/logCPM normalization
is appropriate for many bulk RNA-seq count datasets but may not be
appropriate for all omics data modalities.
Updated examples for the new condition, Exptl_data_type,
Exptl_data_orientation, normalize, pseudo_sample, and
feature_filter workflows.
Added edgeR for TMM/logCPM normalization of count-like bulk data and
pseudo-bulked single-cell data.
Added use of cli for improved messages and progress reporting.
Added use of Matrix utilities for sparse matrix handling and
efficient graph/neighbourhood calculations.
Added optional Seurat object support through SeuratObject.
Improved handling of missing values in experimental data during preprocessing.
Improved detection of count-like, sparse, bulk-like, and single-cell-like input data characteristics.
Improved validation of Seurat assays, layers, and metadata-derived condition labels.
Improved validation of pseudo-sampling settings, including condition-specific sample/cell counts.
Improved memory cleanup after full correlation table reduction in
exir.
Improved consistency of output table preparation after vectorized score/type calculations.
Added first-order and second-order associated drivers of mediators to the final mediator result tables.
Implemented matrix-based linear algebra formulation and C++ code in
the fcor function and consequently the association analysis module
of the function exir, resulting in a highly optimized and
significantly faster association analysis.
Removed the data.table dependency, as it is no longer required.
Enabled parallel multi-core processing across multiple components of
the function exir, including the supervised machine learning module.
The function exir is optimized. It now automatically handles NA
values of the input experimental data and convert them to zero.
Debug the function cent_network.vis.
Add the reexports function.
Update the documentation of the modified functions.
The syntax of the functions reexported from the igraph package are corrected.
The package version is updated.
The function comp_manipulate is optimized.
The function exir is optimized. Also, the local and online version
of the ExIR shiny apps are updated according to this optimization
(calculation of zscores from the raw data rather than range normalized
data).
The argument ‘scaled’ of the functions ivi, spreading.score, and
hubness_score is changed to ‘scale’ and its functionality is
optimized. Also, the performance and documentations of these functions
are updated accordingly. Additionally, the local and online version of
the IVI shiny apps are updated according to these changes.
SIRIR function, sirir, is optimized by providing access to several
cores. Also, its documentation is updated.
The function collective.influence is updated to match the current
updates of the igraph package.
The package readr is added to the ‘Suggests’ section of the
Description file.
The function runShinyApp is updated to require the readr package.
The IVI local shiny app is updated to use the readr package for
loading the datasets.
The IVI local shiny app is debugged.
The README file is updated.
DESCRIPTION of the package is updated.
New packages including foreach, and doParallel are added to the Imports section of the DESCRIPTION.
ExIR function, exir, is optimized by providing access to several
cores. Also, its documentation is updated.
IVI function, IVI, is optimized by providing access to several
cores. Also, its documentation is updated.
LH-index function, clusterRank, is optimized by providing access to
several cores. This also significantly speeds up the ivi function.
Also, its documentation is updated.
LH-index function, lh_index, is optimized by providing access to
several cores. This also significantly speeds up the ivi function.
Also, its documentation is updated.
A verbose argument is added all centrality measure functions and
their corresponding documentations are updated as well.
The fcor function, fcor, as well as its documentation are optimized
and updated.
The documentation of the SIRIR function, sirir, is updated.
Hubness score function, hubness.score, is debugged and optimized.
Spreading score function and its documentation, spreading.score, is
debugged and optimized.
IVI function, ivi, is debugged and optimized.
IVI from indices function, ivi.from.indices, is debugged and
optimized.
Collective Influence function, collective.influence, is optimized.
The documentation of the Collective Influence function,
collective.influence, is updated.
ExIR Shiny app is updated according to the ExIR function.
ExIR visualization function, exir.vis, is optimized.
The package vignettes are updated and the fcor function described
and exemplified in the vignettes.
The ExIR function is optimized (corrected for proper Spearman correlation analysis and added Mutual rank as a measure for filtering top correlations) and speeded up (using the data.table package).
A function named fcor is added to the package for super-fast
correlation analysis of large datasets and simultaneous P-value and
Mutual Rank calculations.
The package vignettes are updated.
The betweenness function is corrected.
Documentation of some functions corrected.
Links to my personal website are corrected.
The package vignettes are updated.
The implementations of shiny apps are optimized.
Shiny apps are debugged.
A new argument, label.position, is added to the exir.vis function.
The exir.vis function is debugged and optimized.
The upload file size limit is removed from the local shiny apps.
The package website built with pkgdown is added to github.
The default correlation coefficient is changed from 0.3 to 0.5 in the ExIR function and its shiny app.
The ExIR shiny app is debugged and updated.
The ExIR function is debugged and updated.
The DESCRIPTION file is updated.
The function ExIR as well as the ExIR shiny app are debugged.
Documentations of some functions are updated.
The DESCRIPTION file is updated.
The name of the function for running shiny apps is changed to
runShinyApp.
Shiny apps are updated in the package for local use.
Documentations of several functions are updated.
The Vignettes are updated.
The Read Me file is updated.
Update package Vignettes.
Documentation on how to access ExIR shiny app is added to the Read Me file, vignettes, and the corresponding functions’ documentations.
The ExIR shiny app is added to the package.
A Shiny app is developed for the running the ExIR model and visualization of its output.
Add the comp_manipulate function for the simulation of gene knockout
and up-regulation.
Debug the function IVI.
Debug the function ExIR.
Add dependence to R package janitor for the correction of illegal characters in feature names.
Documentation on how to access IVI shiny app is added to the Read Me file, vignettes, and the corresponding functions’ documentations.
The IVI shiny app is added to the package.
A Shiny app is developed for the calculation of IVI as well as IVI-based network visualization.
The dependence of the function ExIR on the package reshape2 is
removed.
The function ExIR is debugged.
ExIR is debugged.The ReadMe file is updated.
The citation details of the package is updated.
Vignettes of the package are updated and extended.
A new function named exir.vis is added for the visualization of the
results of the function exir.
A new function named cent_network.vis is added for the visualization
of a network based on a centrality measure.
A new function named graph_from_incidence_matrix is added (imported
from the igraph package) for the network reconstruction from an
incidence matrix.
A new column named Type is added to the Biomarker table of the
function ExIR.
The Z-score and statistical significance are added to the results of
the function ExIR.
The function ExIR is updated so that the experimental data are
ranked prior to correlation analysis. This will result in the
assessment of the association based on the Spearman method, a more
robust algorithm in variable conditions and/or non-parametric
distributions.
The version of Roxygen2 is updated in the DESCRIPTION file.
The documentation of the ExIR function is updated.
The ExIR function is updated to prevent outputting NULL results.
The package logo is updated in accordance with the logo design of well-known R packages.
Some documentations in the Read Me file are corrected.
The NC function is improved.
The documentation of the exir function is updated.
The DESCRIPTION file is updated according to all of the modifications.
The citation details of the package is updated.
The function diff.data.assembly is added for assembling the
differential/regression data required as an input for the exir
function.
The function exir is added for the experimental-data-based
classification and ranking of top candidate features.
The function clusterrank is upgraded to clusterRank in order to
calculate the ClusterRank centrality internally.
The function neighborhood.connectivity is undergone minor
modifications to enhance the performance speed.
The function sif2igraph is added for automatic importing and
conversion of a SIF file from the users’ local hard drive, cloud
space, or internet into a graph with an igraph class.
The thesis advisors are added to the DESCRIPTION file.
Some minor corrections are done in the documentation of functions and DESCRIPTION file.
The DESCRIPTION file is updated.
The Vignettes file is updated.
The function sirir is added for the unsupervised influence ranking
of network nodes.
The function hubness.score is added for the calculation of the
Hubness score.
The function spreading.score is added for the calculation of the
Spreading score.
The function ivi is added for the influential node identification
from a graph.
The function ivi.from.indices is added for the influential node
identification from indices.
The function ihs is removed as a refined formula is added for
influential node identification.
Updating the normality assessment results of association functions for vectors of length < 4
The function clusterrank is added for the calculation of
ClusterRank.
The function collective.influence is added for the calculation of
Collective Influence.
The function lh_index is added for the calculation of local H-index.
The function h_index is added for the calculation of H-index.
The function neighborhood.connectivity is updated so that it will
not return any NA or NaN values and the output will be a numeric
vector.
The formatting of return values in the documentation of each function is corrected.
The citation details of the package are updated according to its
associated published paper.
The error regarding the use of NNS since the second use of
association assessment functions including cond.prob.analysis and
double.cent.assess.noRegression is now corrected.