Ignore:
Timestamp:
07/09/14 12:13:13 (10 years ago)
Author:
rkrimmel
Message:

Refactoring and code cleanup

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/algorithms/SmithWatermanRepeated.java

    r1587 r1589  
    22 
    33import java.util.ArrayList; 
     4import java.util.Iterator; 
     5import java.util.LinkedList; 
    46import java.util.logging.Level; 
    57 
     
    216218        } 
    217219 
    218          
    219          
    220220        public void traceback() { 
    221221                MatrixEntry tmp = matrix[length1+1][0]; 
    222                 int aligned1[] = new int[length1+1+length2+2]; 
    223                 int aligned2[] = new int[length1+1+length2+2]; 
     222                LinkedList<Integer> aligned1 = new LinkedList<Integer>(); 
     223                LinkedList<Integer> aligned2 = new LinkedList<Integer>(); 
     224                do { 
     225                         
     226                        aligned1.add(new Integer(tmp.getXvalue())); 
     227                        aligned2.add(new Integer(tmp.getYvalue())); 
     228 
     229                        tmp = tmp.getPrevious(); 
     230 
     231                } while (tmp != null); 
     232                 
     233                // reverse order of the alignment 
     234                int reversed1[] = new int[aligned1.size()]; 
     235                int reversed2[] = new int[aligned2.size()]; 
     236 
    224237                int count = 0; 
    225                 do 
    226                 {        
    227                         if(count != 0) 
    228                         { 
    229                                 if (length1+1+length2+2 == count) {      
    230                                         Console.traceln(Level.WARNING, "Traceback longer than both sequences summed up!"); 
    231                                         break; 
    232                                 } 
    233                                 aligned1[count] = tmp.getXvalue(); 
    234                                 aligned2[count] = tmp.getYvalue(); 
    235                         } 
    236                          
    237                         tmp = tmp.getPrevious(); 
     238                for (Iterator<Integer> it = aligned1.descendingIterator(); it.hasNext();) { 
    238239                        count++; 
    239                  
    240                 } while(tmp != null); 
    241                 count--; 
    242                 //reverse order of the alignment 
    243                 int reversed1[] = new int[count]; 
    244                 int reversed2[] = new int[count]; 
    245                  
    246                  
    247                 for(int i = count-1; i > 0; i--) { 
    248                         reversed1[reversed1.length-i]= aligned1[i]; 
    249                         reversed2[reversed2.length-i]= aligned2[i]; 
    250                 } 
    251                  
     240                        reversed1[reversed1.length - count] = it.next(); 
     241                         
     242                } 
     243                count = 0; 
     244                for (Iterator<Integer> it = aligned2.descendingIterator(); it.hasNext();) { 
     245                        count++; 
     246                        reversed2[reversed2.length - count] = it.next(); 
     247                } 
     248 
    252249                NumberSequence ns1 = new NumberSequence(reversed1.length); 
    253250                NumberSequence ns2 = new NumberSequence(reversed2.length); 
    254251                ns1.setSequence(reversed1); 
    255252                ns2.setSequence(reversed2); 
    256                  
     253 
    257254                alignment.add(ns1); 
    258255                alignment.add(ns2); 
    259256        } 
     257         
     258 
    260259         
    261260        public void printAlignment() { 
Note: See TracChangeset for help on using the changeset viewer.