Artykuł pokazuje, jak używać programu SpikeSorter do wykrywania i sortowania skoków w nagraniach pozakomórkowych wykonanych za pomocą matryc wieloelektrodowych.
Method Article
Artykuł pokazuje, jak używać programu SpikeSorter do wykrywania i sortowania skoków w nagraniach pozakomórkowych wykonanych za pomocą matryc wieloelektrodowych.
Dostępnych jest niewiele samodzielnych aplikacji do sortowania skoków z nagrań wykonanych za pomocą układów wieloelektrodowych. Idealnie byłoby, gdyby aplikacja była przyjazna dla użytkownika z graficznym interfejsem użytkownika, zdolnym do odczytywania plików danych w różnych formatach i zapewniała użytkownikom elastyczny zestaw narzędzi dających im możliwość wykrywania i sortowania zewnątrzkomórkowych przebiegów napięcia z różnych jednostek z pewnym stopniem niezawodności. Wcześniej opublikowane metody sortowania spajków są teraz dostępne w oprogramowaniu SpikeSorter, którego celem jest dostarczenie elektrofizjologom kompletnego zestawu narzędzi do sortowania, począwszy od surowego pliku z zapisanymi danymi, a skończywszy na eksporcie posortowanych czasów spajków. Procedury są zautomatyzowane w zakresie, w jakim jest to obecnie możliwe. Artykuł wyjaśnia i ilustruje zastosowanie programu. Otwierany jest reprezentatywny plik danych, filtrowane są ślady zewnątrzkomórkowe, wykrywane są zdarzenia, a następnie grupowane. Zilustrowano szereg problemów, które często występują podczas sortowania, w tym artefaktowe nadmierne dzielenie jednostek spowodowane tendencją niektórych jednostek do wystrzeliwania kolców w parach, gdzie drugi skok jest znacznie mniejszy niż pierwszy, oraz nadmierne dzielenie spowodowane powolnymi zmianami wysokości kolców w czasie, które występują w niektórych jednostkach. Dokładność działania SpikeSortera została przetestowana z zastępczymi danymi o prawdzie gruntowej i uznano, że jest porównywalna z innymi algorytmami w obecnie rozwijanym systemie.
Każdy, kto rejestruje sygnały zewnątrzkomórkowe z mózgu za pomocą metod bardziej wyrafinowanych niż proste progi i okienka on-line, staje przed zadaniem identyfikacji i oddzielenia sygnałów z różnych neuronów od hałaśliwych sygnałów napięciowych rejestrowanych przez elektrodę. To zadanie jest powszechnie znane jako sortowanie wartości szczytowych. Trudność sortowania kolców jest potęgowana przez różne czynniki. Neurony mogą znajdować się bardzo blisko siebie, więc sygnały rejestrowane z nich przez pobliską elektrodę mogą być podobne i trudne do odróżnienia. Sygnały wytwarzane przez pojedynczy neuron mogą zmieniać się w czasie, być może z powodu ruchów elektrody, zmiennej kinetyki kanału sodowego w okresach wysokiej szybkości wypalania, zmiennego stopnia aktywacji przewodnictwa napięciowego w dendrytach znajdujących się blisko elektrody lub być może w wyniku zmian w stanie mózgu. Problemy te można złagodzić, stosując matryce wieloelektrodowe (MEA) z wieloma blisko rozmieszczonymi (20 - 100 μm) kanałami rejestrującymi, co pozwala na lepszą przestrzenną definicję sygnałów z pojedynczych neuronów, ponieważ są one zwykle rozproszone po kilku kanałach1,2. Jednak to, w połączeniu z faktem, że sygnały z neuronów rozchodzą się na całej długości elektrody nakładają się na siebie w przestrzeni, skutkuje potencjalnie bardzo wysoką przestrzenią wymiarową, w której należy zidentyfikować klastry odpowiadające unikalnym neuronom. Problem ten staje się obliczeniowo nierozwiązywalny dla więcej niż niewielkiej liczby kanałów elektrodowych. Do tej pory nie ma ogólnie uzgodnionej najlepszej metody sortowania spajków, chociaż zaproponowano wiele rozwiązań3,4,5,6,7,8 a nagrania z MEA stają się coraz bardziej powszechne9,10. Ponieważ sortowanie wartości szczytowych nie jest celem samym w sobie, ale jest po prostu niezbędnym krokiem wstępnym przed dalszą analizą danych, istnieje zapotrzebowanie na łatwy w użyciu pakiet, który będzie odczytywał surowe pliki danych nagraniowych i konwertował je na posortowane ciągi spajków przy jak najmniejszym udziale użytkownika oraz tak szybko i niezawodnie, jak to tylko możliwe.
Ten artykuł zawiera samouczek dotyczący korzystania z SpikeSorter — programu opracowanego w celu zaspokojenia tych potrzeb. Program oparty jest na algorytmach opisanych we wcześniej opublikowanych artykułach11,12,13. Celem przy projektowaniu programu było: a) powinien on mieć przyjazny dla użytkownika interfejs, wymagający niewielkiej lub żadnej wcześniejszej wiedzy z zakresu programowania komputerowego lub metodologii sortowania spajków; b) nie powinno być potrzebnych niewiele innych specjalistycznych komponentów oprogramowania poza standardowymi systemami operacyjnymi Windows lub Linux; c) powinien być obsługiwany szeroki zakres formatów zapisu danych do importu i eksportu danych; d) potrzeba wprowadzania danych przez użytkownika podczas sortowania powinna być zminimalizowana, oraz e) czasy sortowania powinny być skalowane w rozsądny sposób, najlepiej liniowo, wraz z czasem nagrywania i liczbą kanałów na elektrodzie. Algorytmy zaimplementowane w programie obejmują: a) elastyczny zestaw strategii wstępnego przetwarzania i wykrywania zdarzeń; b) zautomatyzowana strategia redukcji wymiarów typu "dziel i rządź", polegająca na grupowaniu przebiegów napięcia w oparciu o rozkłady składowych głównych (PC) uzyskane z podzbiorów kanałów przypisanych do określonych klastrów; c) zautomatyzowane grupowanie dystrybucji PC z szybką procedurą grupowania opartą na algorytmie przesunięcia średniego3,14, oraz d) częściowo zautomatyzowane łączenie i dzielenie klastrów parami, aby zapewnić, że każdy z nich jest jak najbardziej różny od wszystkich innych. Do tego dodano zestaw procedur, które umożliwiają ręczne dzielenie lub łączenie klastrów w oparciu o inspekcję rozkładów PC, krzyżowych i autokorelogramów ciągów spajków oraz wykresy czasowo-amplitudowe przebiegów szczytów. Nagrania z tetrod, tablic tetrodowych, tablic Utah oraz jedno- i wielozębowych MEA mogą być odczytywane i sortowane. Obecny limit liczby kanałów wynosi 256, ale w przyszłości może zostać zwiększony.
Dostępna jest również inna wieloplatformowa implementacja open-source, "spyke" (http://spyke.github.io). Napisany przez jednego z nas (MS) w Pythonie i Cython, spyke używa tego samego ogólnego podejścia co SpikeSorter, z pewnymi różnicami: aby zmniejszyć zapotrzebowanie na pamięć, surowe dane są ładowane w małych blokach i tylko wtedy, gdy jest to absolutnie konieczne; klastry są wyłącznie wyświetlane, manipulowane i sortowane w 3D; oraz analiza składowych głównych i składowych niezależnych są stosowane jako uzupełniające metody redukcji wymiarów. Spyke wymaga więcej interakcji z użytkownikiem, ale w dużej mierze opiera się na skrótach klawiaturowych i myszy oraz kolejce cofania/ponawiania, aby szybko badać wpływ różnych czynników na grupowanie dowolnego podzbioru skoków. Czynniki te obejmują wybór kanału spajka i zakresu czasu, wyrównanie wartości szczytowej, wymiary grupowania i przepustowość przestrzenną (sigma)11.
Poniżej znajduje się krótki opis algorytmów i strategii używanych do sortowania. Bardziej szczegółowe opisy można znaleźć w poprzednich publikacjach11,12,13 oraz w adnotacjach, do których można uzyskać dostęp za pomocą przycisków pomocy (oznaczonych znakiem '?') w SpikeSorter. Po załadowaniu surowego pliku napięcia zewnątrzkomórkowego i odfiltrowaniu składowych o niższej częstotliwości, początkowy etap wykrywania zdarzeń skutkuje zestawem zdarzeń, z których każde składa się z krótkiej migawki napięcia przed i po czasie zdarzenia. Jeśli miejsca elektrod są wystarczająco blisko siebie oddalone (< 100 μm), sygnały pojedyncze jednostki będą zwykle pojawiać się na kilku sąsiednich kanałach. Dla każdego zdarzenia automatycznie wybierany jest kanał centralny, odpowiadający kanałowi, na którym napięcie międzyszczytowe zdarzenia jest największe. Automatyczne sortowanie rozpoczyna się od utworzenia pojedynczego początkowego klastra dla każdego kanału elektrody, składającego się ze wszystkich zdarzeń, które zostały zlokalizowane w tym kanale. Jednostka znajdująca się w połowie drogi między kanałami może powodować powstawanie impulsów, które są zlokalizowane (być może losowo) w różnych kanałach: klastry z tych dwóch zestawów kolców zostaną zidentyfikowane jako podobne i połączone na późniejszym etapie. Następnie obliczany jest średni przebieg zdarzeń w każdym początkowym klastrze. Jest to nazywane szablonem klastra. Kanały pomocnicze są przypisywane do każdego klastra na podstawie amplitud i odchylenia standardowego przebiegów szablonu na każdym kanale. Wartości składowych głównych są następnie obliczane dla każdego klastra na podstawie przebiegów na przypisanym zestawie kanałów. Użytkownik może wybrać liczbę wymiarów głównego komponentu, który ma być używany: zwykle wystarczają 2. Każdy klaster jest następnie dzielony na kolejny zestaw klastrów i jest to powtarzane do momentu, gdy żaden z nich nie może być dalej dzielony przez automatyczne grupowanie.
W tym momencie, początkowy zestaw składający się powiedzmy, z 64 klastrów z 64-kanałowej elektrody, może zostać podzielony na dwa lub trzy razy większą liczbę, w zależności od liczby jednostek, które były obecne w nagraniu. Jednak ze względu na zmienne przypisywanie zdarzeń z pojedynczych jednostek do różnych kanałów, liczba klastrów znalezionych na tym etapie jest prawie na pewno większa niż powinna. Kolejnym etapem sortowania jest skorygowanie nadmiernego podziału poprzez porównanie par klastrów i scalenie podobnych par lub ponowne przypisanie zdarzeń z jednego do drugiego. Ten etap sortowania jest określany jako "scalanie i dzielenie".
Łączenie i dzielenie
Dla N klastrów istnieje N*(N-1)/2 par, a zatem liczba par rośnie wraz z N2, co jest niepożądane. Jednak wiele par można wykluczyć z porównania, ponieważ dwaj członkowie pary są fizycznie daleko od siebie. Zmniejsza to zależność do czegoś, co jest bardziej liniowo związane z liczbą kanałów. Pomimo tego skrótu, etap scalania i dzielenia może być nadal dość czasochłonny. Działa to w następujący sposób. Każda para klastrów, która ma być porównywana (te, które są fizycznie blisko siebie, co można ocenić na podstawie nakładania się zestawów kanałów przypisanych do każdej z nich) jest tymczasowo scalana, zachowując jednak tożsamość skoków w dwóch klastrach składowych. Następnie obliczane są główne składowe scalonej pary. Miara nakładania się punktów w dwóch klastrach jest obliczana na podstawie rozkładu pierwszych dwóch głównych składników.
Sposób obliczania miary nakładania się jest opisany bardziej szczegółowo w innym miejscu11. Jego wartość wynosi zero, jeśli klastry w ogóle się nie nakładają, tzn. najbliższy sąsiad każdego punktu znajduje się w tym samym klastrze. Jego wartość jest bliska 1, jeśli klastry całkowicie się na siebie nakładają, tj. prawdopodobieństwo, że najbliższy sąsiad znajdzie się w tej samej grupie, jest takie samo, jak przewidywane na podstawie równomiernego wymieszania punktów.
Podejmowane są różne decyzje, które uwzględniają miarę nakładania się. Jeśli nakładanie się jest większe niż określona wartość, klastry mogą być scalane. Jeśli nakładanie się jest bardzo małe, para skupień może być zdefiniowana jako odrębna i pozostawiona sama sobie. Wartości pośrednie, wskazujące na niepełną separację pary klastrów, mogą sygnalizować, że para powinna zostać scalona, a następnie ponownie podzielona, co pożądanym rezultatem jest para klastrów o mniejszym nakładaniu się. Procedury te są uruchamiane najpierw w etapie zautomatyzowanym, a następnie w etapie kierowanym ręcznie.
Na etapie automatycznym, pary klastrów o wysokiej wartości nakładania się są łączone; następnie pary klastrów o średnich i niskich wartościach nakładania się są łączone i ponownie dzielone. W drugim, kierowanym przez użytkownika, użytkownikowi prezentowane są kolejno wszystkie pozostałe niejednoznaczne pary klastrów (tj. te, których wartości pokrywają się w zdefiniowanym pośrednim zakresie) i jest proszony o wybór, czy a) scalić parę, b) scalić i ponownie podzielić parę, c) zadeklarować, że para jest odrębna (co zastąpi znaczenie miary nakładania się), lub d) zdefiniowanie relacji między parą jako "niejednoznacznej", co wskazuje, że jest mało prawdopodobne, aby skoki w parze były dobrze posortowane. Dostępne są różne narzędzia, które pomagają w podejmowaniu tych decyzji, w tym automatyczne i krzyżowe korelogramy oraz wykresy szeregów czasowych wysokości szczytów i wartości PC.
Idealnie, na końcu etapów łączenia i dzielenia, każdy klaster powinien być odrębny od wszystkich innych, albo dlatego, że ma niewiele kanałów wspólnych z innymi klastrami, albo dlatego, że indeks nakładania się jest mniejszy niż zdefiniowana wartość. Ta wartość jest wybierana przez użytkownika, ale zwykle wynosi 0,1. Klastry (jednostki), które przejdą ten test, są definiowane jako "stabilne", a te, które tego nie robią (ponieważ nakładanie się z jednym lub kilkoma innymi klastrami jest większe niż próg) są definiowane jako "niestabilne". W praktyce zdecydowana większość jednostek jest definiowana jako "stabilna" na końcu sortowania, pozostawiając pozostałą część do odrzucenia lub potraktowania jako potencjalnie wielojednostkową.
Wymagania dotyczące oprogramowania
SpikeSorter jest kompatybilny z 64-bitowymi wersjami Windows 7 i Windows 10, a także został pomyślnie uruchomiony pod Linuksem przy użyciu emulatora Wine. Pliki danych są ładowane w całości do pamięci (ze względu na szybkość), stąd dostępna pamięć RAM musi skalować się wraz z rozmiarem nagrania (pozwól na około 2 GB na sam program). Pliki danych elektrofizjologicznych o rozmiarze większym niż 130 GB zostały pomyślnie posortowane zarówno w środowisku Windows, jak i Linux. Dostęp do opcji można uzyskać za pośrednictwem standardowych menu systemu Windows, paska narzędzi i okien dialogowych. Układ elementów w menu jest mniej więcej zgodny z kolejnością operacji sortowania, zaczynając od menu "Plik" po lewej stronie do wprowadzania danych i menu "Eksportuj" po prawej stronie, umożliwiającego eksport posortowanych danych. Przyciski paska narzędzi udostępniają skróty do często używanych elementów menu.
Plik konfiguracyjny kanału
Wiele formatów danych zapisu nie przechowuje lokalizacji kanałów. Jednak ich znajomość jest niezbędna do sortowania spajków. Kanały mogą być również numerowane na różne sposoby przez oprogramowanie akwizycyjne: SpikeSorter wymaga, aby kanały były numerowane w kolejności, zaczynając od kanału 1. W związku z tym należy utworzyć plik konfiguracyjny elektrody pomocniczej, który może zmienić mapowanie numerów kanałów, aby były zgodne z regułą sekwencyjną i przechowywać lokalizacje kanałów. Plik konfiguracyjny kanału jest plikiem tekstowym z pojedynczym wierszem tekstu dla każdego kanału. W pierwszym wierszu pliku znajduje się nazwa tekstowa o długości do 16 znaków, która identyfikuje elektrodę. Liczby w kolejnych wierszach mogą być oddzielone tabulatorami, pojedynczym przecinkiem lub spacjami. W każdym wierszu znajdują się cztery liczby podające (w kolejności): numer kanału w pliku, numer kanału, do którego ma być zmapowany (tj. numer, który będzie używany przez SpikeSorter) oraz współrzędne x i y kanału, w mikronach. Współrzędna x byłaby zwykle traktowana jako prostopadła do kierunku wprowadzania elektrody, a współrzędna y odpowiednio oznaczałaby głębokość w tkance. Plik konfiguracyjny musi być umieszczony w tym samym katalogu, co plik z nagraniem. Istnieje pewna elastyczność w tym, jak można go nazwać. Program najpierw wyszuka plik, który ma taką samą nazwę jak plik danych surowych, ale z rozszerzeniem .cfg. Jeśli ten plik nie zostanie znaleziony, wyszuka plik "elektroda.cfg". Jeśli ten plik z kolei nie zostanie znaleziony, zostanie wygenerowany komunikat o błędzie wskazujący na brak informacji o układzie kanału.
Access restricted. Please log in or start a trial to view this content.
1. Ustawienia programu
2. Wykrywanie zdarzeń
3. Sortowanie
UWAGA: Następny krok zwykle nie jest wykonywany przed rutynowym sortowaniem, ale jest bardzo przydatny podczas sortowania po raz pierwszy lub gdy napotkasz nieznane dane.
4. Personalizacja
5. Scalanie i dzielenie
6. Recenzja – Przetwarzanie końcowe
Access restricted. Please log in or start a trial to view this content.
Rysunek 7 pokazuje wyświetlanie (uzyskane przez przejście do 'Widok - Posortowane przebiegi') dla typowego posortowanego nagrania. Domyślna opcja widoku polega po prostu na pokazaniu przebiegów na kanale środkowym dla każdego klastra. Częstym doświadczeniem jest to, że przebiegi dla pary klastrów na tym samym kanale wyglądają identycznie, ale gdy okno dialogowe "Porównaj pary" jest używane do zbadania dwóch klastrów, w projekcji PC występują odrębne klastry, najczęściej w...
Access restricted. Please log in or start a trial to view this content.
Formaty plików
Obecnie obsługiwane formaty plików to Neuralynx (.ntt i .ncs), Plexon (.plx), Neuroscope (.xml + .dat), MultiChannel Systems (.mcd), Blackrock (.nev) i Intan (.rhd). W przypadku nieobsługiwanych formatów dostępne są dwie opcje. Jednym z nich jest prośba o dodanie formatu pliku do nadchodzącej wersji (link do wiadomości e-mail z programistą znajduje się w oknie dialogowym "Pomoc - Informacje"). Drugim jest przekonwertowanie pliku na obsługiwany format. Prostą opcją jest użycie forma...
Access restricted. Please log in or start a trial to view this content.
Autorzy nie mają nic do ujawnienia.
Dziękujemy tym osobom i grupom, które korzystały z SpikeSorter i które dostarczyły prośby o wsparcie formatu plików oraz sugestie i opinie, jak go ulepszyć. Należą do nich Youping Xiao, Felix Fung, Artak Khachatryan, Eric Kuebler, Curtis Baker, Amol Gharat i Dongsheng Xiao. Dziękujemy Adrienowi Peyrache za fałszywie dodatnie i negatywne dane liczbowe podane w "Reprezentatywnych wynikach".
Access restricted. Please log in or start a trial to view this content.
| Name | Company | Catalog Number | Comments |
|---|---|---|---|
| spikesorter.exe | Nie | http://www.swindale.ecc.ubc.ca/SpikeSorter |
Access restricted. Please log in or start a trial to view this content.
Request permission to reuse the text or figures of this JoVE article
Request Permission