Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,7 @@ rsconnect/
*.o
*.so
.DS_Store

# pkgdown site (deployed to gh-pages)
docs/*
!docs/.nojekyll
36 changes: 16 additions & 20 deletions DESCRIPTION
Original file line number Diff line number Diff line change
@@ -1,28 +1,24 @@
Package: splikit
Title: A toolkit for analysing RNA splicing in scRNA-seq data
Version: 1.0.6
Authors@R:
Title: A Toolkit for Analysing RNA Splicing in scRNA-Seq Data
Version: 2.0.0
Authors@R:
person("Arsham", "Mikaeili Namini", , "arsham.mikaeilinamini@mail.mcgill.ca", role = c("aut", "cre"),
comment = c(ORCID = "0000-0002-9453-6951"))
Description:
Splikit /ˈsplaɪ.kɪt/ is a toolkit designed for the analysis of high-dimensional single-cell
splicing data. It provides a framework to extract and work with ratio-based data structures
derived from single-cell RNA sequencing experiments. The package avoids the need for bulky
S4 objects by offering direct and efficient manipulation of matrices. Core functionalities
are implemented in C++ via Rcpp to ensure high performance and scalability on large datasets.
URL: https://arshammik.github.io/splikit/, https://github.com/Arshammik/splikit
BugReports: https://github.com/Arshammik/splikit/issues
Description: A toolkit designed for the analysis of high-dimensional single-cell
splicing data. Provides a framework to extract and work with ratio-based
data structures derived from single-cell RNA sequencing experiments.
Offers both a modern R6 object-oriented interface and direct matrix
manipulation functions. Core functionalities are implemented in C++ via
'Rcpp' to ensure high performance and scalability on large datasets.
URL: https://csglab.github.io/splikit/, https://github.com/csglab/splikit
BugReports: https://github.com/csglab/splikit/issues
License: MIT + file LICENSE
Encoding: UTF-8
Roxygen: list(markdown = TRUE)
RoxygenNote: 7.3.2
Imports: Matrix, data.table, methods, stats, Rcpp, RcppArmadillo
RoxygenNote: 7.3.3
Imports: Matrix, data.table, methods, stats, Rcpp, R6
LinkingTo: Rcpp, RcppArmadillo
Suggests: testthat (>= 3.0.0)
Suggests: testthat (>= 3.0.0), knitr, rmarkdown
Config/testthat/edition: 3
NeedsCompilation: yes
Packaged: 2025-05-09 22:41:00 UTC; arsham79
Author: Arsham Mikaeili Namini [aut, cre]
(<https://orcid.org/0000-0002-9453-6951>)
Maintainer: Arsham Mikaeili Namini <arsham.mikaeilinamini@mail.mcgill.ca>
Depends: R (>= 3.5.0)
VignetteBuilder: knitr
Depends: R (>= 4.1.0)
8 changes: 8 additions & 0 deletions NAMESPACE
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
# Generated by roxygen2: do not edit by hand

export(SplikitObject)
export(find_variable_events)
export(find_variable_genes)
export(get_pseudo_correlation)
Expand All @@ -13,6 +14,7 @@ export(make_junction_ab)
export(make_m1)
export(make_m2)
export(make_velo_count)
export(splikit)
import(Matrix)
import(Rcpp)
import(data.table)
Expand All @@ -21,8 +23,11 @@ importClassesFrom(Matrix,dgTMatrix)
importClassesFrom(Matrix,dsCMatrix)
importClassesFrom(Matrix,dsTMatrix)
importFrom(Matrix,Matrix)
importFrom(Matrix,nnzero)
importFrom(Matrix,readMM)
importFrom(Matrix,rowSums)
importFrom(Matrix,sparseMatrix)
importFrom(R6,R6Class)
importFrom(Rcpp,evalCpp)
importFrom(data.table,":=")
importFrom(data.table,.GRP)
Expand All @@ -34,4 +39,7 @@ importFrom(data.table,fread)
importFrom(data.table,is.data.table)
importFrom(data.table,setDT)
importFrom(data.table,setnames)
importFrom(methods,as)
importFrom(stats,na.omit)
importFrom(stats,setNames)
useDynLib(splikit, .registration = TRUE)
34 changes: 34 additions & 0 deletions R/RcppExports.R
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,40 @@ standardizeSparse_variance_vst <- function(matSEXP, display_progress = FALSE) {
.Call(`_splikit_standardizeSparse_variance_vst`, matSEXP, display_progress)
}

#' Memory-efficient M2 computation building CSC format directly
#'
#' This version minimizes memory usage by:
#' - Building CSC format directly (no triplet intermediate)
#' - Using O(n_groups) workspace per column instead of dense group_sums matrix
#' - Two-pass algorithm: count then fill
#'
#' Memory usage: O(nnz_output) + O(n_groups) workspace
#' vs previous: O(n_groups * n_cells) + O(6 * nnz_output)
#'
#' @param M1 Sparse matrix (dgCMatrix) of inclusion counts (events x cells)
#' @param group_ids Integer vector of group IDs for each event
#' @param n_threads Number of threads for OpenMP (default 1)
#'
#' @return Sparse matrix M2 with same dimensions as M1
#'
#' @keywords internal
make_m2_cpp_parallel <- function(M1, group_ids, n_threads = 1L) {
.Call(`_splikit_make_m2_cpp_parallel`, M1, group_ids, n_threads)
}

#' Legacy function - redirects to memory-efficient version
#'
#' @param M1 Sparse matrix (dgCMatrix) of inclusion counts (events x cells)
#' @param group_ids Integer vector of group IDs for each event
#' @param n_threads Number of threads for OpenMP (default 1)
#'
#' @return Sparse matrix M2 with same dimensions as M1
#'
#' @keywords internal
make_m2_cpp <- function(M1, group_ids, n_threads = 1L) {
.Call(`_splikit_make_m2_cpp`, M1, group_ids, n_threads)
}

rowVariance_cpp <- function(mat) {
.Call(`_splikit_rowVariance_cpp`, mat)
}
Expand Down
Loading