Commit 97fb900 1 parent 77bbb7e commit 97fb900 Copy full SHA for 97fb900
File tree 2 files changed +37
-0
lines changed
2 files changed +37
-0
lines changed Original file line number Diff line number Diff line change @@ -109,6 +109,10 @@ struct Syncmer {
109
109
bool is_end () const {
110
110
return hash == 0 && position == 0 ;
111
111
}
112
+
113
+ bool operator ==(const Syncmer& rhs) const {
114
+ return this ->hash == rhs.hash && this ->position == rhs.position ;
115
+ }
112
116
};
113
117
114
118
/*
Original file line number Diff line number Diff line change 1
1
#include " doctest.h"
2
2
#include " randstrobes.hpp"
3
+ #include " revcomp.hpp"
4
+ #include " refs.hpp"
5
+
6
+
7
+ std::vector<Syncmer> syncmers_of (std::string& seq, SyncmerParameters parameters) {
8
+ SyncmerIterator iterator{seq, parameters};
9
+ std::vector<Syncmer> syncmers;
10
+ Syncmer syncmer;
11
+ while (!(syncmer = iterator.next ()).is_end ()) {
12
+ syncmers.push_back (syncmer);
13
+ }
14
+
15
+ return syncmers;
16
+ }
17
+
18
+ TEST_CASE (" SyncmerIterator yields canonical syncmers" ) {
19
+ SyncmerParameters parameters{20 , 16 };
20
+ std::vector<std::string> seqs;
21
+ seqs.push_back (References::from_fasta (" tests/phix.fasta" ).sequences [0 ]);
22
+ seqs.push_back (" AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" );
23
+ for (std::string& seq : seqs) {
24
+ std::string seq_reverse = reverse_complement (seq);
25
+ std::vector<Syncmer> syncmers_forward = syncmers_of (seq, parameters);
26
+ std::vector<Syncmer> syncmers_reverse = syncmers_of (seq_reverse, parameters);
27
+
28
+ std::reverse (syncmers_reverse.begin (), syncmers_reverse.end ());
29
+ for (auto & it : syncmers_reverse) {
30
+ it.position = seq.size () - parameters.k - it.position ;
31
+ }
32
+
33
+ CHECK (syncmers_forward == syncmers_reverse);
34
+ }
35
+ }
3
36
4
37
5
38
TEST_CASE (" RefRandstrobe constructor" ) {
You can’t perform that action at this time.
0 commit comments