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.
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]
Run the tests.
python -m coverage run
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)
A web interface with integration with Mutalyzer: Mutalyzer Algebra