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 }