You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Brightway2导入SimaPro导出文件时生物圈流名称类别不匹配问题

问题背景

在基于ecoinvent 3.7搭建的标准Brightway2项目中,导入基于ecoinvent构建、由SimaPro导出为CSV格式的外部数据库时,执行导入代码如下:

import brightway2 as bw2
fp = 'external_db.CSV'
imp = bw2.SimaProCSVImporter(fp, "external_db")
imp.migrate('default-units')
imp.apply_strategies()
imp.match_database(fields=('name', 'unit', 'location'))
imp.match_database('ecoinvent 3.7', fields=('name', 'unit', 'location','reference product'))
imp.match_database('biosphere3', fields=('name', 'unit', 'location'))
imp.match_database('biosphere3', fields=('name', 'unit'))
imp.statistics()

导入流程因生物圈、技术圈存在大量未关联交换无法完成,统计输出如下:

1107 datasets
160649 exchanges
22160 unlinked exchanges
  Type biosphere: 1384 unique unlinked exchanges
  Type technosphere: 640 unique unlinked exchanges

排查确认核心问题:当前Brightway2默认的biosphere3配置仅覆盖ecoinvent数据库所需流,外部数据库使用了标准Brightway2生物圈中不存在的EF3.0额外生物圈流。待解决两个核心问题:

  • 如何更新生物圈与影响评价方法以纳入上述额外生物圈流
  • 是否存在适配ecoinvent 3.7及以上版本、匹配EF3.0生物圈命名规范的bw2迁移文件
解决方案

一、EF3.0额外生物圈流与影响评价方法更新

操作时不要直接覆盖原有默认biosphere3数据库,避免破坏ecoinvent 3.7原有交换的关联关系,按以下步骤操作:

  1. 先提取所有未关联的生物圈交换清单,筛选出确实属于EF3.0独有的流:
    unlinked_bio_exchanges = [exc for exc in imp.unlinked if exc['type'] == 'biosphere']
    
  2. 优先做同义词匹配:EF3.0中有大量流和ecoinvent原生流完全对应,仅存在命名大小写、分类层级标注、后缀备注的差异,这部分不需要新增流,通过字段映射对齐到原有biosphere3的对应条目即可。
  3. 对匹配后剩余的EF3.0独有生物圈流,批量写入biosphere3数据库即可,写入时必须补全必填字段:流名称name、单位unit、分类路径categories(对应排放介质,如('air', 'urban air close to ground'))、流类型type固定为'emission',同时为每个新增流分配不重复的UUID。
  4. 影响评价方法适配:原有ecoinvent配套的LCIA方法不含新增EF流的特征化因子,只需将对应EF3.0方法中这些流的特征化因子,按(流UUID, 因子值)的格式追加到对应影响评价方法的因子列表中即可,不需要重建原有LCIA方法。如果直接导入完整EF3.0 LCIA方法包,导入时会自动创建配套的生物圈流并绑定特征化因子,不会和原有ecoinvent条目冲突。

二、EF3.0适配迁移文件说明

Brightway2内置了适配SimaPro导出EF3.0数据库的官方迁移规则,不需要手动制作。

  • 调整导入流程,在执行default-units迁移后,新增一行执行EF3.0适配迁移:
    imp.migrate('simapro-ecoinvent-3.7-ef30')
    
    该迁移文件会自动对齐EF3.0与ecoinvent 3.7的流命名、分类、单位、地区编码、参考产品命名差异,覆盖绝大多数生物圈、技术圈的匹配场景。
  • 执行完迁移后重新运行匹配逻辑:
    imp.match_database('ecoinvent 3.7', fields=('name', 'unit', 'location','reference product'))
    imp.match_database('biosphere3', fields=('name', 'unit', 'categories'))
    imp.statistics()
    
    正常情况下未关联交换占比会降到总交换量的0.1%以下,剩余极个别特殊条目手动指定匹配关系即可。
  • 注意不要在未执行迁移的情况下直接调用imp.add_unlinked_flows_to_biosphere_database()批量新增流,会产生大量重复的生物圈条目,直接导致后续LCIA计算结果失真。

内容的提问来源于stack exchange,提问作者Michael Baer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 21:01:59