Skip to main content

Generate mappings between elementary flow lists

Project description

flowmapper

PyPI Status Python Version License

Read the documentation at https://flowmapper.readthedocs.io/ Tests Codecov

pre-commit Black

Flowmapper

This is a tool to automate matching elementary flow lists in life cycle assessment. It can map different lists against each other and generate usable transformation files for those mappings.

It works by starting with the assumption that there is a core underlying ontology for elementary flows, regardless of the expression of that ontology in difference data formats. Here is the core ontology that flowmapper uses:

  • name: str, the canonical name used to identify a substance, e.g. "1,4-Butanediol"
  • identifier: str, or complex type with a string representation, the unique string used to identify the flow, unit, and context combination, e.g. "38a622c6-f086-4763-a952-7c6b3b1c42ba"
  • context: tuple[str], a hierarchical organization into environmental compartments, e.g. ("air", "urban air close to ground")
  • unit: str, or complex type with a string representation, e.g. "kg"
  • sector-specific labels: str, or complex type with a string representation, a set of additional fields which can help identify or further specify a flow, e.g. CAS number 000110-63-4
  • synonyms: list[str], a list of alternative unique names for a substance, e.g. ["Butylene glycol", "butane-1,4-diol"]

Flowmapper assumes that the source and target lists are given in this format; it comes with or plays well with conversion software for data formats like ecospold, FEDEFL, and SimaPro CSV.

Chemical formulas are not currently used - they can be expressed in too many different ways, and haven't proven useful for matching.

Matching across the two lists is defined by a set of strategy functions; matching can take some or all ontological elements into account. Due to the sometimes chaotic nature of the input data, matching usually needs to be customized for the specific source and target lists.

For example, a matching strategy could say that two flows are the same if their name and context are equal, or if their CAS number and context are equal. Units are rarely compared directly; instead, after a match is found we check that the units have the same dimension, and apply unit conversions using pint if necessary.

This library does not generate partial matches (i.e. "1,4-Butanediol" is always the same as "butane-1,4-diol", but the separate contexts would need to be matched afterwards). Partial matches could be used to reduce the size of the matching file, as one could store name matches in one partial match and context matches in another partial match, but we prefer the explicit enumeration of all matches of flows present in the source and target lists.

Matching is usually done by checking for equality. Instead of forcing conversion and then testing, flowmapper comes with custom classes for these ontological elements which allow for a flexible definition of equality, and the testing of logical relationships. For example, you can do this:

from flowmapper import CAS
first = CAS("   007440-05-3")
second = CAS("7440-05-3")
first == second
>>> True

Installation

You can install flowmapper via [pip] from [PyPI]:

$ pip install flowmapper

Contributing

Contributions are very welcome. To learn more, see the Contributor Guide.

License

Distributed under the terms of the MIT license, flowmapper is free and open source software.

Issues

If you encounter any problems, please file an issue along with a detailed description.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

flowmapper-0.3.1.tar.gz (43.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

flowmapper-0.3.1-py3-none-any.whl (38.2 kB view details)

Uploaded Python 3

File details

Details for the file flowmapper-0.3.1.tar.gz.

File metadata

  • Download URL: flowmapper-0.3.1.tar.gz
  • Upload date:
  • Size: 43.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.4

File hashes

Hashes for flowmapper-0.3.1.tar.gz
Algorithm Hash digest
SHA256 7a8065826c174eab5ff23b79b35e80726bfb2dfa47a3e1ecb367dd5800f9f28c
MD5 db113da53b0a5bf004d1d38fbc0795a2
BLAKE2b-256 0d6f7bf8d7146c51717969f266f9dfd61efda997e53d9a7e8b2b7bcf195b0f2f

See more details on using hashes here.

File details

Details for the file flowmapper-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: flowmapper-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 38.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.4

File hashes

Hashes for flowmapper-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 6c2cf5838b3a48c018fa85c8cb2b4e22d1b8b08f65035e79cca77f2a5e019d04
MD5 78e30545f0d0fea1e62da4e18a2a10e0
BLAKE2b-256 d877d0e53f2c6c369f178303da92c9ed91eb4205efd2c2229e9ca20bcec2eeb1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page