X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fanalysis%2FDna.java;fp=src%2Fjalview%2Fanalysis%2FDna.java;h=c3408bdedd9d396f06d6ec1a203c06887ad7b53a;hb=e2c3b3602486cee3f85dd8dfc7856a5ce6701669;hp=a10b037faaf1ba34497a33d318d1229c0565fcdd;hpb=ad09c54f294b945fd4d037a93f5fa8eced6c1797;p=jalview.git diff --git a/src/jalview/analysis/Dna.java b/src/jalview/analysis/Dna.java index a10b037..c3408bd 100644 --- a/src/jalview/analysis/Dna.java +++ b/src/jalview/analysis/Dna.java @@ -56,19 +56,19 @@ public class Dna * 'final' variables describe the inputs to the translation, which should not * be modified. */ - final private List selection; + private final List selection; - final private String[] seqstring; + private final String[] seqstring; - final private int[] contigs; + private final List contigs; - final private char gapChar; + private final char gapChar; - final private AlignmentAnnotation[] annotations; + private final AlignmentAnnotation[] annotations; - final private int dnaWidth; + private final int dnaWidth; - final private AlignmentI dataset; + private final AlignmentI dataset; /* * Working variables for the translation. @@ -91,7 +91,7 @@ public class Dna * @param viewport * @param visibleContigs */ - public Dna(AlignViewportI viewport, int[] visibleContigs) + public Dna(AlignViewportI viewport, List visibleContigs) { this.selection = Arrays.asList(viewport.getSequenceSelection()); this.seqstring = viewport.getViewAsString(true); @@ -161,7 +161,7 @@ public class Dna int s; int sSize = selection.size(); - List pepseqs = new ArrayList(); + List pepseqs = new ArrayList<>(); for (s = 0; s < sSize; s++) { SequenceI newseq = translateCodingRegion(selection.get(s), @@ -213,7 +213,7 @@ public class Dna if (dnarefs != null) { // intersect with pep - List mappedrefs = new ArrayList(); + List mappedrefs = new ArrayList<>(); DBRefEntry[] refs = dna.getDBRefs(); for (int d = 0; d < refs.length; d++) { @@ -391,26 +391,30 @@ public class Dna String seqstring, AlignedCodonFrame acf, List proteinSeqs) { - List skip = new ArrayList(); + List skip = new ArrayList<>(); int skipint[] = null; ShiftList vismapping = new ShiftList(); // map from viscontigs to seqstring // intervals - int vc; - int[] scontigs = new int[contigs.length]; + int vc = 0; + int[] scontigs = new int[contigs.size() * 2]; int npos = 0; - for (vc = 0; vc < contigs.length; vc += 2) + int[] lastregion = null; + for (int[] region : contigs) { - if (vc == 0) + if (lastregion == null) { - vismapping.addShift(npos, contigs[vc]); + vismapping.addShift(npos, region[0]); } else { // hidden region - vismapping.addShift(npos, contigs[vc] - contigs[vc - 1] + 1); + vismapping.addShift(npos, region[0] - lastregion[1] + 1); } - scontigs[vc] = contigs[vc]; - scontigs[vc + 1] = contigs[vc + 1]; + lastregion = region; + + scontigs[vc] = region[0]; + scontigs[vc + 1] = region[1]; + vc++; } // allocate a roughly sized buffer for the protein sequence @@ -800,7 +804,7 @@ public class Dna public AlignmentI reverseCdna(boolean complement) { int sSize = selection.size(); - List reversed = new ArrayList(); + List reversed = new ArrayList<>(); for (int s = 0; s < sSize; s++) { SequenceI newseq = reverseSequence(selection.get(s).getName(),