2016-09-14 1 views
1

Я попадаю в Brightway2 для моделирования некоторых энергосистем, и я все еще привык ко всем концепциям.Подключение имен и кодов обмена к результатам инвентаризации LCA

Я создал небольшую пользовательскую базу данных демо и запустил lca.lci() и lca.lcia(). lca.inventory и lca.characterized_inventory возвращают разреженные матрицы результатов. Мой вопрос, который может быть очень простым, заключается в том, как вы можете связать значения в матрице с именами и ключами обмена. I.e., если бы я хотел распечатать результаты в файл, как бы я соответствовал обмену значениям инвентаря?

Спасибо.

ответ

2

Чтобы понять, что происходит, полезно понять разницу между «промежуточными» данными (хранящимися как структурированные текстовые файлы) и «обработанными» данными (хранимыми в виде массивных структурированных массивов). Эти концепции описаны как here, так и here.

Однако, чтобы ответить на ваш вопрос прямо: что каждая строка и столбец стоять в различных матриц и массивов (например, lca.inventory матрица, lca.supply_array, lca.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 в словаре, являющемся фактическим продуктом в моей базе данных инвентаря, а value - это строка в demand_array или supply_array.

Более полезным может быть обратная сторона этих словарей. Предположим, вы хотите знать, какое значение, например. ваш supply_array относится, вы можете создать обратный словарь с помощью dict comprehension:

inv_product_dict = {v: k for k, v in lca.product_dict.items()} 

, а затем просто использовать его непосредственно для получения информации, которую вы после этого. Допустим, вы хотите знать, что находится в 10-й строке supply_array, вы можете просто сделать 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()

+0

Спасибо. Это очень помогло.Я больше углубляюсь в Python, поскольку я начинаю с Brightway2, и многие соглашения и концепции еще не интуитивно понятны. – Jim

+1

На всякий случай такие вещи, как '('ei32_CU_U', '28b3475e12e4ed0ec511cbef4dc97412')' являются таинственными, вы можете использовать функцию 'get_activity', например:' get_activity (('ecoinvent 3.2 cutoff', '3c76fc6ab34c7842c6be5fd74cfd1c18')) '>>> «рынок метил-3-метоксипропионата» (килограмм, GLO, нет) ' –

 Смежные вопросы

  • Нет связанных вопросов^_^