File size: 2,429 Bytes
734b49b
 
 
 
 
b199a82
f88ae64
 
ddc46cf
 
 
 
 
 
 
388fc49
 
ddc46cf
 
388fc49
ddc46cf
8524936
ddc46cf
 
 
 
 
 
 
fcd083f
 
27a4584
 
b199a82
ddc46cf
8524936
ddc46cf
407ee02
b199a82
53211f9
9a9544c
53211f9
 
 
 
 
 
 
27a4584
fcd083f
 
ddc46cf
5d4ebaf
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
---
language:
- en
pipeline_tag: tabular-classification
tags:
- computational neuroscience 
---

To reduce the effort in manual curation, we developed a machine learning approach using Neuropixels probes, incorporating quality metrics to automatically identify noise clusters 
and isolate single-cell activity. 
Compatible with the Spikeinterface API, our method generalizes across various probes and speices.


The we generated a machine learning model that is trained on 11 mice in V1, SC and ALM using Neuropixels on mice. Each recording was labelled by at least two people, and in different combinations.
The agreement amongst labellers is 80%. You can use the models "noise_meuron_model.skops" that is used to identify noise and "sua_mua_model.skops" that is used to isolate SUA.

There are two tutorial notebooks:


1. Model_based_curation.ipynb

   This notebook helps you apply pretrained models to new recordings. Simply load the models and use them to label your spike-sorted data.


   ``` python
    from spikeinterface.curation import auto_label_units
    labels = auto_label_units(
    sorting_analyzer = sorting_analyzer,
    model_folder = “SpikeInterface/a_folder_for_a_model”,
    trusted = [‘numpy.dtype’])
    ```


2. Train_new_model.ipynb

   If you have your own manually curated data (e.g., from other species), this notebook allows you to train a new model using your specific data.


   ``` python
    from spikeinterface.curation.train_manual_curation import train_model
  
    trainer = train_model(mode = "analyzers",
    labels = labels,
    analyzers = [labelled_analyzer, labelled_analyzer],
    output_folder = str(output_folder), 
    imputation_strategies = None, 
    scaling_techniques = None,
    classifiers = None, # Default to Random Forest only. Other classifiers you can try [ "AdaBoostClassifier","GradientBoostingClassifier",
                                                                # "LogisticRegression","MLPClassifier","XGBoost","LightGBM", "CatBoost"]
    )
    ```

Acknowlegments:

I would like to thank people who have helped a lot in this project:

For code refactoring and helping integration in Spikeinterface : Chris Halcrow, Jake Swann, Robyn Greene 
Curators : Nilufar Lahiji, Severin Graff, Sacha Abou Rachid, Simon Musall
Advisors : Alessio Buccino, Matthias Hennig and Simon Musall

Also all my amazing lab members : https://brainstatelab.wordpress.com/