File: KmerBufferU.java

package info (click to toggle)
bbmap 39.20%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 26,024 kB
  • sloc: java: 312,743; sh: 18,099; python: 5,247; ansic: 2,074; perl: 96; makefile: 39; xml: 38
file content (68 lines) | stat: -rwxr-xr-x 1,562 bytes parent folder | download | duplicates (4)
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;
	
}