{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/arxiv-2605-00850","title":"Earth System Foundation Model (ESFM): A unified framework for heterogeneous data integration and forecasting","arxiv_id":"2605.00850","date":"2026-04-20","proceeding":null,"authors":["Firat Ozdemir","Yun Cheng","Salman Mohebi","Fanny Lehmann","Simon Adamov","Zhenyi Zhang","Leonardo Trentini","Dana Grund","Oliver Fuhrer","Torsten Hoefler","Siddhartha Mishra","Sebastian Schemm","Benedikt Soja","Mathieu Salzmann"],"abstract":"Foundation models (FMs) for the Earth system learn statistical relationships between physical variables across massive datasets to enable versatile downstream applications through finetuning, separating them from task-specific weather models. Here, we introduce Earth System Foundation Model (ESFM), a fully open model building on the 3D Swin UNet backbone of the pioneering Aurora model. ESFM introduces extensions that increase functionality and foster adoption in climate sciences. First, the encoding scheme and training protocols have been extended to handle diverse datasets, including those containing missing values across all spatio-temporal dimensions such as satellite data, as well as station data, all under one backbone. Axial attention is introduced to capture inter-variable dependencies. As a result ESFM skillfully predicts variables in regions or on pressure levels where no data is present at the initial time, while preserving inter-variable relationships, for example between temperature, pressure, and humidity. Individual variable tokenization enables different sets of variables to be shuffled during training and simplifies the process of building extensions for new downstream tasks. Adaptive layer norm-based ensembles allow for a simple yet effective way to transform deterministic ESFM to a probabilistic FM. We present findings using dense gridded data (ERA5, CMIP6), regionally masked dense data, sparse gridded MODIS satellite data, and station data. Results demonstrate competitive or superior performance relative to state-of-the-art benchmarks. Case studies of Super Typhoon Doksuri (2023) and 2024 sudden stratospheric warming events show accurate positional and magnitude estimations of extreme weather. ESFM retains the strengths of previous foundation models, such as long-term stability, but facilitates application to a variety of downstream tasks.","url_abs":"https://arxiv.org/abs/2605.00850","url_pdf":"https://arxiv.org/pdf/2605.00850","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2605.00850","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2605.00850"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/swiss-ai/ESFM","reach":null}],"summary":{"ran":8,"unverified":3},"by_repo_kind":{"found_in_text":{"samples":11,"ran":8,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":11,"samples":[{"code_sha256_prefix":"229c3a42c6102d50","entry":"area","repo":"swiss-ai/ESFM","repo_kind":"found_in_text","path":"esfm/area.py","file_url":"https://github.com/swiss-ai/ESFM/blob/HEAD/esfm/area.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"229c3a42c6102d50"}},{"code_sha256_prefix":"95add7dcf5452b9f","entry":"compute_patch_areas","repo":"swiss-ai/ESFM","repo_kind":"found_in_text","path":"esfm/area.py","file_url":"https://github.com/swiss-ai/ESFM/blob/HEAD/esfm/area.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"95add7dcf5452b9f"}},{"code_sha256_prefix":"9b8d0f5086f36f53","entry":"expand_matrix","repo":"swiss-ai/ESFM","repo_kind":"found_in_text","path":"esfm/area.py","file_url":"https://github.com/swiss-ai/ESFM/blob/HEAD/esfm/area.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"9b8d0f5086f36f53"}},{"code_sha256_prefix":"c43771cb4dfaf0da","entry":"get_2d_sincos_pos_embed_pytorch","repo":"swiss-ai/ESFM","repo_kind":"found_in_text","path":"esfm/model/decoder.py","file_url":"https://github.com/swiss-ai/ESFM/blob/HEAD/esfm/model/decoder.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"c43771cb4dfaf0da"}},{"code_sha256_prefix":"6982c693a23e6c81","entry":"get_delta","repo":"swiss-ai/ESFM","repo_kind":"found_in_text","path":"esfm/model/fourier.py","file_url":"https://github.com/swiss-ai/ESFM/blob/HEAD/esfm/model/fourier.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"6982c693a23e6c81"}},{"code_sha256_prefix":"5fda8ab024fd6467","entry":"get_indices","repo":"swiss-ai/ESFM","repo_kind":"found_in_text","path":"esfm/model/encoder.py","file_url":"https://github.com/swiss-ai/ESFM/blob/HEAD/esfm/model/encoder.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"5fda8ab024fd6467"}},{"code_sha256_prefix":"c892b8ffd71a6924","entry":"load_data","repo":"swiss-ai/ESFM","repo_kind":"found_in_text","path":"merge_esfm_encoder.py","file_url":"https://github.com/swiss-ai/ESFM/blob/HEAD/merge_esfm_encoder.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"c892b8ffd71a6924"}},{"code_sha256_prefix":"7778d84bdf6c4983","entry":"versiontuple","repo":"swiss-ai/ESFM","repo_kind":"found_in_text","path":"esfm/model/patchembed.py","file_url":"https://github.com/swiss-ai/ESFM/blob/HEAD/esfm/model/patchembed.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7778d84bdf6c4983"}},{"code_sha256_prefix":"c69c4f80113b2d0c","entry":"aggregate_levels","repo":"swiss-ai/ESFM","repo_kind":"found_in_text","path":"esfm/model/encoder.py","file_url":"https://github.com/swiss-ai/ESFM/blob/HEAD/esfm/model/encoder.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"c69c4f80113b2d0c"}},{"code_sha256_prefix":"80807faa1e075c62","entry":"interpolate","repo":"swiss-ai/ESFM","repo_kind":"found_in_text","path":"esfm/batch.py","file_url":"https://github.com/swiss-ai/ESFM/blob/HEAD/esfm/batch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"80807faa1e075c62"}},{"code_sha256_prefix":"139ffac9aecf3c13","entry":"interpolate_numpy","repo":"swiss-ai/ESFM","repo_kind":"found_in_text","path":"esfm/batch.py","file_url":"https://github.com/swiss-ai/ESFM/blob/HEAD/esfm/batch.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"139ffac9aecf3c13"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}