File: MultiLogLog.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 (43 lines) | stat: -rwxr-xr-x 1,058 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
package cardinality;

import shared.Parser;
import stream.Read;
import structures.IntList;
import ukmer.Kmer;

public class MultiLogLog {
	
	public MultiLogLog(Parser p){
		this(p.loglogbuckets, p.loglogseed, p.loglogMinprob, p.loglogKlist);
	}
	
	public MultiLogLog(int buckets, long seed, float minProb, IntList klist0){
		assert(klist0.size>0) : "No valid kmer lengths specified.";
		IntList klist=new IntList(klist0.size);
		for(int i=0; i<klist0.size; i++){
			int x=klist0.get(i);
			int k=Kmer.getKbig(x);
			if(k>0){
				klist.add(k);
			}
		}
		klist.sort();
		klist.shrinkToUnique();
		assert(klist.size>0) : "No valid kmer lengths specified.";
		kArray=klist.toArray();
		counters=new LogLog[kArray.length];
		for(int i=0; i<kArray.length; i++){
			counters[i]=CardinalityTracker.makeTracker(buckets, kArray[i], seed, minProb);
		}
	}
	
	public void hash(Read r){
		for(CardinalityTracker c : counters){
			c.hash(r);
		}
	}
	
	public final int[] kArray;
	public final CardinalityTracker[] counters;
	
}