Class reference

Modules (formerly called ‘meta-processes’)

class metaprocess.MetaProcess(name, outputs, chain, cuts, output_based_scaling=True, **kwargs)
A description of one or several processes from a life cycle inventory database.
It has the following characteristics:
  • It produces one or several output products
  • It has at least one process from an inventory database
  • It has one or several scaling activities that are linked to the output of the system. They are calculated automatically based on the product output (exception: if output_based_scaling=False, see below).
  • Inputs may be cut-off. Cut-offs are remembered and can be used in a linked meta-process to recombine meta-processes to form supply chains (or several, alternative supply chains).
  • name (str): Name of the meta-process
  • outputs ([(key, str, optional float)]): A list of products produced by the meta-process. Format is (key into inventory database, product name, optional amount of product produced).
  • chain ([key]): A list of inventory processes in the supply chain (not necessarily in order).
  • cuts ([(parent_key, child_key, str, float)]): A set of linkages in the supply chain that should be cut. These will appear as negative products (i.e. inputs) in the process-product table. The float amount is determined automatically. Format is (input key, output key, product name, amount).
  • output_based_scaling (bool): True: scaling activities are scaled by the user defined product outputs. False: the scaling activities are set to 1.0 and the user can define any output. This may not reflect reality or original purpose of the inventory processes.

Construct a list of edges.

  • db (dict): The supply chain database
A list of (in, out, amount) edges.
getFilteredDatabase(depending_databases, chain)

Extract the supply chain for this process from larger database.

  • nodes (set): The datasets to extract (keys in db dict)
  • db (dict): The inventory database, e.g. ecoinvent
A filtered database, in the same dict format
getScalingActivities(chain, edges)

Which are the scaling activities (at least one)?

Calculate by filtering for processes which are not used as inputs.

  • chain (set): The supply chain processes
  • edges (list): The list of supply chain edges
Boolean isSimple, List heads.

Get lists of external and internal edges with original flow values or scaled to the meta-process.


Returns a list of product inputs and outputs.

get_supply_vector(chain, edges, scaling_activities, outputs)

Construct supply vector (solve linear system) for the supply chain of this simplified product system.

  • chain (list): Nodes in supply chain
  • edges (list): List of edges
  • scaling_activities (key): Scaling activities
Mapping from process keys to supply vector indices Supply vector (as list)
lca(method, amount=1.0, factorize=False)

Calculates LCA results for a given LCIA method and amount. Returns the LCA score.


Returns a dictionary of meta-process data as specified in the data format.


Makes sure that each cut includes the amount that is cut. This is retrieved from self.internal_scaled_edges_with_cuts.


If not given, adds default values to outputs:

  • output name: “Unspecified Output”
  • amount: 1.0
  • outputs (list): outputs
Padded outputs

Property shortcut for returning a list of product intputs and outputs.

remove_cuts_from_chain(chain, cuts)

Remove chain items if they are the parent of a cut. Otherwise this leads to unintended LCIA results.

save_as_bw2_dataset(db_name='MP default', unit=None, location=None, categories=[], save_aggregated_inventory=False)

Save simplified process to a database.

Creates database if necessary; otherwise adds to existing database. Uses the unit and location of self.scaling_activities[0], if not otherwise provided. Assumes that one unit of the scaling activity is being produced.

  • db_name (str): Name of Database
  • unit (str, optional): Unit of the simplified process
  • location (str, optional): Location of the simplified process
  • categories (list, optional): Category/ies of the scaling activity
  • save_aggregated_inventory (bool, optional): Saves in output minus input style by default (True), otherwise aggregated inventory of all inventories linked within the meta-process

Linked Modules (formerly called ‘linked Meta-Processes’)

class linkedmetaprocess.LinkedMetaProcessSystem(mp_list=None)

A linked meta-process system holds several interlinked meta-processes. It has methods for:

  • loading / saving linked meta-process systems
  • returning information, e.g. product and process names, the product-process matrix
  • determining all alternatives to produce a given functional unit
  • calculating LCA results for individual meta-processes
  • calculating LCA results for a demand from the linked meta-process system (possibly for all alternatives)

Meta-processes cannot contain:

  • 2 processes with the same name
  • identical names for products and processes (recommendation is to capitalize process names)


  • mp_list ([MetaProcess]): A list of meta-processes
add_mp(mp_list, rename=False)

Adds meta-processes to the linked meta-process system.

mp_list can contain meta-process objects or the original data format used to initialize meta-processes.


Returns all alternative pathways to produce a given functional unit. Data output is a list of lists. Each sublist contains one path made up of products and processes. The input Graph may not contain cycles. It may contain multi-output processes.


  • functional_unit: output product

Returns an edge list for all edges within the linked meta-process system.

mp_list can be a list of meta-process objects or meta-process names.


Returns cut/input product names for a list of meta-processes.


Returns output product names for a list of meta-processes.


Returns the product-process matrix as well as two dictionaries that hold row/col values for each product/process.

mp_list can be used to limit the scope to the contained processes


Returns a the names of a list of meta-processes.


Returns a list of meta-processes.

mp_list can be a list of meta-process objects or meta-process names.


Returns the output and input product names of a list of meta-processes.

mp_list can be a list of meta-process objects or meta-process names.

lca_alternatives(method, demand)

Calculation of LCA results for all alternatives in a linked meta-process system that yield a certain demand. Results are stored in a list of dictionaries as described in ‘lca_linked_processes’.


  • method: LCIA method
  • demand (dict): keys: product names, values: amount
lca_linked_processes(method, process_names, demand)

Performs LCA for a given demand from a linked meta-process system. Works only for square matrices (see scaling_vector_foreground_demand).

Returns a dictionary with the following keys:

  • path: involved process names
  • demand: product demand
  • scaling vector: result of the demand
  • LCIA method: method used
  • process contribution: contribution of each process
  • relative process contribution: relative contribution
  • LCIA score: LCA result


  • method: LCIA method
  • process_names: selection of processes from the linked meta-process system (that yields a square matrix)
  • demand (dict): keys: product names, values: amount
lca_processes(method, process_names=None, factorize=False)

Returns a dictionary where keys = meta-process name, value = LCA score

load_from_file(filepath, append=False)

Loads a meta-process database, makes a MetaProcess object from each meta-process and adds them to the linked meta-process system.


  • filepath: file path
  • append: adds loaded meta-processes to the existing database if True

Returns all process names.

product_process_dict(mp_list=None, process_names=None, product_names=None)

Returns a dictionary that maps meta-processes to produced products (key: product, value: meta-process). Optional arguments mp_list, process_names, product_names can used as filters.


Returns all product names.


Remove meta-processes from the linked meta-process system.

mp_list can be a list of meta-process objects or meta-process names.


Saves data for each meta-process in the meta-process data format using pickle and updates the linked meta process system.

scaling_vector_foreground_demand(mp_list, demand)

Returns a scaling dictionary for a given demand and matrix defined by a list of processes (or names). Keys: process names. Values: scaling vector values.


  • mp_list: meta-process objects or names
  • demand (dict): keys: product names, values: amount

Updates the linked meta-process system every time processes are added, modified, or deleted. Errors are thrown in case of:

  • identical names for products and processes
  • identical names of different meta-processes
  • if the input is not of type MetaProcess()

Updates the name map, which maps product names (outputs or cuts) to activity keys. This is used in the Activity Browser to automatically assign a product name to already known activity keys.


Returns all upstream products and processes related to a certain product (functional unit).