orange3
orange3 copied to clipboard
Table.copy() changes sparsity
Table.copy
can sometimes change sparsity, which is unexpected. It is likely needlessly complex as it goes through the constructor (Table.__new__
). I found this in one of our tests:
import unittest
from Orange.data import Table
from scipy import sparse as sp
from Orange.widgets.tests.base import WidgetTest
from Orange.widgets.data.owmergedata import OWMergeData
class TestOWMergeDataBug(WidgetTest):
def test_sparse(self):
self.widget = self.create_widget(OWMergeData)
data = Table("iris")[::25]
data_ed_sparse = Table("titanic")[::300].to_sparse()
self.send_signal("Data", data)
self.send_signal("Extra Data", data_ed_sparse)
output_sparse = self.get_output("Data")
self.assertTrue(sp.issparse(output_sparse.X))
output_sparse = output_sparse.copy()
self.assertTrue(sp.issparse(output_sparse.X)) # FAILS
if __name__ == "__main__":
unittest.main()