bayer-science-for-a-better-life / topefind-public

Finding the pitfalls of deep learning predictors of interacting residues in antibodies 🦠
BSD 3-Clause "New" or "Revised" License
22 stars 0 forks source link

Viewer becomes unresponsive after a little bit of interaction #1

Closed sdvillal closed 6 months ago

sdvillal commented 1 year ago

Maybe to reproduce:

CrisSherban commented 10 months ago

This still happens. I will try to debug it, and I will come back.

Reproducing it, we currently have a ValueError:

Uncaught (in promise) PythonError: Traceback (most recent call last):
  File "/lib/python3.10/asyncio/futures.py", line 201, in result
    raise self._exception
  File "/lib/python3.10/asyncio/tasks.py", line 232, in __step
    result = coro.send(None)
  File "/lib/python3.10/_pyodide/_base.py", line 532, in eval_code_async
    await CodeRunner(
  File "/lib/python3.10/_pyodide/_base.py", line 355, in run_async
    coroutine = eval(self.code, globals, locals)
  File "<exec>", line 4, in <module>
  File "/lib/python3.10/site-packages/bokeh/document/document.py", line 391, in apply_json_patch
    DocumentPatchedEvent.handle_json(self, event_json, references, setter)
  File "/lib/python3.10/site-packages/bokeh/document/events.py", line 259, in handle_json
    handler(doc, event_json, references, setter)
  File "/lib/python3.10/site-packages/bokeh/document/events.py", line 300, in _handle_json
    cb(event_json["msg_data"])
  File "/lib/python3.10/site-packages/bokeh/document/callbacks.py", line 355, in trigger_json_event
    model._trigger_event(event)
  File "/lib/python3.10/site-packages/bokeh/util/callback_manager.py", line 119, in _trigger_event
    self.document.callbacks.notify_event(cast(Model, self), event, invoke)
  File "/lib/python3.10/site-packages/bokeh/document/callbacks.py", line 247, in notify_event
    invoke_with_curdoc(doc, callback_invoker)
  File "/lib/python3.10/site-packages/bokeh/document/callbacks.py", line 408, in invoke_with_curdoc
    return f()
  File "/lib/python3.10/site-packages/bokeh/util/callback_manager.py", line 115, in invoke
    cast(EventCallbackWithEvent, callback)(event)
  File "/lib/python3.10/site-packages/panel/reactive.py", line 426, in _server_event
    self._comm_event(doc, event)
  File "/lib/python3.10/site-packages/panel/reactive.py", line 413, in _comm_event
    state._handle_exception(e)
  File "/lib/python3.10/site-packages/panel/io/state.py", line 408, in _handle_exception
    raise exception
  File "/lib/python3.10/site-packages/panel/reactive.py", line 411, in _comm_event
    self._process_bokeh_event(doc, event)
  File "/lib/python3.10/site-packages/panel/reactive.py", line 348, in _process_bokeh_event
    self._process_event(event)
  File "/lib/python3.10/site-packages/panel/widgets/button.py", line 184, in _process_event
    self.clicks += 1
  File "/lib/python3.10/site-packages/param/parameterized.py", line 367, in _f
    instance_param.__set__(obj, val)
  File "/lib/python3.10/site-packages/param/parameterized.py", line 369, in _f
    return f(self, obj, val)
  File "/lib/python3.10/site-packages/param/__init__.py", line 625, in __set__
    super(Dynamic,self).__set__(obj,val)
  File "/lib/python3.10/site-packages/param/parameterized.py", line 369, in _f
    return f(self, obj, val)
  File "/lib/python3.10/site-packages/param/parameterized.py", line 1252, in __set__
    obj.param._call_watcher(watcher, event)
  File "/lib/python3.10/site-packages/param/parameterized.py", line 2043, in _call_watcher
    self_._execute_watcher(watcher, (event,))
  File "/lib/python3.10/site-packages/param/parameterized.py", line 2025, in _execute_watcher
    watcher.fn(*args, **kwargs)
  File "/lib/python3.10/site-packages/panel/param.py", line 506, in action
    value(self.object)
  File "<exec>", line 235, in _action_show_model_x_ground_truth_diff
  File "<exec>", line 522, in color
  File "/lib/python3.10/site-packages/param/parameterized.py", line 367, in _f
    instance_param.__set__(obj, val)
  File "/lib/python3.10/site-packages/param/parameterized.py", line 369, in _f
    return f(self, obj, val)
  File "/lib/python3.10/site-packages/param/parameterized.py", line 1252, in __set__
    obj.param._call_watcher(watcher, event)
  File "/lib/python3.10/site-packages/param/parameterized.py", line 2043, in _call_watcher
    self_._execute_watcher(watcher, (event,))
  File "/lib/python3.10/site-packages/param/parameterized.py", line 2025, in _execute_watcher
    watcher.fn(*args, **kwargs)
  File "/lib/python3.10/site-packages/panel/reactive.py", line 308, in _param_change
    self._apply_update(named_events, msg, model, ref)
  File "/lib/python3.10/site-packages/panel/reactive.py", line 240, in _apply_update
    self._update_model(events, msg, root, model, doc, comm)
  File "/lib/python3.10/site-packages/panel/reactive.py", line 1772, in _update_model
    self._set_on_model(data_msg, root, model.data)
  File "/lib/python3.10/site-packages/panel/reactive.py", line 1727, in _set_on_model
    model.update(**msg)
  File "/lib/python3.10/site-packages/bokeh/core/has_props.py", line 413, in update
    setattr(self, k, v)
  File "/lib/python3.10/site-packages/bokeh/core/has_props.py", line 226, in __setattr__
    return super().__setattr__(name, value)
  File "/lib/python3.10/site-packages/bokeh/core/property/descriptors.py", line 285, in __set__
    self._set(obj, old, value, setter=setter)
  File "/lib/python3.10/site-packages/bokeh/core/property/descriptors.py", line 559, in _set
    self._trigger(obj, old, value, hint=hint, setter=setter)
  File "/lib/python3.10/site-packages/bokeh/core/property/descriptors.py", line 637, in _trigger
    obj.trigger(self.name, old, value, hint, setter)
  File "/lib/python3.10/site-packages/bokeh/model/model.py", line 567, in trigger
    super().trigger(descriptor.name, old, new, hint=hint, setter=setter)
  File "/lib/python3.10/site-packages/bokeh/util/callback_manager.py", line 194, in trigger
    self.document.callbacks.notify_change(cast(Model, self), attr, old, new, hint, setter, invoke)
  File "/lib/python3.10/site-packages/bokeh/document/callbacks.py", line 236, in notify_change
    self.trigger_on_change(event)
  File "/lib/python3.10/site-packages/bokeh/document/callbacks.py", line 378, in trigger_on_change
    invoke_with_curdoc(doc, invoke_callbacks)
  File "/lib/python3.10/site-packages/bokeh/document/callbacks.py", line 408, in invoke_with_curdoc
    return f()
  File "/lib/python3.10/site-packages/bokeh/document/callbacks.py", line 377, in invoke_callbacks
    cb(event)
  File "/lib/python3.10/site-packages/panel/io/pyodide.py", line 223, in pysync
    json_patch, buffers = process_document_events([event], use_buffers=True)
  File "/lib/python3.10/site-packages/bokeh/protocol/messages/patch_doc.py", line 144, in process_document_events
    return serialize_json(json), buffers or []
  File "/lib/python3.10/site-packages/bokeh/core/json_encoder.py", line 171, in serialize_json
    return json.dumps(obj, cls=BokehJSONEncoder, allow_nan=False, indent=indent, separators=separators, sort_keys=True, **kwargs)
  File "/lib/python3.10/json/__init__.py", line 238, in dumps
    **kw).encode(obj)
  File "/lib/python3.10/json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/lib/python3.10/json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
ValueError: Out of range float values are not JSON compliant

    at new_error (pyodide.asm.js:10:180819)
    at pyodide.asm.wasm:0xe78a8
    at pyodide.asm.wasm:0xee969
    at method_call_trampoline (pyodide.asm.js:10:230214)
    at pyodide.asm.wasm:0x131392
    at pyodide.asm.wasm:0x20245a
    at pyodide.asm.wasm:0x16ca8f
    at pyodide.asm.wasm:0x1318a6
    at pyodide.asm.wasm:0x1319a0
    at pyodide.asm.wasm:0x131a43
    at pyodide.asm.wasm:0x1eb761
    at pyodide.asm.wasm:0x1e5790
    at pyodide.asm.wasm:0x131a86
    at pyodide.asm.wasm:0x1ed543
    at pyodide.asm.wasm:0x1eb1a3
    at pyodide.asm.wasm:0x1e5790
    at pyodide.asm.wasm:0x131a86
    at pyodide.asm.wasm:0xee1a0
    at pyodide.asm.wasm:0xee041
    at Module.callPyObjectKwargs (pyodide.asm.js:10:123403)
    at Module.callPyObject (pyodide.asm.js:10:123781)
    at wrapper (pyodide.asm.js:10:220254)
CrisSherban commented 10 months ago

I think that this happened because AP was returning -0.0 (now it's getting set to return 0.0 in scikit-learn: https://github.com/scikit-learn/scikit-learn/issues/24381). Unfortunately, I did not handle the case when the benchmark file was saved.

It happens for only 1 heavy chain and 2 light chains where there is no positive. I will fix the file in the main branch and close or re-debug if necessary.