A Boolean Algebra for Genetic Variants

## Project description

# mutalyzer-algebra

A Boolean Algebra for Genetic Variants

A set of Boolean relations: equivalence; containment, i.e., either a variant is fully contained in another or a variant fully contains another; overlap, i.e., two variants have (at least) one common element; and disjoint, i.e., no common elements that allows for a comprehensive classification of the relation for every pair of variants by taking all minimal Longest Common Subsequence (LCS) alignments into account.

## Installation

Use pip to install from the Python Package Index (PyPI).

```
python -m pip install mutalyzer-algebra
```

Or directly from GitHub for development (after cloning in an active virtual environment).

```
python -m pip install --upgrade --editable .[dev]
```

## Testing

Run the tests.

```
python -m coverage run
```

## Usage

Use the command-line interface.

```
algebra --reference "AAAAA" compare --lhs-hgvs "1_2insTA" --rhs-hgvs "2_3insT"
```

Or as a Python package.

```
from algebra import compare
from algebra.variants import parse_hgvs
reference = "AAAAA"
lhs = parse_hgvs("1_2insTA")
rhs = parse_hgvs("2_3insT")
# returns: Relation.DISJOINT
compare(reference, lhs, rhs)
reference = "CATATATC"
lhs = parse_hgvs("2_7AT[4]") # observed: CATATATATC
rhs = parse_hgvs("5_6insT") # observed: CATATTATC
# returns: Relation.CONTAINS
compare(reference, lhs, rhs)
```

Extracting variants from sequences.

```
from algebra.extractor import extract_sequence, to_hgvs
reference = "CATATATC"
observed = "CATATATATC"
canonical, _ = extract_sequence(reference, observed)
# returns: 2_7AT[4]
to_hgvs(canonical, reference)
```

Variant normalization.

```
from algebra.extractor import extract, to_hgvs
from algebra.variants import parse_hgvs
reference = "CATATATC"
variant = parse_hgvs("6_7dupAT")
canonical, _ = extract(reference, variant)
# returns: 2_7AT[4]
to_hgvs(canonical, reference)
```

## See Also

A web interface with integration with Mutalyzer: Mutalyzer Algebra

## Project details

## Release history Release notifications | RSS feed

## Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.