import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
+import java.util.Iterator;
import java.util.List;
public class Dna
private final String[] seqstring;
- private final List<int[]> contigs;
+ private final Iterator<int[]> contigs;
private final char gapChar;
* @param viewport
* @param visibleContigs
*/
- public Dna(AlignViewportI viewport, List<int[]> visibleContigs)
+ public Dna(AlignViewportI viewport, Iterator<int[]> visibleContigs)
{
this.selection = Arrays.asList(viewport.getSequenceSelection());
this.seqstring = viewport.getViewAsString(true);
ShiftList vismapping = new ShiftList(); // map from viscontigs to seqstring
// intervals
int vc = 0;
- int[] scontigs = new int[contigs.size() * 2];
+
int npos = 0;
int[] lastregion = null;
- for (int[] region : contigs)
+ while (contigs.hasNext())
{
+ int[] region = contigs.next();
if (lastregion == null)
{
vismapping.addShift(npos, region[0]);
vismapping.addShift(npos, region[0] - lastregion[1] + 1);
}
lastregion = region;
+ vc++;
+ }
+ int[] scontigs = new int[vc];
+ vc = 0;
+ while (contigs.hasNext())
+ {
+ int[] region = contigs.next();
scontigs[vc] = region[0];
scontigs[vc + 1] = region[1];
vc++;