确定哪个 activity 或哪个产品导致非正方形技术圈矩阵
Identify which activity or which product is leading to a non-square technosphere matrix
我使用 Wurst python 包对我的 lci 数据库进行了一些更改。然后我使用 write_brightway2_database()
重写了我的数据库。
获取16718个数据集,462812个交易所,0个未链接的交易所。
然后有一次,我尝试用修改后的数据库计算 LCA 分数,我得到一个非正方形的技术圈矩阵,维度如下:16718 个活动(列)和 16717 个产品(行)。
这是我尝试计算 LCA 分数的方式:
lca = LCA({db.random(): 1}, method=lcia_methods['CC'])
lca.lci()
lca.lcia()
print(lca.score)
我收到的错误消息:
NonsquareTechnosphere: Technosphere matrix is not square: 16718 activities (columns) and 16717 products (rows). Use LeastSquaresLCA to solve this system, or fix the input data
然后,我尝试了以下方法,加上一些推荐的变体 here :
for a in Database("database"):
assert len(a.production()) == 1
但是没有弹出数据集。
在以 BW2 格式从 Wurst 重写我的数据库之前,我还尝试执行以下操作:
producion = {}
for ds in db:
key = ds['code']
producion[key] = []
for exc in ds['exchanges']:
if exc['type'] == 'production':
producion[key].append(exc['name'])
for v in producion.values():
if len(v) != 1:
print(v)
但同样,我无法确定执行此操作的任何有问题的数据集。
是否有一种简单的方法来确定哪个 activity 或哪个产品导致非正方形技术圈矩阵以修复我的输入数据?
错误是我创建了一个数据集,其中生产交换中的“名称”字段与数据集本身的“名称”不同。
为了识别我的数据集,我做了:
for ds in Database('distribution and use'):
for prod_exc in ds.production():
try : assert (prod_exc['name'] == ds['name'])
except : print(ds['name'])
您可以对 ['location']、['unit'] 和其他重要字段进行相同的测试。
要检查它们是否重合的其他有趣字段是来自数据集本身的 ['code'] 和位于字段 ['input'][1]
[=13= 中的生产交换的 'code' ]
for ds in Database("db_name"):
for prod_exc in ds.production():
if ((prod_exc['input'][1]) != ds['code']):
print((ds['name'],ds['code'],ds['location'],prod_exc['input'], prod_exc['name']))
我使用 Wurst python 包对我的 lci 数据库进行了一些更改。然后我使用 write_brightway2_database()
重写了我的数据库。
获取16718个数据集,462812个交易所,0个未链接的交易所。
然后有一次,我尝试用修改后的数据库计算 LCA 分数,我得到一个非正方形的技术圈矩阵,维度如下:16718 个活动(列)和 16717 个产品(行)。
这是我尝试计算 LCA 分数的方式:
lca = LCA({db.random(): 1}, method=lcia_methods['CC'])
lca.lci()
lca.lcia()
print(lca.score)
我收到的错误消息:
NonsquareTechnosphere: Technosphere matrix is not square: 16718 activities (columns) and 16717 products (rows). Use LeastSquaresLCA to solve this system, or fix the input data
然后,我尝试了以下方法,加上一些推荐的变体 here :
for a in Database("database"):
assert len(a.production()) == 1
但是没有弹出数据集。
在以 BW2 格式从 Wurst 重写我的数据库之前,我还尝试执行以下操作:
producion = {}
for ds in db:
key = ds['code']
producion[key] = []
for exc in ds['exchanges']:
if exc['type'] == 'production':
producion[key].append(exc['name'])
for v in producion.values():
if len(v) != 1:
print(v)
但同样,我无法确定执行此操作的任何有问题的数据集。
是否有一种简单的方法来确定哪个 activity 或哪个产品导致非正方形技术圈矩阵以修复我的输入数据?
错误是我创建了一个数据集,其中生产交换中的“名称”字段与数据集本身的“名称”不同。
为了识别我的数据集,我做了:
for ds in Database('distribution and use'):
for prod_exc in ds.production():
try : assert (prod_exc['name'] == ds['name'])
except : print(ds['name'])
您可以对 ['location']、['unit'] 和其他重要字段进行相同的测试。
要检查它们是否重合的其他有趣字段是来自数据集本身的 ['code'] 和位于字段 ['input'][1]
[=13= 中的生产交换的 'code' ]
for ds in Database("db_name"):
for prod_exc in ds.production():
if ((prod_exc['input'][1]) != ds['code']):
print((ds['name'],ds['code'],ds['location'],prod_exc['input'], prod_exc['name']))