Skip to content

Flow Mapping

Flow mapping is the process of linking elementary flows in your LCA databases to characterization factors in your LCIA methods. Good mapping coverage is essential for accurate LCIA results.

Different databases and methods use different names for the same substance. For example, “Carbon dioxide, fossil” in EcoSpold 2 might be “CO2 (fossil)” in an ILCD method. VoLCA resolves these differences automatically through a matching cascade.

For each characterization factor in a method, VoLCA tries to match it to a database flow in this order; the first hit wins, and the strategy that matched is recorded:

StepStrategyDescription
1UUIDexact elementary-flow UUID match
2CASCAS-number match (compartment-aware)
3Namenormalized-name match (compartment-aware)
4Synonymmatched via a loaded synonym group (e.g. "CO2""Carbon dioxide, fossil")
Unmatchednone of the above hit — the flow stays uncharacterized and contributes nothing to the score
Terminal window
# Summary: matched/unmatched counts and rates
volca --config volca.toml --db ecoinvent flow-mapping <METHOD_UUID>
# Detailed: which CFs matched and by what strategy
volca --config volca.toml --db ecoinvent flow-mapping <METHOD_UUID> --matched
# Gaps: CFs with no database match
volca --config volca.toml --db ecoinvent flow-mapping <METHOD_UUID> --unmatched
# Gaps: database flows with no characterization
volca --config volca.toml --db ecoinvent flow-mapping <METHOD_UUID> --uncharacterized

Flow synonym sets teach VoLCA how to translate flow names between systems. You can:

  1. Use a pre-built synonym set (shipped with VoLCA for common database/method combinations)
  2. Add a custom CSV synonym set

Register a custom set in volca.toml (see Configuration):

[[flow-synonyms]]
name = "my-synonyms"
path = "/data/my-synonyms.csv"
active = true

The CSV has a name1,name2 header — one synonym pair per row. A running server can also accept one at runtime through the web UI or POST /api/v1/flow-synonyms/upload.

When you have multiple databases loaded (e.g. ecoinvent + agribalyse), VoLCA can link flows between them using depends in the config:

[[databases]]
name = "agribalyse"
path = "/data/agribalyse4.csv"
load = true
depends = ["ecoinvent"] # background flows resolved in ecoinvent

After loading, finalize the cross-database links:

Terminal window
# Via API
POST /api/v1/db/agribalyse/finalize

This resolves agribalyse’s background activities against ecoinvent, enabling full inventory computation across databases.

GET /api/v1/db/{db}/method/{methodId}/mapping — coverage stats
GET /api/v1/db/{db}/method/{methodId}/flow-mapping — per-flow mapping detail
{ "name": "get_flow_mapping", "arguments": { "database": "ecoinvent", "method_id": "..." } }
  • Flow Mapping Audit — detect and close mapping gaps using the post-scoring suggester, compare_impacts, and the PubChem synonym snapshot.