From: Jim Procter Date: Mon, 17 Jun 2013 14:13:13 +0000 (+0100) Subject: JAL-1312 rewrite of code for first reported exception - note - maintaining scontigs... X-Git-Tag: Jalview_2_9~240^2~5 X-Git-Url: http://source.jalview.org/gitweb/?a=commitdiff_plain;h=e661be216bf4c257c6d6c6eb1bb98dd8fc39a0ae;p=jalview.git JAL-1312 rewrite of code for first reported exception - note - maintaining scontigs may not even be necessary ! --- diff --git a/src/jalview/analysis/Dna.java b/src/jalview/analysis/Dna.java index cbe871d..5285924 100644 --- a/src/jalview/analysis/Dna.java +++ b/src/jalview/analysis/Dna.java @@ -483,23 +483,75 @@ public class Dna // edit scontigs skipint[0] = vismapping.shift(skipint[0]); skipint[1] = vismapping.shift(skipint[1]); - for (vc = 0; vc < scontigs.length; vc += 2) + for (vc = 0; vc < scontigs.length; ) { if (scontigs[vc + 1] < skipint[0]) { + // before skipint starts + vc += 2; continue; } + if (scontigs[vc]>skipint[1]) + { + // finished editing so + break; + } + // Edit the contig list to include the skipped region which did not translate + int[] t; + // from : s1 e1 s2 e2 s3 e3 + // to s: s1 e1 s2 k0 k1 e2 s3 e3 + // list increases by one unless one boundary (s2==k0 or e2==k1) matches, and decreases by one if skipint intersects whole visible contig if (scontigs[vc] <= skipint[0]) { if (skipint[0] == scontigs[vc]) { - + // skipint at start of contig + // shift the start of this contig + if (scontigs[vc + 1] > skipint[1]) + { + scontigs[vc] = skipint[1]; + vc+=2; + } + else + { + if (scontigs[vc+1]==skipint[1]) + { + // remove the contig + t = new int[scontigs.length - 2]; + if (vc > 0) + { + System.arraycopy(scontigs, 0, t, 0, vc - 1); + } + if (vc + 2 < t.length) + { + System.arraycopy(scontigs, vc + 2, t, vc, t.length + - vc + 2); + } + scontigs=t; + } else { + // truncate contig to before the skipint region + scontigs[vc+1] = skipint[0]-1; + vc+=2; + } + } } else { - int[] t = new int[scontigs.length + 2]; - System.arraycopy(scontigs, 0, t, 0, vc - 1); - // scontigs[vc]; // + // scontig starts before start of skipint + if (scontigs[vc+1]