Skip to main content

gsva/
result.rs

1//! Shared result type for gene-set enrichment methods.
2
3/// Result of a gene-set enrichment run: a per-set score for each sample.
4///
5/// `scores` is stored row-major as `gene_sets x samples`, so the score for
6/// gene set `g` in sample `s` lives at `scores[g * samples.len() + s]`.
7#[derive(Clone, Debug)]
8pub struct EnrichmentResult {
9    /// Gene-set names, in output order (rows of `scores`).
10    pub gene_sets: Vec<String>,
11    /// Sample names (columns of `scores`); same order as the input matrix.
12    pub samples: Vec<String>,
13    /// Enrichment scores, row-major: `scores[set * samples.len() + sample]`.
14    pub scores: Vec<f64>,
15}
16
17impl EnrichmentResult {
18    /// Score for `(gene-set index, sample index)`.
19    pub fn score(&self, set: usize, sample: usize) -> f64 {
20        self.scores[set * self.samples.len() + sample]
21    }
22
23    /// Number of gene sets (rows).
24    pub fn n_sets(&self) -> usize {
25        self.gene_sets.len()
26    }
27
28    /// Number of samples (columns).
29    pub fn n_samples(&self) -> usize {
30        self.samples.len()
31    }
32}