通过 brightway2 在 ecoinvent 中的 AWARE 方法
AWARE method in ecoinvent through brightway2
我正在尝试使用 brightway 或 ab 将所有水输入提取到多个过程,但我无法从 inventory_matrix 获取这些值。我需要获取消耗的水量和水的来源(地表水、井水、未指定的自来水)及其地理位置。 m我正在使用 ecoinvent 3.7.1
我认为我可以做到的一种方法是为这些隔间(每个隔间都为 1)创建一个带有 CF 的影响评估方法,然后将其应用于流程并分析基本流的贡献。
我不确定我能不能得到这样的地理信息。
为清楚起见编辑了大部分问题
看来我是在重新发明轮子!我的目标是实施 AWARE 方法并将其应用于相当多的流程。最好的结果是通过 activity-browser 使用 AWARE,这样我就可以使用它的所有功能,这对我来说非常省时。
我刚刚看到 brightway2-regional and bw2_aware 实现了上述方法。
所以我现在正尝试在我的 brightway2 conda 环境中安装这些包。
设法通过 conda 获取 bw2regional,但如果不通过 pip,我无法设法安装 bw2_aware。
设法通过使用 wheel 文件和 pip install --no-deps 安装 bw2_aware 然后在源代码中调整一行用于 fiona 导入,现在我在 运行[=16= 时遇到错误]
bwr.bw2regionalsetup()
bw2_aware.import_aware()
SSLError: HTTPSConnectionPool(host='pandarus.brightwaylca.org', port=443): Max retries exceeded with url: / (Caused by SSLError(CertificateError("hostname 'pandarus.brightwaylca.org' doesn't match either of '*.parkingcrew.net', 'parkingcrew.net'",),))
现在我想了解我是否可以将其应用于 ecoinvent,以及如何应用。我真的不确定我是否可以将不同的地理位置添加到数据库中的基本流程中,以便我可以在 lca 中正确地计算意识。
我已经看到导入 AWARE 允许在 activity- 浏览器中选择它作为影响分类,尽管我看不到 CFS 中“特征化因素”选项卡中显示的地理位置。
然后我尝试使用 AWARE 方法和 2 个示例过程来计算 AB 的 LCA:
diesel, burned in agricultural machinery | diesel, burned in agricultural machinery | GLO | megajoule | ECOINVENT3.7.1
electricity, high voltage | market for electricity, high voltage | IT | kilowatt hour | ECOINVENT3.7.1
我得到这个结果(第一个是农业的,另一个是非农业的):
diesel, burned in agricultural machinery | GLO
0.014757994762941706 0.00654978730728395
market for electricity, high voltage | IT 0.285207979534988 0.12657895834095712
我想知道这是否正确。
您的直觉是正确的 - 构建 LCIA 方法是一种简单的方法。这是因为这些流量背后有不言而喻的假设——它们大多是正数,但有些代表消费,有些代表释放。
这是一个使用 Brightway 2.5 的示例,它需要针对版本 2 进行调整:
import bw2data as bd
import bw2calc as bc
import numpy as np
bd.projects.set_current("ecoinvent 3.7.1")
ecoinvent = bd.Database("ecoinvent 3.7.1")
beet = ecoinvent.search("beet")[1]
water_method = bd.Method(("Water", "raw"))
water_method.register()
water_method.write([(x, -1 if x['categories'][0] == 'natural resource' else 1)
for x in bd.Database("biosphere3")
if x['name'].startswith('Water')])
demand, data_objs, _ = bd.prepare_lca_inputs(demand={beet: 1}, method=("Water", "raw"))
lca = bc.LCA(demand=demand, data_objs=data_objs)
lca.lci()
lca.lcia()
coo = lca.characterized_inventory.tocoo()
results = sorted(zip(np.abs(coo.data), coo.data, coo.row, coo.col), reverse=True)
for a, b, c, d in results[:10]:
print("{:.6f}\t{}\n\t\t{}".format(
float(b),
bd.get_activity(lca.dicts.biosphere.reversed[c]),
bd.get_activity(lca.dicts.activity.reversed[d])
))
结果:
0.009945 'Water' (cubic meter, None, ('water',))
'electricity production, hydro, run-of-river' (kilowatt hour, CH, None)
-0.009945 'Water, turbine use, unspecified natural origin' (cubic meter, None, ('natural resource', 'in water'))
'electricity production, hydro, run-of-river' (kilowatt hour, CH, None)
0.009514 'Water' (cubic meter, None, ('water',))
'electricity production, hydro, run-of-river' (kilowatt hour, RoW, None)
-0.009514 'Water, turbine use, unspecified natural origin' (cubic meter, None, ('natural resource', 'in water'))
'electricity production, hydro, run-of-river' (kilowatt hour, RoW, None)
0.007264 'Water' (cubic meter, None, ('water',))
'electricity production, hydro, run-of-river' (kilowatt hour, FR, None)
-0.007264 'Water, turbine use, unspecified natural origin' (cubic meter, None, ('natural resource', 'in water'))
'electricity production, hydro, run-of-river' (kilowatt hour, FR, None)
-0.003371 'Water, river' (cubic meter, None, ('natural resource', 'in water'))
'irrigation, sprinkler' (cubic meter, CH, None)
0.003069 'Water' (cubic meter, None, ('water', 'ground-'))
'sugar beet production' (kilogram, CH, None)
0.001935 'Water' (cubic meter, None, ('air',))
'sugar beet production' (kilogram, CH, None)
0.001440 'Water' (cubic meter, None, ('water',))
'electricity production, hydro, run-of-river' (kilowatt hour, CN-SC, None)
无法在 activity 浏览器中使用区域化计算,并且 AWARE 方法(错误地)依赖于并非绝对必要的外部 Web 服务。所以简短的回答是,这现在不可能,但由于你是一周内第二个询问这个问题的人,我们需要尽快让它工作。
我正在尝试使用 brightway 或 ab 将所有水输入提取到多个过程,但我无法从 inventory_matrix 获取这些值。我需要获取消耗的水量和水的来源(地表水、井水、未指定的自来水)及其地理位置。 m我正在使用 ecoinvent 3.7.1
我认为我可以做到的一种方法是为这些隔间(每个隔间都为 1)创建一个带有 CF 的影响评估方法,然后将其应用于流程并分析基本流的贡献。
我不确定我能不能得到这样的地理信息。
为清楚起见编辑了大部分问题
看来我是在重新发明轮子!我的目标是实施 AWARE 方法并将其应用于相当多的流程。最好的结果是通过 activity-browser 使用 AWARE,这样我就可以使用它的所有功能,这对我来说非常省时。
我刚刚看到 brightway2-regional and bw2_aware 实现了上述方法。
所以我现在正尝试在我的 brightway2 conda 环境中安装这些包。
设法通过 conda 获取 bw2regional,但如果不通过 pip,我无法设法安装 bw2_aware。 设法通过使用 wheel 文件和 pip install --no-deps 安装 bw2_aware 然后在源代码中调整一行用于 fiona 导入,现在我在 运行[=16= 时遇到错误]
bwr.bw2regionalsetup()
bw2_aware.import_aware()
SSLError: HTTPSConnectionPool(host='pandarus.brightwaylca.org', port=443): Max retries exceeded with url: / (Caused by SSLError(CertificateError("hostname 'pandarus.brightwaylca.org' doesn't match either of '*.parkingcrew.net', 'parkingcrew.net'",),))
现在我想了解我是否可以将其应用于 ecoinvent,以及如何应用。我真的不确定我是否可以将不同的地理位置添加到数据库中的基本流程中,以便我可以在 lca 中正确地计算意识。 我已经看到导入 AWARE 允许在 activity- 浏览器中选择它作为影响分类,尽管我看不到 CFS 中“特征化因素”选项卡中显示的地理位置。
然后我尝试使用 AWARE 方法和 2 个示例过程来计算 AB 的 LCA:
diesel, burned in agricultural machinery | diesel, burned in agricultural machinery | GLO | megajoule | ECOINVENT3.7.1
electricity, high voltage | market for electricity, high voltage | IT | kilowatt hour | ECOINVENT3.7.1
我得到这个结果(第一个是农业的,另一个是非农业的):
diesel, burned in agricultural machinery | GLO
0.014757994762941706 0.00654978730728395
market for electricity, high voltage | IT 0.285207979534988 0.12657895834095712
我想知道这是否正确。
您的直觉是正确的 - 构建 LCIA 方法是一种简单的方法。这是因为这些流量背后有不言而喻的假设——它们大多是正数,但有些代表消费,有些代表释放。
这是一个使用 Brightway 2.5 的示例,它需要针对版本 2 进行调整:
import bw2data as bd
import bw2calc as bc
import numpy as np
bd.projects.set_current("ecoinvent 3.7.1")
ecoinvent = bd.Database("ecoinvent 3.7.1")
beet = ecoinvent.search("beet")[1]
water_method = bd.Method(("Water", "raw"))
water_method.register()
water_method.write([(x, -1 if x['categories'][0] == 'natural resource' else 1)
for x in bd.Database("biosphere3")
if x['name'].startswith('Water')])
demand, data_objs, _ = bd.prepare_lca_inputs(demand={beet: 1}, method=("Water", "raw"))
lca = bc.LCA(demand=demand, data_objs=data_objs)
lca.lci()
lca.lcia()
coo = lca.characterized_inventory.tocoo()
results = sorted(zip(np.abs(coo.data), coo.data, coo.row, coo.col), reverse=True)
for a, b, c, d in results[:10]:
print("{:.6f}\t{}\n\t\t{}".format(
float(b),
bd.get_activity(lca.dicts.biosphere.reversed[c]),
bd.get_activity(lca.dicts.activity.reversed[d])
))
结果:
0.009945 'Water' (cubic meter, None, ('water',))
'electricity production, hydro, run-of-river' (kilowatt hour, CH, None)
-0.009945 'Water, turbine use, unspecified natural origin' (cubic meter, None, ('natural resource', 'in water'))
'electricity production, hydro, run-of-river' (kilowatt hour, CH, None)
0.009514 'Water' (cubic meter, None, ('water',))
'electricity production, hydro, run-of-river' (kilowatt hour, RoW, None)
-0.009514 'Water, turbine use, unspecified natural origin' (cubic meter, None, ('natural resource', 'in water'))
'electricity production, hydro, run-of-river' (kilowatt hour, RoW, None)
0.007264 'Water' (cubic meter, None, ('water',))
'electricity production, hydro, run-of-river' (kilowatt hour, FR, None)
-0.007264 'Water, turbine use, unspecified natural origin' (cubic meter, None, ('natural resource', 'in water'))
'electricity production, hydro, run-of-river' (kilowatt hour, FR, None)
-0.003371 'Water, river' (cubic meter, None, ('natural resource', 'in water'))
'irrigation, sprinkler' (cubic meter, CH, None)
0.003069 'Water' (cubic meter, None, ('water', 'ground-'))
'sugar beet production' (kilogram, CH, None)
0.001935 'Water' (cubic meter, None, ('air',))
'sugar beet production' (kilogram, CH, None)
0.001440 'Water' (cubic meter, None, ('water',))
'electricity production, hydro, run-of-river' (kilowatt hour, CN-SC, None)
无法在 activity 浏览器中使用区域化计算,并且 AWARE 方法(错误地)依赖于并非绝对必要的外部 Web 服务。所以简短的回答是,这现在不可能,但由于你是一周内第二个询问这个问题的人,我们需要尽快让它工作。