改变活动中的生产交换

时间:2018-01-18 18:35:43

标签: activity-lifecycle brightway

我们如何用此活动中已存在的技术圈交换来替换活动中的生产交换?

在活动act中,我尝试删除现有的生产交换existing_prod_exc,然后使用new_prod_exc=act.new_exchange(input=act.key,output=act.key,type='production')创建新的生产交换,但我不知道如何“将“现有交换techno_exc的所有交换特征”复制到new_prod_exc

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

更改交换类型可以通过多种方式完成;你可以直接编辑SQLite数据库中的type列,或者使用ExchangeDataset对象,但我想你想使用主界面。在这种情况下,更改交换类型很简单:

some_exc = next(iter(some_activity.technosphere()))
some_exc['type'] = 'production'
some_exc.save()

回想一下,输入和输出之间的唯一区别是sign of the value in the technosphere matrix;你可以通过将交换金额的符号乘以-1来完成同样的事情。

我想你也想删除现有的生产交换(你应该先这样做,原因很明显!):

for exc in some_activity.production():
    exc.delete()

与任何破坏性操作一样,最好先在实际数据的副本上进行尝试;您可以使用projects.copy_project()快速创建测试项目。

答案 1 :(得分:2)

您可以直接更改您感兴趣的交易所并保存:

import sys, pdb; pdb.Pdb(stdout=sys.__stdout__).set_trace()

这样做会导致两次生产交换。然后,您可以根据需要删除现有的生产交换。