/* csw_test.c -- Test the speed of the bit-parallel constrained Smith-Waterman algorithm for comparison with standard Smith-Waterman algorithm */ #include #define STRLEN 78 #define ITER 10000 main() { long i, j, d_loc, q_loc, q_index[STRLEN], H_temp[10], Carry, CarryNot, AgtB, AeqB, AgtBnot; char aa[21] = "acdefghiklmnpqrstvwy"; long H0[STRLEN][STRLEN], Hg0[STRLEN][STRLEN]; long H1[STRLEN][STRLEN], Hg1[STRLEN][STRLEN]; long H2[STRLEN][STRLEN], Hg2[STRLEN][STRLEN]; long H3[STRLEN][STRLEN], Hg3[STRLEN][STRLEN]; long H4[STRLEN][STRLEN], Hg4[STRLEN][STRLEN]; long H5[STRLEN][STRLEN], Hg5[STRLEN][STRLEN]; long H6[STRLEN][STRLEN], Hg6[STRLEN][STRLEN]; long H7[STRLEN][STRLEN], Hg7[STRLEN][STRLEN]; long H8[STRLEN][STRLEN], Hg8[STRLEN][STRLEN]; long H9[STRLEN][STRLEN], Hg9[STRLEN][STRLEN]; /* Query Sequence = d1xpa_1 a.6.1.2 (134-210) from ASTRAL 1.67 40% */ char q[STRLEN] = "dkhklitkteakqeyllkdcdlekrepplkfivkknphhsqwgdmklylklqivkrslevwgsqealeeakevrqen"; /* Database increment and decrement values - random, just for timing */ long d_inc = 1958837644, d_dec = 728749138; /* Convert residue characters to indices */ for (q_loc=0; q_loc<77; q_loc++) for (j=0; j<20; j++) if (q[q_loc] == aa[j]) q_index[q_loc] = j; /* Iterate calculation enough times to get good timing results */ for (i=1; i