Brightway 中新活动的唯一标识符
unique indentifiers of new activities in Brightway
我想创建一个简单的 activity 以添加到我在 Brightway2 上的 ecoinvent 数据库。如何创建一个唯一标识符作为 "code" 字段?
我知道从头开始创建 activity 的唯一方法是:
bw.Database('database_name').new_activity('code')
但我需要指定一个代码,我宁愿让它自动生成(就像我们复制现有 activity 一样)。有办法吗?
在docs中,可以读到:
Brightway2 identifies an activity or flow with the MD5 hash of a few attributes: For ecoinvent 2, the name, location, unit, and categories. For ecoinvent 3, the activity and reference product names.
尽管深入 bw2io
代码(特别是 utils),我们发现这实际上并不准确:Brightway 生成一个唯一代码作为 ecoinvent UUID 的 MD5 散列 activity 和参考流程:
In [1] import brightway2 as bw
import hashlib
act = bw.Database('ecoinvent 3.3 cutoff').random()
act['code']
Out[1] '965e4a277c353bd2ed8250b49c0e24ef'
In [2] act['activity'], act['flow']
Out[2] ('ff086b85-84bf-4e44-b60e-194c0ac7f7cf',
'45fbbc41-7ae9-46cc-bb31-abfa11e69de0')
In [3] string = u"".join((act['activity'].lower(), act['flow'].lower()))
string
Out[3] 'ff086b85-84bf-4e44-b60e-194c0ac7f7cf45fbbc41-7ae9-46cc-bb31-abfa11e69de0'
In [4] str(hashlib.md5(string.encode('utf-8')).hexdigest())
Out[4] '965e4a277c353bd2ed8250b49c0e24ef'
In [5] act['code'] == str(hashlib.md5(string.encode('utf-8')).hexdigest())
Out[5] True
请注意,这意味着您已通知 activity 数据集的 activity
和 flow
字段。您可以使用 uuid
库生成这些。您还可以决定在 MD5 哈希中使用其他字段(例如 activity 和参考流的名称,正如文档所暗示的那样)。
我想创建一个简单的 activity 以添加到我在 Brightway2 上的 ecoinvent 数据库。如何创建一个唯一标识符作为 "code" 字段?
我知道从头开始创建 activity 的唯一方法是:
bw.Database('database_name').new_activity('code')
但我需要指定一个代码,我宁愿让它自动生成(就像我们复制现有 activity 一样)。有办法吗?
在docs中,可以读到:
Brightway2 identifies an activity or flow with the MD5 hash of a few attributes: For ecoinvent 2, the name, location, unit, and categories. For ecoinvent 3, the activity and reference product names.
尽管深入 bw2io
代码(特别是 utils),我们发现这实际上并不准确:Brightway 生成一个唯一代码作为 ecoinvent UUID 的 MD5 散列 activity 和参考流程:
In [1] import brightway2 as bw
import hashlib
act = bw.Database('ecoinvent 3.3 cutoff').random()
act['code']
Out[1] '965e4a277c353bd2ed8250b49c0e24ef'
In [2] act['activity'], act['flow']
Out[2] ('ff086b85-84bf-4e44-b60e-194c0ac7f7cf',
'45fbbc41-7ae9-46cc-bb31-abfa11e69de0')
In [3] string = u"".join((act['activity'].lower(), act['flow'].lower()))
string
Out[3] 'ff086b85-84bf-4e44-b60e-194c0ac7f7cf45fbbc41-7ae9-46cc-bb31-abfa11e69de0'
In [4] str(hashlib.md5(string.encode('utf-8')).hexdigest())
Out[4] '965e4a277c353bd2ed8250b49c0e24ef'
In [5] act['code'] == str(hashlib.md5(string.encode('utf-8')).hexdigest())
Out[5] True
请注意,这意味着您已通知 activity 数据集的 activity
和 flow
字段。您可以使用 uuid
库生成这些。您还可以决定在 MD5 哈希中使用其他字段(例如 activity 和参考流的名称,正如文档所暗示的那样)。