replacement-scout / src /gp2 /preprocess /sequence_builder.py
muhgalal's picture
Initial deploy: backend + models + photos
5c09212
Raw
History Blame Contribute Delete
2.39 kB
def build_possession_sequences(events, event_to_tokens , min_seq_len=10):
sequences = []
current_tokens = []
current_events = []
current_key = None # (possession_id, team_id)
current_period = None
for ev in events:
possession_id = ev.get("possession")
team_id = ev.get("possession_team", {}).get("id")
period = ev.get("period")
if possession_id is None or team_id is None:
continue
key = (possession_id, team_id)
event_team_id = ev.get("team", {}).get("id")
if event_team_id != team_id: # team_id is possession_team id
continue # skip defending team's actions from possession sentence
current_period = period
# New possession
if key != current_key:
if current_tokens:
sequences.append({
"tokens": current_tokens,
"events": current_events,
"period": current_period
})
current_tokens = []
current_events = []
current_key = key
tokens = event_to_tokens(ev)
if tokens:
current_tokens.extend(tokens)
current_events.append(ev)
# Last sequence
if current_tokens:
sequences.append({
"tokens": current_tokens,
"events": current_events,
"period": current_period
})
merged = []
buffer_tokens = []
buffer_events = []
prev_period = None
for seq in sequences:
if seq["period"] != prev_period and buffer_tokens:
merged.append({"tokens": buffer_tokens, "events": buffer_events})
buffer_tokens = []
buffer_events = []
prev_period = seq["period"]
buffer_tokens.extend(seq["tokens"])
buffer_events.extend(seq["events"])
if len(buffer_tokens) >= min_seq_len:
merged.append({"tokens": buffer_tokens, "events": buffer_events})
buffer_tokens = []
buffer_events = []
if buffer_tokens:
if merged:
merged[-1]["tokens"].extend(buffer_tokens)
merged[-1]["events"].extend(buffer_events)
else:
merged.append({"tokens": buffer_tokens, "events": buffer_events})
return merged # ← was: return sequences