if ( @{ $matches } > 0 )
{
- @{ $matches } = sort { $a->{ 'Q_BEG' } <=> $b->{ 'Q_BEG' } } @{ $matches }; # FIXME is this necessary?
+ @{ $matches } = sort { $a->{ 'Q_BEG' } <=> $b->{ 'Q_BEG' } } @{ $matches }; # FIXME is this necessary?
- # >>>>>>>>>>>>>> FIRST MATCH <<<<<<<<<<<<<<
+ # >>>>>>>>>>>>>> FIRST MATCH <<<<<<<<<<<<<<
- $diff = $matches->[ 0 ]->{ 'Q_BEG' } - $matches->[ 0 ]->{ 'S_BEG' };
-
- if ( $diff > 0 )
- {
- substr ${ $s_seq }, 0, 0, '-' x $diff;
-
- $s_indels += $diff;
- }
- elsif ( $diff < 0 )
- {
- substr ${ $q_seq }, 0, 0, '-' x abs $diff;
-
- $q_indels += abs $diff;
- }
-
- # >>>>>>>>>>>>>> MIDDLE MATCHES <<<<<<<<<<<<<<
-
- for ( $i = 0; $i < scalar @{ $matches } - 1; $i++ )
- {
- $q_dist = $matches->[ $i + 1 ]->{ 'Q_BEG' } - $matches->[ $i ]->{ 'Q_END' };
- $s_dist = $matches->[ $i + 1 ]->{ 'S_BEG' } - $matches->[ $i ]->{ 'S_END' };
-
- $diff = $q_dist - $s_dist;
+ $diff = $matches->[ 0 ]->{ 'Q_BEG' } - $matches->[ 0 ]->{ 'S_BEG' };
if ( $diff > 0 )
{
- substr ${ $s_seq }, $s_indels + $matches->[ $i ]->{ 'S_END' } + 1, 0, '-' x $diff;
+ substr ${ $s_seq }, 0, 0, '-' x $diff;
$s_indels += $diff;
}
elsif ( $diff < 0 )
{
- substr ${ $q_seq }, $q_indels + $matches->[ $i ]->{ 'Q_END' } + 1, 0, '-' x abs $diff;
+ substr ${ $q_seq }, 0, 0, '-' x abs $diff;
$q_indels += abs $diff;
}
- }
+
+ # >>>>>>>>>>>>>> MIDDLE MATCHES <<<<<<<<<<<<<<
+
+ for ( $i = 0; $i < scalar @{ $matches } - 1; $i++ )
+ {
+ $q_dist = $matches->[ $i + 1 ]->{ 'Q_BEG' } - $matches->[ $i ]->{ 'Q_END' };
+ $s_dist = $matches->[ $i + 1 ]->{ 'S_BEG' } - $matches->[ $i ]->{ 'S_END' };
+
+ $diff = $q_dist - $s_dist;
+
+ if ( $diff > 0 )
+ {
+ substr ${ $s_seq }, $s_indels + $matches->[ $i ]->{ 'S_END' } + 1, 0, '-' x $diff;
+
+ $s_indels += $diff;
+ }
+ elsif ( $diff < 0 )
+ {
+ substr ${ $q_seq }, $q_indels + $matches->[ $i ]->{ 'Q_END' } + 1, 0, '-' x abs $diff;
+
+ $q_indels += abs $diff;
+ }
+ }
}
# >>>>>>>>>>>>>> LAST MATCH <<<<<<<<<<<<<<