biolab / biolab/orange3

Merge Data crashes when given wrong input

Open
#7,132 0 comments 0 reactions 1 assignee Claimed by @markotoplak View on GitHub
bug report
Dominant language
Python
Stars
5.7k
Forks
1.1k
Avg merge
12d 2h
Merged PRs (30d)
1

Description

**What's wrong?**
Merge data crashes when given a wrong kind of input.

```
---------------------------- ValueError Exception -----------------------------
Traceback (most recent call last):
File "/Users/ajda/orange/orange3/Orange/data/table.py", line 310, in get_columns
shared = shared_cache[(col.compute_shared, source)]
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ajda/orange/orange3/Orange/misc/cache.py", line 76, in __getitem__
raise KeyError()
KeyError

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
File "/Users/ajda/orange/orange-widget-base/orangewidget/gui.py", line 2265, in __call__
self.func(**kwds)
File "/Users/ajda/orange/orange3/Orange/widgets/data/owmergedata.py", line 354, in change_merging
self.commit.deferred()
File "/Users/ajda/orange/orange-widget-base/orangewidget/gui.py", line 2003, in conditional_commit
do_commit()
File "/Users/ajda/orange/orange-widget-base/orangewidget/gui.py", line 2011, in do_commit
commit.call()
File "/Users/ajda/orange/orange-widget-base/orangewidget/gui.py", line 1876, in call
acting_func(instance)
File "/Users/ajda/orange/orange3/Orange/widgets/data/owmergedata.py", line 400, in commit
merged = self.merge() if self.data and self.extra_data else None
^^^^^^^^^^^^
File "/Users/ajda/orange/orange3/Orange/widgets/data/owmergedata.py", line 430, in merge
return self._join_table_by_indices(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ajda/orange/orange3/Orange/widgets/data/owmergedata.py", line 624, in _join_table_by_indices
extras = self.extra_data[rightu].transform(right_domain)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ajda/orange/orange3/Orange/data/table.py", line 874, in transform
return type(self).from_table(domain, self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ajda/orange/orange3/Orange/data/table.py", line 836, in from_table
table_conversion.convert(source, row_indices,
File "/Users/ajda/orange/orange3/Orange/data/table.py", line 421, in convert
out = array_conv.get_columns(source, row_indices,
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ajda/orange/orange3/Orange/data/table.py", line 312, in get_columns
shared = col.compute_shared(sourceri)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ajda/orange/orange3/Orange/projection/base.py", line 141, in __call__
return self.projection.transform(data.X)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ajda/orange/orange3/Orange/projection/base.py", line 115, in transform
return self.proj.transform(X)
^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ajda/miniconda3/envs/o3/lib/python3.11/site-packages/sklearn/utils/_set_output.py", line 319, in wrapped
data_to_wrap = f(self, X, *args, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ajda/miniconda3/envs/o3/lib/python3.11/site-packages/sklearn/decomposition/_base.py", line 138, in transform
X = validate_data(
^^^^^^^^^^^^^^
File "/Users/ajda/miniconda3/envs/o3/lib/python3.11/site-packages/sklearn/utils/validation.py", line 2944, in validate_data
out = check_array(X, input_name="X", **check_params)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/Users/ajda/miniconda3/envs/o3/lib/python3.11/site-packages/sklearn/utils/validation.py", line 1130, in check_array
raise ValueError(
ValueError: Found array with 0 sample(s) (shape=(0, 4)) while a minimum of 1 is required by PCA.
-------------------------------------------------------------------------------
```

**How can we reproduce the problem?**
File (iris) - PCA - Merge Data.
Then connect File data to Merge Data (Extra data output).
Change Merge Data to "Concatenate tables" option.

Image

**What's your environment?**
- Operating system: OSX
- Orange version: 3.39.dev
- How you installed Orange: pip

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.