Dynamic Programming Sequence Alignment
Due 11:59 pm Monday, April 17 2000
Don't forget to visit the Test Cases and Submission Page which is required for this assignment.
Introduction
The first programming project is to implement the dynamic programming algorithm for sequence alignment, parameterized in such a way that it can be used for either global or local sequence alignment. You will then use it to do a database search in the next assignment.
You should create a pseudocode description of the algorithm for yourself first, based on the discussion in the Gribskov handout (or Needleman-Wunsch article). You do not have to implement the caching strategy (described in the Gotoh article) that takes the complexity from O(N3) to O(N2). The bold student may, for extra credit, attempt to write the more efficient version, using the scheme reported by Gotoh (see handout).
Remember, the difference between local alignment and global alignment are simple:
The input to the program is a file with lines containing the following information: (See sample files align-example.input and align-example.input-annotated):
The output of the program is a file with lines containing the following information: (See align-example.output)
To Get Credit:
1. Submit your pseudocode description (in a readme.txt file which will be submitted) of the algorithm that describes what you coded on one page or less. We will use this as a primary way to debug the conceptual basis for your code, since we allow so many different languages.2. Submit a listing of your entire source code. We expect to see comments and explanations of what is going on. Especially if you expect partial credit for "almost working" code.
3. Submit the results of the code on test cases and answer additional questions that will be posted later.
4. 5% extra for an O(n^2) algorithm.
Test Cases and Submission Page