在Brightway中有效地保存采样矩阵值

时间:2018-03-17 06:33:36

标签: brightway

我想为技术圈和生物圈矩阵的hstack和存储采样值进行有效重用(例如用于灵敏度分析)。现在关注技术领域矩阵,这就是我所拥有的:

  • 保存的CSR稀疏矩阵,每蒙特卡罗迭代一次
  • activity_dictproduct_dict(范围= LCA对象)
  • mapping字典(范围=项目)

我最终想要的是:

(1)一个数组,其中行是来自我的技术圈矩阵的非零元素,列是不同的蒙特卡罗迭代;和

(2)确定 i 行所指的内容的某种方式。

我知道我可以简单地说:

  • 将我的CSR稀疏矩阵转换为COO(即coo_matrix = mc.technosphere_matrix.tocoo())并隐藏生成的COO矩阵data

  • rowcol存储为一个coo_matrix作为数组(例如coo_rows=coo_matrix.rowcoo_cols=coo_matrix.col)。这些指数对我的所有矩阵都是一样的。

  • 使用product_dictactivity_dict的反向来确定每个元素所指的内容。例如,要知道我的hstacked数据中的 i 行是什么,我可以使用reverse_activity_dict[coo_cols[i]]来获取我的 活动名称reverse_product_dict[coo_rows[i]]以获取我的产品。

然而,这并没有利用already optimized brightway functions ...我只是没有看到 如何使用这些。

答案可能是here,但只是遥不可及......

作为奖励:我的MC迭代可能来自具有不同mapping s的不同项目(但具有相同的数据库名称)。

1 个答案:

答案 0 :(得分:0)

我最终决定采用以下存储策略:

  • 保存一个数据数组,如上所述。
  • 保存索引列表,其中索引定义为(input key, output key, type)。如elsewhere所示,这些可以有效地与Brightway一起使用 MatrixBuilder课程。