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 64 65 66 67 68
|
package ukmer;
import structures.ByteBuilder;
import structures.IntList;
import structures.LongList;
/**
* @author Brian Bushnell
* @date Jul 9, 2015
*
*/
public class KmerBufferU {
public KmerBufferU(int buflen, int kbig, boolean initValues){
k=Kmer.getK(kbig);
mult=Kmer.getMult(kbig);
kmers=new LongList(buflen*mult);
values=(initValues ? new IntList(buflen) : null);
}
public int add(Kmer kmer){
// System.err.println("Adding "+kmer+"; this="+this+"; kmers.size="+kmers.size);
add(kmer.key());
return kmers.size;
// System.err.println("Added "+kmer+"; this="+this+"; kmers.size="+kmers.size);
}
public void add(Kmer kmer, int value){
add(kmer.key(), value);
}
public void add(long[] kmer){
assert(values==null);
assert(kmer.length==mult) : kmer.length+", "+mult+", "+k;
kmers.append(kmer);
}
public void add(long[] kmer, int value){
assert(kmer.length==mult);
kmers.append(kmer);
values.add(value);
assert(values.size*mult==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 mult;
private final int k;
final LongList kmers;
final IntList values;
}
|