@@ -223,3 +223,111 @@ def test_load_without_fps(self, meta_data: Path, raw_data: Path):
223223 if game_id :
224224 assert isinstance (game_id , str )
225225 assert game_id == "1234456"
226+
227+ def test_load_with_current_metadata_format (
228+ self , meta_data : Path , raw_data : Path , additional_meta_data : Path
229+ ):
230+ dataset = secondspectrum .load (
231+ meta_data = meta_data ,
232+ raw_data = raw_data ,
233+ additional_meta_data = additional_meta_data ,
234+ only_alive = False ,
235+ coordinates = "secondspectrum" ,
236+ )
237+
238+ # Check provider, type, shape, etc
239+ assert dataset .metadata .provider == Provider .SECONDSPECTRUM
240+ assert dataset .dataset_type == DatasetType .TRACKING
241+ assert len (dataset .records ) == 376
242+ assert len (dataset .metadata .periods ) == 2
243+ assert dataset .metadata .orientation == Orientation .AWAY_HOME
244+
245+ # Check the Periods
246+ assert dataset .metadata .periods [0 ].id == 1
247+ assert dataset .metadata .periods [0 ].start_timestamp == timedelta (
248+ seconds = 0
249+ )
250+ assert dataset .metadata .periods [0 ].end_timestamp == timedelta (
251+ seconds = 2982240 / 25
252+ )
253+
254+ assert dataset .metadata .periods [1 ].id == 2
255+ assert dataset .metadata .periods [1 ].start_timestamp == timedelta (
256+ seconds = 3907360 / 25
257+ )
258+ assert dataset .metadata .periods [1 ].end_timestamp == timedelta (
259+ seconds = 6927840 / 25
260+ )
261+
262+ # Check some timestamps
263+ assert dataset .records [0 ].timestamp == timedelta (
264+ seconds = 0
265+ ) # First frame
266+ assert dataset .records [20 ].timestamp == timedelta (
267+ seconds = 320.0
268+ ) # Later frame
269+ assert dataset .records [187 ].timestamp == timedelta (
270+ seconds = 9.72
271+ ) # Second period
272+
273+ # Check some players
274+ home_player = dataset .metadata .teams [0 ].players [2 ]
275+ assert home_player .player_id == "8xwx2"
276+ assert dataset .records [0 ].players_coordinates [home_player ] == Point (
277+ x = - 8.943903672572427 , y = - 28.171654132650365
278+ )
279+
280+ away_player = dataset .metadata .teams [1 ].players [3 ]
281+ assert away_player .player_id == "2q0uv"
282+ assert dataset .records [0 ].players_coordinates [away_player ] == Point (
283+ x = - 45.11871334915762 , y = - 20.06459030559596
284+ )
285+
286+ # Check the ball
287+ assert dataset .records [1 ].ball_coordinates == Point3D (
288+ x = - 23.147073918432426 , y = 13.69367399756424 , z = 0.0
289+ )
290+
291+ # Check pitch dimensions
292+ pitch_dimensions = dataset .metadata .pitch_dimensions
293+ assert pitch_dimensions .x_dim .min == - 52.425
294+ assert pitch_dimensions .x_dim .max == 52.425
295+ assert pitch_dimensions .y_dim .min == - 33.985
296+ assert pitch_dimensions .y_dim .max == 33.985
297+
298+ # Check enriched metadata
299+ date = dataset .metadata .date
300+ if date :
301+ assert isinstance (date , datetime )
302+ assert date == datetime (1900 , 1 , 26 , 0 , 0 , tzinfo = timezone .utc )
303+
304+ game_week = dataset .metadata .game_week
305+ if game_week :
306+ assert isinstance (game_week , str )
307+ assert game_week == "1"
308+
309+ game_id = dataset .metadata .game_id
310+ if game_id :
311+ assert isinstance (game_id , str )
312+ assert game_id == "1234456"
313+
314+ # Check team and player information
315+ home_team = dataset .metadata .teams [0 ]
316+ assert home_team .team_id == "123"
317+ assert home_team .name == "FK1"
318+
319+ away_team = dataset .metadata .teams [1 ]
320+ assert away_team .team_id == "456"
321+ assert away_team .name == "FK2"
322+
323+ home_player = home_team .players [0 ]
324+ assert home_player .player_id == "0a39g4"
325+ assert home_player .name == "y9xrbe545u3h"
326+ assert home_player .starting is False
327+ assert home_player .starting_position == "SUB"
328+
329+ away_player = away_team .players [0 ]
330+ assert away_player .player_id == "9bgzhy"
331+ assert away_player .name == "c6gupnmywca0"
332+ assert away_player .starting is True
333+ assert away_player .starting_position == "GK"
0 commit comments