Ilastik - Rois do not intersect AssertionError

Hi @ilastik_team,
I’m a new Ilastik user. When I try to use the “Suggest features” tool in Pixel classification in Ilastik I get the following:

image
And this is the information in the log:

ERROR 2019-07-24 19:19:22,336 excepthooks 4756 3532 Unhandled exception in thread: 'MainThread'
ERROR 2019-07-24 19:19:22,337 excepthooks 4756 3532 Traceback (most recent call last):
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\ilastik\ilastik\applets\pixelClassification\pixelClassificationGui.py", line 499, in show_feature_selection_dialog
    self.featSelDlg.exec_()
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\ilastik\ilastik\applets\pixelClassification\FeatureSelectionDialog.py", line 229, in exec_
    self.raw_xy_slice = numpy.squeeze(self.opPixelClassification.InputImages[total_slicing].wait())
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 500, in wait
    return self._wait(timeout)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 523, in _wait
    self._wait_within_foreign_thread( timeout )
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 579, in _wait_within_foreign_thread
    raise_with_traceback(exc_value, exc_tb)
  File "C:\Program Files\ilastik-1.3.2post1\lib\site-packages\future\utils\__init__.py", line 421, in raise_with_traceback
    raise exc.with_traceback(traceback)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 324, in _execute
    self._result = self.fn()
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\slot.py", line 887, in __call__
    result_op = self.operator.execute(self.slot, (), self.roi, destination)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\operators\opReorderAxes.py", line 160, in execute
    self.Input( *in_roi ).writeInto( result_input_view ).wait()
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 500, in wait
    return self._wait(timeout)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 523, in _wait
    self._wait_within_foreign_thread( timeout )
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 579, in _wait_within_foreign_thread
    raise_with_traceback(exc_value, exc_tb)
  File "C:\Program Files\ilastik-1.3.2post1\lib\site-packages\future\utils\__init__.py", line 421, in raise_with_traceback
    raise exc.with_traceback(traceback)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 324, in _execute
    self._result = self.fn()
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 793, in __call__
    return self.func( *totalargs, **self.kwargs)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\slot.py", line 887, in __call__
    result_op = self.operator.execute(self.slot, (), self.roi, destination)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\operators\valueProviders.py", line 125, in execute
    req.wait()
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 500, in wait
    return self._wait(timeout)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 523, in _wait
    self._wait_within_foreign_thread( timeout )
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 579, in _wait_within_foreign_thread
    raise_with_traceback(exc_value, exc_tb)
  File "C:\Program Files\ilastik-1.3.2post1\lib\site-packages\future\utils\__init__.py", line 421, in raise_with_traceback
    raise exc.with_traceback(traceback)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 324, in _execute
    self._result = self.fn()
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 793, in __call__
    return self.func( *totalargs, **self.kwargs)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\slot.py", line 887, in __call__
    result_op = self.operator.execute(self.slot, (), self.roi, destination)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\operators\valueProviders.py", line 125, in execute
    req.wait()
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 500, in wait
    return self._wait(timeout)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 523, in _wait
    self._wait_within_foreign_thread( timeout )
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 579, in _wait_within_foreign_thread
    raise_with_traceback(exc_value, exc_tb)
  File "C:\Program Files\ilastik-1.3.2post1\lib\site-packages\future\utils\__init__.py", line 421, in raise_with_traceback
    raise exc.with_traceback(traceback)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 324, in _execute
    self._result = self.fn()
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\request\request.py", line 793, in __call__
    return self.func( *totalargs, **self.kwargs)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\slot.py", line 887, in __call__
    result_op = self.operator.execute(self.slot, (), self.roi, destination)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\operators\opUnblockedArrayCache.py", line 83, in execute
    self._execute_Output(slot, subindex, roi, result)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\operators\opSimpleBlockedArrayCache.py", line 93, in _execute_Output
    clipped_block_rois = getIntersectingRois( self.Input.meta.shape, self._blockshape, (roi.start, roi.stop), True )
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\roi.py", line 540, in getIntersectingRois
    block_rois = list(map( partial(getBlockBounds, dataset_shape, blockshape), block_starts ))
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\roi.py", line 566, in getBlockBounds
    block_bounds = getIntersection( block_bounds, entire_dataset_roi )
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\lazyflow\lazyflow\roi.py", line 318, in getIntersection
    assert ((stop - start) > 0).all(), "Rois do not intersect: {} and {}".format( roiA, roiB )
AssertionError: Rois do not intersect: (array([ 42,   0, 369]), array([ 43, 373, 738])) and ([0, 0, 0], [106, 373, 369])

Could someone indicate me what is causing this and how to fix it ?

Thank you very much

Playing around I noticed that if one sets the current view to the first file uploaded then it works fine. But if the current view is any other file then it bugs.

I’d like also to report that apparently the computation time is always 0.000 sec.
image

1 Like

Hi @LPUoO,

thanks a lot for the report and for taking the time to make it reproducible. This needs to be fixed of course and I opened an issue in our main repository to keep track of that.

Also the computation time not being visible is a bug. Haven’t noticed that as it seems to be windows-specific (times are reported correctly on linux). We will fix that too, of course.

Thank you @k-dominik for the feed back.

I’d like then to report that when using any other classifier than the default then it is impossible to save the project and I get the following.
image

Also, when using any other classifier than the default when trying to use the “suggest feature” I get:
image
With this in the log:

WARNING 2019-07-26 14:32:57,161 warnings 1752 7404 discriminant_analysis.py(388): UserWarning: Variables are collinear.
ERROR 2019-07-26 14:33:04,752 excepthooks 1752 7260 Unhandled exception in thread: 'MainThread'
ERROR 2019-07-26 14:33:04,752 excepthooks 1752 7260 Traceback (most recent call last):
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\ilastik\ilastik\applets\pixelClassification\FeatureSelectionDialog.py", line 816, in _run_selection
    segmentation_all_features, oob_all, time_all = self.retrieve_segmentation(all_features_active_matrix)
  File "C:\Program Files\ilastik-1.3.2post1\ilastik-meta\ilastik\ilastik\applets\pixelClassification\FeatureSelectionDialog.py", line 621, in retrieve_segmentation
    oob_err = 100. * numpy.mean(self.opPixelClassification.opTrain.outputs['Classifier'].value.oobs)
AttributeError: 'SklearnLazyflowClassifier' object has no attribute 'oobs'

And last bug: when moving the crosshairs the cursor changes to a hand and then the cursor stays as a hand until I restart Ilastik.

Finally, a question: Is it possible to apply the current view (intensity of display, zoom, and group visibility) to all the images of the dataset during training ?

And maybe a request: It would be great if the name of the classifier that is in use was written somewhere visible.

Thank you very much

oh :slight_smile: okay, in the suggest featues feature are reporting the out-of-bag error (oob) (so much for the error you are seeing). In principle one could think of similar measures for the other classifiers. But as @ilastik_team pointed out here, one shouldn’t expect other classifiers to work better than the Random forest. And this is why the suggest features functionality was implemented with only the Random Forest in mind. So I’m at least skeptical that implementing this on our side will get a significant priority.

Fixing the saving, and making it more clear that suggest features will not work, we will of course do.