Skip to content

Commit 03231b4

Browse files
committed
parameterize
1 parent 93bc6a1 commit 03231b4

File tree

4 files changed

+16
-14
lines changed

4 files changed

+16
-14
lines changed

src/BidirectionalBWTIndex.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ class InternalNodeIterable;
22

33
class BidirectionalBWTIndex {
44
public:
5-
typedef sdsl::csa_wt<sdsl::wt_hutu<>> index_type;
5+
typedef sdsl::csa_wt<sdsl::wt_hutu<>, 256, 16384> index_type;
66
typedef index_type::wavelet_tree_type::value_type value_type;
77
typedef index_type::wavelet_tree_type::size_type size_type;
88
typedef std::tuple<size_type, size_type> interval;

src/DeBruijn.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
#include "BidirectionalBWTIndex.hpp"
55
#include "DeBruijn.hpp"
66

7-
DeBruijn::DeBruijn(BidirectionalBWTIndex &&_index)
7+
DeBruijn::DeBruijn(BidirectionalBWTIndex &&_index, unsigned int k)
88
: index(std::move(_index)) {
99
typedef DeBruijn::size_type size_type;
1010
typedef BidirectionalBWTIndex::interval interval;
@@ -14,7 +14,7 @@ DeBruijn::DeBruijn(BidirectionalBWTIndex &&_index)
1414
interval ij, pq;
1515
unsigned int d;
1616
std::tie(ij, pq, d) = it;
17-
if (d >= 2) {
17+
if (d >= k) {
1818
auto it = index.extendRightAll(ij, pq, intervals);
1919
std::for_each(it.begin() + 1, it.end(),
2020
[&uncompressed_first](std::tuple<interval, interval> &t) {
@@ -23,7 +23,7 @@ DeBruijn::DeBruijn(BidirectionalBWTIndex &&_index)
2323
});
2424
}
2525
}
26-
sdsl::sd_vector<> tmp(uncompressed_first);
26+
first_vector tmp(uncompressed_first);
2727
first.swap(tmp);
2828
sdsl::util::init_support(first_rank, &first);
2929
sdsl::util::init_support(first_select, &first);
@@ -66,7 +66,7 @@ std::vector<DeBruijn::size_type> DeBruijn::getFreq(DeBruijn::node v,
6666

6767
DeBruijn::coloring DeBruijn::color(std::vector<DeBruijn::size_type> &offsets) {
6868
size_type m = index.forward.size();
69-
rank_support::size_type n = first_rank(m) + 1;
69+
first_vector::rank_1_type::size_type n = first_rank(m) + 1;
7070
std::vector<sdsl::bit_vector> bits(offsets.size(), sdsl::bit_vector(m + n, 0));
7171
std::vector<sdsl::bit_vector::size_type> sums(offsets.size(), 0);
7272
for (size_type i = 0; i < m; i++) {
@@ -87,7 +87,7 @@ DeBruijn::coloring DeBruijn::color(std::vector<DeBruijn::size_type> &offsets) {
8787
coloring c;
8888
for (unsigned int i = 0; i < offsets.size(); i++) {
8989
bits[i][sums[i]] = 1;
90-
c.emplace_back(sdsl::sd_vector<> (bits[i]), sdsl::select_support_sd<> ());
90+
c.emplace_back(coloring_vector (bits[i]), coloring_vector::select_1_type ());
9191
}
9292
for (unsigned int i = 0; i < offsets.size(); i++) {
9393
sdsl::util::init_support(std::get<1>(c[i]), &std::get<0>(c[i]));

src/DeBruijn.hpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,14 @@ class DeBruijn {
44
typedef BidirectionalBWTIndex::interval edge;
55
typedef BidirectionalBWTIndex::value_type symbol;
66
typedef BidirectionalBWTIndex::size_type size_type;
7-
typedef std::vector<std::tuple<sdsl::sd_vector<>, sdsl::select_support_sd<>>> coloring;
7+
typedef sdsl::rrr_vector<> first_vector;
8+
typedef sdsl::rrr_vector<> coloring_vector;
9+
typedef std::vector<std::tuple<coloring_vector, coloring_vector::select_1_type>> coloring;
810

911
BidirectionalBWTIndex index;
10-
sdsl::sd_vector<> first;
12+
first_vector first;
1113

12-
DeBruijn(BidirectionalBWTIndex&&);
14+
DeBruijn(BidirectionalBWTIndex&&, unsigned int);
1315

1416
edge getArc(node, symbol);
1517

@@ -20,8 +22,6 @@ class DeBruijn {
2022

2123
coloring color(std::vector<size_type>&);
2224

23-
typedef sdsl::rank_support_sd<> rank_support;
24-
typedef sdsl::select_support_sd<> select_support;
25-
rank_support first_rank;
26-
select_support first_select;
25+
first_vector::rank_1_type first_rank;
26+
first_vector::select_1_type first_select;
2727
};

src/de-bruijn.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ int main(int argc, char *argv[]) {
4040
sdsl::construct(forward, argv[1], 1);
4141
sdsl::construct(backward, argv[2], 1);
4242
BidirectionalBWTIndex index(std::move(forward), std::move(backward));
43-
DeBruijn graph(std::move(index));
43+
DeBruijn graph(std::move(index), 23);
4444
std::vector<DeBruijn::size_type> offsets {graph.index.forward.size() / 4,
4545
2 * graph.index.forward.size() / 4,
4646
3 * graph.index.forward.size() / 4,
@@ -62,6 +62,8 @@ int main(int argc, char *argv[]) {
6262
}
6363
std::cout << "coloring: " << size << std::endl;
6464

65+
std::cout << "|V|: " << graph.first_rank.rank(graph.first.size()) << std::endl;
66+
6567
// for (unsigned int i = 0; i < graph.first.size(); i++) {
6668
// std::cout << std::setw(2)
6769
// << i

0 commit comments

Comments
 (0)