1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
//! The limma routines edgeR depends on, and the linear model stack on top.
//!
//! Not a general limma port. It covers what `estimateDisp`, `glmQLFit` and
//! `voomLmFit` reach for, plus the chain that turns a fit into a table:
//! `lmFit` -> `contrasts.fit` -> `eBayes` -> `topTable`, carried through by
//! [`marray::MArrayLm`].
use crate*;
/// Checks that prior weights are non-negative.
///
/// ### Params
///
/// * `w` - Prior weights to check
///
/// ### Returns
///
/// `Ok(())` when every entry is non-negative, otherwise
/// [`EdgeErrors::InvalidArgument`] naming the first offending index.
pub