ICA for pre-processing of HD MEA recordings

Hi all,

I’ve been exploring the use of ICA for HD-MEA. Potentially, it could increase SNR for units as it optimizes spatial filter that are tuned for separate sorters.

Check out this papers for offline and online proof of concept studies.

What do you guys think?

1 Like

Looks promising. Perhaps could you make a notebook to demonstrate this technique to one of the spikeforest recordings. I would be interested to see the ICA components of a real recording… for example:

http://spike-front.herokuapp.com/recording/paired_mea64c/20170629_patch2
Warning: link may break in future

Here’s the sha1dir reference: sha1dir://0ba09f6658e767d4e70055773805a8d939a9a4c6.paired_mea64c/20170629_patch2

Sounds good. I think that for ICA the probe should be denser though, as it assumes more electrodes than recorded neurons.

I’ll try to make a notebook to show how the spatial filters and the IC sources are tuned to separate neurons.

If anyone is interested, SpyICA implements a fully automatic pipelinefor ICA-based spike sorting and it is already integrated with SpikeInterface.

In fact, in herdingspikes the feature generation is entirely flexible. I’ll give it a go, on one of the ground truth data sets.
When we started developing this, we also tried ICA, which appeared to work quite well, but we then settled on PCA as explained variance was a more satisfactory dimensionality cut-off criterion.

1 Like

@mhhennig I don’t see ICA as a feature extraction method. For that I think that PCA works better. In my opinion ICA coupe be a preprocessing step on the recordings to increase snr. Then detection and (if needed) clustering can be done in the IC space. My if needed means that for dense probes, each IC should be tuned to different neurons, so minimal clustering should be required.

Would this scale well though? I can see it potentially works for 10s or maybe 100s on neurons, but more may be hard, would it not?

There are faster ICA methods (e.g. ORICA, which can be also applied offline) and I think that for large arrays separate ICA could be applied to separate regions, similar to the neighborhoods that @magland uses.
Of course then it would be a bit more complicated to merge clusters at the borders, but I think it would be feasible.

In spyica I select the spiky sources based on skewness. When location info is available, I would like to add a selection based on smoothness of the spatial filter. The proximity of spatial filter (i.e. IC projection) could also be used to eliminate ‘duplicates’.