The minimum prize pool is USD 3,000 (three thousand US dollars).
Training data for model development is available at:
https://drive.google.com/drive/folders/1vZBjKSeMab-f8owLfjQyEEwaPTYV-hRt?usp=sharing
You must preprocess those raw files into the JSON schema described below before using them.
A template project is available at:
https://github.com/AIRPPM/submission_example
In the main script, find the line starting with TODO and replace the random-value generator with your PM₁₀ forecasting model.
The input must be an object containing a list of cases.
Each case includes:
case_id: unique identifier for this scenario
stations: list of measurement stations, each with:
station_code: alphanumeric code
longitude, latitude: geographic coordinates
history: past hourly readings of PM₁₀:
timestamp: when the measurement was taken
pm10: recorded PM₁₀ value
target: location and time to start the forecast
longitude, latitude
prediction_start_time: beginning of forecast period
weather (optional): array of METAR-style observations to enrich your model
Example:
{
"cases": [
{
"case_id": "case_0001",
"stations": [
{
"station_code": "StationA",
"longitude": -74.0060,
"latitude": 40.7128,
"history": [
{ "timestamp": "2025-01-01T00:00:00", "pm10": 42.5 },
{ "timestamp": "2025-01-01T01:00:00", "pm10": 38.1 }
]
}
],
"target": {
"longitude": -74.0060,
"latitude": 40.7128,
"prediction_start_time": "2025-01-03T00:00:00"
},
"weather": [
{ "date": "2025-01-01T00:00:00", "tmp": "+0050,1", "wnd": "260,1,N,0030,1" }
]
}
]
}
In this example, one case is defined for a station in New York City.
The history array contains two hourly PM₁₀ readings, and the forecast will start at midnight on January 3, 2025.
The output must be an object with a list of predictions.
Each prediction links back to the input case and provides 24 hourly PM₁₀ forecasts.
Example:
{
"predictions": [
{
"case_id": "case_0001",
"forecast": [
{ "timestamp": "2025-01-03T00:00Z", "pm10_pred": 48.7 },
{ "timestamp": "2025-01-03T01:00Z", "pm10_pred": 52.3 }
]
}
]
}
Here, the output for case_0001 contains two example forecast points.
Your model must produce 24 entries per case; fewer entries will trigger an error.
Build a Docker image named, for example, air-pm10-forecast.
It must contain your code and dependencies so that it can be run with the commands below.
Build:
docker build -t air-pm10-forecast .
Run example:
docker run --rm \
-v /local/data/data.json:/data/data.json \
-v /local/data/landuse.pbf:/data/landuse.pbf \
-v /local/data/output.json:/data/output.json \
air-pm10-forecast \
--data-file /data/data.json \
--landuse-pbf /data/landuse.pbf \
--output-file /data/output.json
The container must exit with status zero only if all cases produce exactly 24 hourly forecasts;
otherwise it must exit with non-zero to indicate failure.
Upload a ZIP archive containing:
A Dockerfile at the archive root, which specifies how to build your image.
All source code and resources required to reproduce that build context.
Link to submission form:
https://docs.google.com/forms/d/e/1FAIpQLSfsO57MN36h9Qr7ZZY6XGC8e7G2iG_nuCblUEzUZMZNJLka4Q/viewform?usp=dialog
When unzipped, running docker build -t your-image-name . in that directory must succeed without additional modifications.
Submissions will be evaluated on Mean Squared Error (MSE) against a hidden test set.
Lower score wins; ties are broken by earlier submission time.