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

Interactive mean curvature measurement not working #233

Open
jo-mueller opened this issue Jan 26, 2023 · 0 comments
Open

Interactive mean curvature measurement not working #233

jo-mueller opened this issue Jan 26, 2023 · 0 comments
Labels
bug Something isn't working

Comments

@jo-mueller
Copy link
Member

This is probably because the frame_by_frame function does not correctly turn the needed metadata from {manifold: [list_of_manifolds]} into [{'manifold': manifold}, ... {'manifold': manifold}]. Full traceback:

AttributeError                            Traceback (most recent call last)
File ~\Anaconda3\envs\stress-test\lib\site-packages\psygnal\_signal.py:851, in SignalInstance._run_emit_loop(self=<SignalInstance 'changed' on PushButton(value=False, annotation=None, name='call_button')>, args=(False,))
    850 try:
--> 851     if caller(args):
        caller = <psygnal._signal._FunctionCaller object at 0x0000026407E1B670>
        args = (False,)
    852         # if the slotcaller returns `True`, the object weakref is
    853         # dead and needs to be disconnected
    854         rem.append(caller)

File ~\Anaconda3\envs\stress-test\lib\site-packages\psygnal\_signal.py:1184, in _FunctionCaller.__call__(self=<psygnal._signal._FunctionCaller object>, args=())
   1183     args = args[: self._max_args]
-> 1184 self._slot(*args)
        args = ()
        self._slot = <function FunctionGui.__init__.<locals>._disable_button_and_call at 0x000002642CFF50D0>
        self = <psygnal._signal._FunctionCaller object at 0x0000026407E1B670>
   1185 return False

File ~\Anaconda3\envs\stress-test\lib\site-packages\magicgui\widgets\_function_gui.py:212, in FunctionGui.__init__.<locals>._disable_button_and_call()
    211 try:
--> 212     self.__call__()
        self = <FunctionGui calculate_mean_curvature_on_manifold(input_manifold: napari_stress._stress.manifold_SPB.manifold = <Points layer 'Result of lebedev quadrature' at 0x2640783e730>) -> Tuple[numpy.ndarray, float, float]>
    213 finally:

File ~\Anaconda3\envs\stress-test\lib\site-packages\magicgui\widgets\_function_gui.py:324, in FunctionGui.__call__(self=<FunctionGui calculate_mean_curvature_on_manifol...0783e730>) -> Tuple[numpy.ndarray, float, float]>, update_widget=False, *args=(), **kwargs={})
    323 with _function_name_pointing_to_widget(self):
--> 324     value = self._function(*bound.args, **bound.kwargs)
        self = <FunctionGui calculate_mean_curvature_on_manifold(input_manifold: napari_stress._stress.manifold_SPB.manifold = <Points layer 'Result of lebedev quadrature' at 0x2640783e730>) -> Tuple[numpy.ndarray, float, float]>
        bound = <BoundArguments (input_manifold=<Points layer 'Result of lebedev quadrature' at 0x2640783e730>)>
        self._function = <function calculate_mean_curvature_on_manifold at 0x000002642CFF6040>
    326 self._call_count += 1

File ~\Anaconda3\envs\stress-test\lib\site-packages\napari_tools_menu\__init__.py:103, in make_gui.<locals>.worker_func(*iargs=(<Points layer 'Result of lebedev quadrature'>,), **ikwargs={})
    101 @wraps(func)
    102 def worker_func(*iargs, **ikwargs):
--> 103     data = func(*iargs, **ikwargs)
        iargs = (<Points layer 'Result of lebedev quadrature' at 0x2640783e730>,)
        func = <function calculate_mean_curvature_on_manifold at 0x00000264724AF9D0>
        ikwargs = {}
    104     if data is None:

File ~\Documents\BiAPoL\Projects\napari-stress\src\napari_stress\_measurements\curvature.py:180, in calculate_mean_curvature_on_manifold(input_manifold=[<napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, ...])
    178     input_manifold = input_manifold.metadata[manifold.__name__]
--> 180 normals = get_normals_on_manifold(input_manifold)
        input_manifold = [<napari_stress._stress.manifold_SPB.manifold object at 0x0000026407E7E310>, <napari_stress._stress.manifold_SPB.manifold object at 0x0000026407E7E400>, <napari_stress._stress.manifold_SPB.manifold object at 0x0000026407E7E940>, <napari_stress._stress.manifold_SPB.manifold object at 0x0000026407E7E130>, <napari_stress._stress.manifold_SPB.manifold object at 0x0000026407EF5700>, <napari_stress._stress.manifold_SPB.manifold object at 0x00000264128212E0>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A6C1AC0>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A5E8F10>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A693BB0>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A5B1730>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A50ED60>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A76A880>, <napari_stress._stress.manifold_SPB.manifold object at 0x0000026407EF50D0>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A515640>, <napari_stress._stress.manifold_SPB.manifold object at 0x00000264127E8E80>, <napari_stress._stress.manifold_SPB.manifold object at 0x00000264127E2D60>, <napari_stress._stress.manifold_SPB.manifold object at 0x00000264731EA6A0>, <napari_stress._stress.manifold_SPB.manifold object at 0x00000264732C49A0>, <napari_stress._stress.manifold_SPB.manifold object at 0x00000264731EFA90>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A8462B0>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002641280B4C0>]
    182 # Test orientation:

File ~\Documents\BiAPoL\Projects\napari-stress\src\napari_stress\_spherical_harmonics\spherical_harmonics.py:279, in get_normals_on_manifold(manifold=[<napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, <napari_stress._stress.manifold_SPB.manifold object>, ...])
    265 """
    266 Calculate the outwards pointing normal vectors on a manifold.
    267 
   (...)
    275 
    276 """
--> 279 normal_X_lbdv_pts = euc_kf.Combine_Chart_Quad_Vals(manifold.Normal_Vec_X_A_Pts,
        euc_kf = <module 'napari_stress._stress.euclidian_k_form_SPB' from 'C:\\Users\\johamuel\\Documents\\BiAPoL\\Projects\\napari-stress\\src\\napari_stress\\_stress\\euclidian_k_form_SPB.py'>
        manifold = [<napari_stress._stress.manifold_SPB.manifold object at 0x0000026407E7E310>, <napari_stress._stress.manifold_SPB.manifold object at 0x0000026407E7E400>, <napari_stress._stress.manifold_SPB.manifold object at 0x0000026407E7E940>, <napari_stress._stress.manifold_SPB.manifold object at 0x0000026407E7E130>, <napari_stress._stress.manifold_SPB.manifold object at 0x0000026407EF5700>, <napari_stress._stress.manifold_SPB.manifold object at 0x00000264128212E0>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A6C1AC0>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A5E8F10>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A693BB0>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A5B1730>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A50ED60>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A76A880>, <napari_stress._stress.manifold_SPB.manifold object at 0x0000026407EF50D0>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A515640>, <napari_stress._stress.manifold_SPB.manifold object at 0x00000264127E8E80>, <napari_stress._stress.manifold_SPB.manifold object at 0x00000264127E2D60>, <napari_stress._stress.manifold_SPB.manifold object at 0x00000264731EA6A0>, <napari_stress._stress.manifold_SPB.manifold object at 0x00000264732C49A0>, <napari_stress._stress.manifold_SPB.manifold object at 0x00000264731EFA90>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002640A8462B0>, <napari_stress._stress.manifold_SPB.manifold object at 0x000002641280B4C0>]
    280                                                    manifold.Normal_Vec_X_B_Pts,
    281                                                    manifold.lebedev_info)
    282 normal_Y_lbdv_pts = euc_kf.Combine_Chart_Quad_Vals(manifold.Normal_Vec_Y_A_Pts,
    283                                                    manifold.Normal_Vec_Y_B_Pts,
    284                                                    manifold.lebedev_info)

AttributeError: 'list' object has no attribute 'Normal_Vec_X_A_Pts'

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

EmitLoopError                             Traceback (most recent call last)
File ~\Anaconda3\envs\stress-test\lib\site-packages\magicgui\widgets\_bases\value_widget.py:57, in ValueWidget._on_value_change(self=PushButton(value=False, annotation=None, name='call_button'), value=False)
     55 if value is self.null_value and not self._nullable:
     56     return
---> 57 self.changed.emit(value)
        value = False
        self.changed = <SignalInstance 'changed' on PushButton(value=False, annotation=None, name='call_button')>
        self = PushButton(value=False, annotation=None, name='call_button')

File ~\Anaconda3\envs\stress-test\lib\site-packages\psygnal\_signal.py:805, in SignalInstance.emit(self=<SignalInstance 'changed' on PushButton(value=False, annotation=None, name='call_button')>, check_nargs=False, check_types=False, asynchronous=False, *args=(False,))
    802     sd.start()
    803     return sd
--> 805 self._run_emit_loop(args)
        self = <SignalInstance 'changed' on PushButton(value=False, annotation=None, name='call_button')>
        args = (False,)
    806 return None

File ~\Anaconda3\envs\stress-test\lib\site-packages\psygnal\_signal.py:856, in SignalInstance._run_emit_loop(self=<SignalInstance 'changed' on PushButton(value=False, annotation=None, name='call_button')>, args=(False,))
    854                 rem.append(caller)
    855         except Exception as e:
--> 856             raise EmitLoopError(slot=caller.slot(), args=args, exc=e) from e
        caller = <psygnal._signal._FunctionCaller object at 0x0000026407E1B670>
        args = (False,)
    858 for slot in rem:
    859     self.disconnect(slot)

EmitLoopError: calling <function FunctionGui.__init__.<locals>._disable_button_and_call at 0x000002642CFF50D0> with args=(False,) caused AttributeError in emit loop.
@jo-mueller jo-mueller added the bug Something isn't working label Jan 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant