Mercurial > repos > rliterman > csp2
comparison CSP2/CSP2_env/env-d9b9114564458d9d-741b3de822f2aaca6c6caa4325c4afce/opt/bbmap-39.01-1/current/sketch/CompareBuffer.java @ 68:5028fdace37b
planemo upload commit 2e9511a184a1ca667c7be0c6321a36dc4e3d116d
author | jpayne |
---|---|
date | Tue, 18 Mar 2025 16:23:26 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
67:0e9998148a16 | 68:5028fdace37b |
---|---|
1 package sketch; | |
2 | |
3 import shared.Tools; | |
4 import structures.AbstractBitSet; | |
5 | |
6 public class CompareBuffer extends SketchObject{ | |
7 | |
8 public CompareBuffer(boolean makeBS){ | |
9 if(makeBS){ | |
10 cbs=AbstractBitSet.make(0, bitSetBits); | |
11 }else{ | |
12 cbs=null; | |
13 } | |
14 } | |
15 | |
16 void set(final int hits_, final int multiHits_, final int unique2_, final int unique3_, final int noHits_, | |
17 final int contamHits_, final int contam2Hits_, final int multiContamHits_, | |
18 final int queryDivisor_, final int refDivisor_, final int querySize_, final int refSize_, | |
19 final long depthSum_, final double depthSum2_, final long refHitSum_, | |
20 final int k1hits_, final int k1seenQ_, final int k1seenR_){ | |
21 hits=hits_; | |
22 multiHits=multiHits_; | |
23 unique2=unique2_; | |
24 unique3=unique3_; | |
25 noHits=noHits_; | |
26 | |
27 contamHits=contamHits_; | |
28 contam2Hits=contam2Hits_; | |
29 multiContamHits=multiContamHits_; | |
30 | |
31 queryDivisor=queryDivisor_; | |
32 refDivisor=refDivisor_; | |
33 | |
34 querySize=querySize_; | |
35 refSize=refSize_; | |
36 | |
37 depthSum=depthSum_; | |
38 depthSum2=(float)depthSum2_; | |
39 refHitSum=refHitSum_; | |
40 | |
41 hits1=k1hits_; | |
42 qSeen1=k1seenQ_; | |
43 rSeen1=k1seenR_; | |
44 } | |
45 | |
46 void clear(){ | |
47 hits=multiHits=0; | |
48 unique2=unique3=noHits=0; | |
49 contamHits=contam2Hits=multiContamHits=0; | |
50 refDivisor=queryDivisor=0; | |
51 refSize=querySize=0; | |
52 depthSum=0; | |
53 depthSum2=0; | |
54 refHitSum=0; | |
55 hits1=qSeen1=rSeen1=0; | |
56 } | |
57 | |
58 float depth(){ | |
59 return depthSum<1 ? 0 : depthSum/Tools.max(1.0f, hits); | |
60 } | |
61 | |
62 float depth2(){ | |
63 return depthSum2<=0 ? 0 : depthSum2/Tools.max(1.0f, hits); | |
64 } | |
65 | |
66 float avgRefHits(){ | |
67 return refHitSum<1 ? 0 : refHitSum/Tools.max(1.0f, hits); | |
68 } | |
69 | |
70 /*--------------------------------------------------------------*/ | |
71 | |
72 @Override | |
73 public String toString(){ | |
74 return "hits="+hits+", refDivisor="+refDivisor+", queryDivisor="+queryDivisor+", refSize="+refSize+", querySize="+querySize+ | |
75 ", contamHits="+contamHits+", contam2Hits="+contam2Hits+", multiContamHits="+multiContamHits+", depthSum="+depthSum+", depthSum2="+depthSum2+ | |
76 ", hits="+hits+", multiHits="+multiHits+", unique2="+unique2+", unique3="+unique3+", noHits="+noHits; | |
77 } | |
78 | |
79 /*--------------------------------------------------------------*/ | |
80 | |
81 final float wkid(){ | |
82 final int div=minDivisor(); | |
83 return hits/(float)div; | |
84 } | |
85 final float kid(){ | |
86 final int div=maxDivisor(); | |
87 return hits/(float)div; | |
88 } | |
89 final float aniOld(){ | |
90 float wkid=wkid(); | |
91 final float ani=wkidToAni(wkid); | |
92 return ani; | |
93 } | |
94 final float ani(){ | |
95 final float ani; | |
96 if(k2>0 && useToValue2){ | |
97 float ani1=ani1(); | |
98 float ani2=ani2(); | |
99 // ani=0.5f*(ani1+ani2); | |
100 ani=0.5f*(Tools.max(0.9f*ani2, ani1)+Tools.max(0.8f*ani1, ani2)); | |
101 // return (ani1*qSeen1+ani2*qSeen2())/queryDivisor; | |
102 }else{ | |
103 ani=aniOld(); | |
104 } | |
105 | |
106 // System.err.println("ani="+ani+"aniOld="+aniOld()+", ani1="+ani1()+", ani2="+ani2()+", anid="+(float)aniDual()+"\n" | |
107 //// +"gf="+(float)gf+", wkid1="+wkid1+", wkid2="+wkid2+"\n" | |
108 // + "k1f="+k1Fraction()+", hits="+hits+", hits1="+hits1+", hits2="+hits2()+", qSeen1()="+qSeen1()+", rSeen1()="+rSeen1()+"\n" | |
109 // + "qSeen2()="+qSeen2()+", rSeen2()="+rSeen2()+", minDivisor1()="+minDivisor1()+", minDivisor2()="+minDivisor2()+"\n"); | |
110 return ani; | |
111 } | |
112 | |
113 final float wkid1(){ | |
114 final int div=minDivisor1(); | |
115 return hits1()/(float)div; | |
116 } | |
117 final float kid1(){ | |
118 final int div=maxDivisor1(); | |
119 return hits1()/(float)div; | |
120 } | |
121 final float ani1(){ | |
122 float wkid=wkid1(); | |
123 final float ani=wkidToAniExact(wkid, k); | |
124 return ani; | |
125 } | |
126 | |
127 final float wkid2(){ | |
128 final int div=minDivisor2(); | |
129 return hits2()/(float)div; | |
130 } | |
131 final float kid2(){ | |
132 final int div=maxDivisor2(); | |
133 return hits2()/(float)div; | |
134 } | |
135 final float ani2(){ | |
136 assert(k2>0); | |
137 float wkid=wkid2(); | |
138 final float ani=wkidToAniExact(wkid, k2); | |
139 return ani; | |
140 } | |
141 | |
142 final float aniDual(){ | |
143 assert(k2>0); | |
144 float wkid1=wkid1(); | |
145 float wkid2=wkid2(); | |
146 float ratio=(wkid1/wkid2); | |
147 float exp=1f/(k-k2);//TODO - make this initialized | |
148 double ani=Math.pow(ratio, exp); | |
149 double gf=wkid2/Math.pow(ani, k2); | |
150 | |
151 // System.err.println("ani="+ani()+"aniOld="+aniOld()+", ani1="+ani1()+", ani2="+ani2()+", anid="+(float)ani+"\n" | |
152 // +"gf="+(float)gf+", wkid1="+wkid1+", wkid2="+wkid2+"\n" | |
153 // + "k1f="+k1Fraction()+", hits="+hits+", hits1="+hits1+", hits2="+hits2()+", qSeen1()="+qSeen1()+", rSeen1()="+rSeen1()+"\n" | |
154 // + "qSeen2()="+qSeen2()+", rSeen2()="+rSeen2()+", minDivisor1()="+minDivisor1()+", minDivisor2()="+minDivisor2()+"\n"); | |
155 | |
156 return (float)ani; | |
157 } | |
158 | |
159 /*--------------------------------------------------------------*/ | |
160 | |
161 int hits(){return hits;} | |
162 int multiHits(){return multiHits;} | |
163 int noHits(){return noHits;} | |
164 int unique2(){return unique2;} | |
165 int unique3(){return unique3;} | |
166 | |
167 int contamHits(){return contamHits;} | |
168 int contam2Hits(){return contam2Hits;} | |
169 int multiContamHits(){return multiContamHits;} | |
170 | |
171 int queryDivisor(){return queryDivisor;} | |
172 int refDivisor(){return refDivisor;} | |
173 | |
174 int querySize(){return querySize;} | |
175 int refSize(){return refSize;} | |
176 | |
177 long depthSum(){return depthSum;} | |
178 float depthSum2(){return depthSum2;} | |
179 long refHitSum(){return refHitSum;} | |
180 | |
181 /*--------------------------------------------------------------*/ | |
182 | |
183 int hits1(){return hits1;} | |
184 int qSeen1(){return qSeen1;} | |
185 int rSeen1(){return rSeen1;} | |
186 int minDivisor1(){return Tools.max(1, Tools.min(qSeen1, rSeen1));} | |
187 int maxDivisor1(){return Tools.max(1, qSeen1, rSeen1);} | |
188 | |
189 int hits2(){return hits-hits1;} | |
190 int qSeen2(){return queryDivisor-qSeen1;} | |
191 int rSeen2(){return refDivisor-rSeen1;} | |
192 int minDivisor2(){return Tools.max(1, Tools.min(qSeen2(), rSeen2()));} | |
193 int maxDivisor2(){return Tools.max(1, qSeen2(), rSeen2());} | |
194 | |
195 /*--------------------------------------------------------------*/ | |
196 | |
197 //For WKID | |
198 int minDivisor(){return Tools.max(1, Tools.min(queryDivisor, refDivisor));} | |
199 //For KID | |
200 int maxDivisor(){return Tools.max(1, queryDivisor, refDivisor);} | |
201 int minSize(){return Tools.max(1, Tools.min(querySize, refSize));} | |
202 int maxSize(){return Tools.max(1, querySize, refSize);} | |
203 | |
204 int uniqueHits(){return hits-multiHits;} | |
205 int uniqueContamHits(){return contamHits-multiContamHits;} | |
206 | |
207 float k1Fraction(){ | |
208 return qSeen1/Tools.max(queryDivisor, 1f); | |
209 } | |
210 | |
211 /*--------------------------------------------------------------*/ | |
212 | |
213 private int hits; | |
214 private int multiHits; | |
215 private int noHits; | |
216 private int unique2; | |
217 private int unique3; | |
218 | |
219 private int contamHits; | |
220 private int contam2Hits; | |
221 private int multiContamHits; | |
222 | |
223 private int queryDivisor; | |
224 private int refDivisor; | |
225 | |
226 private int querySize; | |
227 private int refSize; | |
228 | |
229 private long depthSum; | |
230 private float depthSum2; | |
231 private long refHitSum; | |
232 | |
233 private int hits1; | |
234 private int qSeen1; | |
235 private int rSeen1; | |
236 | |
237 /*--------------------------------------------------------------*/ | |
238 | |
239 public final AbstractBitSet cbs; //Only for comparisons, not index | |
240 | |
241 } |