a 2g3 @s6ddZdZdZdZd ddZd ddZdd d Zd S)cCsDg}t|dD].}|gt|dD]}|ddq*q|S)N)rangeappend)shaperetvalxyr 8/mnt/vbdi/locdx/test/spell-correction/utils/alignment.pyzeross  r -cCs(||kr tS||ks||kr tStSdS)N) match_award gap_penaltymismatch_penalty)alphabeta gap_symbolr r r match_scores rcCs|ddd}|ddd}d\}}d}tdt|D]x}||||krX|||}q6||||kr|||kr|||kr|d7}d}q6|||ks|||kr6|d7}q6||fS)Nr)rrr )rlen)align1align2rijsymbolfoundr r r finalizes( r cCst|t|}}t|d|df}td|dD]}t|||d<q4td|dD]}t||d|<qXtd|dD]}td|dD]n}||d|dt||d||d}||d|t} |||dt} t|| | |||<qq|d\} } ||}}|dkr|dkr|||} ||d|d}|||d}||d|}| |t||d||dkr| ||d7} | ||d7} |d8}|d8}n^| |tkr| ||d7} | |7} |d8}n.| |tkr| |7} | ||d7} |d8}q|dkrL| ||d7} | |7} |d8}q|dkrz| |7} | ||d7} |d8}qLt| | S)Nrr)rr)rr rrrmaxr )seq1seq2rmnscorerrmatchdeleteinsertrrZ score_currentZscore_diagonalZscore_upZ score_leftr r r needle4sR.  $       r*N)r)r)r)r rrrrr r*r r r r s