Doodleverse / holodoodler

HoloDoodler; semi-interactive image segmentation implemented using HoloViews
3 stars 1 forks source link

1 Band GeoTiff Error: ValueError: object too deep for desired array #2

Closed 2320sharon closed 1 year ago

2320sharon commented 2 years ago

1 Band GeoTiff Error: object too deep for desired array

I was doodling a 1 band geotiff and when I clicked computer segmentation I got this error message. The image I doodled before worked just fine and I have included the resulting segmentation from the first image.

Error Message

 error: ValueError('object too deep for desired array')
Traceback (most recent call last):
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\bokeh\server\protocol_handler.py", line 97, in handle
    work = await handler(message, connection)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\bokeh\server\session.py", line 93, in _needs_document_lock_wrapper
    result = func(self, *args, **kwargs)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\bokeh\server\session.py", line 287, in _handle_patch
    message.apply_to_document(self.document, self)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\bokeh\protocol\messages\patch_doc.py", line 115, in apply_to_document
    invoke_with_curdoc(doc, lambda: doc.apply_json_patch(self.content, setter))
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\bokeh\document\callbacks.py", line 408, in invoke_with_curdoc
    return f()
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\bokeh\protocol\messages\patch_doc.py", line 115, in <lambda>
    invoke_with_curdoc(doc, lambda: doc.apply_json_patch(self.content, setter))
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\bokeh\document\document.py", line 391, in apply_json_patch
    DocumentPatchedEvent.handle_json(self, event_json, references, setter)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\bokeh\document\events.py", line 259, in handle_json
    handler(doc, event_json, references, setter)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\bokeh\document\events.py", line 300, in _handle_json
    cb(event_json["msg_data"])
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\bokeh\document\callbacks.py", line 355, in trigger_json_event
    model._trigger_event(event)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\bokeh\util\callback_manager.py", line 119, in _trigger_event
    self.document.callbacks.notify_event(cast(Model, self), event, invoke)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\bokeh\document\callbacks.py", line 247, in notify_event
    invoke_with_curdoc(doc, callback_invoker)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\bokeh\document\callbacks.py", line 408, in invoke_with_curdoc
    return f()
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\bokeh\util\callback_manager.py", line 115, in invoke
    cast(EventCallbackWithEvent, callback)(event)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\panel\reactive.py", line 406, in _server_event
    self._comm_event(event)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\panel\reactive.py", line 398, in _comm_event
    self._process_bokeh_event(event)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\panel\reactive.py", line 345, in _process_bokeh_event
    self._process_event(event)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\panel\widgets\button.py", line 176, in _process_event
    self.clicks += 1
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\param\parameterized.py", line 351, in _f
    instance_param.__set__(obj, val)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\param\parameterized.py", line 353, in _f
    return f(self, obj, val)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\param\__init__.py", line 621, in __set__
    super(Dynamic,self).__set__(obj,val)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\param\parameterized.py", line 353, in _f
    return f(self, obj, val)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\param\parameterized.py", line 1228, in __set__
    obj.param._call_watcher(watcher, event)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\param\parameterized.py", line 2018, in _call_watcher
    self_._execute_watcher(watcher, (event,))
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\param\parameterized.py", line 2000, in _execute_watcher
    watcher.fn(*args, **kwargs)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\panel\param.py", line 475, in event
    self.object.param.trigger(p_name)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\param\parameterized.py", line 1968, in trigger
    self_.set_param(**dict(params, **triggers))
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\param\parameterized.py", line 1904, in set_param
    return self_.update(kwargs)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\param\parameterized.py", line 1877, in update
    self_._batch_call_watchers()
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\param\parameterized.py", line 2038, in _batch_call_watchers
    self_._execute_watcher(watcher, events)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\param\parameterized.py", line 2000, in _execute_watcher
    watcher.fn(*args, **kwargs)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\param\parameterized.py", line 649, in caller
    return function()
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\param\parameterized.py", line 387, in _depends
    return func(*args, **kw)
  File "C:\1_USGS\7_HoloDoodler\1_dan_holodoodler\doodler\components.py", line 605, in _compute_segmentation
    self._segmentation = check_sanity(self._segmentation,self._mask_doodles)
  File "C:\Users\Sharon\anaconda\envs\holodoodler-dev37\lib\site-packages\doodler_engine\annotations_to_segmentations.py", line 351, in check_sanity
    sums = np.bincount(result[mask==k],minlength=len(np.unique(result)))
  File "<__array_function__ internals>", line 6, in bincount
ValueError: object too deep for desired array 

I have included the log, the original image, and the resulting segmentation from the first image I doodled before I received this error.

Holodoodler_issue_2.zip

dbuscombe-usgs commented 1 year ago

Is this still an issue with Venus' latest updates?

venuswku commented 1 year ago

Haven't looked into this issue yet. This is next on my to-do list! I'll update here when I try to recreate this error.

Update I tried to recreate the error three times but I haven't encountered this issue. Here are my outputs for all three attempts: results.zip. From the error message, it looks like it came from the doodler-engine package. Dan made a few bug fixes for doodler-engine after this issue was raised, so those changes might've potentially fixed this issue as well.

2320sharon commented 1 year ago

Good news it works now! I think @venuswku was correct the update to to doodler-engine fixed the bug.