Ошибка с Brightway2 + Premise. «ValueError: не удалось найти эквивалент для ENTSO-E» в NewDatabase.update_all()Python

Программы на Python
Ответить
Anonymous
 Ошибка с Brightway2 + Premise. «ValueError: не удалось найти эквивалент для ENTSO-E» в NewDatabase.update_all()

Сообщение Anonymous »

Я пытаюсь запустить код, который использовался в этой статье для создания LCA и прогнозов на основе сценариев воздействия потребления цифрового контента на окружающую среду. В коде используются пакеты Brightway2 и Premise, а также базы данных Ecoinvent и Biography, а также некоторые предоставленные данные Excel.
Ошибка возникает, когда Premise используется для создания будущих сценариев с помощью функции NewDatabase.update_all(). Он начинается с функции «ecoinvent_to_iam_location()» и ошибки, которая, кажется, каждый раз случайным образом выбирает разные инициалы (эта ошибка, указанная ниже, имеет сообщение «Не удалось найти эквивалент для ENTSO-E», но я видел много разных инициалов, используемых в этой ошибке.
Я ожидал, что этот шаг будет простым, потому что здесь мы просто настраиваем базу данных и на этом этапе просто применяем сценарии к данной базе данных, которые уже должны быть в правильном состоянии. Мне кажется, что есть какая-то ошибка в форматировании или чтении баз данных, из-за чего здесь происходит сбой.
Ссылка на проект, который я использую, мне пришлось изменить некоторые версии пакетов для разрешения конфликтов зависимостей:

Код, который мы запускаем, находится в блокнотах/00_Project_setup.ipynb

Вот ошибка. сообщение/обратная трассировка:
ei_future.update_all()

`update_all()` will skip the following steps:
update_two_wheelers(), update_cars(), and update_buses()
If you want to update these steps, please run them separately afterwards.

////////////////// MEDIUM AND HEAVY DUTY TRUCKS ////////////////////

---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
Cell In[7], line 1
----> 1 ei_future.update_all()

File ~/miniconda3/envs/ef_internet/lib/python3.10/site-packages/premise/ecoinvent_modification.py:987, in NewDatabase.update_all(self)
981 print(
982 "If you want to update these steps, please run them separately afterwards."
983 )
985 # self.update_two_wheelers()
986 # self.update_cars()
--> 987 self.update_trucks()
988 # self.update_buses()
989 self.update_electricity()

File ~/miniconda3/envs/ef_internet/lib/python3.10/site-packages/premise/ecoinvent_modification.py:890, in NewDatabase.update_trucks(self)
887 for scenario in self.scenarios:
888 if "exclude" not in scenario or "update_trucks" not in scenario["exclude"]:
--> 890 trspt = Transport(
891 database=scenario["database"],
892 year=scenario["year"],
893 model=scenario["model"],
894 pathway=scenario["pathway"],
895 iam_data=scenario["iam data"],
896 version=self.version,
897 vehicle_type="truck",
898 relink=False,
899 has_fleet=True,
900 )
902 trspt.create_vehicle_markets()
903 scenario["database"] = trspt.database

File ~/miniconda3/envs/ef_internet/lib/python3.10/site-packages/premise/transport.py:436, in Transport.__init__(self, database, iam_data, model, pathway, year, version, relink, vehicle_type, has_fleet)
424 def __init__(
425 self,
426 database: List[dict],
(...)
434 has_fleet: bool,
435 ):
--> 436 super().__init__(database, iam_data, model, pathway, year)
437 self.version = version
438 self.relink = relink

File ~/miniconda3/envs/ef_internet/lib/python3.10/site-packages/premise/transformation.py:178, in BaseTransformation.__init__(self, database, iam_data, model, pathway, year, cache)
174 self.material_map: Dict[str, Set] = mapping.generate_material_map()
175 self.list_datasets: List[Tuple[str, str, str]] = get_tuples_from_database(
176 self.database
177 )
--> 178 self.ecoinvent_to_iam_loc: Dict[str, str] = {
179 loc: self.geo.ecoinvent_to_iam_location(loc)
180 for loc in self.get_ecoinvent_locs()
181 }
182 self.cache: dict = cache or {}

File ~/miniconda3/envs/ef_internet/lib/python3.10/site-packages/premise/transformation.py:179, in (.0)
174 self.material_map: Dict[str, Set] = mapping.generate_material_map()
175 self.list_datasets: List[Tuple[str, str, str]] = get_tuples_from_database(
176 self.database
177 )
178 self.ecoinvent_to_iam_loc: Dict[str, str] = {
--> 179 loc: self.geo.ecoinvent_to_iam_location(loc)
180 for loc in self.get_ecoinvent_locs()
181 }
182 self.cache: dict = cache or {}

File ~/miniconda3/envs/ef_internet/lib/python3.10/site-packages/premise/geomap.py:141, in Geomap.ecoinvent_to_iam_location(self, location)
138 return self.additional_mappings[location][self.model]
140 # likely a case of missing "EUR" region
--> 141 raise ValueError(f"Could not find equivalent for {location}.")
143 # If not, then we look for IAM regions that contain it
144 iam_location = [
145 r[1]
146 for r in self.geo.within(location)
147 if r[0] == self.model.upper() and r[1] != "World"
148 ]

ValueError: Could not find equivalent for ENTSO-E.

Вот код, который создает объект NewDatabase:

ei_future = NewDatabase(
scenarios=[{"model": "image", "pathway":"SSP2-Base", "year":2030},
{"model": "image", "pathway":"SSP2-Base", "year":2040},
{"model": "image", "pathway":"SSP2-Base", "year":2050},

{"model": "image", "pathway":"SSP2-RCP26", "year":2030},
{"model": "image", "pathway":"SSP2-RCP26", "year":2040},
{"model": "image", "pathway":"SSP2-RCP26", "year":2050},

{"model": "image", "pathway":"SSP2-RCP19", "year":2030},
{"model": "image", "pathway":"SSP2-RCP19", "year":2040},
{"model": "image", "pathway":"SSP2-RCP19", "year":2050},
],
source_db="ecoinvent 3.8 cutoff",
source_version="3.8",
key=DECRYPTION_KEY)


И результат создания этой базы данных:

premise v.(1, 3, 9)
+------------------------------------------------------------------+
| Warning |
+------------------------------------------------------------------+
| Because some of the scenarios can yield LCI databases |
| containing net negative emission technologies (NET), |
| it is advised to account for biogenic CO2 flows when calculating |
| Global Warming potential indicators. |
| `premise_gwp` provides characterization factors for such flows. |
| It also provides factors for hydrogen emissions to air. |
| |
| Within your bw2 project: |
| from premise_gwp import add_premise_gwp |
| add_premise_gwp() |
+------------------------------------------------------------------+
+--------------------------------+----------------------------------+
| Utils functions | Description |
+--------------------------------+----------------------------------+
| clear_cache() | Clears the cache folder. Useful |
| | when updating `premise`or |
| | encountering issues with |
| | inventories. |
+--------------------------------+----------------------------------+
| get_regions_definition(model) | Retrieves the list of countries |
| | for each region of the model. |
+--------------------------------+----------------------------------+
| ndb.NewDatabase(...) | Generates a summary of the most |
| ndb.generate_scenario_report() | important scenarios' variables. |
+--------------------------------+----------------------------------+
Keep uncertainty data?
NewDatabase(..., keep_uncertainty_data=True)

Hide these messages?
NewDatabase(..., quiet=True)

//////////////////// EXTRACTING SOURCE DATABASE ////////////////////
Cannot find cached database. Will create one now for next time...
Getting activity data

100%|█████████████████████████████████| 19565/19565 [00:00

Подробнее здесь: https://stackoverflow.com/questions/798 ... t-for-ents
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»