Changeset 1589 for branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/algorithms/SmithWatermanRepeated.java
- Timestamp:
- 07/09/14 12:13:13 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/ralph/src/main/java/de/ugoe/cs/autoquest/tasktrees/alignment/algorithms/SmithWatermanRepeated.java
r1587 r1589 2 2 3 3 import java.util.ArrayList; 4 import java.util.Iterator; 5 import java.util.LinkedList; 4 6 import java.util.logging.Level; 5 7 … … 216 218 } 217 219 218 219 220 220 public void traceback() { 221 221 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 224 237 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();) { 238 239 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 252 249 NumberSequence ns1 = new NumberSequence(reversed1.length); 253 250 NumberSequence ns2 = new NumberSequence(reversed2.length); 254 251 ns1.setSequence(reversed1); 255 252 ns2.setSequence(reversed2); 256 253 257 254 alignment.add(ns1); 258 255 alignment.add(ns2); 259 256 } 257 258 260 259 261 260 public void printAlignment() {
Note: See TracChangeset
for help on using the changeset viewer.