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}