Skip to content

Commit b7c3227

Browse files
committed
Refactor: Rename is_rc/is_reverse to is_revcomp
To unify how this attribute is named in various structs
1 parent a32e8d2 commit b7c3227

11 files changed

+42
-42
lines changed

src/aln.cpp

+14-14
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ bool reverse_nam_if_needed(Nam& nam, const Read& read, const References& referen
5656
std::string ref_end_kmer = references.sequences[nam.ref_id].substr(nam.ref_end-k, k);
5757

5858
std::string seq, seq_rc;
59-
if (nam.is_rc) {
59+
if (nam.is_revcomp) {
6060
seq = read.rc;
6161
seq_rc = read.seq;
6262
} else {
@@ -77,7 +77,7 @@ bool reverse_nam_if_needed(Nam& nam, const Read& read, const References& referen
7777
read_start_kmer = seq_rc.substr(q_start_tmp, k);
7878
read_end_kmer = seq_rc.substr(q_end_tmp - k, k);
7979
if (ref_start_kmer == read_start_kmer && ref_end_kmer == read_end_kmer) {
80-
nam.is_rc = !nam.is_rc;
80+
nam.is_revcomp = !nam.is_revcomp;
8181
nam.query_start = q_start_tmp;
8282
nam.query_end = q_end_tmp;
8383
return true;
@@ -220,7 +220,7 @@ inline Alignment extend_seed(
220220
const Read& read,
221221
bool consistent_nam
222222
) {
223-
const std::string query = nam.is_rc ? read.rc : read.seq;
223+
const std::string query = nam.is_revcomp ? read.rc : read.seq;
224224
const std::string& ref = references.sequences[nam.ref_id];
225225

226226
const auto projected_ref_start = nam.projected_ref_start();
@@ -269,7 +269,7 @@ inline Alignment extend_seed(
269269
alignment.score = info.sw_score;
270270
alignment.ref_start = result_ref_start;
271271
alignment.length = info.ref_span();
272-
alignment.is_rc = nam.is_rc;
272+
alignment.is_revcomp = nam.is_revcomp;
273273
alignment.is_unaligned = false;
274274
alignment.ref_id = nam.ref_id;
275275
alignment.gapped = gapped;
@@ -335,7 +335,7 @@ inline std::vector<ScoredAlignmentPair> get_best_scoring_pairs(
335335
for (auto &a2 : alignments2) {
336336
float dist = std::abs(a1.ref_start - a2.ref_start);
337337
double score = a1.score + a2.score;
338-
if ((a1.is_rc ^ a2.is_rc) && (dist < mu + 4 * sigma)) {
338+
if ((a1.is_revcomp ^ a2.is_revcomp) && (dist < mu + 4 * sigma)) {
339339
score += log(normal_pdf(dist, mu, sigma));
340340
}
341341
else { // individual score
@@ -350,17 +350,17 @@ inline std::vector<ScoredAlignmentPair> get_best_scoring_pairs(
350350
}
351351

352352
bool is_proper_nam_pair(const Nam nam1, const Nam nam2, float mu, float sigma) {
353-
if (nam1.ref_id != nam2.ref_id || nam1.is_rc == nam2.is_rc) {
353+
if (nam1.ref_id != nam2.ref_id || nam1.is_revcomp == nam2.is_revcomp) {
354354
return false;
355355
}
356356
int r1_ref_start = nam1.projected_ref_start();
357357
int r2_ref_start = nam2.projected_ref_start();
358358

359359
// r1 ---> <---- r2
360-
bool r1_r2 = nam2.is_rc && (r1_ref_start <= r2_ref_start) && (r2_ref_start - r1_ref_start < mu + 10*sigma);
360+
bool r1_r2 = nam2.is_revcomp && (r1_ref_start <= r2_ref_start) && (r2_ref_start - r1_ref_start < mu + 10*sigma);
361361

362362
// r2 ---> <---- r1
363-
bool r2_r1 = nam1.is_rc && (r2_ref_start <= r1_ref_start) && (r1_ref_start - r2_ref_start < mu + 10*sigma);
363+
bool r2_r1 = nam1.is_revcomp && (r2_ref_start <= r1_ref_start) && (r1_ref_start - r2_ref_start < mu + 10*sigma);
364364

365365
return r1_r2 || r2_r1;
366366
}
@@ -458,7 +458,7 @@ inline Alignment rescue_align(
458458
std::string r_tmp;
459459
auto read_len = read.size();
460460

461-
if (mate_nam.is_rc) {
461+
if (mate_nam.is_revcomp) {
462462
r_tmp = read.seq;
463463
a = mate_nam.projected_ref_start() - (mu+5*sigma);
464464
b = mate_nam.projected_ref_start() + read_len/2; // at most half read overlap
@@ -477,7 +477,7 @@ inline Alignment rescue_align(
477477
alignment.edit_distance = read_len;
478478
alignment.score = 0;
479479
alignment.ref_start = 0;
480-
alignment.is_rc = mate_nam.is_rc;
480+
alignment.is_revcomp = mate_nam.is_revcomp;
481481
alignment.ref_id = mate_nam.ref_id;
482482
alignment.is_unaligned = true;
483483
// std::cerr << "RESCUE: Caught Bug3! ref start: " << ref_start << " ref end: " << ref_end << " ref len: " << ref_len << std::endl;
@@ -490,7 +490,7 @@ inline Alignment rescue_align(
490490
alignment.edit_distance = read_len;
491491
alignment.score = 0;
492492
alignment.ref_start = 0;
493-
alignment.is_rc = mate_nam.is_rc;
493+
alignment.is_revcomp = mate_nam.is_revcomp;
494494
alignment.ref_id = mate_nam.ref_id;
495495
alignment.is_unaligned = true;
496496
return alignment;
@@ -502,7 +502,7 @@ inline Alignment rescue_align(
502502
alignment.edit_distance = info.edit_distance;
503503
alignment.score = info.sw_score;
504504
alignment.ref_start = ref_start + info.ref_start;
505-
alignment.is_rc = !mate_nam.is_rc;
505+
alignment.is_revcomp = !mate_nam.is_revcomp;
506506
alignment.ref_id = mate_nam.ref_id;
507507
alignment.is_unaligned = info.cigar.empty();
508508
alignment.length = info.ref_span();
@@ -859,8 +859,8 @@ std::vector<ScoredAlignmentPair> align_paired(
859859
a2_indv_max = a2;
860860
}
861861

862-
bool r1_r2 = a2.is_rc && (a1.ref_start <= a2.ref_start) && ((a2.ref_start - a1.ref_start) < mu + 10*sigma); // r1 ---> <---- r2
863-
bool r2_r1 = a1.is_rc && (a2.ref_start <= a1.ref_start) && ((a1.ref_start - a2.ref_start) < mu + 10*sigma); // r2 ---> <---- r1
862+
bool r1_r2 = a2.is_revcomp && (a1.ref_start <= a2.ref_start) && ((a2.ref_start - a1.ref_start) < mu + 10*sigma); // r1 ---> <---- r2
863+
bool r2_r1 = a1.is_revcomp && (a2.ref_start <= a1.ref_start) && ((a1.ref_start - a2.ref_start) < mu + 10*sigma); // r2 ---> <---- r1
864864

865865
double combined_score;
866866
if (r1_r2 || r2_r1) {

src/nam.cpp

+7-7
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ void merge_matches_into_nams(
120120
n.query_prev_match_startpos = m.query_start;
121121
n.ref_prev_match_startpos = m.ref_start;
122122
n.n_matches = 1;
123-
n.is_rc = is_revcomp;
123+
n.is_revcomp = is_revcomp;
124124
// n.score += (float)1 / (float)h.count;
125125
open_nams.push_back(n);
126126
}
@@ -204,7 +204,7 @@ std::tuple<float, int, std::vector<Nam>> find_nams(
204204
continue;
205205
}
206206
nr_good_hits++;
207-
add_to_matches_map_full(matches_map[q.is_reverse], q.start, q.end, index, position);
207+
add_to_matches_map_full(matches_map[q.is_revcomp], q.start, q.end, index, position);
208208
}
209209
else if (use_mcs) {
210210
size_t partial_pos = index.find_partial(q.hash);
@@ -214,7 +214,7 @@ std::tuple<float, int, std::vector<Nam>> find_nams(
214214
continue;
215215
}
216216
nr_good_hits++;
217-
add_to_matches_map_partial(matches_map[q.is_reverse], q.start, q.start + index.k(), index, partial_pos);
217+
add_to_matches_map_partial(matches_map[q.is_revcomp], q.start, q.start + index.k(), index, partial_pos);
218218
}
219219
}
220220
}
@@ -229,7 +229,7 @@ std::tuple<float, int, std::vector<Nam>> find_nams(
229229
continue;
230230
}
231231
nr_good_hits++;
232-
add_to_matches_map_partial(matches_map[q.is_reverse], q.start, q.start + index.k(), index, partial_pos);
232+
add_to_matches_map_partial(matches_map[q.is_revcomp], q.start, q.start + index.k(), index, partial_pos);
233233
}
234234
}
235235
}
@@ -275,14 +275,14 @@ std::pair<int, std::vector<Nam>> find_nams_rescue(
275275
if (position != index.end()) {
276276
unsigned int count = index.get_count_full(position);
277277
RescueHit rh{position, count, qr.start, qr.end, false};
278-
hits[qr.is_reverse].push_back(rh);
278+
hits[qr.is_revcomp].push_back(rh);
279279
}
280280
else if (use_mcs) {
281281
size_t partial_pos = index.find_partial(qr.hash);
282282
if (partial_pos != index.end()) {
283283
unsigned int partial_count = index.get_count_partial(partial_pos);
284284
RescueHit rh{partial_pos, partial_count, qr.start, qr.start + index.k(), true};
285-
hits[qr.is_reverse].push_back(rh);
285+
hits[qr.is_revcomp].push_back(rh);
286286
}
287287
}
288288
}
@@ -312,6 +312,6 @@ std::pair<int, std::vector<Nam>> find_nams_rescue(
312312
}
313313

314314
std::ostream& operator<<(std::ostream& os, const Nam& n) {
315-
os << "Nam(ref_id=" << n.ref_id << ", query: " << n.query_start << ".." << n.query_end << ", ref: " << n.ref_start << ".." << n.ref_end << ", rc=" << static_cast<int>(n.is_rc) << ", score=" << n.score << ")";
315+
os << "Nam(ref_id=" << n.ref_id << ", query: " << n.query_start << ".." << n.query_end << ", ref: " << n.ref_start << ".." << n.ref_end << ", rc=" << static_cast<int>(n.is_revcomp) << ", score=" << n.score << ")";
316316
return os;
317317
}

src/nam.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ struct Nam {
2020
float score;
2121
// unsigned int previous_query_start;
2222
// unsigned int previous_ref_start;
23-
bool is_rc = false;
23+
bool is_revcomp = false;
2424

2525
int ref_span() const {
2626
return ref_end - ref_start;

src/paf.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ void output_hits_paf_PE(std::string &paf_output, const Nam &n, const std::string
2626
paf_output.append("\t");
2727
paf_output.append(std::to_string(n.query_end));
2828
paf_output.append("\t");
29-
paf_output.append(n.is_rc ? "-" : "+");
29+
paf_output.append(n.is_revcomp ? "-" : "+");
3030
paf_output.append("\t");
3131
paf_output.append(references.names[n.ref_id]);
3232
paf_output.append("\t");

src/python/strobealign.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ NB_MODULE(strobealign_extension, m_) {
135135
.def_ro("hash", &QueryRandstrobe::hash)
136136
.def_ro("start", &QueryRandstrobe::start)
137137
.def_ro("end", &QueryRandstrobe::end)
138-
.def_ro("is_reverse", &QueryRandstrobe::is_reverse)
138+
.def_ro("is_revcomp", &QueryRandstrobe::is_revcomp)
139139
.def("__repr__", [](const QueryRandstrobe& qr) {
140140
std::stringstream s; s << qr; return s.str();
141141
})
@@ -150,7 +150,7 @@ NB_MODULE(strobealign_extension, m_) {
150150
.def_ro("score", &Nam::score)
151151
.def_ro("n_hits", &Nam::n_matches)
152152
.def_ro("reference_index", &Nam::ref_id)
153-
.def_rw("is_rc", &Nam::is_rc)
153+
.def_rw("is_revcomp", &Nam::is_revcomp)
154154
.def_prop_ro("ref_span", &Nam::ref_span)
155155
.def_prop_ro("query_span", &Nam::query_span)
156156
.def("__repr__", [](const Nam& nam) {

src/randstrobes.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ std::ostream& operator<<(std::ostream& os, const QueryRandstrobe& randstrobe) {
149149
os << "QueryRandstrobe(hash=" << randstrobe.hash
150150
<< ", start=" << randstrobe.start
151151
<< ", end=" << randstrobe.end
152-
<< ", is_reverse=" << randstrobe.is_reverse
152+
<< ", is_revcomp=" << randstrobe.is_revcomp
153153
<< ")";
154154

155155
return os;

src/randstrobes.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ struct QueryRandstrobe {
6868
randstrobe_hash_t hash;
6969
unsigned int start;
7070
unsigned int end;
71-
bool is_reverse;
71+
bool is_revcomp;
7272
};
7373

7474
std::ostream& operator<<(std::ostream& os, const QueryRandstrobe& randstrobe);

src/sam.cpp

+6-6
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ void Sam::add(
138138
assert(!alignment.is_unaligned);
139139

140140
int flags = 0;
141-
if (!alignment.is_unaligned && alignment.is_rc) {
141+
if (!alignment.is_unaligned && alignment.is_revcomp) {
142142
flags |= REVERSE;
143143
}
144144
if (!is_primary) {
@@ -274,7 +274,7 @@ void Sam::add_pair(
274274
pos1 = -1;
275275
reference_name1 = "*";
276276
} else {
277-
if (alignment1.is_rc) {
277+
if (alignment1.is_revcomp) {
278278
f1 |= REVERSE;
279279
f2 |= MREVERSE;
280280
}
@@ -290,7 +290,7 @@ void Sam::add_pair(
290290
pos2 = -1;
291291
reference_name2 = "*";
292292
} else {
293-
if (alignment2.is_rc) {
293+
if (alignment2.is_revcomp) {
294294
f1 |= MREVERSE;
295295
f2 |= REVERSE;
296296
}
@@ -333,8 +333,8 @@ bool is_proper_pair(const Alignment& alignment1, const Alignment& alignment2, fl
333333
const int dist = alignment2.ref_start - alignment1.ref_start;
334334
const bool same_reference = alignment1.ref_id == alignment2.ref_id;
335335
const bool both_aligned = same_reference && !alignment1.is_unaligned && !alignment2.is_unaligned;
336-
const bool r1_r2 = !alignment1.is_rc && alignment2.is_rc && dist >= 0; // r1 ---> <---- r2
337-
const bool r2_r1 = !alignment2.is_rc && alignment1.is_rc && dist <= 0; // r2 ---> <---- r1
336+
const bool r1_r2 = !alignment1.is_revcomp && alignment2.is_revcomp && dist >= 0; // r1 ---> <---- r2
337+
const bool r2_r1 = !alignment2.is_revcomp && alignment1.is_revcomp && dist <= 0; // r2 ---> <---- r1
338338
const bool rel_orientation_good = r1_r2 || r2_r1;
339339
const bool insert_good = std::abs(dist) <= mu + 6 * sigma;
340340

@@ -350,7 +350,7 @@ std::ostream& operator<<(std::ostream& os, const Alignment& alignment) {
350350
<< ", global_ed=" << alignment.global_ed
351351
<< ", score=" << alignment.score
352352
<< ", length=" << alignment.length
353-
<< ", is_rc=" << alignment.is_rc
353+
<< ", is_revcomp=" << alignment.is_revcomp
354354
<< ", is_unaligned=" << alignment.is_unaligned
355355
<< ", gapped=" << alignment.gapped
356356
<< ")";

src/sam.hpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ struct Alignment {
1717
int global_ed;
1818
int score;
1919
int length;
20-
bool is_rc;
20+
bool is_revcomp;
2121
bool is_unaligned{false};
2222
// Whether a gapped alignment function was used to obtain this alignment
2323
// (even if true, the alignment can still be without gaps)

src/unused.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -1863,8 +1863,8 @@ static inline Alignment get_alignment_unused(
18631863
const auto read_len = read.size();
18641864
const int diff = std::abs(nam.ref_span() - nam.query_span());
18651865

1866-
const std::string r_tmp = nam.is_rc ? read.rc : read.seq;
1867-
const bool is_rc = nam.is_rc;
1866+
const std::string r_tmp = nam.is_revcomp ? read.rc : read.seq;
1867+
const bool is_rc = nam.is_revcomp;
18681868

18691869
int ext_left;
18701870
int ext_right;
@@ -1889,7 +1889,7 @@ static inline Alignment get_alignment_unused(
18891889
alignment.edit_distance = info.edit_distance;
18901890
alignment.score = info.sw_score; // aln_params.match*(read_len-hamming_dist) - aln_params.mismatch*hamming_dist;
18911891
alignment.ref_start = ref_start + ext_left + info.query_start;
1892-
alignment.is_rc = is_rc;
1892+
alignment.is_revcomp = is_rc;
18931893
alignment.is_unaligned = false;
18941894
return alignment;
18951895
}
@@ -1960,7 +1960,7 @@ static inline Alignment get_alignment_unused(
19601960
alignment.edit_distance = alignment_segm_left.edit_distance + alignment_segm_right.edit_distance;
19611961
alignment.score = alignment_segm_left.score + alignment_segm_right.score;
19621962
alignment.ref_start = alignment_segm_left.ref_start;
1963-
alignment.is_rc = nam.is_rc;
1963+
alignment.is_revcomp = nam.is_revcomp;
19641964
alignment.is_unaligned = false;
19651965
} else {
19661966
// std::cerr << "NOOOO MAX BREAKPOINT " << break_point << " candidates: " << n.query_s << " " << n.query_e - k << std::endl;

tests/test_sam.cpp

+4-4
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ TEST_CASE("Sam::add") {
6060
Alignment aln;
6161
aln.ref_id = 0;
6262
aln.is_unaligned = false;
63-
aln.is_rc = true;
63+
aln.is_revcomp = true;
6464
aln.ref_start = 2;
6565
aln.edit_distance = 3;
6666
aln.score = 9;
@@ -97,7 +97,7 @@ TEST_CASE("Pair with one unmapped SAM record") {
9797
aln1.ref_id = 0;
9898
aln1.is_unaligned = false;
9999
aln1.ref_start = 2;
100-
aln1.is_rc = true;
100+
aln1.is_revcomp = true;
101101
aln1.edit_distance = 17;
102102
aln1.score = 9;
103103
aln1.cigar = Cigar("2M");
@@ -153,7 +153,7 @@ TEST_CASE("TLEN zero when reads map to different contigs") {
153153
aln1.ref_id = 0;
154154
aln1.is_unaligned = false;
155155
aln1.ref_start = 2;
156-
aln1.is_rc = false;
156+
aln1.is_revcomp = false;
157157
aln1.edit_distance = 17;
158158
aln1.score = 9;
159159
aln1.cigar = Cigar("2M");
@@ -162,7 +162,7 @@ TEST_CASE("TLEN zero when reads map to different contigs") {
162162
aln2.is_unaligned = false;
163163
aln2.ref_id = 1;
164164
aln2.ref_start = 3;
165-
aln2.is_rc = false;
165+
aln2.is_revcomp = false;
166166
aln2.edit_distance = 2;
167167
aln2.score = 4;
168168
aln2.cigar = Cigar("3M");

0 commit comments

Comments
 (0)