Deeplabcut: comments on label frames with DLC 2.2b5 on Windows 10

Created on 26 May 2020  路  15Comments  路  Source: DeepLabCut/DeepLabCut

Thanks for the amazing work (as usual)!!! and for releasing the 2.2 version, this is very exciting. I noticed some strange behavior after deeplabcut.launch_dlc() in the GUI Label Frames section see below:

1- when repositioning a label the label will be repositioned and zoom on the area will take place at the same time
2- Skeleton can only be built if at least one image has all the part present may not always be the case where all the parts of the animal are present in at least one frame [several easy workarounds by editing directly the yaml file or temporarily placing missing label so not a big issue]
3- multiple AttributeError: 'StatusBar' object has no attribute 'set_function' in the console during labeling (that are notification and do not see to alter the function of the labeling)
4- issue with saving the labels when zoom has been used during labeling (see below), if zoom then label the area of interest then save GUI crash and no label are saved returning following error

AttributeError                            Traceback (most recent call last)
~\Anaconda3\envs\DLC-GPU\lib\site-packages\deeplabcut\generate_training_dataset\multiple_individuals_labeling_toolbox.py in saveDataSet(self, event)
   1178         self.statusbar.SetStatusText("File saved")
   1179         MainFrame.saveEachImage(self)
-> 1180         MainFrame.updateZoomPan(self)
   1181         # Windows compatible
   1182         self.dataFrame.sort_index(inplace=True)

~\Anaconda3\envs\DLC-GPU\lib\site-packages\deeplabcut\generate_training_dataset\multiple_individuals_labeling_toolbox.py in updateZoomPan(self)
   1205             self.pan.SetValue(False)
   1206         if self.zoom.GetValue() == True:
-> 1207             self.toolbar.zoom()
   1208             self.zoom.SetValue(False)
   1209

~\Anaconda3\envs\DLC-GPU\lib\site-packages\matplotlib\backends\backend_wx.py in zoom(self, *args)
   1347     def zoom(self, *args):
   1348         self.ToggleTool(self.wx_ids['Pan'], False)
-> 1349         NavigationToolbar2.zoom(self, *args)
   1350
   1351     def pan(self, *args):

~\Anaconda3\envs\DLC-GPU\lib\site-packages\matplotlib\backend_bases.py in zoom(self, *args)
   3128             a.set_navigate_mode(self._active)
   3129
-> 3130         self.set_message(self.mode)
   3131
   3132     def set_history_buttons(self):

~\Anaconda3\envs\DLC-GPU\lib\site-packages\matplotlib\backends\backend_wx.py in set_message(self, s)
   1503         status_bar = self.GetTopLevelParent().GetStatusBar()
   1504         if status_bar is not None:
-> 1505             status_bar.set_function(s)
   1506
   1507     def set_history_buttons(self):

AttributeError: 'StatusBar' object has no attribute 'set_function'

All 15 comments

Hello @juplab,
thank you for the encouraging words!
The StatusBar AttributeError has recently been fixed by Matplotlib and should be live with their 3.2.2 version (no due date though; https://github.com/matplotlib/matplotlib/pull/17407). I'll try to find a workaround meanwhile.
As for the SkeletonBuilder, I like your second suggestion best :)

thanks for the rapid feedback! One additional comment with the skeleton builder:
It could be useful to be able to load the existing skeleton from the config.yaml file to update/modify it.

  1. load images / skeleton is build / export update the yaml file (works great)
    Now if a skeleton that was already build written in config.ymal file needs to be modified or updated using the skeleton builder restart from scratch.

Thanks for the feedback!

1- when repositioning a label the label will be repositioned and zoom on the area will take place at the same time

(@jeylau - we should check that zoom is auto-off, so this shouldn't happen; I believe we also dropped some hotkeys in this GUI vs. the single animal code, that we should bring back over 馃憤
)

@juplab, do you happen to toggle zoom using the toolbar at the top left? While I faced no problem using the zoom button, the native toolbar does seem problematic :/

I think this is more related to what Mackenzie mentioned with the zoom button being locked in the user can just unclick the zoom button after use (no big deal). However the zoom being auto-off after each use might be better.
https://www.dropbox.com/s/rekgfe0ercb77lc/test.mp4?dl=0

@jeylau - looking at @juplab video, it's not the mulit-animal labeling GUI actually;

@juplab so this is the non multi-animal project, but using 2.2b5, correct? i.e. when you created the project, you did not set multianimal=True?

I just pull out a single animal project for the shared video. The behavior of the GUI is the same with single or multi animal project. I am in DLC-GPU environment with 2.2b5. I can do another video with a multi-animal project if you want to but it is the same

No problem, okay good to know! I don't have a windows machine at home these days (still working out of lab), so unfortunately I can test it fully, but on ubuntu and MacOS and we don't have any issues (i.e, I don't see that error you are getting in the terminal). Could you actually copy/paste that here so I can investigate a bit further though? thanks again!

(and that for the kind words too - it's totally appreciated to not only just get issues :smile: )

looks like it may be something wrong with my setup I have the issue due to sticky zoom even on linux
see new video here https://www.dropbox.com/s/99w24ru5u0c34yc/test2.mp4?dl=0

  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2817, in mouse_move
    self.set_message(s)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2817, in mouse_move
    self.set_message(s)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2817, in mouse_move
    self.set_message(s)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2817, in mouse_move
    self.set_message(s)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/deeplabcut/generate_training_dataset/multiple_individuals_labeling_toolbox.py in zoomButton(self, event)
    447             self.prezoom_xlim = self.axes.get_xlim()
    448             self.prezoom_ylim = self.axes.get_ylim()
--> 449             self.toolbar.zoom()
    450             self.statusbar.SetStatusText("Zoom On")
    451             self.pan.SetValue(False)

~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py in zoom(self, *args)
   1347     def zoom(self, *args):
   1348         self.ToggleTool(self.wx_ids['Pan'], False)
-> 1349         NavigationToolbar2.zoom(self, *args)
   1350 
   1351     def pan(self, *args):

~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py in zoom(self, *args)
   3128             a.set_navigate_mode(self._active)
   3129 
-> 3130         self.set_message(self.mode)
   3131 
   3132     def set_history_buttons(self):

~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py in set_message(self, s)
   1503         status_bar = self.GetTopLevelParent().GetStatusBar()
   1504         if status_bar is not None:
-> 1505             status_bar.set_function(s)
   1506 
   1507     def set_history_buttons(self):

AttributeError: 'StatusBar' object has no attribute 'set_function'
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/deeplabcut/generate_training_dataset/multiple_individuals_labeling_toolbox.py in helpButton(self, event)
    417         Opens Instructions
    418         """
--> 419         MainFrame.updateZoomPan(self)
    420         wx.MessageBox(
    421             "1. Select an individual and one of the body parts from the radio buttons to add a label (if necessary change config.yaml first to edit the label names). \n\n2. Right clicking on the image will add the selected label and the next available label will be selected from the radio button. \n The label will be marked as circle filled with a unique color.\n\n3. To change the marker size, mark the checkbox and move the slider. \n\n4. Hover your mouse over this newly added label to see its name. \n\n5. Use left click and drag to move the label position.  \n\n6. Once you are happy with the position, right click to add the next available label. You can always reposition the old labels, if required. You can delete a label with the middle button mouse click. \n\n7. Click Next/Previous to move to the next/previous image.\n User can also add a missing label by going to a previous/next image and using the left click to add the selected label.\n NOTE: the user cannot add a label if the label is already present. \n\n8. When finished labeling all the images, click 'Save' to save all the labels as a .h5 file. \n\n9. Click OK to continue using the labeling GUI.",

~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/deeplabcut/generate_training_dataset/multiple_individuals_labeling_toolbox.py in updateZoomPan(self)
   1205             self.pan.SetValue(False)
   1206         if self.zoom.GetValue() == True:
-> 1207             self.toolbar.zoom()
   1208             self.zoom.SetValue(False)
   1209 

~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py in zoom(self, *args)
   1347     def zoom(self, *args):
   1348         self.ToggleTool(self.wx_ids['Pan'], False)
-> 1349         NavigationToolbar2.zoom(self, *args)
   1350 
   1351     def pan(self, *args):

~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py in zoom(self, *args)
   3128             a.set_navigate_mode(self._active)
   3129 
-> 3130         self.set_message(self.mode)
   3131 
   3132     def set_history_buttons(self):

~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py in set_message(self, s)
   1503         status_bar = self.GetTopLevelParent().GetStatusBar()
   1504         if status_bar is not None:
-> 1505             status_bar.set_function(s)
   1506 
   1507     def set_history_buttons(self):

AttributeError: 'StatusBar' object has no attribute 'set_function'
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/deeplabcut/generate_training_dataset/multiple_individuals_labeling_toolbox.py in helpButton(self, event)
    417         Opens Instructions
    418         """
--> 419         MainFrame.updateZoomPan(self)
    420         wx.MessageBox(
    421             "1. Select an individual and one of the body parts from the radio buttons to add a label (if necessary change config.yaml first to edit the label names). \n\n2. Right clicking on the image will add the selected label and the next available label will be selected from the radio button. \n The label will be marked as circle filled with a unique color.\n\n3. To change the marker size, mark the checkbox and move the slider. \n\n4. Hover your mouse over this newly added label to see its name. \n\n5. Use left click and drag to move the label position.  \n\n6. Once you are happy with the position, right click to add the next available label. You can always reposition the old labels, if required. You can delete a label with the middle button mouse click. \n\n7. Click Next/Previous to move to the next/previous image.\n User can also add a missing label by going to a previous/next image and using the left click to add the selected label.\n NOTE: the user cannot add a label if the label is already present. \n\n8. When finished labeling all the images, click 'Save' to save all the labels as a .h5 file. \n\n9. Click OK to continue using the labeling GUI.",

~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/deeplabcut/generate_training_dataset/multiple_individuals_labeling_toolbox.py in updateZoomPan(self)
   1205             self.pan.SetValue(False)
   1206         if self.zoom.GetValue() == True:
-> 1207             self.toolbar.zoom()
   1208             self.zoom.SetValue(False)
   1209 

~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py in zoom(self, *args)
   1347     def zoom(self, *args):
   1348         self.ToggleTool(self.wx_ids['Pan'], False)
-> 1349         NavigationToolbar2.zoom(self, *args)
   1350 
   1351     def pan(self, *args):

~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py in zoom(self, *args)
   3128             a.set_navigate_mode(self._active)
   3129 
-> 3130         self.set_message(self.mode)
   3131 
   3132     def set_history_buttons(self):

~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py in set_message(self, s)
   1503         status_bar = self.GetTopLevelParent().GetStatusBar()
   1504         if status_bar is not None:
-> 1505             status_bar.set_function(s)
   1506 
   1507     def set_history_buttons(self):

AttributeError: 'StatusBar' object has no attribute 'set_function'
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/deeplabcut/generate_training_dataset/multiple_individuals_labeling_toolbox.py in zoomButton(self, event)
    451             self.pan.SetValue(False)
    452         else:
--> 453             self.toolbar.zoom()
    454             self.statusbar.SetStatusText("Zoom Off")
    455 

~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py in zoom(self, *args)
   1347     def zoom(self, *args):
   1348         self.ToggleTool(self.wx_ids['Pan'], False)
-> 1349         NavigationToolbar2.zoom(self, *args)
   1350 
   1351     def pan(self, *args):

~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py in zoom(self, *args)
   3128             a.set_navigate_mode(self._active)
   3129 
-> 3130         self.set_message(self.mode)
   3131 
   3132     def set_history_buttons(self):

~/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py in set_message(self, s)
   1503         status_bar = self.GetTopLevelParent().GetStatusBar()
   1504         if status_bar is not None:
-> 1505             status_bar.set_function(s)
   1506 
   1507     def set_history_buttons(self):

AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'
Traceback (most recent call last):
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 196, in process
    func(*args, **kwargs)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backend_bases.py", line 2819, in mouse_move
    self.set_message(self.mode)
  File "/home/rum/anaconda3/envs/DLC-GPU/lib/python3.7/site-packages/matplotlib/backends/backend_wx.py", line 1505, in set_message
    status_bar.set_function(s)
AttributeError: 'StatusBar' object has no attribute 'set_function'

okay! yes, I think it's a wx and matplotlib issue: https://github.com/matplotlib/matplotlib/issues/17085

could you run: pip install wxPython==4.0.7.post2 and pip install matplotlib==3.0.3

perfect fix, thanks a lot, Mackenzie! and sorry to have bothered you with this - quick questions is there a limit considerations to have in terms of number of skeleton for the training (thinking about the advice of over connecting in multi-animal mode)? Again thanks a lot for all you do and for making science so much more fun!

no worries! Good to know that solves it :)

re: the skeleton. You do have a lot of points (from the clips above), so there could be a lot of connections... there is a bit of "limit" in terms of speed, i.e., the more connections the slower it can become when you run inference. Given that, I wouldn't over connect every point; i.e. likely a given pupil doesn't need more than 1 connection to it's neighbor, but perhaps the hand you'd like to connect digit tips to the base of the wrist, other knuckles, etc. If that makes sense?

we did make this merge though (#708), which adds back some hotkeys for speed of labeling/skipping over bodyparts), so if you want to install from github!

great thanks a lot!

Was this page helpful?
0 / 5 - 0 ratings