methodology

Measurement methodology for advertising emissions

https://github.com/scope3data/methodology

Science Score: 26.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.0%) to scientific vocabulary

Keywords from Contributors

projection interactive serializer cycles packaging charts network-simulation archival shellcodes hacking
Last synced: 11 months ago · JSON representation

Repository

Measurement methodology for advertising emissions

Basic Info
Statistics
  • Stars: 37
  • Watchers: 14
  • Forks: 13
  • Open Issues: 20
  • Releases: 6
Created almost 4 years ago · Last pushed 11 months ago
Metadata Files
Readme License Support

README.md

An open framework for measuring digital advertising emissions

Our goal with this project is to build a framework where the media and advertising industry can collaborate on best practices for measuring emissions from the advertising value chain. This project was originally developed by Scope3 and is used to produce the Scope3 dataset.

Measuring emissions is extremely complicated in general. In the words of one industry leader, "it took us 100 years to figure out how to do financial accounting... and now we're trying to figure out carbon accounting in 2 or 3." As such, we feel like it's critical to learn in public and to be honest about what we know and what we don't know. Assuming the carbon accounting will require the same auditing and assurance process as the financial accounting world, we hope that this project will enable every step of the process to be traced and validated.

This measurement process, at a high level, works as follows:

  1. Gather public materials referencing sustainability and other related data from industry participants
  2. Pull out factual statements from these reports and normalize them into a common framework
  3. Apply the facts we have about each company to a model that outputs emissions by activity (for instance, per ad impression)

As of now (summer of 2022) most sustainability reports have few useful facts that help us model the emissions of a company. They often omit entire categories of emissions, omit methodology information, and blend data from disparate business units. Trying to pull out data at a product or activity level is essentially impossible. Therefore, we need to apply domain knowledge to understand how these businesses work. We also need to integrate third-party data sources to increase the granularity of our data - for instance, using a service like SimilarWeb to get sessions and traffic for a domain or app. Finally, we can use the facts that we have across the industry to fill in gaps for companies that don't fully report all of the information we need.

What's inside

This project is an attempt to "show our work" as we fill in the gaps in our knowledge. We encourage companies to use this project to improve their disclosures and even to consider providing machine-readable versions of their sustainability data.

In this project you will find:

  • Public sustainability materials and the structured "fact" data from them. These are in the data/companies directory
  • Scope3 has received confidential sustainability data from a number of companies. Some of this data is useful for producing default values, and is aggregated and included anonymously in data/private/scope3.
  • A script to scan through the source data and produce industry defaults for various types of company. The script is ./scope3_methodology/cli/compute_defaults.py and the templates are in templates. Also see ./scope3_methodology/cli/fact_finder.py to see how defaults are derived from the data sources we have analyzed.
  • A script to model the emissions for ad tech platforms (ssps, dsps, ad networks, dmps, creative ad servers, etc). See ad tech platform docs.
  • A script to model the emissions for publishers. See publisher docs.
  • Documentation of our calculations and assumptions in the docs directory. See instructions on adding to docs.

Installation

poetry is used for python dependency management. See the poetry docs for offical instructions.

On Mac you can also install poetry via brew

sh brew install poetry

Install Dependencies

sh poetry install

Activate virtual environment

sh poetry shell

If you want to commit code, install pre-commit hooks

sh pre-commit install

Development

See Documentation README

Usage

To write defaults from latest sources:

sh ./scope3_methodology/cli/compute_defaults.py

To run tests:

sh python -m unittest

To compute the corporate emissions, pass in its YAML file and org type (which will make defaults more accurate):

sh ./scope3_methodology/cli/model_corporate_emissions.py --verbose {generic,atp,publisher} [company_file.yaml]

To compute the emissions for an ad tech company, pass in its YAML file:

sh ./scope3_methodology/cli/model_ad_tech_platform.py -v [--corporateEmissionsG] [--corporateEmissionsGPerRequest] [company_file.yaml]

To compute the emissions for publisher, pass in its YAML file:

```sh ./scope3methodology/cli/modelpublisheremissions.py -v [--corporateEmissionsG] [--corporateEmissionsGPerImp] [companyfile.yaml]

```

Owner

  • Name: Scope3
  • Login: scope3data
  • Kind: organization

GitHub Events

Total
  • Issues event: 1
  • Watch event: 3
  • Delete event: 7
  • Issue comment event: 7
  • Push event: 52
  • Pull request review comment event: 3
  • Pull request review event: 20
  • Pull request event: 39
  • Fork event: 1
  • Create event: 18
Last Year
  • Issues event: 1
  • Watch event: 3
  • Delete event: 7
  • Issue comment event: 7
  • Push event: 52
  • Pull request review comment event: 3
  • Pull request review event: 20
  • Pull request event: 39
  • Fork event: 1
  • Create event: 18

Committers

Last synced: 11 months ago

All Time
  • Total Commits: 284
  • Total Committers: 19
  • Avg Commits per committer: 14.947
  • Development Distribution Score (DDS): 0.574
Past Year
  • Commits: 25
  • Committers: 9
  • Avg Commits per committer: 2.778
  • Development Distribution Score (DDS): 0.68
Top Committers
Name Email Commits
Brian O'Kelley b****y@s****m 121
Emma Etherington e****n@s****m 69
Ron Lissack r****k@s****m 14
Niki Banerjee b****i@g****m 13
dependabot[bot] 4****] 10
Lucas Bassetti l****a@g****m 9
Oleksandr Halushchak 3****l 9
Pablo Gonzalez p****s@g****m 9
Rachit 4****2 8
Andrew Sweeney a****6@g****m 7
Mike Freyberger m****r@g****m 5
Ari A****8 2
Gabriel Gravel g****g 2
Gabinikay 1****y 1
James Robertson 5****b 1
Kelsey Leftwich k****h@g****m 1
Niki Banerjee n****e@s****m 1
Brian O'Kelley b****y@B****l 1
bdavy-scope3 b****y@s****m 1
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 11 months ago

All Time
  • Total issues: 36
  • Total pull requests: 274
  • Average time to close issues: 7 months
  • Average time to close pull requests: 8 days
  • Total issue authors: 5
  • Total pull request authors: 19
  • Average comments per issue: 0.56
  • Average comments per pull request: 0.11
  • Merged pull requests: 217
  • Bot issues: 0
  • Bot pull requests: 35
Past Year
  • Issues: 3
  • Pull requests: 45
  • Average time to close issues: N/A
  • Average time to close pull requests: 2 days
  • Issue authors: 2
  • Pull request authors: 10
  • Average comments per issue: 0.0
  • Average comments per pull request: 0.16
  • Merged pull requests: 30
  • Bot issues: 0
  • Bot pull requests: 4
Top Authors
Issue Authors
  • bokelley (26)
  • EmmaLouise2018 (7)
  • mikkokotila (1)
  • maelmrgt (1)
  • kishoreganjpost (1)
Pull Request Authors
  • EmmaLouise2018 (67)
  • bokelley (57)
  • dependabot[bot] (35)
  • ohalushchak-exadel (21)
  • pymble2073 (19)
  • LinguoMalkavian (19)
  • LucasBassetti (10)
  • ronlissack (8)
  • MikeFreyberger (8)
  • rachitm022 (6)
  • Arianna2028 (4)
  • gravelg (4)
  • Gabinikay (4)
  • james-a-rob (3)
  • dfreifeld3 (3)
Top Labels
Issue Labels
modeling (5) documentation (1) idea (1)
Pull Request Labels
dependencies (35) python (2)

Dependencies

poetry.lock pypi
  • astroid 2.12.5 develop
  • attrs 22.1.0 develop
  • black 22.8.0 develop
  • certifi 2022.6.15 develop
  • cfgv 3.3.1 develop
  • charset-normalizer 2.1.1 develop
  • click 8.1.3 develop
  • click-log 0.4.0 develop
  • colorama 0.4.5 develop
  • coverage 6.4.4 develop
  • dill 0.3.5.1 develop
  • distlib 0.3.6 develop
  • filelock 3.8.0 develop
  • flake8 5.0.4 develop
  • identify 2.5.3 develop
  • idna 3.3 develop
  • iniconfig 1.1.1 develop
  • isort 5.10.1 develop
  • jinja2 3.1.2 develop
  • lazy-object-proxy 1.7.1 develop
  • markupsafe 2.1.1 develop
  • mccabe 0.7.0 develop
  • mypy 0.971 develop
  • mypy-extensions 0.4.3 develop
  • nodeenv 1.7.0 develop
  • packaging 21.3 develop
  • pathspec 0.10.1 develop
  • platformdirs 2.5.2 develop
  • pluggy 1.0.0 develop
  • pre-commit 2.20.0 develop
  • py 1.11.0 develop
  • pycodestyle 2.9.1 develop
  • pyflakes 2.5.0 develop
  • pylint 2.15.0 develop
  • pyparsing 3.0.9 develop
  • pytest 7.1.3 develop
  • requests 2.28.1 develop
  • scriv 0.16.0 develop
  • setuptools 65.3.0 develop
  • toml 0.10.2 develop
  • tomli 2.0.1 develop
  • tomlkit 0.11.4 develop
  • types-pyyaml 6.0.11 develop
  • typing-extensions 4.3.0 develop
  • urllib3 1.26.12 develop
  • virtualenv 20.16.4 develop
  • wrapt 1.14.1 develop
  • pyyaml 6.0
pyproject.toml pypi
  • black ^22.6.0 develop
  • coverage ^6.4.4 develop
  • flake8 ^5.0.4 develop
  • mypy ^0.971 develop
  • pre-commit ^2.20.0 develop
  • pylint ^2.15.0 develop
  • pytest ^7.1.2 develop
  • scriv ^0.16.0 develop
  • types-PyYAML ^6.0.11 develop
  • PyYAML ^6.0
  • python ^3.10
Dockerfile docker
  • python 3.10 build
requirements.txt pypi
  • anyio ==3.6.1
  • click ==8.1.3
  • colorama ==0.4.5
  • fastapi ==0.85.0
  • h11 ==0.14.0
  • idna ==3.4
  • pydantic ==1.10.2
  • pyyaml ==6.0
  • sniffio ==1.3.0
  • starlette ==0.20.4
  • typing-extensions ==4.4.0
  • uvicorn ==0.18.3
.github/workflows/build.yaml actions
  • actions/checkout v3 composite
  • actions/setup-python v4 composite
.github/workflows/defaults_release.yaml actions
  • actions/checkout v3 composite
  • actions/create-release v1 composite
  • actions/setup-python v4 composite
  • actions/upload-release-asset v1.0.1 composite
  • eregon/publish-release v1 composite