将交换名称和代码连接到LCA清单结果

时间:2016-09-14 15:40:10

标签: brightway

我正在进入Brightway2进行一些能源系统建模,我仍然习惯了所有的概念。

我创建了一个小型自定义演示数据库,并运行lca.lci()和lca.lcia()。 lca.inventory和lca.characterized_inventory都返回结果的稀疏矩阵。我的问题可能很简单,就是如何将矩阵中的值连接到交换名称和密钥。即,如果我想将结果打印到文件中,我如何将交换匹配到库存值?

感谢。

1 个答案:

答案 0 :(得分:2)

要真正了解正在发生的事情,了解“中间”数据(存储为结构化文本文件)和“已处理”数据(存储为numpy结构化数组)之间的区别非常有用。 herehere都描述了这些概念。

但是,要直接回答您的问题:不同矩阵和数组中的每一行和每列代表什么(例如lca.inventory矩阵,lca.supply_arraylca.characterized_inventory)包含在集合中与您的LCA对象关联的词典。这些是:

  • activity_dict:技术圈矩阵中的列
  • product_dict:技术圈矩阵中的行
  • biosphere_dict:生物圈矩阵中的行

例如,lca.product_dict产生,在LCA的情况下,我刚刚做了:

{('ei32_CU_U', '671c1ae85db847083176b9492f000a9d'): 8397,
 ('ei32_CU_U', '53398faeaf96420408204e309262b8c5'): 536,
 ('ei32_CU_U', 'fb8599da19dabad6929af8c3a3c3bad6'): 7774,
 ('ei32_CU_U', '28b3475e12e4ed0ec511cbef4dc97412'): 3051, ...}  

字典中的key是我的广告资源数据库中的实际产品,而valuedemand_arraysupply_array中的行。

更有用的可能是这些词典的反面。假设您想要了解例如您的supply_array指的是,您可以使用dict comprehension

创建反向字典
inv_product_dict = {v: k for k, v in lca.product_dict.items()}  

然后直接使用它来获取您所追求的信息。假设您想知道supply_array的第10行中的内容,您只需执行inv_product_dict[10],在我的情况下会产生('ei32_CU_U', '4110733917e1fcdc7c55af3b3f068c72')

相同类型的逻辑适用于生物圈(或基本)流,可在lca.biosphere_dict中找到(在LCA用语中, B 矩阵中的行),以及在lca.activity_dict A B 矩阵的列)。

请注意,您可以使用lca.reverse_dict()同时生成activity_dict / product_dict / biosphere_dict的反转。那么语法是:
rev_act_dict, rev_product_dict, rev_bio_dict = lca.reverse_dict()