Advancers / keeping track of electrode depth

The new spike sorting branch has a new module to keep track of electrodes' depth over the course of an experiment.

The user can add a number of "Containers". Each container contains a set of advancers (micro manipulators / screws / ...). 

In the example above, there is a "Hyperdrive" container. It has a simple circular design and 16 possible positions for advancers (screws).

The depth of each advancer can be input manually in the edit box. Later, when defining electrodes in the Spike Detector module, the user can attach an advancer to a given electrode and also define an offset relative to the advancer tip (this is useful when there are multiple electrodes that are controlled by the same advancing mechanism, like a depth probe.

To change location of an advancer, simply click on the desired location in the visualization window.

 

For acute experiments with electronically controlled advancers, it is possible to send updates about the current position of the advancer using the Network Events source.

The available API (commands that can be sent/received over 0MQ) are:

  1. "ProcessorCommunication Advancers GetNumAdvancers". This will result a response from GUI of the form "NumAdvancers <numadvancers>".
  2. "ProcessorCommunication Advancers GetAdvancerIdName <advancer_index>". This will result a response from GUI of the form "AdvancerIdName <advancer ID> <advancer name>", where advancer_index is a number between 0 and the value returned by getnumadvancers-1. <AdvancerID> is a unique identifier for each advancer, and <advancer name> is the name of the advancer, as it appears in GUI.
  3. "ProcessorCommunication Advancers GetAdvancerDepth <advancer_ID>". This will result a response from GUI of the form "AdvancerDepth  <depth>", where depth is the current value, defined in mm.
  4. "ProcessorCommunication Advancers SetAdvancerDepth <advancer_ID> <depth_offset>". This will cause advancer <advancer_ID> to increase/decrease its current location by <depth_offset>. A response from GUI of the form "NewAdvancerDepth  <advancerID> <newdepth>", will be returned.