Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Basic cell selection model #165

Open
campagnola opened this issue Sep 27, 2023 · 7 comments
Open

Basic cell selection model #165

campagnola opened this issue Sep 27, 2023 · 7 comments
Assignees

Comments

@campagnola
Copy link
Contributor

campagnola commented Sep 27, 2023

Models to identify patchable cells from brightfield or fluorescent images

  • Something like cellpose, but perhaps we don't need full segmentation; only cell centers
  • Ability for user to create and tune new models (+1 for cellpose)
  • Ideally 2-stage: identify all cells, then rank cells based on patchability
  • We can use for selecting cells to patch as well as for obstacle avoidance
@outofculture
Copy link
Collaborator

@jessicatrnh I have an experimental version of this on MP0 now. it's got some bugs, and probably isn't going to do super well, but I'm curious to find out if it's successful at all.

  1. Find a section of tissue with some healthy cells positioned somewhere around the center.
  2. Open the "Automation Debug" module (under the "Utilities" section of the ACQ4 modules list)
  3. Hit the "Detect Neurons" button.
  4. Wait 30s for it to timeout.
  5. Repeat the last two steps one or two more times.
  6. After that, pressing the button should give you bright red boxes in the Camera window around some cells.

@jessicatrnh
Copy link
Contributor

jessicatrnh commented Jan 18, 2024

After running through steps 3 and 4 a few times, a large error message popped up. No boxes were drawn.

`

<style type="text/css"> p, li { white-space: pre-wrap; } </style>

2024-01-18T14:10:19.448051-08:00 Unexpected error:

RuntimeError: Task <acq4.util.future.Future object at 0x000002930284D090> did not complete: Task <acq4.util.future.Future object at 0x000002930284D000> did not complete: ===> Remote exception was:Error while processing request W10DT1DQC738.process-7024.thread-12c8:tcp://127.0.0.1:54744 [1]: File "", line 198, in _run_module_as_main  File "", line 88, in _run_code  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\bootstrap.py", line 79, in     server.run_forever()  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 461, in run_forever    self._process_one(name, msg)  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 318, in _process_one    self._send_error(caller, req_id, exc)  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 330, in _send_error    exc_str += traceback.format_stack() < exception caught here >Traceback (most recent call last):  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 296, in _process_one    result = self.process_action(action, opts, return_type, caller)             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 358, in process_action    result = obj(*fnargs)             ^^^^^^^^^^^^  File "C:\Users\svc_multipatch\acq4\acq4\util\imaging\object_detection.py", line 97, in _do_neuron_detection    boxes = list(my_yolo.get_boxes(image).keys())                 ^^^^^^^^^^^^^^^^^^^^^^^^  File "C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py", line 141, in get_boxes    return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)}           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py", line 141, in     return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)}           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^TypeError: unhashable type: 'numpy.ndarray' RuntimeError: Task <acq4.util.future.Future object at 0x000002930284D090> did not complete: Task <acq4.util.future.Future object at 0x000002930284D000> did not complete: ===> Remote exception was:Error while processing request W10DT1DQC738.process-7024.thread-12c8:tcp://127.0.0.1:54744 [1]: File "", line 198, in _run_module_as_main  File "", line 88, in _run_code  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\bootstrap.py", line 79, in     server.run_forever()  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 461, in run_forever    self._process_one(name, msg)  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 318, in _process_one    self._send_error(caller, req_id, exc)  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 330, in _send_error    exc_str += traceback.format_stack() < exception caught here >Traceback (most recent call last):  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 296, in _process_one    result = self.process_action(action, opts, return_type, caller)             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 358, in process_action    result = obj(*fnargs)             ^^^^^^^^^^^^  File "C:\Users\svc_multipatch\acq4\acq4\util\imaging\object_detection.py", line 97, in _do_neuron_detection    boxes = list(my_yolo.get_boxes(image).keys())                 ^^^^^^^^^^^^^^^^^^^^^^^^  File "C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py", line 141, in get_boxes    return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)}           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py", line 141, in     return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)}           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^TypeError: unhashable type: 'numpy.ndarray'  File C:\Users\svc_multipatch\acq4\acq4\util\future.py, line 75, in _executeInThread    self._returnVal = func(*args, **kwds)                      ^^^^^^^^^^^^^^^^^^^  File C:\Users\svc_multipatch\acq4\acq4\util\imaging\object_detection.py, line 90, in detect_neurons    return rmt_this._do_neuron_detection(rmt_array.data, transform)           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\proxy.py, line 337, in call    return self._client().call_obj(obj=self, args=args, kwargs=kwargs, **opts)           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\client.py, line 289, in call_obj    return self.send('call_obj', opts=opts, **kwds)           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\client.py, line 270, in send    return fut.result(timeout=timeout)           ^^^^^^^^^^^^^^^^^^^^^^^^^^^  File C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\client.py, line 628, in result    return concurrent.futures.Future.result(self)           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File C:\Users\svc_multipatch\AppData\Local\miniconda3\envs\acq4-torch\Lib\concurrent\futures_base.py, line 449, in result    return self.__get_result()           ^^^^^^^^^^^^^^^^^^^  File C:\Users\svc_multipatch\AppData\Local\miniconda3\envs\acq4-torch\Lib\concurrent\futures_base.py, line 401, in __get_result    raise self._exceptionteleprox.client.RemoteCallException: ===> Remote exception was:Error while processing request W10DT1DQC738.process-7024.thread-12c8:tcp://127.0.0.1:54744 [1]: File "", line 198, in _run_module_as_main  File "", line 88, in _run_code  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\bootstrap.py", line 79, in     server.run_forever()  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 461, in run_forever    self._process_one(name, msg)  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 318, in _process_one    self._send_error(caller, req_id, exc)  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 330, in _send_error    exc_str += traceback.format_stack() < exception caught here >Traceback (most recent call last):  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 296, in _process_one    result = self.process_action(action, opts, return_type, caller)             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 358, in process_action    result = obj(*fnargs)             ^^^^^^^^^^^^  File "C:\Users\svc_multipatch\acq4\acq4\util\imaging\object_detection.py", line 97, in _do_neuron_detection    boxes = list(my_yolo.get_boxes(image).keys())                 ^^^^^^^^^^^^^^^^^^^^^^^^  File "C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py", line 141, in get_boxes    return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)}           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py, line 141, in     return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)}           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^TypeError: unhashable type: 'numpy.ndarray'The above exception was the direct cause of the following exception:  File C:\Users\svc_multipatch\acq4\acq4\util\future.py, line 75, in _executeInThread    self._returnVal = func(*args, **kwds)                      ^^^^^^^^^^^^^^^^^^^  File C:\Users\svc_multipatch\acq4\acq4\modules\AutomationDebug.py, line 62, in _detectNeurons    return _future.waitFor(detect_neurons(frame)).getResult()           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File C:\Users\svc_multipatch\acq4\acq4\util\future.py, line 233, in waitFor    future.wait(0.1)  File C:\Users\svc_multipatch\acq4\acq4\util\future.py, line 188, in wait    raise RuntimeError(msg) from self._excInfo[1]RuntimeError: Task <acq4.util.future.Future object at 0x000002930284D000> did not complete: ===> Remote exception was:Error while processing request W10DT1DQC738.process-7024.thread-12c8:tcp://127.0.0.1:54744 [1]: File "", line 198, in _run_module_as_main  File "", line 88, in _run_code  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\bootstrap.py", line 79, in     server.run_forever()  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 461, in run_forever    self._process_one(name, msg)  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 318, in _process_one    self._send_error(caller, req_id, exc)  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 330, in _send_error    exc_str += traceback.format_stack() < exception caught here >Traceback (most recent call last):  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 296, in _process_one    result = self.process_action(action, opts, return_type, caller)             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 358, in process_action    result = obj(*fnargs)             ^^^^^^^^^^^^  File "C:\Users\svc_multipatch\acq4\acq4\util\imaging\object_detection.py", line 97, in _do_neuron_detection    boxes = list(my_yolo.get_boxes(image).keys())                 ^^^^^^^^^^^^^^^^^^^^^^^^  File "C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py", line 141, in get_boxes    return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)}           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  File C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py, line 141, in     return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)}           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^TypeError: unhashable type: 'numpy.ndarray'The above exception was the direct cause of the following exception:  File C:\Users\svc_multipatch\acq4\acq4\modules\AutomationDebug.py, line 40, in _postDetectNeurons    for start, end in neurons_fut.getResult():                      ^^^^^^^^^^^^^^^^^^^^^^^  File C:\Users\svc_multipatch\acq4\acq4\util\future.py, line 81, in getResult    self.wait(**kwds)  File C:\Users\svc_multipatch\acq4\acq4\util\future.py, line 188, in wait    raise RuntimeError(msg) from self._excInfo[1]

2024-01-18T14:10:19.448051-08:00 Unexpected error: RuntimeError: Task did not complete: Task did not complete: ===> Remote exception was: Error while processing request W10DT1DQC738.process-7024.thread-12c8:tcp://127.0.0.1:54744 [1]: File "", line 198, in _run_module_as_main File "", line 88, in _run_code File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\bootstrap.py", line 79, in server.run_forever() File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 461, in run_forever self._process_one(name, msg) File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 318, in _process_one self._send_error(caller, req_id, exc) File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 330, in _send_error exc_str += traceback.format_stack() < exception caught here > Traceback (most recent call last): File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 296, in _process_one result = self.process_action(action, opts, return_type, caller) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 358, in process_action result = obj(*fnargs) ^^^^^^^^^^^^ File "C:\Users\svc_multipatch\acq4\acq4\util\imaging\object_detection.py", line 97, in _do_neuron_detection boxes = list(my_yolo.get_boxes(image).keys()) ^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py", line 141, in get_boxes return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py", line 141, in return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)} ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ TypeError: unhashable type: 'numpy.ndarray'

RuntimeError: Task <acq4.util.future.Future object at 0x000002930284D090> did not complete: Task <acq4.util.future.Future object at 0x000002930284D000> did not complete:
===> Remote exception was:
Error while processing request W10DT1DQC738.process-7024.thread-12c8:tcp://127.0.0.1:54744 [1]: File "", line 198, in _run_module_as_main
File "", line 88, in _run_code
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\bootstrap.py", line 79, in
server.run_forever()
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 461, in run_forever
self._process_one(name, msg)
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 318, in _process_one
self._send_error(caller, req_id, exc)
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 330, in _send_error
exc_str += traceback.format_stack()
< exception caught here >
Traceback (most recent call last):
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 296, in _process_one
result = self.process_action(action, opts, return_type, caller)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 358, in process_action
result = obj(*fnargs)
^^^^^^^^^^^^
File "C:\Users\svc_multipatch\acq4\acq4\util\imaging\object_detection.py", line 97, in _do_neuron_detection
boxes = list(my_yolo.get_boxes(image).keys())
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py", line 141, in get_boxes
return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py", line 141, in
return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: unhashable type: 'numpy.ndarray'

File C:\Users\svc_multipatch\acq4\acq4\util\future.py, line 75, in _executeInThread
self._returnVal = func(*args, **kwds)
^^^^^^^^^^^^^^^^^^^
File C:\Users\svc_multipatch\acq4\acq4\util\imaging\object_detection.py, line 90, in detect_neurons
return rmt_this._do_neuron_detection(rmt_array.data, transform)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\proxy.py, line 337, in call
return self._client().call_obj(obj=self, args=args, kwargs=kwargs, **opts)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\client.py, line 289, in call_obj
return self.send('call_obj', opts=opts, **kwds)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\client.py, line 270, in send
return fut.result(timeout=timeout)
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\client.py, line 628, in result
return concurrent.futures.Future.result(self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File C:\Users\svc_multipatch\AppData\Local\miniconda3\envs\acq4-torch\Lib\concurrent\futures_base.py, line 449, in result
return self.__get_result()
^^^^^^^^^^^^^^^^^^^
File C:\Users\svc_multipatch\AppData\Local\miniconda3\envs\acq4-torch\Lib\concurrent\futures_base.py, line 401, in __get_result
raise self._exception
teleprox.client.RemoteCallException:
===> Remote exception was:
Error while processing request W10DT1DQC738.process-7024.thread-12c8:tcp://127.0.0.1:54744 [1]: File "", line 198, in _run_module_as_main
File "", line 88, in _run_code
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\bootstrap.py", line 79, in
server.run_forever()
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 461, in run_forever
self._process_one(name, msg)
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 318, in _process_one
self._send_error(caller, req_id, exc)
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 330, in _send_error
exc_str += traceback.format_stack()
< exception caught here >
Traceback (most recent call last):
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 296, in _process_one
result = self.process_action(action, opts, return_type, caller)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 358, in process_action
result = obj(*fnargs)
^^^^^^^^^^^^
File "C:\Users\svc_multipatch\acq4\acq4\util\imaging\object_detection.py", line 97, in _do_neuron_detection
boxes = list(my_yolo.get_boxes(image).keys())
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py", line 141, in get_boxes
return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py, line 141, in
return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: unhashable type: 'numpy.ndarray'

The above exception was the direct cause of the following exception:

File C:\Users\svc_multipatch\acq4\acq4\util\future.py, line 75, in _executeInThread
self._returnVal = func(*args, **kwds)
^^^^^^^^^^^^^^^^^^^
File C:\Users\svc_multipatch\acq4\acq4\modules\AutomationDebug.py, line 62, in _detectNeurons
return _future.waitFor(detect_neurons(frame)).getResult()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File C:\Users\svc_multipatch\acq4\acq4\util\future.py, line 233, in waitFor
future.wait(0.1)
File C:\Users\svc_multipatch\acq4\acq4\util\future.py, line 188, in wait
raise RuntimeError(msg) from self._excInfo[1]
RuntimeError: Task <acq4.util.future.Future object at 0x000002930284D000> did not complete:
===> Remote exception was:
Error while processing request W10DT1DQC738.process-7024.thread-12c8:tcp://127.0.0.1:54744 [1]: File "", line 198, in _run_module_as_main
File "", line 88, in _run_code
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\bootstrap.py", line 79, in
server.run_forever()
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 461, in run_forever
self._process_one(name, msg)
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 318, in _process_one
self._send_error(caller, req_id, exc)
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 330, in _send_error
exc_str += traceback.format_stack()
< exception caught here >
Traceback (most recent call last):
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 296, in _process_one
result = self.process_action(action, opts, return_type, caller)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\svc_multipatch\acq4\dependencies\teleprox\teleprox\server.py", line 358, in process_action
result = obj(*fnargs)
^^^^^^^^^^^^
File "C:\Users\svc_multipatch\acq4\acq4\util\imaging\object_detection.py", line 97, in _do_neuron_detection
boxes = list(my_yolo.get_boxes(image).keys())
^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py", line 141, in get_boxes
return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File C:\Users\svc_multipatch\acq4\dependencies\neuronDetection\yolo.py, line 141, in
return {b: {"class": out_classes[i], "score": out_scores[i]} for i, b in enumerate(out_boxes)}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: unhashable type: 'numpy.ndarray'

The above exception was the direct cause of the following exception:

File C:\Users\svc_multipatch\acq4\acq4\modules\AutomationDebug.py, line 40, in _postDetectNeurons
for start, end in neurons_fut.getResult():
^^^^^^^^^^^^^^^^^^^^^^^
File C:\Users\svc_multipatch\acq4\acq4\util\future.py, line 81, in getResult
self.wait(**kwds)
File C:\Users\svc_multipatch\acq4\acq4\util\future.py, line 188, in wait
raise RuntimeError(msg) from self._excInfo[1]`

@outofculture
Copy link
Collaborator

Ooo! That's exciting! That means it found cells! New code handles that situation without error, now. The timeout dance is still necessary, though.

@jessicatrnh
Copy link
Contributor

It works! The larger box is drawn around multiple cells.

Image

@jessicatrnh
Copy link
Contributor

Would be nice to have the frame change color when the cells are out of focus, similar to the cell target marker.

@outofculture
Copy link
Collaborator

try out the new model in the "Automation Debug" module!

@outofculture
Copy link
Collaborator

(it still times out the first time you click it, though 😦 )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants