MouseLand / Kilosort

Fast spike sorting with drift correction for up to a thousand channels
https://kilosort.readthedocs.io/en/latest/
GNU General Public License v3.0
452 stars 237 forks source link

FEATURE: Applying Kilosort to Microwires in Human Hybrid Electrodes #745

Closed XiaoyuZeng closed 3 weeks ago

XiaoyuZeng commented 1 month ago

Feature you'd like to see:

Hi All,

I'd like to express my sincere gratitude for developing Kilosort. It's an incredibly powerful tool that has revolutionized spike sorting.

I'm reaching out regarding the application of Kilosort to spike sorting for neuronal activity data recorded from microwires in human hybrid electrodes. These microwires in hybrid electrodes are the most frequently used approach to record neuronal activity in the human brain. Adapting Kilosort to such data could significantly enhance its applicability in the field of cognitive neuroscience.

image

I've noticed that the Colab notebook primarily focuses on Neuropixels. Given the differences between Neuropixels and human hybrid electrodes, I'm seeking guidance on the necessary adjustments for human hybrid electrode data.

Specifically:

  1. Is Kilosort compatible with data from human hybrid electrodes?

  2. What modifications to the code would be necessary to apply Kilosort to microelectrodes in human hybrid electrodes? A key difference is that these microelectrodes lack a predefined electrode array geometry like Neuropixels.

  3. Are there any recommended parameter optimizations for this type of data?

  4. Are there any existing resources, examples, or case studies of Kilosort being used with human hybrid electrode data?

  5. What potential challenges should we be aware of when adapting Kilosort for this purpose?

Thank you for your time and expertise. I'm looking forward to your response and any assistance you can provide.

Best regards,

Additional Context

No response

jacobpennington commented 1 month ago

As for your first three questions:

I can't think of any specific code reasons why Kilosort4 would not work with this data. It sounds like you're saying the electrodes are essentially all independent from one another, in which case you would use a sort of "dummy" probe to specify the geometry. For example, pretending that all electrodes are on a single shank with 100um spacing so that they are far enough apart that they will effectively be sorted separately.

From that point, you should just try sorting the data with default parameters and see if you run into any errors or get reasonable results when viewed in Phy. Some parameters you might end up needing to tweak if that doesn't work would be: 1) dmin = 200 (or double whatever spacing you use for your fake probe) so that templates are not placed at the mid-points between contacts. 2) nearest_chans = 3 and nearest_templates = 3, so that resources aren't wasted on "neighboring" channels or templates that aren't actually anywhere near each other.

@marius10p might have more information about 4 and 5.

XiaoyuZeng commented 1 month ago

As for your first three questions:

I can't think of any specific code reasons why Kilosort4 would not work with this data. It sounds like you're saying the electrodes are essentially all independent from one another, in which case you would use a sort of "dummy" probe to specify the geometry. For example, pretending that all electrodes are on a single shank with 100um spacing so that they are far enough apart that they will effectively be sorted separately.

From that point, you should just try sorting the data with default parameters and see if you run into any errors or get reasonable results when viewed in Phy. Some parameters you might end up needing to tweak if that doesn't work would be:

  1. dmin = 200 (or double whatever spacing you use for your fake probe) so that templates are not placed at the mid-points between contacts.
  2. nearest_chans = 3 and nearest_templates = 3, so that resources aren't wasted on "neighboring" channels or templates that aren't actually anywhere near each other.

@marius10p might have more information about 4 and 5.

Thank you for your reply! Upon further consideration, I realized there's an additional important point I'd like to address: drift correction.

Specifically, I'm curious about should I just turn off drift correction in Kilosort4 for microwires in human hybrid electrodes? (https://github.com/MouseLand/Kilosort/issues/433)

jacobpennington commented 1 month ago

Yes, sorry, I forgot to include that. You should set nblocks = 0 to skip drift correction.

On Sat, Jul 27, 2024, 12:44 AM Xiaoyu Zeng @.***> wrote:

As for your first three questions:

I can't think of any specific code reasons why Kilosort4 would not work with this data. It sounds like you're saying the electrodes are essentially all independent from one another, in which case you would use a sort of "dummy" probe to specify the geometry. For example, pretending that all electrodes are on a single shank with 100um spacing so that they are far enough apart that they will effectively be sorted separately.

From that point, you should just try sorting the data with default parameters and see if you run into any errors or get reasonable results when viewed in Phy. Some parameters you might end up needing to tweak if that doesn't work would be:

  1. dmin = 200 (or double whatever spacing you use for your fake probe) so that templates are not placed at the mid-points between contacts.
  2. nearest_chans = 3 and nearest_templates = 3, so that resources aren't wasted on "neighboring" channels or templates that aren't actually anywhere near each other.

@marius10p https://github.com/marius10p might have more information about 4 and 5.

Thank you for your reply! Upon further consideration, I realized there's an additional important point I'd like to address: drift correction.

Specifically, I'm curious about should I just turn off drift correction in Kilosort4 for microwires in human hybrid electrodes? (#433 https://github.com/MouseLand/Kilosort/issues/433)

— Reply to this email directly, view it on GitHub https://github.com/MouseLand/Kilosort/issues/745#issuecomment-2253963930, or unsubscribe https://github.com/notifications/unsubscribe-auth/AIQ6WYDZGE3WHMIVDKQ6IZLZONFXFAVCNFSM6AAAAABLN4UDTOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENJTHE3DGOJTGA . You are receiving this because you commented.Message ID: @.***>