CarAT (Carbon Atom Tracker) is an automated tool designed to track biogenic carbon content (BCC) across complex industrial value chains. With the Together for Sustainability (TfS) consortium mandating BCC reporting by 2026 (TfS Guidelines), CarAT offers a scalable solution to this critical industry challenge. Additionally, it serves as a decision support tool for decarbonisation strategies by facilitating the substitution of fossil carbon with biogenic carbon.
The chemicals industry is under increasing pressure to reduce its carbon footprint and transition toward sustainable practices. Accurately calculating BCC presents significant challenges due to:
- The dependency of products' BCC on all contributing feedstocks throughout the value chain.
- The influence of process efficiencies and variables on carbon distribution.
- The complexity and interconnectedness of value chains.
- The time-consuming and error-prone nature of manual calculations.
CarAT addresses these challenges by leveraging existing Enterprise Resource Planning (ERP) data through a systematic three-stage approach.
CarAT's methodology comprises three primary stages:
- Data Preparation: Processes value chain data extracted from existing ERP systems.
- Atom Mapping: Utilises RXNMapper from Schwaller et al. to track atoms through chemical reactions.
- Optimisation: Applies linear programming to compute BCC across the entire value chain.
N.B. $c'$ denotes the inlet company code, whereas $c$ denotes the outlet company code.
Table 1. Value chain indices
Index | Description |
---|---|
Elemental attribute (e.g., biogenic, fossil, etc.) | |
Business process, anonymized coding: PLNTb | |
Company code, anonymized coding: COMPc | |
Element (e.g., carbon) | |
Main product, same structure as |
|
Product, anonymized coding: PRODp | |
Substance, represented by SMILES |
Table 2. Decision variables, slack variables, and parameters
Notation | Description |
---|---|
Fraction of elemental attribute |
|
Fraction of elemental attribute |
|
Positive slack variable for element |
|
Negative slack variable for element |
|
Positive slack variable for element |
|
Negative slack variable for element |
|
Mix node share, i.e., the fraction of a virtual tank |
|
Bill-of-atoms, i.e., the fraction of element |
To begin using CarAT, clone the repository and set up the environment using uv.
-
Install uv (if not already installed)
# On Windows powershell -c "irm https://astral.sh/uv/install.ps1 | iex" # On macOS/Linux curl -LsSf https://astral.sh/uv/install.sh | sh
-
Clone and setup the project
git clone https://github.com/EmPajak21/CarAT.git cd CarAT uv sync
-
Install development dependencies (optional)
uv sync --group dev
For a comprehensive walkthrough of CarAT's functionality, refer to the included Jupyter notebook:
tdi_value_chain.ipynb
This example demonstrates the complete workflow, including:
- Loading and visualising a value chain graph.
- Computing the bill of atoms using RXNMapper.
- Preprocessing data for linear programming (LP) formulation.
- Solving the LP optimisation model.
- Generating Sankey diagrams to visualise results.
Note: The linear programming formulation developed for CarAT is documented in carat/core/linear_program.md
.
The corresponding manuscript for this repository is currently under preparation. In the interim, please cite this work as follows:
Pajak, E., Walz, D., Walz, O., Helleckes, L. M, Hellgardt, K. and del Rio Chanona, A. CarAT: Carbon Atom Tracing across Industrial Chemical Value Chains via Chemistry Language Models. (Manuscript in preparation)
This project is licensed under the GNU Affero General Public License v3.0. See the LICENSE file for details.