基于现有的 ecoinvent activity 在 Brightway2 中创建一个新的 activity
create a new activity in Brightway2 based on an existing ecoinvent activity
我想从用作代理的数据库(在本例中为 ecoinvent)创建一个 activity "recontextualizing" 现有数据集。例如,在瑞士的热泵基础上,在魁北克创建热泵,但改变了电力的来源。
我的问题与@MPa 在 问题中提出的问题非常相似,但如果没有更多细节,我无法弄清楚该怎么做。这就是我所做的:
1) 从我的 ecoinvent 3.3 数据库中找到我想用作代理的进程:
hp_ch=Database('ei_33consequential').search("heat-pump production air-water",
filter={'location':'ch'},
)[0]
2) 创建 activity
的副本
hp_qc=hp_ch.copy()
3) 更改位置
hp_qc['location']='CA-QC'
4) 擦除存储兑换金额的原始流量
for exc in hp_qc.exchanges():
if 'electricity, low voltage' in exc['name']:
amnt=(exc.amount)
exc.delete()
5) 添加新流量(在本例中来自魁北克的相同电量)
这是我迷路的地方。我知道如何找到生成该流的进程('44389eae7d62fa9d4ea9ea2b9fc2f609'),但我不知道如何将它作为交换添加到我的 "hp_qc" 进程中。 我想我还应该更改唯一标识符代码 (UUID),否则我的数据库中将有两个具有相同 UUID 的活动,这可能会出现问题。我还应该修改谱系矩阵的 "geographical representativeness" 分数,但我不确定此时 Brightway 2 是否实际使用了这些分数。
[编辑],按照@MPa 的建议,我做了以下事情:
#electricity low voltage quebec
elw_qc=Database('ei_33consequential').get('44389eae7d62fa9d4ea9ea2b9fc2f609')
elect_to_hp = [exc for exc in hp_qc.technosphere() if 'electricity, low voltage' in exc['name']][0]
elect_to_hp.input = qc_elect
elec_to_hp.save()
hp_qc.save() #necessary?
我用一种常见的影响评估方法进行了测试:
fu1={hp_qc:1}
lca1=LCA(fu1,('IMPACT 2002+ (Endpoint)', 'resources', 'total'))
lca1.lci()
lca1.lcia()
lca1.score
fu2={hp_ch:1}
lca2=LCA(fu2,('IMPACT 2002+ (Endpoint)', 'resources', 'total'))
lca2.lci()
lca2.lcia()
lca2.score
两个分数都不一样,尽管我对瑞士热泵的分数是负的,这有点奇怪,但我想这是可能的,并且与 重构 完全无关。有效!
里面有几个问题。我将分别解决每个问题。
1) UUID:new_activity = old_activity.copy()
为 new_activity
创建了一个新的 UUID。在您的情况下,hp_qc.key==hp_ch.key
将 return False
。所以一切都很好。
2) 添加交换:一旦你找到你想要link的activity到(比如说,qc_elec
),你可以这样做:
hp_qc.new_exchange(input=qc_elect.key, amount = amount, type='technosphere')
其中 my_amount
是此次兑换的实际金额。
3) 但是,much 更简单 adapt 交换而不是删除和替换它:
hp_qc=hp_ch.copy()
hp_qc['location']='CA-QC'
# Assign the electricity input you want to change to a variable
elect_to_hp = [exc for exc in hp_qc.technosphere() if 'electricity, low voltage' in exc['name']][0]
# Change the input of this exchange so it links to `qc_elect`
elect_to_hp.input = qc_elect
# Save the resulting activity
elect_to_hp.save()
交换将与之前的电力输入相同(相同数量,相同不确定性,相同文档)。然后,您需要以这种方式更改所需的字段(例如评论、不确定性):
elect_to_hp['comment'] = 'Recontextualisation'
4) 不确定性,系谱:
你说得很对,(1) 谱系分数应该调整,(2) 因此总不确定性应该改变,(3) Brightway 中没有使用谱系分数来计算总不确定性。但是,您可以使用 scale without pedigree
(相当于基本不确定性)、谱系分数和已发布的附加不确定性因子(为方便起见从下面的 here 转载)来计算新的不确定性,从而计算出新的不确定性不确定性(新的 scale
如果 PDF 是对数正态分布)一旦你修改了谱系分数。
ecoinvent_33_pedigree_matrix = {
'reliability':
{
1:0.0,
2:0.0006,
3:0.002,
4:0.008,
5:0.04
},
'completeness':
{
1: 0.0,
2: 0.0001,
3: 0.0006,
4: 0.002,
5: 0.008
},
'temporal correlation':
{
1:0.0,
2:0.0002,
3:0.002,
4:0.008,
5:0.04
},
'geographical correlation':
{
1:0.0,
2:0.000025,
3:0.0001,
4:0.0006,
5:0.002
},
'further technological correlation':
{
1:0.0,
2:0.0006,
3:0.008,
4:0.04,
5:0.12
}
}
我想从用作代理的数据库(在本例中为 ecoinvent)创建一个 activity "recontextualizing" 现有数据集。例如,在瑞士的热泵基础上,在魁北克创建热泵,但改变了电力的来源。
我的问题与@MPa 在
1) 从我的 ecoinvent 3.3 数据库中找到我想用作代理的进程:
hp_ch=Database('ei_33consequential').search("heat-pump production air-water",
filter={'location':'ch'},
)[0]
2) 创建 activity
的副本hp_qc=hp_ch.copy()
3) 更改位置
hp_qc['location']='CA-QC'
4) 擦除存储兑换金额的原始流量
for exc in hp_qc.exchanges():
if 'electricity, low voltage' in exc['name']:
amnt=(exc.amount)
exc.delete()
5) 添加新流量(在本例中来自魁北克的相同电量)
这是我迷路的地方。我知道如何找到生成该流的进程('44389eae7d62fa9d4ea9ea2b9fc2f609'),但我不知道如何将它作为交换添加到我的 "hp_qc" 进程中。 我想我还应该更改唯一标识符代码 (UUID),否则我的数据库中将有两个具有相同 UUID 的活动,这可能会出现问题。我还应该修改谱系矩阵的 "geographical representativeness" 分数,但我不确定此时 Brightway 2 是否实际使用了这些分数。
[编辑],按照@MPa 的建议,我做了以下事情:
#electricity low voltage quebec
elw_qc=Database('ei_33consequential').get('44389eae7d62fa9d4ea9ea2b9fc2f609')
elect_to_hp = [exc for exc in hp_qc.technosphere() if 'electricity, low voltage' in exc['name']][0]
elect_to_hp.input = qc_elect
elec_to_hp.save()
hp_qc.save() #necessary?
我用一种常见的影响评估方法进行了测试:
fu1={hp_qc:1}
lca1=LCA(fu1,('IMPACT 2002+ (Endpoint)', 'resources', 'total'))
lca1.lci()
lca1.lcia()
lca1.score
fu2={hp_ch:1}
lca2=LCA(fu2,('IMPACT 2002+ (Endpoint)', 'resources', 'total'))
lca2.lci()
lca2.lcia()
lca2.score
两个分数都不一样,尽管我对瑞士热泵的分数是负的,这有点奇怪,但我想这是可能的,并且与 重构 完全无关。有效!
里面有几个问题。我将分别解决每个问题。
1) UUID:new_activity = old_activity.copy()
为 new_activity
创建了一个新的 UUID。在您的情况下,hp_qc.key==hp_ch.key
将 return False
。所以一切都很好。
2) 添加交换:一旦你找到你想要link的activity到(比如说,qc_elec
),你可以这样做:
hp_qc.new_exchange(input=qc_elect.key, amount = amount, type='technosphere')
其中 my_amount
是此次兑换的实际金额。
3) 但是,much 更简单 adapt 交换而不是删除和替换它:
hp_qc=hp_ch.copy()
hp_qc['location']='CA-QC'
# Assign the electricity input you want to change to a variable
elect_to_hp = [exc for exc in hp_qc.technosphere() if 'electricity, low voltage' in exc['name']][0]
# Change the input of this exchange so it links to `qc_elect`
elect_to_hp.input = qc_elect
# Save the resulting activity
elect_to_hp.save()
交换将与之前的电力输入相同(相同数量,相同不确定性,相同文档)。然后,您需要以这种方式更改所需的字段(例如评论、不确定性):
elect_to_hp['comment'] = 'Recontextualisation'
4) 不确定性,系谱:
你说得很对,(1) 谱系分数应该调整,(2) 因此总不确定性应该改变,(3) Brightway 中没有使用谱系分数来计算总不确定性。但是,您可以使用 scale without pedigree
(相当于基本不确定性)、谱系分数和已发布的附加不确定性因子(为方便起见从下面的 here 转载)来计算新的不确定性,从而计算出新的不确定性不确定性(新的 scale
如果 PDF 是对数正态分布)一旦你修改了谱系分数。
ecoinvent_33_pedigree_matrix = {
'reliability':
{
1:0.0,
2:0.0006,
3:0.002,
4:0.008,
5:0.04
},
'completeness':
{
1: 0.0,
2: 0.0001,
3: 0.0006,
4: 0.002,
5: 0.008
},
'temporal correlation':
{
1:0.0,
2:0.0002,
3:0.002,
4:0.008,
5:0.04
},
'geographical correlation':
{
1:0.0,
2:0.000025,
3:0.0001,
4:0.0006,
5:0.002
},
'further technological correlation':
{
1:0.0,
2:0.0006,
3:0.008,
4:0.04,
5:0.12
}
}