All Projects → trishume → seqalign_pathing

trishume / seqalign_pathing

Licence: MIT license
Rust implementation of sequence alignment / Levenshtein distance by A* acceleration of the DP algorithm

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to seqalign pathing

text2text
Text2Text: Cross-lingual natural language processing and generation toolkit
Stars: ✭ 188 (+1005.88%)
Mutual labels:  levenshtein-distance
InterviewPrep
A repository containing link of good interview questions
Stars: ✭ 54 (+217.65%)
Mutual labels:  dynamic-programming
MCScanX
MCScanX: Multiple Collinearity Scan toolkit X version. The most popular synteny analysis tool in the world!
Stars: ✭ 144 (+747.06%)
Mutual labels:  dynamic-programming
Symspell
SymSpell: 1 million times faster spelling correction & fuzzy search through Symmetric Delete spelling correction algorithm
Stars: ✭ 1,976 (+11523.53%)
Mutual labels:  levenshtein-distance
algoexpert
AlgoExpert is an online platform that helps software engineers to prepare for coding and technical interviews.
Stars: ✭ 8 (-52.94%)
Mutual labels:  dynamic-programming
biscuit
BISulfite-seq CUI Toolkit
Stars: ✭ 51 (+200%)
Mutual labels:  sequence-alignment
FastFuzzyStringMatcherDotNet
A BK tree implementation for fast fuzzy string matching
Stars: ✭ 23 (+35.29%)
Mutual labels:  levenshtein-distance
kmeans1d
⭐ A Python package for optimal 1D k-means clustering.
Stars: ✭ 35 (+105.88%)
Mutual labels:  dynamic-programming
StructDualDynProg.jl
Implementation of SDDP (Stochastic Dual Dynamic Programming) using the StructJuMP modeling interface
Stars: ✭ 22 (+29.41%)
Mutual labels:  dynamic-programming
kalign
A fast multiple sequence alignment program.
Stars: ✭ 89 (+423.53%)
Mutual labels:  sequence-alignment
Textdistance
Compute distance between sequences. 30+ algorithms, pure python implementation, common interface, optional external libs usage.
Stars: ✭ 2,575 (+15047.06%)
Mutual labels:  levenshtein-distance
levenshtein.c
Levenshtein algorithm in C
Stars: ✭ 77 (+352.94%)
Mutual labels:  levenshtein-distance
video-scene-detection
Video Scene Detection Based on the Optimal Sequential Grouping algorithm
Stars: ✭ 62 (+264.71%)
Mutual labels:  dynamic-programming
sentences-similarity-cluster
Calculate similarity of sentences & Cluster the result.
Stars: ✭ 14 (-17.65%)
Mutual labels:  levenshtein-distance
dynamic-programming-visualization
In browser visualization for dynamic programming algorithms
Stars: ✭ 14 (-17.65%)
Mutual labels:  dynamic-programming
customized-symspell
Java port of SymSpell: 1 million times faster through Symmetric Delete spelling correction algorithm
Stars: ✭ 51 (+200%)
Mutual labels:  levenshtein-distance
recursion-and-dynamic-programming
Julia and Python recursion algorithm, fractal geometry and dynamic programming applications including Edit Distance, Knapsack (Multiple Choice), Stock Trading, Pythagorean Tree, Koch Snowflake, Jerusalem Cross, Sierpiński Carpet, Hilbert Curve, Pascal Triangle, Prime Factorization, Palindrome, Egg Drop, Coin Change, Hanoi Tower, Cantor Set, Fibo…
Stars: ✭ 37 (+117.65%)
Mutual labels:  dynamic-programming
LeetCode
Solution to LeetCode Problems in Python and Golang 🎯
Stars: ✭ 12 (-29.41%)
Mutual labels:  dynamic-programming
DSA--GeeksForGeeks
DSA course solutions in C++ Jump to below directly for more problems
Stars: ✭ 47 (+176.47%)
Mutual labels:  dynamic-programming
affinegap
📐 A Cython implementation of the affine gap string distance
Stars: ✭ 57 (+235.29%)
Mutual labels:  levenshtein-distance

Sequence Alignment With A* Example

This is an example of using A* path finding to accelerate a dynamic programming algorithm, in this case the sequence alignment problem, which Levenshtein distance is a specific instance of.

Unlike the standard Levenshtein distance algorithm, this runs in something like O(n * e^2) time where n is the input length and e is the edit distance. It does this by using a heuristic like A* to explore only promising states along the diagonal of the grid and not the whole O(n^2) grid.

It is substantially faster for large files with few edits than the naive O(n^2) dynamic programming algorithm it is based on, but is still much slower than specialized and highly optimized global sequence alignment programs like Edlib. The difference is I wrote this in two hours and it's 150 lines of code including tests, debugging routines and examples.

It is written in Rust and contains two example programs:

  • seqalign: Reads to FASTA format genetic sequence files and prints the alignment distance.
  • seqalign_plain: Reads two plain text files and prints the alignment distance.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].