Skip to content

Commit f910535

Browse files
committed
test for reverse comp correctness
1 parent 54341e6 commit f910535

1 file changed

Lines changed: 26 additions & 3 deletions

File tree

test/runtests.jl

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -206,10 +206,33 @@ using Random
206206
@test 0.0 < results_pv[1, 1].pvalue 1.0
207207
end
208208

209-
# ── Reverse complement ──────────────────────────────────────────────────────
209+
# ── Reverse complement ─────────────────────────────────────────────────
210210
@testset "compare_pfms – reverse complement" begin
211-
# A motif and its reverse complement should be a perfect match
212-
# when reverse_comp=true
211+
# Direct test of _reverse_complement_pfm transformation
212+
# Rows: A=1, C=2, G=3, T=4
213+
pfm_orig = [0.7 0.1 0.2; # A
214+
0.1 0.6 0.1; # C
215+
0.1 0.2 0.6; # G
216+
0.1 0.1 0.1] # T
217+
pfm_rc = AverageLoglikelihoodRatio._reverse_complement_pfm(pfm_orig)
218+
219+
# Columns must be reversed
220+
@test pfm_rc[:, 1] pfm_orig[[4, 3, 2, 1], 3] # last col, rows swapped
221+
@test pfm_rc[:, 2] pfm_orig[[4, 3, 2, 1], 2] # middle col, rows swapped
222+
@test pfm_rc[:, 3] pfm_orig[[4, 3, 2, 1], 1] # first col, rows swapped
223+
224+
# Row order in RC: row i of RC = row (5-i) of original (at mirrored column)
225+
# A row of RC == T row of original (reversed)
226+
@test pfm_rc[1, :] reverse(pfm_orig[4, :]) # A ← T
227+
@test pfm_rc[2, :] reverse(pfm_orig[3, :]) # C ← G
228+
@test pfm_rc[3, :] reverse(pfm_orig[2, :]) # G ← C
229+
@test pfm_rc[4, :] reverse(pfm_orig[1, :]) # T ← A
230+
231+
# RC of RC must equal the original
232+
@test AverageLoglikelihoodRatio._reverse_complement_pfm(pfm_rc) pfm_orig
233+
234+
# Width is preserved
235+
@test size(pfm_rc) == size(pfm_orig)
213236
motif = [0.9 0.05 0.05;
214237
0.05 0.85 0.05;
215238
0.025 0.05 0.85;

0 commit comments

Comments
 (0)