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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
//! # disambiseq
//!
//! ## Background
//!
//! I've rewritten this functionality a few times for different use cases
//! and put it into a standalone crate since it might be useful to others.
//!
//! This is used to generate unambiguous one-off mismatch libraries for
//! a set of DNA sequences.
//!
//! ## Usage
//!
//! ### Creating a new unambiguous set
//!
//! ```rust
//! use disambiseq::Disambiseq;
//!
//! let sequences = vec![
//! "ACT".to_string(),
//! "AGT".to_string()
//! ];
//! let dsq = Disambiseq::from_slice(&sequences);
//! println!("{:#?}", dsq);
//! ```
//!
//! ### Visualizing the set
//!
//! ```text
//! Disambiseq {
//! unambiguous: {
//! "TCT": "ACT",
//! "ACA": "ACT",
//! "CCT": "ACT",
//! "ACC": "ACT",
//! "CGT": "AGT",
//! "GGT": "AGT",
//! "AGA": "AGT",
//! "GCT": "ACT",
//! "ACG": "ACT",
//! "TGT": "AGT",
//! "AGC": "AGT",
//! "AGT": "ACT",
//! "AGG": "AGT",
//! },
//! parents: {
//! "AGT",
//! "ACT",
//! },
//! ambiguous: {
//! "ATT",
//! "AAT",
//! },
//! }
//! ```
//!
//! ### Querying the Set
//!
//! ```rust
//! use disambiseq::Disambiseq;
//!
//! let sequences = vec![
//! "ACT".to_string(),
//! "AGT".to_string()
//! ];
//! let dsq = Disambiseq::from_slice(&sequences);
//!
//! // retrieve a parental sequence
//! assert_eq!(dsq.get_parent("ACT").unwrap().sequence(), "ACT");
//!
//! // retrieve a mutation sequence's parent
//! assert_eq!(dsq.get_parent("TCT").unwrap().sequence(), "ACT");
//!
//! // exclude sequences with ambiguous parents
//! assert_eq!(dsq.get_parent("AAT"), None);
//! assert_eq!(dsq.get_parent("ATT"), None);
//! ```
mod disambibyte;
mod disambiseq;
mod sequence;
mod utils;
pub use crate::{
disambibyte::{ByteWrapper, Disambibyte},
disambiseq::{Disambiseq, SeqWrapper},
sequence::Sequence,
};