为什么生物圈活动可能出现在技术圈矩阵中?
why biosphere activities may appear in the technosphere matrix?
我正在测试如何在 brightway 中向我的 biosphere3 矩阵添加一个新的“activity”,并且我在我的 technosphere 矩阵中得到了一个我没想到的新列,(对应于我的 id新的生物圈节点)。这种行为是预期的吗?并不是说我想坚持传统,但通常技术圈矩阵中的列不是“基本流”。我正在使用 bw2calc 版本 (2.0.DEV1) 和 bw2data 版本 (4.0.DEV1)
这里有一些代码可以重现这种行为:
b3 = bw2data.Database('biosphere3')
uwva_node = b3.new_activity(code='uwva_ppp',
name='utility weighted value added (PPP)',
categories=('social',),
unit = 'Meuro_ppp',
)
uwva_node.save()
act1_key=('test_db','activity_1')
biosphere_exchange_1={'amount':2,
'input':uwva_node.key,
'output':act1_key,
'type':'biosphere',
'uncertainty type': 0}
production_exchange_1={'amount':2,
'input':act1_key,
'output':act1_key,
'type':'production',
'uncertainty type':0}
act_1_dict={'name':'test_activity_1',
'unit':'megajoule',
'exchanges':[production_exchange_1,biosphere_exchange_1]}
act2_key=('test_db','activity_2')
production_exchange_2={'amount':10,
'input':act2_key,
'output':act2_key,
'type':'production',
'uncertainty type':0}
technosphere_exchange_1={
'amount':10, #
'input':act1_key,
'output':act2_key,
'type':'technosphere',
}
act_2_dict={'name':'test_activity_2',
'unit':'megajoule',
'exchanges':[production_exchange_2,technosphere_exchange_1]}
database_dict={act1_key:act_1_dict,
act2_key:act_2_dict}
db=bw2data.Database('test_db')
db.write(database_dict)
如果我计算库存,我会得到一个包含 3 列的技术圈矩阵。我的新生物圈 activity 也在技术圈矩阵中。
act2 = bw2data.get_activity(act2_key)
lca = bw2calc.LCA({act2:1})
lca.lci()
lca.technosphere_matrix.todense()
assert uwva_node.id in lca.dicts.activity
assert uwva_node.id in lca.dicts.biosphere
当您创建 uwva_node
时,您没有告诉 Brightway type
它是什么,所以它假定它是一个正常的 activity,应该适合技术领域。因此,因为你没有给它一个生产交换,它 assumed that there was an implicit production amount of 1
,这就是你在技术领域看到的。
您可以通过将新的 activity 类型指定为 process
以外的任何类型来解决此问题,例如
uwva_node = b3.new_activity(code='uwva_ppp',
name='utility weighted value added (PPP)',
categories=('social',),
unit = 'Meuro_ppp',
type="social",
)
我正在测试如何在 brightway 中向我的 biosphere3 矩阵添加一个新的“activity”,并且我在我的 technosphere 矩阵中得到了一个我没想到的新列,(对应于我的 id新的生物圈节点)。这种行为是预期的吗?并不是说我想坚持传统,但通常技术圈矩阵中的列不是“基本流”。我正在使用 bw2calc 版本 (2.0.DEV1) 和 bw2data 版本 (4.0.DEV1)
这里有一些代码可以重现这种行为:
b3 = bw2data.Database('biosphere3')
uwva_node = b3.new_activity(code='uwva_ppp',
name='utility weighted value added (PPP)',
categories=('social',),
unit = 'Meuro_ppp',
)
uwva_node.save()
act1_key=('test_db','activity_1')
biosphere_exchange_1={'amount':2,
'input':uwva_node.key,
'output':act1_key,
'type':'biosphere',
'uncertainty type': 0}
production_exchange_1={'amount':2,
'input':act1_key,
'output':act1_key,
'type':'production',
'uncertainty type':0}
act_1_dict={'name':'test_activity_1',
'unit':'megajoule',
'exchanges':[production_exchange_1,biosphere_exchange_1]}
act2_key=('test_db','activity_2')
production_exchange_2={'amount':10,
'input':act2_key,
'output':act2_key,
'type':'production',
'uncertainty type':0}
technosphere_exchange_1={
'amount':10, #
'input':act1_key,
'output':act2_key,
'type':'technosphere',
}
act_2_dict={'name':'test_activity_2',
'unit':'megajoule',
'exchanges':[production_exchange_2,technosphere_exchange_1]}
database_dict={act1_key:act_1_dict,
act2_key:act_2_dict}
db=bw2data.Database('test_db')
db.write(database_dict)
如果我计算库存,我会得到一个包含 3 列的技术圈矩阵。我的新生物圈 activity 也在技术圈矩阵中。
act2 = bw2data.get_activity(act2_key)
lca = bw2calc.LCA({act2:1})
lca.lci()
lca.technosphere_matrix.todense()
assert uwva_node.id in lca.dicts.activity
assert uwva_node.id in lca.dicts.biosphere
当您创建 uwva_node
时,您没有告诉 Brightway type
它是什么,所以它假定它是一个正常的 activity,应该适合技术领域。因此,因为你没有给它一个生产交换,它 assumed that there was an implicit production amount of 1
,这就是你在技术领域看到的。
您可以通过将新的 activity 类型指定为 process
以外的任何类型来解决此问题,例如
uwva_node = b3.new_activity(code='uwva_ppp',
name='utility weighted value added (PPP)',
categories=('social',),
unit = 'Meuro_ppp',
type="social",
)