Martinsos / opal

SIMD C/C++ library for massive optimal sequence alignment (local/SW, infix, overlap, global)
MIT License
35 stars 10 forks source link

Difference between swimd and edlib #12

Closed rob-p closed 10 years ago

rob-p commented 10 years ago

Hi Martinos,

I'm interested in potentially making use of one of your libraries, and, in my searching, I've come across the repositories for both swimd and edlib. These seem like they have very similar (or at least overlapping) functionality. Could you elaborate a little bit on what the differences are and which library you'd recommend for different use cases?

Thanks! Rob

Martinsos commented 10 years ago

Hi @rob-p , thank you for your interest! They are somewhat overlapping in functionality and have similar interfaces, but also have some big differences and are useful for different purposes. Main differences:

To summarize: if edit distance is enough, Edlib is probably better choice as it is much faster, otherwise use Swimd. In case edit distance is not enough and you also need pairwise alignment (1 vs 1, which Swimd is not good for) and not database search, I recommend using @mengyao 's library: https://github.com/mengyao/Complete-Striped-Smith-Waterman-Library . It is slower than Swimd for database search, but can be used for alignment 1 vs 1. I hope I answered your question, if there is anything else or if I was not clear enough, please ask!

rob-p commented 10 years ago

Hi @Martinsos, thanks for the detailed response! I totally grok the difference now. I think edlib may be more suited to my purpose, but I can actually see how both might be useful in what I'm doing. I'll definitely give edlib a try. Thanks for developing these highly-efficient and task-focused libraries (it's great to not have to pull in a huge dependency to have methods for something like alignment).