Skip to content

Commit 6f501e3

Browse files
Refactor synchronization module: move sync.py to analysis_primitives, use centralized validators, update import paths, and remove redundant comments
1 parent ea29b2a commit 6f501e3

6 files changed

Lines changed: 6 additions & 21 deletions

File tree

docs/user_guide/theoretical_framework/analysis_primitives/synchronization.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ $$
7878
### Basic Synchronization Analysis
7979

8080
```python
81-
from pyeyesweb.sync import Synchronization
81+
from pyeyesweb.analysis_primitives.synchronization import Synchronization
8282
import numpy as np
8383

8484
# Initialize synchronization analyzer

examples/test_scripts/synchronization.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
import cv2
1010
import mediapipe as mp
11-
from pyeyesweb.sync import Synchronization
11+
from pyeyesweb.analysis_primitives.synchronization import Synchronization
1212

1313
# Function to extract the y-coordinate of a specified keypoint (e.g., wrist) from the Mediapipe Pose results.
1414
# The keypoint's visibility is checked to ensure it's sufficiently visible before processing.

pyeyesweb/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
from pyeyesweb.mid_level.smoothness import Smoothness
2-
from pyeyesweb.sync import Synchronization
2+
from pyeyesweb.analysis_primitives.synchronization import Synchronization

pyeyesweb/sync.py renamed to pyeyesweb/analysis_primitives/synchronization.py

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636
from pyeyesweb.data_models.sliding_window import SlidingWindow
3737
from pyeyesweb.utils.signal_processing import bandpass_filter, compute_hilbert_phases, validate_filter_params
3838
from pyeyesweb.utils.math_utils import compute_phase_locking_value, center_signals
39-
from pyeyesweb.utils.validators import validate_integer, validate_boolean, validate_numeric
39+
from pyeyesweb.utils.validators import validate_integer, validate_boolean, validate_numeric, validate_filter_params_tuple
4040

4141

4242
class Synchronization:
@@ -95,7 +95,7 @@ class Synchronization:
9595
9696
Examples
9797
--------
98-
>>> from pyeyesweb.sync import Synchronization
98+
>>> from pyeyesweb.analysis_primitives.synchronization import Synchronization
9999
>>> from pyeyesweb.data_models.sliding_window import SlidingWindow
100100
>>>
101101
>>> # Create synchronization analyzer with filtering
@@ -126,26 +126,13 @@ class Synchronization:
126126
"""
127127

128128
def __init__(self, sensitivity=100, output_phase=False, filter_params=None, phase_threshold=0.7):
129-
# Validate sensitivity using centralized validator
130129
sensitivity = validate_integer(sensitivity, 'sensitivity', min_val=1, max_val=10000)
131-
132-
# Validate output_phase using centralized validator
133130
self.output_phase = validate_boolean(output_phase, 'output_phase')
134-
135-
# Validate phase_threshold using centralized validator with range check
136131
self.phase_threshold = validate_numeric(phase_threshold, 'phase_threshold', min_val=0, max_val=1)
137132

138-
# Validate filter_params if provided
139133
if filter_params is not None:
140-
if not isinstance(filter_params, (tuple, list)):
141-
raise TypeError(f"filter_params must be a tuple or list, got {type(filter_params).__name__}")
142-
if len(filter_params) != 3:
143-
raise ValueError(f"filter_params must have 3 elements (lowcut, highcut, fs), got {len(filter_params)}")
144-
if not all(isinstance(x, (int, float)) for x in filter_params):
145-
raise TypeError("filter_params must contain only numbers")
146-
# Use centralized filter validation
134+
filter_params = validate_filter_params_tuple(filter_params)
147135
lowcut, highcut, fs = validate_filter_params(*filter_params)
148-
# Store the validated parameters
149136
filter_params = (lowcut, highcut, fs)
150137

151138
self.plv_history = deque(maxlen=sensitivity)

pyeyesweb/data_models/sliding_window.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ def max_length(self, value: int):
6060
self._resize(old_max_length)
6161

6262
def __init__(self, max_length: int, n_columns: int):
63-
# Validate inputs using centralized validators
6463
self._max_length = validate_integer(max_length, 'max_length', min_val=1, max_val=10_000_000)
6564
self._n_columns = validate_integer(n_columns, 'n_columns', min_val=1, max_val=10_000)
6665

pyeyesweb/utils/signal_processing.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ def bandpass_filter(data, filter_params):
8080
if filter_params is None:
8181
return data
8282

83-
# Use centralized validation
8483
lowcut, highcut, fs = validate_filter_params(*filter_params)
8584

8685
nyquist = 0.5 * fs

0 commit comments

Comments
 (0)