Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

README.md

The RADL corpus

Everything in here is synthetic. No real match has been traced yet.

The one match present, events/synthetic-001.json, was produced by replaying phase-trace's own test fixtures through a real MatchState and calling its raw exporter — see tools/make_synthetic_match.py. It is a genuine phase-trace export of paths a human never drew. It exists so the converter has something to run against and so the directory layout is real rather than described. It is not evidence about rugby, and no number derived from it means anything.

Every record here carries "synthetic": true. When the first real match lands, that flag is the thing to grep for.

Layout

Follows StatsBomb's open-data convention:

competitions.json                          array of competition-season objects
matches/<competition_id>/<season_id>.json  array of match objects
events/<match_id>.json                     phase-trace raw export, verbatim

All three are written by tools/make_synthetic_match.py. The scaffolding files restate values that also live as constants in that script, so they are generated rather than hand-maintained; tests/test_corpus_files.py holds the committed copies equal to what the generator produces.

events/ holds the producer's export unmodified rather than converted RADL rows. That is the division StatsBomb and socceraction use: the corpus is raw, and the action language is built from it on read.

import radl
actions = radl.read_match("data/events/synthetic-001.json", halftime_minute=40.0)

Nothing lossy is committed, and a spec revision re-derives the whole corpus without touching a data file.

Fields added to the StatsBomb convention

field where why
synthetic competitions, matches it must be impossible to mistake seed data for a traced match
halftime_minute matches fallback source for RADL's period column. phase-trace stamps period on every row it writes now (spec §5), so this only matters for exports predating that field
source matches which producer and which of its exports wrote the file

match_id is a string rather than an integer. phase-trace assigns no ids, so the corpus names them, and synthetic-001 says more than 1 does.

Not present

lineups/ — phase-trace records jersey numbers only, with no roster, so there is nothing to put in one. three-sixty/ — no positional tracking exists.