Source code for lca_algebraic.methods
import builtins
from typing import Dict, Tuple
import brightway2 as bw
from pint import Unit
def _impact_labels():
"""Dictionnary of custom impact names
Dict of "method tuple" => string
"""
# Prevent reset upon auto reload in jupyter notebook
if "_impact_labels" not in builtins.__dict__:
builtins._impact_labels = dict()
return builtins._impact_labels
def set_custom_impact_labels(impact_labels: Dict):
"""Global function to override name of impact method in graphs"""
_impact_labels().update(impact_labels)
[docs]
def findMethods(search=None, mainCat=None):
"""
Find impact method. Search in all methods against a list of match strings.
Each parameter can be either an exact match, or case-insensitive search, if suffixed by '*'
Parameters
----------
search :
String to search
mainCat :
If specified, limits the research for method[0] == mainCat.
Returns
-------
A list of tuples, identifying the methods.
"""
res = []
search = search.lower()
for method in bw.methods:
text = str(method).lower()
match = search in text
if mainCat:
match = match and (mainCat == method[0])
if match:
res.append(method)
return res
[docs]
def method_unit(method: Tuple, fu_unit: Unit = None):
"""Get the unit of an impact method"""
res = bw.Method(method).metadata["unit"]
if fu_unit is not None:
res += f" / {fu_unit}"
return res
[docs]
def method_name(method):
"""Return name of method, taking into account custom label set via set_custom_impact_labels(...)"""
if method in _impact_labels():
return _impact_labels()[method]
return method[1] + " - " + method[2]