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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
//! # Summary
//! This is a crate to perform pvalue adjustments and is inspired by the R function `p.adjust`.
//! There are currently only three methods available: `Bonferroni`, `BenjaminiHochberg`, and
//! `BenjaminiYekutieli`.
//!
//! This crate gives a single interface for each of these and does not expect the p-values to be
//! presorted before calculating.
//!
//! # Usage
//!
//! ## Basic Usage
//! Here's an example for a `Bonferroni` correction.
//!
//! ```
//! use adjustp::{adjust, Procedure};
//!
//! let pvalues = vec![0.1, 0.2, 0.3, 0.4, 0.1];
//! let qvalues = adjust(&pvalues, Procedure::Bonferroni);
//! assert_eq!(qvalues, vec![0.5, 1.0, 1.0, 1.0, 0.5]);
//! ```
//!
//! And another example for a `BenjaminiHochberg` adjustment.
//!
//! ```
//! use adjustp::{adjust, Procedure};
//!
//! let pvalues = vec![0.1, 0.2, 0.3, 0.4, 0.1];
//! let qvalues = adjust(&pvalues, Procedure::BenjaminiHochberg);
//! assert_eq!(qvalues, vec![0.25, 0.33333333333333337, 0.375, 0.4, 0.25]);
//! ```
//!
//! And another example for a `BenjaminiYekutieli` adjustment.
//!
//! ```
//! use adjustp::{adjust, Procedure};
//!
//! let pvalues = vec![0.1, 0.2, 0.3, 0.4, 0.1];
//! let qvalues = adjust(&pvalues, Procedure::BenjaminiYekutieli);
//! assert_eq!(qvalues, vec![0.5708333333333333, 0.7611111111111111, 0.8562500, 0.91333333333333333, 0.5708333333333333]);
//! ```

/// Bonferroni Correction
pub mod bonferroni;

/// Benjamini-Hochberg Procedure
pub mod benjamini_hochberg;

/// Benjamini-Yekutieli Procedure
pub mod benjamini_yekutieli;

/// User API
pub mod adjust;

/// Utilities shared by Adjustment Procedures
pub mod utils;

/// Expose adjustment and procedure method to user
pub use adjust::{adjust, Procedure};