Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions aaanalysis/data_handling/_seq_preproc.py
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,9 @@ def check_match_slide_start_slide_stop(slide_start=None, slide_stop=None) -> Non
def check_match_slide_start_slide_stop_window_size(slide_start=None, slide_stop=None, window_size=None) -> None:
"""Check if one is given"""
if slide_stop is not None:
min_window_size = slide_stop - slide_stop
if window_size < min_window_size:
raise ValueError(f"'window_size' ('{window_size}') should be smaller then the distance ({min_window_size})"
max_window_size = slide_stop - slide_start + 1
if window_size > max_window_size:
raise ValueError(f"'window_size' ('{window_size}') should be <= the distance ({max_window_size})"
f" between 'slide_start' ('{slide_start}') and 'slide_stop' ({slide_stop}).")


Expand Down
30 changes: 21 additions & 9 deletions tests/unit/data_handling_tests/test_sp_get_sliding_aa_window.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,14 +48,24 @@ def test_slide_start_invalid(self):
sp.get_sliding_aa_window(seq="ACDEFGHIKLMNPQRSTVWY", slide_start=100, accept_gap=False)

@settings(max_examples=10, deadline=None)
@given(slide_stop=st.integers(min_value=1, max_value=50))
# window_size defaults to 5, so a valid span needs slide_stop >= 4 (slide_start defaults to 0)
@given(slide_stop=st.integers(min_value=4, max_value=50))
def test_slide_stop_valid(self, slide_stop):
"""Test a valid 'slide_stop' parameter."""
sp = aa.SequencePreprocessor()
windows = sp.get_sliding_aa_window(seq="ACDEFGHIKLMNPQRSTVWY", slide_stop=slide_stop)
assert isinstance(windows, list)
assert all(isinstance(window, str) for window in windows)

def test_window_larger_than_span_raises(self):
"""An explicit slide window larger than the slide span is rejected."""
sp = aa.SequencePreprocessor()
with pytest.raises(ValueError):
sp.get_sliding_aa_window(seq="ACDEFGHIKLMNPQRSTVWY", slide_start=0, slide_stop=2, window_size=100)
# a window that exactly fits the span (span + 1) is accepted
windows = sp.get_sliding_aa_window(seq="ACDEFGHIKLMNPQRSTVWY", slide_start=0, slide_stop=4, window_size=5)
assert isinstance(windows, list) and len(windows) >= 1

def test_slide_stop_invalid(self):
"""Test an invalid 'slide_stop' parameter."""
sp = aa.SequencePreprocessor()
Expand Down Expand Up @@ -144,14 +154,16 @@ def test_valid_combination(self, seq, slide_start, slide_stop, window_size, inde
"""Test valid combinations of parameters."""
sp = aa.SequencePreprocessor()
if slide_start < slide_stop:
windows = sp.get_sliding_aa_window(seq=seq,
slide_start=slide_start,
slide_stop=slide_stop,
window_size=window_size,
index1=index1,
gap=gap)
assert isinstance(windows, list)
assert all(isinstance(window, str) for window in windows)
kwargs = dict(seq=seq, slide_start=slide_start, slide_stop=slide_stop,
window_size=window_size, index1=index1, gap=gap)
if window_size <= slide_stop - slide_start + 1:
windows = sp.get_sliding_aa_window(**kwargs)
assert isinstance(windows, list)
assert all(isinstance(window, str) for window in windows)
else:
# a window larger than the slide span is now rejected
with pytest.raises(ValueError):
sp.get_sliding_aa_window(**kwargs)

@settings(max_examples=10, deadline=None)
@given(
Expand Down
Loading