This repository contains the dataset and baseline code for the AN2DL 2025-2026 Challenge 1: Time Series Classification.
The goal of this challenge is to develop models that can accurately classify multivariate time series data into predefined categories (high pain, low pain, no pain) based on temporal patterns and features extracted from the data.
The project includes:
- The Pirate Pain Dataset: A collection of multivariate time series data with associated labels.
- Baseline code: Jupyter notebooks demonstrating data loading, preprocessing, and model training
- Prerequisite notebook: notebooks/00_prerequisites.ipynb
- EDA and preprocess: notebooks/01_eda_preprocess.ipynb
- Feature Engineering: notebooks/02_feature_engineering.ipynb
- Model (training and evaluation): notebooks/03_model.ipynb
- Internal modules: Python functions and classes to facilitate data handling and model development.
- For the challenge, we have defined a model based on Temporal Convolutional Networks (TCN) and BiLSTM with Attention mechanism, called
PainTCNBiLSTMAttn - Report: A detailed report on the challenge, including methodology, experiments, and results.
The submissions we created for the challenge are available in the submissions folder. These are the submissions that we used to compete in the challenge. Out of 193 teams, we ranked
Team name: I Neuroni Ribelli
Team members:
Since data files are large, you need to download git-lfs to clone this repository:
# Install git-lfs (if not already installed)
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
sudo apt-get install git-lfs
# Initialize git-lfs in your repository (once per machine)
git lfs install
# Clone the repository
git clone <repository-url>
cd AN2DL-Challenge-1
# Pull the large data files
git lfs pullTip
If you have already cloned the repository without git-lfs, run the following commands inside the repository folder:
git lfs install
git lfs pullNow, you should have all the data files in place. To run the provided notebooks, make sure you have the required Python packages installed:
# Create a virtual environment
cd AN2DL-Challenge-1 # if not already in the repo folder
python3 -m venv .venv
source .venv/bin/activate # On Windows use .venv\Scripts\activate
# Install jupyter
pip install jupyter ipykernelIf you are still having issues, please refer to the official python venv documentation for more details on setting up virtual environments.
Once the environment is set up, run the prerequisite notebook to install all other dependencies (CPU or GPU version):
jupyter notebookAnd navigate to the notebook files in your web browser (usually at http://localhost:8888).
Competition hosted at AN2DL 2025-2026.
Ahoy, matey! This dataset contains multivariate time series data, captured from both ordinary folk and pirates over repeated observations in time. Each sample collects temporal dynamics of body joints and pain perception, with the goal of predicting the subject’s true pain status:
no_painlow_painhigh_pain
pirate_pain_train.csv— training setpirate_pain_train_labels.csv— labels for the training setpirate_pain_test.csv— test set (with no labels)sample_submission.csv— an example of random submission
Each record represents a time step within a subject’s recording, identified by sample_index and time. The dataset includes several groups of features:
pain_survey_1–pain_survey_4— simple rule-based sensor aggregations estimating perceived pain.n_legs,n_hands,n_eyes— subject characteristics.joint_00–joint_30— continuous measurements of body joint angles (neck, elbow, knee, etc.) across time.
Predict the real pain level of each subject based on their time-series motion data.
import pandas as pd
X_train = pd.read_csv('pirate_pain_train.csv')
y_train = pd.read_csv('pirate_pain_train_labels.csv')
X_test = pd.read_csv('pirate_pain_test.csv')No validation split be provided. You’ll need to chart your own course and create one from the training data.