Skip to content

Commit

Permalink
feat: Add events to gaze integration functions
Browse files Browse the repository at this point in the history
  • Loading branch information
dkrako committed Sep 14, 2023
1 parent 8f9bf09 commit 09e3539
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 1 deletion.
5 changes: 5 additions & 0 deletions src/pymovements/gaze/integration.py
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,8 @@ def from_numpy(
def from_pandas(
data: pd.DataFrame,
experiment: Experiment | None = None,
events: pm.EventDataFrame | None = None,
*,
time_column: str | None = None,
pixel_columns: list[str] | None = None,
position_columns: list[str] | None = None,
Expand All @@ -276,6 +278,8 @@ def from_pandas(
Data represented as a pandas DataFrame.
experiment : Experiment
The experiment definition.
events: EventDataFrame
A dataframe of events in the gaze signal.
time_column:
The name of the timestamp column in the input data frame.
pixel_columns:
Expand All @@ -295,6 +299,7 @@ def from_pandas(
return GazeDataFrame(
data=df,
experiment=experiment,
events=events,
time_column=time_column,
pixel_columns=pixel_columns,
position_columns=position_columns,
Expand Down
2 changes: 1 addition & 1 deletion tests/gaze/integration_numpy_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ def test_from_numpy_all_none():


@pytest.mark.parametrize(
('events'),
'events',
[
pytest.param(
None,
Expand Down
43 changes: 43 additions & 0 deletions tests/gaze/integration_pandas_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
"""Test from gaze.from_pandas."""
import pandas as pd
import polars as pl
import pytest
from polars.testing import assert_frame_equal

import pymovements as pm
Expand Down Expand Up @@ -71,3 +72,45 @@ def test_from_pandas_explicit_columns():
})

assert_frame_equal(gaze.frame, expected)


@pytest.mark.parametrize(
('df', 'events'),
[
pytest.param(
pd.DataFrame(),
None,
id='events_none',
),
pytest.param(
pd.DataFrame(),
pm.EventDataFrame(),
id='events_empty',
),
pytest.param(
pd.DataFrame(),
pm.EventDataFrame(name='fixation', onsets=[123], offsets=[345]),
id='fixation',
),
pytest.param(
pd.DataFrame(),
pm.EventDataFrame(name='saccade', onsets=[34123], offsets=[67345]),
id='saccade',
),
],
)
def test_from_pandas_events(df, events):
if events is None:
expected_events = pm.EventDataFrame().frame
else:
expected_events = events.frame

gaze = pm.gaze.from_pandas(data=df, events=events)

assert_frame_equal(gaze.events.frame, expected_events)
# We don't want the events point to the same reference.
assert gaze.events.frame is not expected_events

0 comments on commit 09e3539

Please sign in to comment.