1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
package kmer;
import structures.ByteBuilder;
import structures.IntList;
import structures.LongList;
/**
* @author Brian Bushnell
* @date Jul 30, 2015
*
*/
public class KmerBuffer {
public KmerBuffer(int buflen, int k_, boolean initValues){
k=k_;
kmers=new LongList(buflen);
values=(initValues ? new IntList(buflen) : null);
}
public int add(long kmer){
assert(values==null);
kmers.add(kmer);
assert(values==null);
return kmers.size;
}
public int addMulti(long kmer, int times){
assert(values==null);
for(int i=0; i<times; i++){kmers.add(kmer);}
assert(values==null);
return kmers.size;
}
public int add(long kmer, int value){
kmers.add(kmer);
values.add(value);
assert(values.size==kmers.size);
return kmers.size;
}
public void clear(){
kmers.clear();
if(values!=null){values.clear();}
}
//Returns raw size of kmers array, rather than actual number of kmers
final int size(){return kmers.size;}
@Override
public String toString(){
ByteBuilder bb=new ByteBuilder();
for(int i=0; i<kmers.size; i++){
if(i>0){bb.append(',');}
bb.appendKmer(kmers.get(i), k);
}
return bb.toString();
}
private final int k;
final LongList kmers;
final IntList values;
}
|