Skip to content

StepTracker (both notebooks): top-2/top-3 frequencies duplicated + real-time peak slope wraps at buffer start #20

Description

@jonfroehlich

Found in the #16 correctness/prose/comments audit (verified by running on the default log). Both bugs are present in both StepTracker notebooks (StepTracker-Exercises.ipynb and StepTracker-WithExampleSolution.ipynb).

1. Top-2 / top-3 frequencies are copy-paste duplicates. The "top 3 frequencies" extraction assigns all three to the same element:

top1_freq = freqs[ind_sorted_by_coef][0]
top2_freq = freqs[ind_sorted_by_coef][0]   # should be [1]
top3_freq = freqs[ind_sorted_by_coef][0]   # should be [2]

Verified on the default file the sorted top-3 are [1.545, 1.636, 3.091] Hz, but all three vars get 1.545. The variables aren't reused downstream (so no output changes), but the code is wrong and misleading to students.

2. Real-time peak detector wraps at the buffer start. In the per-buffer peak loop:

for j in range(0, len(buffer) - 1):
    forward_slope  = buffer[j + 1] - buffer[j]
    backward_slope = buffer[j] - buffer[j - 1]   # j==0 -> buffer[-1] wraps to the LAST sample
    if forward_slope < 0 and backward_slope > 0:
        ...

At j == 0, buffer[j-1] is buffer[-1] (the last sample), so the slope test compares across the buffer seam and can flag a spurious peak at index 0. Masked by the min_peak_height threshold for the stock data, but it's a genuine off-by-one in a stub students extend. Fix: iterate range(1, len(buffer) - 1) (the one-sample buffer overlap already covers the seam).

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions