Here we describe the investigations that were collected from the public domain. The data from these investigations make up the training and challenge data for the CMI-Flu prediction challenge. An overview of all the data, including links to more detailed descriptions of the other data, may be found at CMI-x .
see https://www.kaggle.com/competitions/cmi-flu-first-prediction-challenge/discussion/736185
Following a screen of the training data studies,
vaccine_season and vaccine have been updated,
based on a manual review of all 152 arms across 59 studies.
Changes per column:
| column | changed cells |
|---|---|
vaccine_season |
22 |
vaccine |
12 |
The majority of studies have had missing data completed, 4 studies have been corrected. The studies affected are: SDY3010 ; SDY3186 ; SDY3193, SDY3427 ; SDY270; SDY272 ; SDY305 ; SDY314 ; SDY404 ; SDY56 ; SDY1393 ; SDY80 ; SDY112 ; SDY212 ; EXT100
The
vaccine_strains_per_season.txt reference file has also been updated:
H3N2 A/Victoria/361/2011 in seasons 2013-14 and 2014-15 has
been updated to A/Texas/50/2012. This information also
affects the virus_in_vaccine flag in the serology data; the
serology data has also been updated.
| Investigations | |
| Data dictionary | |
| Column | Description |
|---|---|
| study_accession | Study identifier (links to the assay tables). One study may comprise multiple arms. |
| title | Short title of the study. |
| description | Free-text description of the study. |
| pubmed_ids | PubMed IDs of publications associated with the study; semicolon-separated. |
| arm_id | Identifier of the study arm/cohort (a group of participants receiving the same intervention). One row per arm. |
| arm_name | Human-readable name of the arm. |
| arm_description | Free-text description of the arm. |
| nr_participants | Number of participants enrolled in the study. |
| vaccine_season | Influenza season (year) in which the arm was vaccinated. NA where not recorded. |
| vaccine | Vaccine type administered: TIV, QIV, IIV/IIV3/IIV8 (inactivated), or LAIV (live attenuated). |
| main_pubmed_id | PubMed ID of the primary publication for the study. |
| year | Publication year of the primary reference. |
| first_author | First author of the primary publication. |
Data preview:
invest = read_tsv('../datasets/260512/train/investigations.tsv')
head(invest)
## # A tibble: 6 × 13
## study_accession title description pubmed_ids arm_id arm_name arm_description
## <chr> <chr> <chr> <chr> <chr> <chr> <chr>
## 1 2016_UGA 2016_U… Annual vac… 38917104;… 2016_… 2016 UG… 2016 UGA Stand…
## 2 2016_UGA 2016_U… Annual vac… 38917104;… 2016_… 2016 UG… 2016 UGA High …
## 3 2017_UGA 2017_U… Annual vac… 38917104;… 2017_… 2017 UG… 2017 UGA Stand…
## 4 2017_UGA 2017_U… Annual vac… 38917104;… 2017_… 2017 UG… 2017 UGA High …
## 5 2018_UGA 2018_U… Annual vac… 36366544;… 2018_… 2018 UG… 2018 UGA Stand…
## 6 2018_UGA 2018_U… Annual vac… 36366544;… 2018_… 2018 UG… 2018 UGA High …
## # ℹ 6 more variables: vaccine_season <dbl>, vaccine <chr>,
## # main_pubmed_id <dbl>, year <dbl>, first_author <chr>, nr_participants <dbl>
Each study contributes a number of participants to the training data. The bar for the 2025LJI challenge cohort is highlighted in red; all other studies are shown in blue; the dashed line shows the mean numberof participants per study. We have collected data from 4,805 participants across 59 studies.
study_n <- invest |>
group_by(study_accession) |>
summarise(
nr_participants = first(nr_participants),
first_author = first(first_author),
year = first(year),
.groups = "drop"
) |>
mutate(
label = ifelse(is.na(first_author),
study_accession,
paste0(first_author, " (", year, ") - ", study_accession)),
is_challenge = study_accession == "2025LJI"
) |>
arrange(nr_participants) |>
mutate(study_accession = factor(study_accession, levels = study_accession))
ggplot(study_n, aes(x = study_accession,
y = nr_participants,
fill = is_challenge)) +
geom_col() +
geom_hline(yintercept = mean(study_n$nr_participants),
linetype = "dashed", color = "black") +
coord_flip() +
scale_x_discrete(labels = setNames(study_n$label, study_n$study_accession)) +
scale_fill_manual(values = c(`FALSE` = "#2C7FB8", `TRUE` = "#E34A33"),
guide = "none") +
labs(x = NULL, y = "Number of participants", title="Number of participants per study") +
theme_minimal(base_size = 11)