Hello there, I'm the author of the Python library "pyalign" for computing alignments, and I would be interested in getting feedback from experts on alignment algorithms in terms of the design of the library (since I'm not an expert myself).
In short, I would be interested in learning whether there are any glaring mistakes/omissions in the library's public API.
The library is https://github.com/poke1024/pyalign. It supports global, local and semiglobal alignments, various gap costs and implements the usual classical algorithms (Smith-Waterman, Needleman-Wunsch, Gotoh for affine alignments). The computations are done in a C++17 backend, that heavily relies of templates for code optimization. In terms of single-thread CPU performance (i.e. not comparing to more advanced SIMD or GPU implementations) it should be pretty fast.
Note that the library was not built for a bioinformatics context, but for users who need versatile alignment algorithms for other domains.
A more in-detail notebook is available under https://mybinder.org/v2/gh/poke1024/pyalign-demo/HEAD?filepath=example.ipynb
In functionality, the library is mostly similar to https://biopython.org/docs/1.75/api/Bio.pairwise2.html
One special feature of pyalign (and the main reason for its existence) is that it can deal with large alphabets, like millions of different letters.
Hello, thank you for the great feedback. I've changed the code for alignment output to the format you describe (which came down to flipping the way I read the traceback matrix) - this is now also reflected in the README example. I really appreciate getting this kind of information. The graphs are now formatted differently, so the bars are no longer hidden.