Skip to content

Commit f71599c

Browse files
committed
fix howdesbt query
1 parent 25bf19e commit f71599c

File tree

15 files changed

+1837
-1607
lines changed

15 files changed

+1837
-1607
lines changed

km_howdesbt/bloom_filter.cc

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,98 @@ using std::endl;
3131
#define u32 std::uint32_t
3232
#define u64 std::uint64_t
3333

34+
//----------
35+
//
36+
// debugging defines--
37+
//
38+
// In "normal" builds, the triggering defines here are *not* #defined, so that
39+
// no run-time penalty is incurred.
40+
//
41+
//----------
42+
43+
//#define bloom_filter_supportDebug // if this is #defined, extra code is added
44+
// .. to allow debugging prints to be
45+
// .. turned on and off;
46+
47+
#ifndef bloom_filter_supportDebug
48+
#define dbgAdd_dump_pos_with_mer ;
49+
#define dbgAdd_dump_h_pos_with_mer ;
50+
#define dbgAdd_dump_pos ;
51+
#define dbgAdd_dump_h_pos ;
52+
#define dbgContains_dump_pos_with_mer ;
53+
#define dbgContains_dump_h_pos_with_mer ;
54+
#define dbgContains_dump_pos ;
55+
#define dbgContains_dump_h_pos ;
56+
#define dbgLookup_determined_brief1 ;
57+
#define dbgLookup_determined_brief2 ;
58+
#define dbgAdjust_pos_list1 ;
59+
#define dbgAdjust_pos_list2 ;
60+
#define dbgRestore_pos_list1 ;
61+
#define dbgRestore_pos_list2 ;
62+
#endif // not bloom_filter_supportDebug
63+
64+
#ifdef bloom_filter_supportDebug
65+
66+
#define dbgAdd_dump_pos_with_mer \
67+
if (dbgAdd) cerr << mer << " write " << pos << endl;
68+
69+
#define dbgAdd_dump_h_pos_with_mer \
70+
if (dbgAdd) cerr << mer << " write" << h << " " << pos << endl;
71+
72+
#define dbgAdd_dump_pos \
73+
if (dbgAdd) cerr << "write " << pos << endl;
74+
75+
#define dbgAdd_dump_h_pos \
76+
if (dbgAdd) cerr << "write" << h << " " << pos << endl;
77+
78+
#define dbgContains_dump_pos_with_mer \
79+
if (dbgContains) cerr << mer << " read " << pos << endl;
80+
81+
#define dbgContains_dump_h_pos_with_mer \
82+
if (dbgContains) cerr << mer << " read" << h << " " << pos << endl;
83+
84+
#define dbgContains_dump_pos \
85+
if (dbgContains) cerr << "read " << pos << endl;
86+
87+
#define dbgContains_dump_h_pos \
88+
if (dbgContains) cerr << "read" << h << " " << pos << endl;
89+
90+
#define dbgLookup_determined_brief1 \
91+
{ \
92+
if (dbgRankSelectLookup) \
93+
cerr << " DeterminedBriefFilter::lookup(" << pos << ")" << endl; \
94+
if (dbgRankSelectLookup) \
95+
{ \
96+
if ((*bvDet)[pos] == 0) \
97+
cerr << " bvDet[" << pos << "] == 0 --> unresolved" << endl;\
98+
else \
99+
cerr << " bvDet[" << pos << "] == 1" << endl; \
100+
} \
101+
}
102+
103+
#define dbgLookup_determined_brief2 \
104+
if (dbgRankSelectLookup) \
105+
cerr << " bvHow[" << howPos << "] == " << (*bvHow)[howPos] \
106+
<< " --> " << (((*bvHow)[howPos]==1)?"present":"absent") \
107+
<< endl;
108+
109+
#define dbgAdjust_pos_list1 \
110+
if (dbgAdjustPosList) \
111+
cerr << " adjust_positions_in_list(" << numUnresolved << ")" << endl;
112+
113+
#define dbgAdjust_pos_list2 \
114+
if (dbgAdjustPosList) \
115+
cerr << " " << pos << " --> " << (pos-rank) << endl;
116+
117+
#define dbgRestore_pos_list1 \
118+
if (dbgAdjustPosList) \
119+
cerr << " restore_positions_in_list(" << numUnresolved << ")" << endl;
120+
121+
#define dbgRestore_pos_list2 \
122+
if (dbgAdjustPosList) \
123+
cerr << " " << pos << " --> " << kmerPositions[posIx] << endl;
124+
125+
#endif // bloom_filter_supportDebug
34126

35127
//----------
36128
//
@@ -889,6 +981,7 @@ void BloomFilter::add
889981
if (pos < numBits)
890982
{
891983
(*bv).write_bit(pos);
984+
dbgAdd_dump_pos_with_mer;
892985
}
893986

894987
if (numHashes > 1)
@@ -901,6 +994,7 @@ void BloomFilter::add
901994
if (pos < numBits)
902995
{
903996
(*bv).write_bit(pos); // $$$ MULTI_VECTOR write each bit to a different vector
997+
dbgAdd_dump_h_pos_with_mer;
904998
}
905999
}
9061000
}
@@ -916,6 +1010,7 @@ void BloomFilter::add
9161010
if (pos < numBits)
9171011
{
9181012
(*bv).write_bit(pos);
1013+
dbgAdd_dump_pos;
9191014
}
9201015

9211016
if (numHashes > 1)
@@ -928,6 +1023,7 @@ void BloomFilter::add
9281023
if (pos < numBits)
9291024
{
9301025
(*bv).write_bit(pos); // $$$ MULTI_VECTOR write each bit to a different vector
1026+
dbgAdd_dump_h_pos;
9311027
}
9321028
}
9331029
}
@@ -949,6 +1045,7 @@ bool BloomFilter::contains
9491045
u64 pos = h1 % hashModulus;
9501046
if (pos < numBits)
9511047
{
1048+
dbgContains_dump_pos_with_mer;
9521049
if ((*bv)[pos] == 0) return false;
9531050
}
9541051

@@ -961,6 +1058,7 @@ bool BloomFilter::contains
9611058
pos = hashValues[h] % hashModulus;
9621059
if (pos < numBits)
9631060
{
1061+
dbgContains_dump_h_pos_with_mer;
9641062
if ((*bv)[pos] == 0) return false; // $$$ MULTI_VECTOR read each bit from a different vector
9651063
}
9661064
}
@@ -978,6 +1076,7 @@ bool BloomFilter::contains
9781076
u64 pos = h1 % hashModulus;
9791077
if (pos < numBits)
9801078
{
1079+
dbgContains_dump_pos;
9811080
if ((*bv)[pos] == 0) return false;
9821081
}
9831082

@@ -990,6 +1089,7 @@ bool BloomFilter::contains
9901089
pos = hashValues[h] % hashModulus;
9911090
if (pos < numBits)
9921091
{
1092+
dbgContains_dump_h_pos;
9931093
if ((*bv)[pos] == 0) return false; // $$$ MULTI_VECTOR read each bit from a different vector
9941094
}
9951095
}
@@ -1198,10 +1298,12 @@ int DeterminedBriefFilter::lookup
11981298
// we assume, without checking, that 0 <= pos < numBits
11991299

12001300
BitVector* bvDet = bvs[0];
1301+
dbgLookup_determined_brief1;
12011302
if ((*bvDet)[pos] == 0) return unresolved;
12021303

12031304
BitVector* bvHow = bvs[1];
12041305
u64 howPos = bvDet->rank1(pos);
1306+
dbgLookup_determined_brief2;
12051307
if ((*bvHow)[howPos] == 1) return present;
12061308
else return absent;
12071309
}
@@ -1211,12 +1313,14 @@ void DeterminedBriefFilter::adjust_positions_in_list
12111313
u64 numUnresolved)
12121314
{
12131315
BitVector* bvDet = bvs[0];
1316+
dbgAdjust_pos_list1;
12141317

12151318
for (u64 posIx=0 ; posIx<numUnresolved ; posIx++)
12161319
{
12171320
u64 pos = kmerPositions[posIx];
12181321
u64 rank = bvDet->rank1(pos);
12191322
kmerPositions[posIx] = pos - rank; // $$$ isn't this just rank0(pos)?
1323+
dbgAdjust_pos_list2;
12201324
}
12211325
}
12221326

@@ -1225,11 +1329,13 @@ void DeterminedBriefFilter::restore_positions_in_list
12251329
u64 numUnresolved)
12261330
{
12271331
BitVector* bvDet = bvs[0];
1332+
dbgRestore_pos_list1;
12281333

12291334
for (u64 posIx=0 ; posIx<numUnresolved ; posIx++)
12301335
{
12311336
u64 pos = kmerPositions[posIx];
12321337
kmerPositions[posIx] = bvDet->select0(pos);
1338+
dbgRestore_pos_list2;
12331339
}
12341340
}
12351341

0 commit comments

Comments
 (0)