gsva-rust 0.1.0

Pure-Rust port of the GSVA family of gene-set enrichment methods (GSVA, ssGSEA, z-score, PLAGE), validated for numeric parity against the Bioconductor GSVA package.
Documentation
//! Shared result type for gene-set enrichment methods.

/// Result of a gene-set enrichment run: a per-set score for each sample.
///
/// `scores` is stored row-major as `gene_sets x samples`, so the score for
/// gene set `g` in sample `s` lives at `scores[g * samples.len() + s]`.
#[derive(Clone, Debug)]
pub struct EnrichmentResult {
    /// Gene-set names, in output order (rows of `scores`).
    pub gene_sets: Vec<String>,
    /// Sample names (columns of `scores`); same order as the input matrix.
    pub samples: Vec<String>,
    /// Enrichment scores, row-major: `scores[set * samples.len() + sample]`.
    pub scores: Vec<f64>,
}

impl EnrichmentResult {
    /// Score for `(gene-set index, sample index)`.
    pub fn score(&self, set: usize, sample: usize) -> f64 {
        self.scores[set * self.samples.len() + sample]
    }

    /// Number of gene sets (rows).
    pub fn n_sets(&self) -> usize {
        self.gene_sets.len()
    }

    /// Number of samples (columns).
    pub fn n_samples(&self) -> usize {
        self.samples.len()
    }
}