Better errors needed for scenario LCAs
It would be nice to have better error messages when doing scenario LCAs. For example, there's certainly something wrong with my scenario difference file, but it is pretty difficult to understand what the following error message refers to. I suspect some of the exchanges do not point to existing datasets, or something like that, but I'm not sure. Hence, something a bit more verbose would help identify the issue. Right now, a pandas error is thrown.
Traceback (most recent call last):
File "/opt/homebrew/Caskroom/miniforge/base/envs/ab/lib/python3.9/site-packages/activity_browser/layouts/tabs/LCA_results_tab.py", line 58, in generate_setup
new_tab = LCAResultsSubTab(data, self)
File "/opt/homebrew/Caskroom/miniforge/base/envs/ab/lib/python3.9/site-packages/activity_browser/layouts/tabs/LCA_results_tabs.py", line 112, in __init__
ef=ElementaryFlowContributionTab(self),
File "/opt/homebrew/Caskroom/miniforge/base/envs/ab/lib/python3.9/site-packages/activity_browser/layouts/tabs/LCA_results_tabs.py", line 882, in __init__
self.toggle_comparisons(self.switches.indexes.func)
File "/opt/homebrew/Caskroom/miniforge/base/envs/ab/lib/python3.9/site-packages/activity_browser/layouts/tabs/LCA_results_tabs.py", line 751, in toggle_comparisons
self.update_tab()
File "/opt/homebrew/Caskroom/miniforge/base/envs/ab/lib/python3.9/site-packages/activity_browser/layouts/tabs/LCA_results_tabs.py", line 821, in update_tab
self.set_combobox_changes()
File "/opt/homebrew/Caskroom/miniforge/base/envs/ab/lib/python3.9/site-packages/activity_browser/layouts/tabs/LCA_results_tabs.py", line 802, in set_combobox_changes
self.df = self.update_dataframe(**compare_fields)
File "/opt/homebrew/Caskroom/miniforge/base/envs/ab/lib/python3.9/site-packages/activity_browser/layouts/tabs/LCA_results_tabs.py", line 891, in update_dataframe
return self.parent.contributions.top_elementary_flow_contributions(
File "/opt/homebrew/Caskroom/miniforge/base/envs/ab/lib/python3.9/site-packages/activity_browser/bwutils/multilca.py", line 751, in top_elementary_flow_contributions
labelled_df = self.get_labelled_contribution_dict(
File "/opt/homebrew/Caskroom/miniforge/base/envs/ab/lib/python3.9/site-packages/activity_browser/bwutils/multilca.py", line 533, in get_labelled_contribution_dict
joined = self.join_df_with_metadata(
File "/opt/homebrew/Caskroom/miniforge/base/envs/ab/lib/python3.9/site-packages/activity_browser/bwutils/multilca.py", line 465, in join_df_with_metadata
df.index = pd.MultiIndex.from_tuples(df.index)
File "/opt/homebrew/Caskroom/miniforge/base/envs/ab/lib/python3.9/site-packages/pandas/core/indexes/multi.py", line 204, in new_meth
return meth(self_or_cls, *args, **kwargs)
File "/opt/homebrew/Caskroom/miniforge/base/envs/ab/lib/python3.9/site-packages/pandas/core/indexes/multi.py", line 553, in from_tuples
raise TypeError("Cannot infer number of levels from empty list")
TypeError: Cannot infer number of levels from empty list
I agree with this. There are some fairly low hanging fruits when it comes to the parameter scenarios, however I think this is more general. This should probably be a long term goal for the AB to increase the amount of checks and improve the quality of logging and error documentation.
Closing this as resolved in #1025