描述为here的Brightway2 Excel导入程序似乎假定参考产品名称和活动名称相同,但并非总是如此。
在活动元数据中添加参考产品部分无济于事:链接无法将production
交换链接到生成它的活动。
是否存在一种解决方法,可以使用Excel导入器导入production
交换不一定准确地命名为活动的活动?
答案 0 :(得分:2)
通过“战略”功能进行链接。在这种情况下,似乎您只需要一个接受所需字段的自定义函数。我还没有测试过,但是如下所示应该可以:
def match_by_reference_product(database):
"""Match using reference product instead of 'name' field."""
def get_product_exchange(dataset):
lst = [e for e in dataset if e['type'] == 'production']
if len(lst) != 1:
raise ValueError("Can't find one production exchange: {}".format(dataset))
return lst[0]
def get_fields(exc):
return (
exc['reference product'],
exc['unit'],
exc['location']
)
possibles = {
get_fields(get_product_exchange(dataset)): (dataset['database'], dataset['code'])
for dataset in database
}
for dataset in database:
for exc in dataset['exchanges']:
if exc['input']:
continue
if exc['type'] != 'technosphere':
continue
try:
exc['input'] = possibles[(exc['name'], exc['unit'], exc['location'])]
except KeyError:
pass
return database
使用my_importer.apply_stragtegy(match_by_reference_product)
进行应用。