tech_array 和 bio_array 的顺序

Order of tech_array and bio_array

上下文:我在可能在不同 projects 中生成的不同 LCA 中使用了 ParameterVectorLCA。我已经存储了结果 params。我想确保 params 的顺序相同。

我知道的:
- 我知道这些参数数组的元素有两个字段引用 inputsoutputs
- 我知道 activity_dictbio_dict 可以告诉我们这些 inputsoutputs 指的是什么
- 我知道可以通过使用各自的 activity_dictbio_dict

supply arraysinventory_matrices 从一个项目重新排序到另一个项目

我不知道的:
- 如果我的 activity_dictbio_dict 对于两个 LCA 都是一样的,我能保证我的 params 的顺序是一样的吗?
- 如果我的 activity_dictbio_dict 不一样,我可以重新订购我的 params 吗?我的策略是:

这样可以吗?有没有更简单的方法?

项目中的参数数组将始终按 processed (you can see the fields used when sorting). Moreover, the order that arrays are concatenated into e.g. tech_params will be the same within a project (arrays are sorted based on their filename). Finally, the way that activity_dict, etc. are constructed is also guaranteed to be consistent 时的相同顺序排序。但是,正如您所说,inputoutput 值可能因项目而异。

  • 如果两个 LCA 的 activity_dict 和 bio_dict 相同,我能保证我的参数顺序相同吗?

是的。

  • 如果我的 activity_dict 和 bio_dict 不一样,我可以重新排序我的参数吗?

更棘手。

  • 对于其他 LCA,将 tech_params 和 bio_params 中的输入和输出编号更改为参考 LCA 的编号(通过使用 activity_dict 和 bio_dict )

这不起作用,因为 activity_dict 从键到矩阵列; input 中的值是 mapping 值。因此,您需要访问“映射”才能使用此策略。

到目前为止最简单的方法是重新排序 两个 参数数组,忘记 mapping 值(可能因项目而异),而是使用 activity 键(我假设它们是相同的)。然后,您可以轻松地按输入键、输出键、数量等对每个数组进行排序(请参阅 dtype_fields_order;存在具有相同输入和输出的重复交换)并确信您得到的是相同的顺序。

这将是对实用程序库的一个很好的补充,但请务必先编写测试!