seqan / seqan3

The modern C++ library for sequence analysis. Contains version 3 of the library and API docs.
https://www.seqan.de
Other
413 stars 82 forks source link

Running Align Pairwise with linear gap Penalty and faster runtime than for affine gap penalty #3136

Closed lantoine16 closed 1 year ago

lantoine16 commented 1 year ago

Question

Hi,

I want to run multiple alignments with the align_pairwise function and linear gap penalty. So I can configure seqan3::align_cfg::gap_cost_affine{seqan3::align_cfg::open_score{0}, seqan3::align_cfg::extension_score{-1}} which gives me the correct result. If open_score is not equal to 0 it has the same execution time, so it doesn't run another algorithm for linear gap penalty. But computing linear gap penalty alignment can be implemented faster than for affine gap penalty.

Is there a way to use the align_pairwise function with linear gap penalty and a faster runtime as for affine gap penalty?

Best regards Lukas

eseiler commented 1 year ago

Hey there,

linear gap costs are just affine gap costs without gap extension cost; so yes, there is no separate config for linear gap costs. I would think that the additional computational cost for using linear gaps does not affect the overall runtime because the other parts of computing an alignment are much more costly.

I'll ask @rrahn for some more insight :)

rrahn commented 1 year ago

Hi @lantoine16, in general you are right. Right now we are working on a better backend implementation for the DP algorithms, which would also be more efficient in the case of linear gap penalties. I assume that you need arbitrary unitary costs for match and mismatch, or would edit distance be an option for you?

lantoine16 commented 1 year ago

Hi @eseiler and @rrahn, thanks for your answers. Yes, I am interested in arbitrary unitary costs for match and mismatch, and I am not working with edit distance.