REGISTER NOW: Brightway Spring School! 🇨🇦 Québec City (Canada) 🗓️ 20.-24. May 2024

bw2data.backends.proxies#

Module Contents#

Classes#

Activity

A MutableMapping is a generic container for associating

Exchange

A MutableMapping is a generic container for associating

Exchanges

Iterator for exchanges with some additional methods.

class bw2data.backends.proxies.Activity(document=None, **kwargs)[source]#

Bases: bw2data.proxies.ActivityProxyBase

Inheritance diagram of bw2data.backends.proxies.Activity

A MutableMapping is a generic container for associating key/value pairs.

This class provides concrete generic implementations of all methods except for __getitem__, __setitem__, __delitem__, __iter__, and __len__.

Create an Activity proxy object.

If this is a new activity, can pass kwargs.

If the activity exists in the database, document should be an ActivityDataset.

property id[source]#
property key[source]#
_change_code(new_code)[source]#
_change_database(new_database)[source]#
biosphere()[source]#
consumers(kinds=('technosphere', 'generic consumption'))[source]#
copy(code=None, **kwargs)[source]#

Copy the activity. Returns a new Activity.

code is the new activity code; if not given, a UUID is used.

kwargs are additional new fields and field values, e.g. name=’foo’

delete()[source]#
edges()[source]#
exchanges()[source]#
new_edge(**kwargs)[source]#

Create a new exchange linked to this activity

new_exchange(**kwargs)[source]#
producers()[source]#
production(include_substitution=False)[source]#
rp_exchange()[source]#

Return an Exchange object corresponding to the reference production. Uses the following in order:

  • The production exchange, if only one is present

  • The production exchange with the same name as the activity reference product.

Raises ValueError if no suitable exchange is found.

save()[source]#

Saves the current activity to the database after performing various checks. This method validates the activity, updates the database status, and handles geographical and indexing updates. It raises an error if the activity is not valid and updates relevant data in the database.

Raises#

ValidityError

If the activity is not valid, an error is raised detailing the reasons.

Notes#

The method performs the following operations: - Checks if the activity is valid. - Marks the database as ‘dirty’, indicating changes. - Checks for type and key validity of the activity. - Updates the activity’s associated document in the database. - Updates the geographical mapping if needed. - Updates the index if the database is searchable.

Examples#

>>> activity.save()
Saves the activity if it's valid, otherwise raises ValidityError.
substitution()[source]#
technosphere(include_substitution=False)[source]#
upstream(kinds=('technosphere', 'generic consumption'))[source]#
class bw2data.backends.proxies.Exchange(document=None, **kwargs)[source]#

Bases: bw2data.proxies.ExchangeProxyBase

Inheritance diagram of bw2data.backends.proxies.Exchange

A MutableMapping is a generic container for associating key/value pairs.

This class provides concrete generic implementations of all methods except for __getitem__, __setitem__, __delitem__, __iter__, and __len__.

Create an Exchange proxy object.

If this is a new exchange, can pass kwargs.

If the exchange exists in the database, document should be an ExchangeDataset.

delete()[source]#
save()[source]#
class bw2data.backends.proxies.Exchanges(key, kinds=None, reverse=False)[source]#

Bases: collections.abc.Iterable

Inheritance diagram of bw2data.backends.proxies.Exchanges

Iterator for exchanges with some additional methods.

This is not a generator; next() is not supported. Everything time you start to iterate over the object you get a new list starting from the beginning. However, to get a single item you can do next(iter(foo)).

Ordering is by database row id.

Supports the following:

exchanges = activity.exchanges()

# Iterate
for exc in exchanges:
    pass

# Length
len(exchanges)

# Delete all
exchanges.delete()
_get_queryset()[source]#
delete()[source]#
filter(expr)[source]#
to_dataframe(categorical: bool = True, formatters: List[Callable] | None = None) pandas.DataFrame[source]#

Return a pandas DataFrame with all node exchanges. Standard DataFrame columns are:

target_id: int, target_database: str, target_code: str, target_name: Optional[str], target_reference_product: Optional[str], target_location: Optional[str], target_unit: Optional[str], target_type: Optional[str] source_id: int, source_database: str, source_code: str, source_name: Optional[str], source_product: Optional[str], # Note different label source_location: Optional[str], source_unit: Optional[str], source_categories: Optional[str] # Tuple concatenated with “::” as in bw2io edge_amount: float, edge_type: str,

Target is the node consuming the edge, source is the node or flow being consumed. The terms target and source were chosen because they also work well for biosphere edges.

Args:

categorical will turn each string column in a pandas Categorical Series. This takes 1-2 extra seconds, but saves around 50% of the memory consumption.

formatters is a list of callables that modify each row. These functions must take the following keyword arguments, and use the Wurst internal data format:

  • node: The target node, as a dict

  • edge: The edge, including attributes of the source node

  • row: The current row dict being modified.

The functions in formatters don’t need to return anything, they modify row in place.

Returns a pandas DataFrame.