Dear all,
Is there a program that can do a local alignment on one side and global alignment on the other side? I am working on a set of sequences whose first 50-100 nucleotides are similar to a template but they differ afterward. I need a program that does global alignment on the 5' side but local alignment on the 3' side. In other words, I need a program that, in its score matrix, will allow for free rides from each position of the score matrix to the last position.
Best,
Thanks for your reply. More precisely, I am looking for a program that would penalize the gaps on the 5' side but not on the 3' side.
Exactly!
For my project, I can't set the penalty to zero. In fact, I am looking for gapless alignments in the 3' side and 5' side, and an insert in between. Inserts are repetitive regions, and there is a high chance that there would be a match for them in the remaining parts of the template. Actually, when I used local alignment, I set the gap opening, extension penalty to 100 to avoid any gaps.
Smith-waterman and Needleman-wunch differ in how the score of each position of the alignment table is calculated. In Needleman-wunch, the score of each position of the table is calculated from the surrounding positions. In Smith-Waterman, the score of each position is calculated based on the surrounding positions + the first position in the table. In the book entitled "Bioinformatics Algorithms: An Active Learning Approach," the authors beautifully say local alignment is like having a free ride to the start of the alignment and from the end of alignment to the final position of the scoring table.
I need the free ride for only one side, not the other side. That's why I said I want a global alignment for the 3' side and local for the 5'.
Thanks in advance for your reply,
I don't know of such a program, and would be very surprise if it existed. Your alignment requirements are not what most people look for when aligning sequences.
If you can program in
C
, there is a short program in the supplement of this paper. It features a dynamic programming algorithm for global alignment, but it is very short and easily readable. It potentially could be customized to do what you need.