The climate limits of construction – consumption emissions and budgets for 1000 cities
Bibliographic record
Abstract
Construction emissions and budgets for over 1000 cities This repository contains data and code used to estimate emissions and budgets for over 1000 cities across the world [1]. Contents Those interested in exploring city emissions and budgets should first look at our interactive dashboard. city_cumulative_budgets.xlsx is supplementary to the main text and contains simplified cumulative budgets for all cities in the paper. regression_data_sources.xlsx is supplementary to the main text and organizes the source of all data used to generate estimates of historic city-level construction emissions. code.zip contains the data and python files required to reproduce the results from the manuscript. The structure of code.zip is as follows: The folders /city_emit_py/, /city_budget_py/, and /city_future_py/ contain the python classes needed to estimate emissions, generate budgets, and estimate future emissions, respectively. These Python classes are imported and used in three jupyter notebook demo files in the main /code/ folder, which show how the results from the main text were generated. the /data/ folder contains all necessary data for the jupyter demos, including some pre-generated results. Two external datasets are used directly in the analysis. First, the Exiobase 3 model time series, which can be downloaded and added seperately [2]. Throughout the demo files we use the path variable = "D:/EXIOBASE/IOT_2019_ixi" because we stored Exiobase on a external D drive. Please update these path variables to the location of exiobase on your local machine. We also include a version of the RASMI dataset [3] for estimating future emissions. No downloads are required for this dataset. Requirements The code in this repository was built on Windows 10 using Python 3.9.19 with the following dependencies: numpy 1.23.5 pandas 2.2.2 matplotlib 3.7.0 seaborn 0.13.2 geopandas 0.14.4 (optional, for generating Figure 1a in manuscript only) To use the code, please download code.zip from Zenodo (should only take a few minutes) and open the relevant jupyter notebooks in the environment of your choosing (e.g. VS Code). Download the seperate Exiobase 3 time series and adjust the Exiobase filepath variables to your local machine. Running the example notebooks should not take more than a few minutes, with the most time-consuming operation being the import of the Exiobase tables. This resource is licensed under an MIT open license. Please ensure proper attribution when modifying and using this work. Contact For any questions, issues, or suggestions, please contact the authors at keagan.rankin@mail.utoronto.ca More information about the authors and their research groups can be found at the following links: University of Toronto, University of Cambridge, and University of Waterloo. This work was sponsored by the Centre for the Sustainable Built Environment at the University of Toronto, an NSERC Alliance International grant written by authors at the University of Toronto and the University of Cambridge, and Canadian Research Chairs held by authors IDP and SS. References [1] Rankin et al. (2025) The climate limits of construction for over 1000 cities. In Review [2] Stadler et al. (2025) Exiobase3. Zenodo. https://doi.org/10.5281/zenodo.14614930 [3] Tomer Fishman, Alessio Mastrucci, Yoav Peled, Shoshanna Saxe, Bas van Ruijven. RASMI: Global Ranges of Building Material Intensities Differentiated by Region, Structure, and Function. Scientific Data 2024, 11 (1), 418. https://doi.org/10.1038/s41597-024-03190-7.
Fetched live from OpenAlex and de-inverted. Abstracts are not stored in this database: the inverted indexes are 8.6 GB of the frame’s 9.3 GB of text, and the host has 13 GB free.
How this classification was reachedexpand
Full frame machine prediction
Teacher imitationNot calibrated prevalence, not ground truth. Human validation pending. The Gemma side is a direct model label for every work in the frame, read from the title-only record. The Codex side is a classifier learned from the 10,348 direct Codex labels and calibrated to design-weighted sample rates; fields without enough sample support carry no Codex call. Candidate is the union of the two sides; consensus is their intersection. These outputs are machine_predicted_unvalidated and are not human labels.
Distilled classifier scores by category (both heads)
| Category | Codex | Gemma |
|---|---|---|
| Metaresearch | 0.001 | 0.004 |
| Meta-epidemiology (narrow) | 0.001 | 0.000 |
| Meta-epidemiology (broad) | 0.000 | 0.001 |
| Bibliometrics | 0.002 | 0.006 |
| Science and technology studies | 0.000 | 0.000 |
| Scholarly communication | 0.002 | 0.002 |
| Open science | 0.001 | 0.001 |
| Research integrity | 0.001 | 0.001 |
| Insufficient payload (model declined to judge) | 0.018 | 0.007 |
Machine scores (provisional)
The two teacher heads of the student model, read on this work. A score orders the frame for review; it never asserts a category, and the validation status ships verbatim with every row.
Baseline scores from an immature model (maturity gate not passed, 7 training rounds). Scores rank; they never assert a category.
score_only:v0-immature-baseline · verbatim from the scoring run: score_only means the number may rank works, and no category label ships from itClassification
machine, unvalidatedMachine predicted; a candidate call from one source (direct Gemma or distilled Codex), not a consensus.
How this classification was reached, model by model and score by score, is at the end of the page under "How this classification was reached".