disambiseq 0.1.10

Create unambiguous one-off mismatch libraries for DNA sequences
Documentation
# disambiseq

[![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](./LICENSE.md)
![actions status](https://github.com/noamteyssier/disambiseq/workflows/CI/badge.svg)
[![codecov](https://codecov.io/gh/noamteyssier/disambiseq/branch/main/graph/badge.svg?token=Y4Z9RJILHH)](https://codecov.io/gh/noamteyssier/disambiseq)
[![Crates.io](https://img.shields.io/crates/v/disambiseq)](https://crates.io/crates/disambiseq)
[![docs.rs](https://img.shields.io/docsrs/disambiseq)](https://docs.rs/disambiseq)

Creates unambiguous nucleotide mismatch libraries for
for a set of nucleotide sequences.

## Usage

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.

### 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",
        "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"), Some(&"ACT".to_string()));

// retrieve a mutation sequence's parent
assert_eq!(dsq.get_parent("TCT"), Some(&"ACT".to_string()));

// exclude sequences with ambiguous parents
assert_eq!(dsq.get_parent("AAT"), None);
assert_eq!(dsq.get_parent("ATT"), None);
```