{"id":305620,"name":"AgML","description":"Aspires to identify key research gaps and opportunities at the intersection of agricultural modelling and machine learning research and support enhanced collaboration and engagement between experts in these disciplines.","url":"https://github.com/wur-ai/agml-cy-bench","last_synced_at":"2026-04-08T04:30:21.168Z","repository":{"id":209000582,"uuid":"722584049","full_name":"WUR-AI/AgML-CY-Bench","owner":"WUR-AI","description":"CY-Bench (Crop Yield Benchmark) is a comprehensive dataset and benchmark to forecast crop yields at subnational level. CY-Bench standardizes selection, processing and spatio-temporal harmonization of public subnational yield statistics with relevant predictors. Contributors include agronomers, climate scientists and machine learning researchers.","archived":false,"fork":false,"pushed_at":"2026-03-20T10:53:10.000Z","size":311693,"stargazers_count":43,"open_issues_count":37,"forks_count":20,"subscribers_count":9,"default_branch":"main","last_synced_at":"2026-03-24T16:53:01.364Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://cybench.agml.org/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/WUR-AI.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-11-23T13:12:11.000Z","updated_at":"2026-03-20T10:50:41.000Z","dependencies_parsed_at":"2024-03-14T22:40:38.529Z","dependency_job_id":"7dc00c65-48c5-42a1-b1cc-dc2f0c814f81","html_url":"https://github.com/WUR-AI/AgML-CY-Bench","commit_stats":{"total_commits":706,"total_committers":27,"mean_commits":26.14814814814815,"dds":0.4164305949008499,"last_synced_commit":"e39002f3e401eee95dcae7d8346b8fe10a2af844"},"previous_names":["bigdatawur/agml-crop-yield-forecasting","bigdatawur/agml-cy-bench","wur-ai/agml-cy-bench"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/WUR-AI/AgML-CY-Bench","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WUR-AI%2FAgML-CY-Bench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WUR-AI%2FAgML-CY-Bench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WUR-AI%2FAgML-CY-Bench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WUR-AI%2FAgML-CY-Bench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WUR-AI","download_url":"https://codeload.github.com/WUR-AI/AgML-CY-Bench/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WUR-AI%2FAgML-CY-Bench/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30939607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-25T20:13:00.360Z","status":"ssl_error","status_checked_at":"2026-03-25T20:04:11.365Z","response_time":80,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"owner":{"login":"WUR-AI","name":"WUR-AI","uuid":"26596900","kind":"organization","description":null,"email":null,"website":null,"location":null,"twitter":null,"company":null,"icon_url":"https://private-avatars.githubusercontent.com/u/26596900?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTEiLCJleHAiOjE3MzQxMDYzODAsIm5iZiI6MTczNDEwNTE4MCwicGF0aCI6Ii91LzI2NTk2OTAwIn0.4fYJKzapQ-RbSMvuWaBa7CYwK4PiCRdqERDbys5CIag\u0026v=4","repositories_count":15,"last_synced_at":"2024-12-13T16:03:16.841Z","metadata":{"has_sponsors_listing":false},"html_url":"https://github.com/WUR-AI","funding_links":[],"total_stars":76,"followers":21,"following":0,"created_at":"2022-11-12T02:21:06.243Z","updated_at":"2024-12-13T16:03:16.841Z","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WUR-AI","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WUR-AI/repositories"},"packages":[],"commits":{"id":7602948,"full_name":"wur-ai/agml-cy-bench","default_branch":"main","total_commits":802,"total_committers":25,"total_bot_commits":0,"total_bot_committers":0,"mean_commits":32.08,"dds":0.46758104738154616,"past_year_total_commits":21,"past_year_total_committers":3,"past_year_total_bot_commits":0,"past_year_total_bot_committers":0,"past_year_mean_commits":7.0,"past_year_dds":0.09523809523809523,"last_synced_at":"2026-04-05T03:05:16.564Z","last_synced_commit":"12fab27b9f2f44d8e2c8290a99df8684cbca8230","created_at":"2024-12-14T00:08:45.192Z","updated_at":"2026-04-05T03:03:20.428Z","committers":[{"name":"krsnapaudel","email":"dilli.paudel@wur.nl","login":null,"count":427},{"name":"Michiel Kallenberg","email":"michielkallenberg@gmail.com","login":"michielkallenberg","count":105},{"name":"ellaampy","email":"ellaampy@gmail.com","login":"ellaampy","count":45},{"name":"Michiel Kallenberg","email":"","login":null,"count":35},{"name":"ronvree","email":"ronvbree@gmail.com","login":"ronvree","count":29},{"name":"Aike Potze","email":"aikepotze@hotmail.com","login":"aikepotze","count":26},{"name":"janet68","email":"46169449+janet6868","login":"janet6868","count":21},{"name":"Pratishtha Poudel","email":"poudelpratishtha@gmail.com","login":"poudelpratishtha","count":19},{"name":"hbja","email":"hbja96@gmail.com","login":"hbja","count":18},{"name":"Maximilian Zachow","email":"maxzachow@protonmail.com","login":"mzachow","count":13},{"name":"Inti Luna Aviles","email":"inti.luna.aviles@gmail.com","login":"intiluna","count":10},{"name":"Raed Hamed","email":"58743155+Raed-Hamed","login":"Raed-Hamed","count":9},{"name":"AbdelrahmanAmr3","email":"abdulrahman.amr.ali@gmail.com","login":"AbdelrahmanAmr3","count":9},{"name":"VANT","email":"inti luna","login":null,"count":8},{"name":"Carla","email":"rlaudien@posteo.de","login":"CarlaLimone","count":7},{"name":"smkuhlani","email":"34687653+smkuhlani","login":"smkuhlani","count":5},{"name":"Jonathan Richetti","email":"ric375@petrichor-login.cm.cluster","login":null,"count":5},{"name":"mmeronijrc","email":"michele.meroni@ext.ec.europa.eu","login":"mmeronijrc","count":2},{"name":"oumniaennaji","email":"73598833+oumniaennaji","login":"oumniaennaji","count":2},{"name":"Amit Srivastava","email":"61437326+Amit1979-UniBonn","login":"Amit1979-UniBonn","count":2},{"name":"Abdelghani Belgaid","email":"72890326+abdelghanibelgaid","login":"abdelghanibelgaid","count":1},{"name":"Gonzalo-Mier","email":"gonzalo.miermunoz@wur.nl","login":"Gonzalo-Mier","count":1},{"name":"Jonathan Richetti","email":"ric375@virga-login.cm.cluster","login":null,"count":1},{"name":"Yi-Chia Chang","email":"61452667+yichiac","login":"yichiac","count":1},{"name":"gnodnooh","email":"gnodnooh@gmail.com","login":"gnodnooh","count":1}],"past_year_committers":[{"name":"Michiel Kallenberg","email":"michielkallenberg@gmail.com","login":"michielkallenberg","count":19},{"name":"Yi-Chia Chang","email":"61452667+yichiac","login":"yichiac","count":1},{"name":"Abdelghani Belgaid","email":"72890326+abdelghanibelgaid","login":"abdelghanibelgaid","count":1}],"commits_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories/wur-ai%2Fagml-cy-bench/commits","host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-04-07T00:00:11.408Z","repositories_count":6211403,"commits_count":919658608,"contributors_count":35649437,"owners_count":1142829,"icon_url":"https://github.com/github.png","host_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://commits.ecosyste.ms/api/v1/hosts/GitHub/repositories"}},"issues_stats":{"full_name":"wur-ai/agml-cy-bench","html_url":"https://github.com/wur-ai/agml-cy-bench","last_synced_at":"2026-03-19T19:00:43.215Z","status":"error","issues_count":44,"pull_requests_count":91,"avg_time_to_close_issue":10729641.692307692,"avg_time_to_close_pull_request":1669817.7023809524,"issues_closed_count":26,"pull_requests_closed_count":84,"pull_request_authors_count":11,"issue_authors_count":5,"avg_comments_per_issue":1.0454545454545454,"avg_comments_per_pull_request":1.1538461538461537,"merged_pull_requests_count":70,"bot_issues_count":0,"bot_pull_requests_count":0,"past_year_issues_count":11,"past_year_pull_requests_count":12,"past_year_avg_time_to_close_issue":4317841.0,"past_year_avg_time_to_close_pull_request":4893741.666666667,"past_year_issues_closed_count":1,"past_year_pull_requests_closed_count":6,"past_year_pull_request_authors_count":3,"past_year_issue_authors_count":4,"past_year_avg_comments_per_issue":0.45454545454545453,"past_year_avg_comments_per_pull_request":0.08333333333333333,"past_year_bot_issues_count":0,"past_year_bot_pull_requests_count":0,"past_year_merged_pull_requests_count":6,"created_at":"2024-12-14T00:08:45.803Z","updated_at":"2026-03-19T19:00:43.215Z","repository_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/wur-ai%2Fagml-cy-bench","issues_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories/wur-ai%2Fagml-cy-bench/issues","issue_labels_count":{"data-preparation":9,"model-api":4,"baseline-models":3,"enhancement":3,"predictors":2,"installation":2,"documentation":1,"help wanted":1,"evaluation":1},"pull_request_labels_count":{"baseline-models":1},"issue_author_associations_count":{"COLLABORATOR":37,"NONE":7},"pull_request_author_associations_count":{"COLLABORATOR":86,"CONTRIBUTOR":4,"NONE":1},"issue_authors":{"krsnapaudel":29,"michielkallenberg":9,"ellaampy":4,"Lalitgis":1,"ThScheeve":1},"pull_request_authors":{"krsnapaudel":37,"michielkallenberg":27,"ellaampy":6,"mzachow":6,"AbdelrahmanAmr3":4,"ronvree":3,"abdelghanibelgaid":3,"umdsgy":2,"Gonzalo-Mier":1,"poudelpratishtha":1,"yichiac":1},"host":{"name":"GitHub","url":"https://github.com","kind":"github","last_synced_at":"2026-03-30T00:00:07.548Z","repositories_count":13989797,"issues_count":34504475,"pull_requests_count":112901686,"authors_count":11212142,"icon_url":"https://github.com/github.png","host_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/repositories","owners_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/owners","authors_url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors"},"past_year_issue_labels_count":{"data-preparation":2,"predictors":2,"installation":2,"enhancement":2,"baseline-models":1},"past_year_pull_request_labels_count":{},"past_year_issue_author_associations_count":{"COLLABORATOR":8,"NONE":2},"past_year_pull_request_author_associations_count":{"COLLABORATOR":8,"CONTRIBUTOR":3,"NONE":1},"past_year_issue_authors":{"michielkallenberg":5,"ellaampy":3,"Lalitgis":1,"ThScheeve":1},"past_year_pull_request_authors":{"michielkallenberg":8,"abdelghanibelgaid":3,"yichiac":1},"maintainers":[{"login":"krsnapaudel","count":61,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/krsnapaudel"},{"login":"michielkallenberg","count":36,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/michielkallenberg"},{"login":"ellaampy","count":10,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ellaampy"},{"login":"mzachow","count":6,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/mzachow"},{"login":"AbdelrahmanAmr3","count":4,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/AbdelrahmanAmr3"},{"login":"ronvree","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ronvree"},{"login":"umdsgy","count":2,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/umdsgy"},{"login":"poudelpratishtha","count":1,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/poudelpratishtha"}],"active_maintainers":[{"login":"michielkallenberg","count":13,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/michielkallenberg"},{"login":"ellaampy","count":3,"url":"https://issues.ecosyste.ms/api/v1/hosts/GitHub/authors/ellaampy"}]},"events":{"total":{"DeleteEvent":4,"PullRequestEvent":23,"ForkEvent":5,"IssuesEvent":22,"WatchEvent":18,"IssueCommentEvent":25,"PushEvent":105,"PullRequestReviewEvent":4,"CreateEvent":11},"last_year":{"DeleteEvent":2,"PullRequestEvent":6,"ForkEvent":1,"IssuesEvent":13,"WatchEvent":14,"IssueCommentEvent":5,"PushEvent":32,"CreateEvent":2}},"keywords":[],"dependencies":[{"ecosystem":"actions","filepath":".github/workflows/documentation.yml","sha":null,"kind":"manifest","created_at":"2024-03-14T22:40:38.513Z","updated_at":"2024-03-14T22:40:38.513Z","repository_link":"https://github.com/WUR-AI/AgML-CY-Bench/blob/main/.github/workflows/documentation.yml","dependencies":[{"id":16821899632,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":16821899633,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":16821899634,"package_name":"peaceiris/actions-gh-pages","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false}]},{"ecosystem":"actions","filepath":".github/workflows/test.yml","sha":null,"kind":"manifest","created_at":"2024-03-14T22:40:38.521Z","updated_at":"2024-03-14T22:40:38.521Z","repository_link":"https://github.com/WUR-AI/AgML-CY-Bench/blob/main/.github/workflows/test.yml","dependencies":[{"id":16821899635,"package_name":"actions/checkout","ecosystem":"actions","requirements":"v3","direct":true,"kind":"composite","optional":false},{"id":16821899636,"package_name":"actions/setup-python","ecosystem":"actions","requirements":"v4","direct":true,"kind":"composite","optional":false}]}],"score":7.600902459542082,"created_at":"2024-12-14T00:08:34.746Z","updated_at":"2026-04-08T04:30:21.227Z","avatar_url":"https://github.com/WUR-AI.png","language":"Jupyter Notebook","category":"Consumption","sub_category":"Agriculture and Nutrition","monthly_downloads":0,"total_dependent_repos":0,"total_dependent_packages":0,"readme":"# AgML - Machine Learning for Agricultural Modeling\n\nAgML is the [AgMIP](https://agmip.org/) transdisciplinary community of agricultural and machine learning modelers.\n\nAgML aspires to\n\n* identify key research gaps and opportunities at the intersection of agricultural modelling and machine learning\n  research,\n* support enhanced collaboration and engagement between experts in these disciplines, and\n* conduct and publish protocol-based studies to establish best practices for robust machine learning use in agricultural\n  modelling.\n\n## AgML Crop Yield Forecasting\n\nThe objective of AgML Crop Yield Forecasting task is to create a benchmark to compare models for crop yield forecasting\nacross countries and crops. The models and forecasts can be used for food security planning or famine early warning. The\nbenchmark is called CY-Bench (crop yield benchmark).\n\n### Table of contents\n\n* [Overview](#overview)\n* [Getting started](#getting-started)\n* [Running the full benchmark](#running-the-full-benchmark)\n* [Leaderboard](#leaderboard)\n* [How to cite](#how-to-cite)\n* [How to contribute](#how-to-contribute)\n\n### Overview\n\nEarly in-season predictions of crop yields can inform decisions at multiple levels of the food value chain from\nlate-season agricultural management such as fertilization, harvest, and storage to import or export of produce.\nAnticipating crop yields is also important to ensure market transparency at the global level (\ne.g. [Agriculture Market Information System](https://www.amis-outlook.org/), [GEOGLAM Crop Monitor](https://www.cropmonitor.org/))\nand to plan response actions in food insecure countries at risk of food production shortfalls.\n\nWe propose CY-Bench, a dataset and benchmark for subnational crop yield forecasting, with coverage of major crop\ngrowing countries and underrepresented countries of the world for maize and wheat. By subnational, we mean the \nadministrative level where yield statistics are published. When statistics are available for multiple levels, we\npick the highest resolution. By yield, we mean end-of-season yield statistics as published by national statistics\noffices or similar entities representing a group of countries. By forecasting, we mean prediction is made ahead of\nharvest. The task is also called in-season crop yield forecasting. In-season forecasting is done at a number of \ntime points during the growing season from start of season (SOS) to end of season (EOS) or harvest. The first \nforecast is made at `middle-of-season` (EOS - SOS)/2. Other options are `quarter-of-season` (EOS - SOS)/4\nand `n-day(s)` before harvest. The exact time point or time step when forecast is made depends on the crop calendar\nfor the selected crop and country (or region). All time series inputs are truncated up to the forecast or\ninference time point, i.e. data from the remaining part of the season is not used. Since yield statistics may not \nbe available for the current season, we evaluate models using predictors and yield statistics for all available\nyears. The models and forecasts can be used for food security planning or famine early warning. We compare models,\nalgorithms and architectures by keeping other parts of the workflow as similar as possible. For example: the \ndataset includes same source for each type of predictor (e.g. weather variables, soil moisture, evapotranspiration, \nremote sensing biomass indicators, soil properties), and selected data are preprocessed using the same pipeline \n(use the crop mask, crop calendar; use the same boundary files and approach for spatial aggregation) and (for \nalgorithms that require feature design) and same feature design protocol.\n\n#### Coverage for maize\n\nUndifferentiated Maize or Grain Maize where differentiated\n![Maize Coverage Map](doc/images/maize_coverage_map.png)\n\n#### Coverage for wheat\n\nUndifferentiated Wheat or Winter Wheat where differentiated\n![Wheat Coverage Map](doc/images/wheat_coverage_map.png)\n\n#### Deciphering crop names\n\nThe terms used to reference different varieties or seasons of maize/wheat have been simplified in CY-Bench. The following\ntable describes the representative crop name as provided in the crop statistics\nThe terms used to reference different varieties or seasons of maize/wheat have been simplified in CY-Bench. The following table describes the representative crop names as provided in the crop statistics:\n\n| Country/Region                                                       | Maize             | Wheat                                 |\n|:---------------------------------------------------------------------|:------------------|:--------------------------------------|\n| [EU-EUROSTAT](data_preparation/crop_statistics_EU/README.md)         | Grain Maize       | Soft Wheat                            |\n| [Africa-FEWSNET](data_preparation/crop_statistics_FEWSNET/README.md) | Maize             | N/A                                   |\n| [Argentina](data_preparation/crop_statistics_AR/README.md)           | Corn              | Wheat                                 |\n| [Australia](data_preparation/crop_statistics_AU/README.md)           | N/A               | Winter Wheat                          |\n| [Brazil](data_preparation/crop_statistics_BR/README.md)              | Grain Corn        | Grain Wheat                           |\n| [China](data_preparation/crop_statistics_CN/README.md)               | Grain Corn        | Grain/Winter/Spring Wheat             |\n| [Germany](data_preparation/crop_statistics_DE/README.md)             | Grain Maize       | Winter Wheat                          |\n| [India](data_preparation/crop_statistics_IN/README.md)               | Maize             | Wheat                                 |\n| [Mali](data_preparation/crop_statistics_ML/README.md)                | Maize             | N/A                                   |\n| [Mexico](data_preparation/crop_statistics_MX/README.md)              | White/Yellow Corn | N/A                                   |\n| [USA](data_preparation/crop_statistics_US/README.md)                 | Grain Corn        | Winter Wheat                          |\n\n#### Targets\n![Yield Map](doc/images/yield_wheat_maize.gif)\n\n### Getting started\n\n`cybench` is an open source python library to load CY-Bench dataset and run the CY-Bench tasks.\n\n#### Installation\n\n```\ngit clone https://github.com/WUR-AI/AgML-CY-Bench\n```\n\n#### Requirements\n\nRun the following commands to install dependencies or requirements.\n\n```\npip install poetry\ncd AgML-CY-Bench\npoetry install\n```\n\n#### Downloading the sample dataset\nYou can work with a small sample of the dataset by running\n\n```\ngit clone https://github.com/WUR-AI/sample_data.git cybench/data\n```\nfrom the `AgML-CY-Bench` folder.\n\n#### Running a reduced version of the benchmark\n\nTo check everything is set up correctly, run\n```\npoetry run python cybench/runs/run_benchmark.py -d maize_NL -m test\n```\n\n### Running the full benchmark\nTo run the benchmark for many crops and countries, follow the steps for [installation](#installation) and\n[requirements](#requirements) from the previous section  in a machine with significant amount of resources (memory and storage).\n\nGet the dataset from [Zenodo](https://doi.org/10.5281/zenodo.11502142).\nAfter downloading the dataset, move the unzipped data inside `AgML-CY-Bench/cybench/data` or\nmake sure `AgML-CY-Bench/cybench/data` points to the directory containing unzipped data.\n\nUnzip the downloaded data:\n```\nunzip cybench-data.zip -d \u003ctarget_dir\u003e\n```\nMove the data to the expected data path:\n```\nmv \u003ctarget_dir\u003e cybench/data\n```\nor create a symbolic link from `cybench/data` to the target directory:\n```\nln -sf \u003ctarget_dir\u003e cybench/data\n```\n\nRun the benchmark on a dataset using\n```\npoetry run python cybench/runs/run_benchmark.py -d maize_NL\n```\n\nIf you want to write your own model and compare performance with the benchmark,\nwrite a model class `your_model` that extends the `BaseModel` class.\nThe base model class definition is inside `models.model`.\n\n```\nfrom cybench.models.model import BaseModel\nfrom cybench.runs.run_benchmark import run_benchmark\n\nclass MyModel(BaseModel): \n    pass\n\n\nrun_name = \u003crun_name\u003e\ndataset_name = \"maize_US\"\nresult = run_benchmark(run_name=run_name, \n                       model_name=\"my_model\",\n                       model_constructor=MyModel,\n                       model_init_kwargs: \u003cint args\u003e,\n                       model_fit_kwargs: \u003cfit params\u003e,\n                       dataset_name=dataset_name)\n\nmetrics = [\"normalized_rmse\", \"mape\", \"r2\"]\ndf_metrics = result[\"df_metrics\"].reset_index()\nprint(df_metrics.groupby(\"model\").agg({ m : \"mean\" for m in metrics }))\n\n```\n\nCompare the results (values of metrics for the specified dataset) with [the baseline results](results_baselines/tables/) for the same dataset.\n\n#### Reproducing the baseline results\nThe baseline results were produced in the following test environment:\n\n```\nOperating system: Ubuntu 18.04\nCPU: Intel Xeon Gold 6448Y (32 Cores)\nmemory (RAM): 256GB\ndisk storage: 2TB\nGPU: NVIDIA RTX A6000\n```\n\n**Benchmark run time**\n\nDuring the benchmark run with the baseline models, several countries were run in parallel, each in a GPU in a\ndistributed cluster. The larger countries took approximately 18 hours to complete.\nIf run sequentially in a single capable GPU, the whole benchmark should take 50-60 hours to complete.\n\n### Leaderboard\nSee [tables inside results_baselines](results_baselines/tables/)\n\n#### Data sources\n\n| Crop Statistics | Shapefiles or administrative boundaries | Predictors, crop masks, crop calendars |\n|-----------------|-----------------------------------------|----------------------------------------|\n| [Africa from FEWSNET](data_preparation/crop_statistics_FEWSNET/README.md) | [Africa from FEWSNET](data_preparation/shapefiles_FEWSNET/README.md) | Weather: [AgERA5](data_preparation/global_AgERA5/README.md)                                |\n| [Mali](data_preparation/crop_statistics_ML/README.md) (1)                 | Use Africa shapefiles from FEWSNET                                   | Soil: [WISE soil data](data_preparation/global_soil_WISE/README.md)                        |\n| [Argentina](data_preparation/crop_statistics_AR/README.md)                | [Argentina](data_preparation/shapefiles_AR/README.md)                | Soil moisture: [GLDAS](data_preparation/global_soil_moisture_GLDAS/README.md)              |\n| [Australia](data_preparation/crop_statistics_AU/README.md)                | [Australia](data_preparation/shapefiles_AU/README.md)                | Evapotranspiration: [FAO](data_preparation/global_ET0_FAO/README.md)                       |\n| [Brazil](data_preparation/crop_statistics_BR/README.md)                   | [Brazil](data_preparation/shapefiles_BR/README.md)                   | FAPAR: [JRC FAPAR](data_preparation/global_fpar_500m/README.md)                            |\n| [China](data_preparation/crop_statistics_CN/README.md)                    | [China](data_preparation/shapefiles_CN/README.md)                    | Crop calendars: [ESA WorldCereal](data_preparation/global_crop_calendars_ESA_WC/README.md) |\n| [EU](data_preparation/crop_statistics_EU/README.md)                       | [EU](data_preparation/shapefiles_EU/README.md)                       | NDVI: [MOD09CMG](data_preparation/global_ndvi_MOD09CMG/README.md)                               |\n| [Germany](data_preparation/crop_statistics_DE/README.md) (2)              | Use EU shapefiles                                                    | Crop Masks: [ESA WorldCereal](data_preparation/global_crop_AFIs_ESA_WC/README.md)          |\n| [India](data_preparation/crop_statistics_IN/README.md)                    | [India](data_preparation/shapefiles_IN/README.md)                    |                                                                                            |\n| [Mexico](data_preparation/crop_statistics_MX/README.md)                   | [Mexico](data_preparation/shapefiles_MX/README.md)                   |                                                                                            |\n| [US](data_preparation/crop_statistics_US/README.md)                       | [US](data_preparation/shapefiles_US/README.md)                       |                                                                                            |\n\n1: Mali data at admin level 3. Mali data is also included in the FEWSNET Africa dataset, but at admin level 1 only.\n\n2: Germany data is also included in the EU dataset, but there most of the data fails coherence tests (e.g. yield =\nproduction / harvest_area)\n\n### How to cite\n\nPlease cite CY-bench as follows:\n\n\u003cpre\u003e\n@dataset{paudel_etal2024,\n  author       = {Paudel, Dilli and\n                  Baja, Hilmy and\n                  van Bree, Ron and\n                  Kallenberg, Michiel and\n                  Ofori-Ampofo, Stella and\n                  Potze, Aike and\n                  Poudel, Pratishtha and\n                  Saleh, Abdelrahman and\n                  Anderson, Weston and\n                  von Bloh, Malte and\n                  Castellano, Andres and\n                  Ennaji, Oumnia and\n                  Hamed, Raed and\n                  Laudien, Rahel and\n                  Lee, Donghoon and\n                  Luna, Inti and\n                  Masiliūnas, Dainius and\n                  Meroni, Michele and\n                  Mutuku, Janet Mumo and\n                  Mkuhlani, Siyabusa and\n                  Richetti, Jonathan and\n                  Ruane, Alex C. and\n                  Sahajpal, Ritvik and\n                  Shuai, Guanyuan and\n                  Sitokonstantinou, Vasileios and\n                  de Souza Noia Junior, Rogerio and\n                  Srivastava, Amit Kumar and\n                  Strong, Robert and\n                  Sweet, Lily-belle and\n                  Vojnović, Petar and\n                  de Wit, Allard and\n                  Zachow, Maximilian and\n                  Athanasiadis, Ioannis N.},\n  title        = {{CY-Bench: A comprehensive benchmark dataset\n                   for subnational crop yield forecasting}},\n  year         = 2024,\n  publisher    = {AgML (https://www.agml.org/)},\n  version      = {1.0},\n  doi          = {10.5281/zenodo.11502142},\n}\n\u003c/pre\u003e\n\n### How to contribute\n\nThank you for your interest in contributing to AgML Crop Yield Forecasting. Please\ncheck [contributing guidelines](CONTRIBUTING.md) for how to get involved and contribute.\n\n## Additional information\n\nFor more information please visit [the AgML website](https://www.agml.org/).\n","funding_links":[],"readme_doi_urls":["https://doi.org/10.5281/zenodo.11502142"],"works":{},"citation_counts":{},"total_citations":0,"keywords_from_contributors":["measurements","sanitation","control","training","featured","feature-flag","feature-toggle"],"project_url":"https://ost.ecosyste.ms/api/v1/projects/305620","html_url":"https://ost.ecosyste.ms/projects/305620"}