Artykuł metodologiczny

IntelliSleepScorer, pakiet oprogramowania z graficznym interfejsem użytkownika do automatycznego oceniania fazy snu myszy

DOI:

10.3791/66950

8 listopada 2024

W tym artykule

Podsumowanie

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

Prezentujemy pakiet oprogramowania z graficznym interfejsem użytkownika dla badaczy bez doświadczenia w kodowaniu, aby ocenić fazy snu u myszy za pomocą prostego pobrania i obsługi.

Streszczenie

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

Punktacja fazy snu u gryzoni to proces identyfikacji trzech etapów: snu bez szybkich ruchów gałek ocznych (NREM), snu z szybkimi ruchami gałek ocznych (REM) i czuwania. Ocena faz snu ma kluczowe znaczenie dla badania miar i efektów specyficznych dla fazy snu.

Wzorce snu u gryzoni różnią się od tych u ludzi, charakteryzują się krótszymi epizodami NREM i REM przeplatanymi przez przebudzenie, a tradycyjne ręczne ocenianie faz snu przez ekspertów jest czasochłonne. Aby rozwiązać ten problem, w poprzednich badaniach wykorzystano podejścia oparte na uczeniu maszynowym do opracowania algorytmów do automatycznej kategoryzacji faz snu, ale wysokowydajne modele z dużą możliwością uogólnienia często nie są publicznie dostępne/bezpłatne ani przyjazne dla użytkownika dla nieprzeszkolonych badaczy snu.

Dlatego opracowaliśmy oparty na uczeniu maszynowym algorytm LightGBM wytrenowany na dużym zestawie danych. Aby udostępnić model badaczom snu bez doświadczenia w kodowaniu, na podstawie modelu opracowano narzędzie programowe o nazwie IntelliSleepScorer (v1.2 - najnowsza wersja), które zawiera łatwy w użyciu graficzny interfejs użytkownika. W tym manuskrypcie przedstawiamy instrukcje krok po kroku dotyczące korzystania z oprogramowania w celu zademonstrowania wygodnego i skutecznego narzędzia do automatycznego oceniania faz snu u myszy dla badaczy snu.

Wprowadzenie

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

Punktacja fazy snu u gryzoni to procedura pozwalająca zidentyfikować trzy etapy: sen bez szybkich ruchów gałek ocznych (NREM), sen z szybkimi ruchami gałek ocznych (REM) i wake2. U gryzoni NREM charakteryzuje się zmniejszoną aktywnością mięśni, powolnym i regularnym oddechem, zmniejszonym tętnem i oscylacjami fal mózgowych o niskiej częstotliwości. REM u gryzoni, podobnie jak u ludzi, wykazuje atonię mięśni, aktywację EEG i szybkie ruchy gałek ocznych, chociaż występowanie żywych snów jest mniej wyraźne u gryzoni w porównaniu z ludźmi2,3. Stan "czuwania" u gryzoni charakteryzuje się zdesynchronizowaną aktywnością mózgu z falami o wysokiej częstotliwości i niskiej amplitudzie, zwiększonym napięciem mięśniowym i aktywnymi zachowaniami, takimi jak pielęgnacja i eksploracja4. Te trzy etapy można zidentyfikować, sprawdzając sygnały elektroencefalogramu (EEG) i elektromiogramu (EMG)5.

Automatyczne modele oceny fazy snu u gryzoni są bardzo potrzebne. Po pierwsze, ręczna ocena faz snu przez ekspertów jest pracochłonna i czasochłonna. Po drugie, wzorce snu u gryzoni różnią się od tych u ludzi i mają bardziej fragmentaryczne epizody NREM i REM przeplatane po przebudzeniu, około 10 minut, w przeciwieństwie do 60-120 minut u ludzi6. Dlatego zidentyfikowanie tych krótkich okresów podczas ręcznego oceniania jest trudne. Od lat 60. XX wieku podjęto wiele prób opracowania automatycznego systemu punktacji danych dotyczących snu gryzoni7. Chociaż istnieje wiele zautomatyzowanych metod oceny snu gryzoni, ich wydajność jest różna8,9,10,11,12,13,14,15,16,17, 18. Co ważne, większość wysokowydajnych modeli o dużej możliwości uogólnienia nie jest publicznie dostępna (niektóre wymagają specjalnych próśb od programistów) lub nie są bezpłatne dla badaczy snu.

Dlatego, aby wypełnić obecną lukę technologiczną, opracowaliśmy model oparty na uczeniu maszynowym, wykorzystując duży zestaw danych 5776 godzin sygnałów EEG i EMG z 519 zapisów na 124 myszach za pomocą algorytmu LightGBM1. lightGBM wykorzystuje podejście zwiększające gradient do konstruowania drzew decyzyjnych19. W Wang i in., 2023, model LightGBM (składający się z ponad 8000 drzew decyzyjnych) osiągnął ogólną dokładność 95,2% i kappa Cohena wynoszącą 0,91, co przewyższyło dwa powszechnie stosowane modele bazowe, takie jak model regresji logistycznej (dokładność = 93,3%) i model lasu losowego (dokładność = 94,3%, kappa = 0,89). Ogólna wydajność modelu również wykazała się podobną wydajnością do wydajności ekspertów. Co najważniejsze, udowodniono, że model ma możliwość uogólnienia i nie jest nadmiernie dopasowany do oryginalnych danych treningowych1: 1) Działał dobrze (dokładność > 89%) na dwóch innych publicznie dostępnych niezależnych zestawach danych, od Miladinovic i współpracowników11, z różnymi częstotliwościami próbkowania i długościami epok; 2) Na wydajność modelu nie ma wpływu cykl światła/ciemności myszy; 3) Zmodyfikowany model LightGBM dobrze radził sobie z danymi zawierającymi tylko jedną elektrodę EEG i jedną elektrodę EMG z kappa ≥ 0,89; 4) Do testów wykorzystano zarówno myszy typu dzikiego, jak i zmutowanego, a wyniki modelu były dokładne. Sugeruje to, że model może oceniać fazy snu u myszy o różnym pochodzeniu genetycznym.

Aby uczynić ten model dostępnym dla badaczy snu, którzy mogą nie mieć doświadczenia w kodowaniu, opracowaliśmy IntelliSleepScorer, przyjazne dla użytkownika narzędzie programowe z intuicyjnym wizualnie interfejsem. Oprogramowanie może w pełni zautomatyzować procedurę oceny snu u myszy. Tworzy interaktywne wizualizacje sygnałów, hipnogramu i wartości SHAP (Shapley Additive ExPlanations) z pliku wejściowego w europejskim formacie danych (EDF)/EDF+. Podejście oparte na wartościach SHAP, oparte na kooperacyjnej teorii gier, zwiększa możliwości interpretowania modeli uczenia maszynowego20. Model oferuje zarówno globalne, jak i epokowe wartości SHAP, pokazując, w jaki sposób różne wartości cech przyczyniają się do decyzji o punktacji modelu ogólnie i dla każdej epoki. Ten zaawansowany program znacznie skraca czas i wysiłek wymagany do oceny faz snu u myszy, zapewniając jednocześnie, że dalsza analiza może polegać na bardzo dokładnych wynikach. W tym manuskrypcie przedstawiamy krok po kroku użycie IntelliSleepScorer (v1.2) z kilkoma aktualizacjami w stosunku do wersji 1.0, w tym opcją uruchamiania analizy SHAP niezależnie od przewidywania wzorca snu, regulowaną przez użytkownika długością epoki do oceny fazy snu oraz funkcją ręcznej korekcji fazy snu zintegrowaną z graficznym interfejsem użytkownika.

Protokół

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

To badanie wykorzystało dane zebrane z eksperymentów in vivo na myszach. W badaniu nie przeprowadzono żadnych eksperymentów na ludziach. Wszystkie eksperymenty na zwierzętach zostały zatwierdzone przez Instytucjonalną Komisję ds. Opieki nad Zwierzętami i Ich Wykorzystania w Broad Institute. Wszystkie eksperymenty zostały przeprowadzone zgodnie z odpowiednimi wytycznymi i przepisami. Wytyczne ARRIVE nie mają zastosowania w tym badaniu, ponieważ badanie to koncentruje się na opracowaniu modeli uczenia maszynowego, a nie na porównaniu różnych grup leczenia.

1. Przygotowanie danych

UWAGA: Kompatybilność danych: zarejestrowane dane mogą mieć dowolną częstotliwość próbkowania wyższą niż 40 Hz. Nie ma potrzeby filtrowania pasmowoprzepustowego sygnału, ponieważ oprogramowanie pasmowoprzepustowe filtruje sygnały EEG i EMG w pierwszym kroku. Modele LightGBM zostały opracowane i przetestowane przy użyciu danych pochodzących od myszy. Nie są dostępne żadne dowody dotyczące wydajności modeli LightGBM u innych typów zwierząt laboratoryjnych. Elektrody rejestrujące muszą być umieszczone w korze czołowej i ciemieniowej lub w dowolnym miejscu, jeśli rejestrowany jest tylko jeden kanał EEG.

  1. Układ i wymagania dotyczące formatu EDF/EDF+
    UWAGA: Oprogramowanie użyte w tym badaniu odczytuje tylko pliki EDF/EDF+ przy użyciu pakietu MNE-Python. Do wygenerowania plików EDF/EDF+ musi zostać zastosowana standardowa specyfikacja EDF/EDF+. Oprócz standardowej specyfikacji upewnij się, że adnotacje EDF/EDF+ są zakodowane w UTF-8. W przeciwnym razie aplikacja ulegnie awarii.
    1. Konwertuj inny format pliku (plik inny niż EDF/EDF+) na format EDF/EDF+ za pomocą bezpłatnych narzędzi online.
      UWAGA: Nie ma potrzeby stosowania filtra aparaturowego podczas odbierania sygnałów EEG i EMG. Tak długo, jak użytkownicy pobierają próbki danych EEG i EMG z częstotliwością 40 Hz lub wyższą, oprogramowanie będzie działać poprawnie. Dzieje się tak, ponieważ na początkowym etapie przetwarzania wstępnego sygnały są poddawane filtrowaniu pasmowoprzepustowemu w zakresie od 1 Hz do 40 Hz. To filtrowanie pasmowo-przepustowe jest zintegrowane z potokiem wstępnego przetwarzania oprogramowania, eliminując potrzebę dodatkowego przetwarzania sygnału przez użytkowników.
  2. W oprogramowaniu znajdują się dwa modele do oceniania. Jeden to LightGBM-2EEG, a drugi to LightGBM-1EEG. Model LightGBM-2EEG przeznaczony jest do rejestracji danych, które posiadają 2 kanały EEG i 1 kanał EMG. Wykonaj następujące czynności w zależności od modelu.
    1. Uporządkuj pliki danych dla LightGBM-2EEG w następującej kolejności: 1) Kanał EEG zapisany w okolicy ciemieniowej; 2) kanał EEG rejestrowany w okolicy czołowej; 3) Kanał EMG. LightGBM-1EEG jest przeznaczony do danych, które zawierają tylko 1 kanał EEG (umieszczenie elektrody w okolicy ciemieniowej lub czołowej) i 1 kanał EMG.
    2. Uporządkuj kanały w plikach EDF/EDF+ dla LightGBM-1EEG w następującej kolejności: 1) kanał EEG; 2) Kanał EMG.

2. Pobieranie IntelliSleepScorer dla użytkowników systemów Windows, Mac i Linux

  1. Dla użytkowników systemu Windows plik wykonywalny systemu Windows dla oprogramowania jest dostępny za pomocą PyInstaller. Link do pobrania znajduje się na stronie badawczej grupy Pan https://sites.broadinstitute.org/pan-lab/resources. W przypadku użytkowników systemu MacOS lub Linux użyj kodu źródłowego w repozytorium GitHub https://github.com/broadinstitute/IntelliSleepScorer, aby uruchomić oprogramowanie.
  2. Uzyskaj dostęp do dwóch zarejestrowanych przykładowych danych, aby przetestować program zapisany jako pliki EDF, pobierając je za pośrednictwem repozytorium GitHub.
  3. Repozytorium kodu źródłowego nie zawiera folderu models ze względu na limity rozmiaru. Zamiast tego pobierz models.zip, rozpakuj go i skopiuj folder models do repozytorium, aby program mógł zostać uruchomiony. W przeciwnym razie oprogramowanie ulegnie awarii z powodu brakujących plików modelu.

3. Przepływ pracy oraz uruchamianie i obsługa programu

  1. Uruchamianie narzędzia IntelliSleepScorer
    1. Aby uruchomić oprogramowanie w systemie Windows, kliknij dwukrotnie IntelliSleepScorer.exe znajdujący się w folderze głównym. Aby uruchomić oprogramowanie w systemie MacOS lub Linux, otwórz emulator terminala, zmień katalog na folder główny oprogramowania, a następnie uruchom oprogramowanie za pomocą polecenia: python3 IntelliSleepScorer.py.
  2. Po otwarciu oprogramowania kliknij Wybierz EDF/EDF+ File(s), aby wybrać zamierzone file(y) do oceny. Jeśli pliki zostały wybrane przez pomyłkę, kliknij przycisk Wyczyść, aby wyczyścić wybraną listę plików.
    UWAGA: Domyślnie oprogramowanie koduje fazy uśpienia jako Wake:1, NREM:2 i REM:3 w plikach wyników wyjściowych. Domyślna długość epoki jest ustawiona na 10 s. Aktualna wersja (v1.2) graficznego interfejsu użytkownika umożliwia użytkownikom zmianę kodowania stołu montażowego lub długości epoki na 4 s, 10 s lub 20 s za pomocą menu rozwijanego.
  3. Wybierz żądaną długość epoki. Użyj dostarczonego menu rozwijanego, aby wybrać zamierzoną długość epoki spośród opcji 4 s, 10 s i 20 s do oceny fazy snu.
  4. Wybierz model, który ma być używany do oceniania snu. LightGBM-2EEG jest przeznaczony do plików danych z dwoma kanałami EEG i jednym kanałem EMG, podczas gdy LightGBM-1EEG jest przeznaczony do danych z jednym kanałem EEG i jednym kanałem EMG.
  5. Przed uruchomieniem przewidywania fazy snu należy dołączyć dodatkowe obliczenia SHAP, które pomagają wyjaśnić wyniki przewidywania fazy snu. Aby przetworzyć obliczenia SHAP, zaznacz pole wyboru Uruchom/Drukuj SHAP. Przetwarzanie obliczeń SHAP zajmuje około 5-10 minut.
  6. Kliknij opcję Score All Files (Oceniaj wszystkie pliki). Model automatycznie ocenia wszystkie pliki EDF/EDF+ i oblicza wartości SHAP globalne i epokowe w celu zinterpretowania decyzji dotyczących punktacji na liście, jeśli zostanie to wybrane.
    UWAGA: Podczas procesu oceniania model generuje następujące pliki i zapisuje je w tym samym folderze, w którym znajdują się pliki EDF/EDF+. Model używa tych plików do wykreślania globalnych wartości SHAP i wartości SHAP epoki.

    "EDF/EDF+ nazwa pliku}_{model_name}_features.csv"; W tym pliku przechowywane są wszystkie wyodrębnione wartości elementów.
    "EDF/EDF+ nazwa pliku}_{model_name}_scores.csv"; Ten plik przechowuje przewidywane fazy snu.
    "EDF/EDF+ nazwa pliku}_{model_name}_rs_100hz.npy"; Plik ten przechowuje kopię sygnałów resamplowanych/próbkowanych w dół (100 Hz). Aby zwiększyć szybkość wizualizacji, model używa sygnału próbkowanego w dół zamiast oryginalnego sygnału podczas wykreślania sygnału.
    "EDF/EDF+ nazwa pliku}_{model_name}explainer. pickle"; "{EDF/EDF+ nazwa pliku}{model_name}shap_500samples.pickle"; "{EDF/EDF+ nazwa pliku}{model_name}_indicies_500samples.npy";
  7. Po zakończeniu procesu oceny snu kliknij opcję Wizualizuj wybrany plik, aby wyświetlić sygnały EEG/EMG i hipnogram wyrównany w czasie z sygnałami.
    1. Ponownie oceń wybrany plik przed wizualizacją, jeśli długość epoki zostanie zmieniona.

4. Nawigowanie po punktowanych wynikach

  1. Kliknij dostępne przyciski nawigacyjne, aby przejść do przodu i do tyłu, aby wyświetlić różne dane epoki.
  2. Jeśli do wykonania wybrano obliczanie SHAP, wyświetl zarówno globalne, jak i epokowe wartości SHAP. Kliknij prawym przyciskiem myszy epokę, aby wykreślić wartości SHAP na poziomie epoki.
    UWAGA: Aktualizacja wykresu SHAP na poziomie epoki potrwa kilka sekund. Rysunek 1 pokazuje przegląd strony GUI po uruchomieniu predykcji dla pliku Przykład-1 EDF/EDF+ z modelem 1_LightBGM-2EEG.

5. Interpretacja punktowanych faz snu hipnogramu

UWAGA: Na hipnogramie znajdują się 4 rzędy (Rysunek 2). Górny wiersz to przewidywane wyniki. Dolne 3 wiersze to surowe dane odpowiednio z 2 kanałów EEG i 1 EMG. W górnym rzędzie kolor pomarańczowy sugeruje etap Wake, niebieski sugeruje etap NREM, a czerwony sugeruje etap REM w każdej epoce.

  1. Aby zmienić liczbę epok do wyświetlenia, kliknij pole menu po prawej stronie Wybierz liczbę epok do wyświetlenia i wybierz żądaną wartość. W Rysunek 2, wybrano 100 epok. W związku z tym na wykresie przewidywania fazy snu wyświetlanych jest tylko 100 epok. Wybierz mniejszą liczbę z menu rozwijanego, aby powiększyć wykres.
  2. Różowy przezroczysty pasek po lewej stronie Rysunek 2 wskazuje aktualną lokalizację epoki. Kliknij lewym przyciskiem myszy w dowolnym miejscu hipnogramu, aby przełączyć się na inną epokę, lub po prostu kliknij Przejdź do epoki i wprowadź określoną liczbę epok, które chcesz obserwować. Kliknij prawym przyciskiem myszy wybraną epokę, aby wygenerować jej wykres SHAP epoki, jeśli użytkownik włączył funkcję SHAP.

6. Ręczna korekta przewidywanych faz snu w GUI (Opcjonalnie)

UWAGA: jeśli nie zaobserwowano żadnej anomalii lub nie jest wymagana bardzo wysoka dokładność do przewidywania fazy REM, ręczna weryfikacja nie jest potrzebna.

  1. Kliknij lewym przyciskiem myszy epokę na wykresie przewidywania fazy snu (wykres górny), aby wybrać konkretną epokę. Model przewidywany Etap Wybranej Epoki jest pokazany po prawej stronie tekstu. Aby ręcznie zmienić przewidywany etap w tej epoce, kliknij widżet i wybierz nowy etap z opcji Wake, NREM i REM z menu rozwijanego.
  2. Etapy poprawione przez użytkownika są oznaczone liniami przerywanymi na górze oryginalnego wykresu (Rysunek 3). Zamknij GUI, a nowy plik z poprawionymi wynikami przewidywania zostanie automatycznie wygenerowany w tym samym folderze.
    1. Aby ponownie otworzyć zapisany plik punktacji w graficznym interfejsie użytkownika, upewnij się, że ustawienie długości epoki i wybrany model są zgodne z tym, które zostało użyte podczas początkowego przetwarzania pliku EDF, aby można było go ponownie otworzyć. Wszystkie wcześniej zmodyfikowane/ocenione informacje zostaną szybko załadowane.

Wyniki

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

Istnieją trzy wykresy (tylko górny wykres, jeśli wartości SHAP nie zostały uruchomione) generowane w GUI po ocenie fazy snu: górny wykres przedstawia kanały EEG i EMG z hipnogramem przewidywania fazy snu. Środkowy wykres przedstawia wartości SHAP epoki. Dolny wykres przedstawia globalne wartości SHAP (Rysunek 1).

Na wykresie hipnogramu przewidywania fazy snu prezentowane są 4 rodzaje danych (Rysunek 2). Górny wiersz to przewidywane wyniki. Dolne 3 wiersze to surowe dane odpowiednio z 2 kanałów EEG i 1 EMG. W górnym rzędzie kolor pomarańczowy sugeruje etap "Wake", niebieski sugeruje etap "NREM", a czerwony sugeruje etap "REM" w każdej epoce. Bieżąca przykładowa epoka znajduje się w 1305 roku i jest w fazie "Budzenie", ponieważ różowy pasek adresu nakłada się na pomarańczową linię.

W Rysunek 3, etap poprawiony przez użytkownika jest oznaczony liniami przerywanymi na górze oryginału. Czerwona przerywana linia wskazuje, że faza snu została zmieniona z "Obudzenie" na "REM".

W Rysunek 4 pokazany jest przykładowy wynik epoki 1305 w przykładowym pliku 1. Oś Y wykresu SHAP epoki przedstawia 10 pierwszych obiektów z najwyższymi bezwzględnymi wartościami SHAP dla wybranej epoki. Oś x przedstawia wartości SHAP, które wskazują udział każdej funkcji w prognozie w porównaniu ze średnią prognozą. Dodatnia wartość SHAP wskazuje na dodatni wkład w prognozę i na odwrót. Cecha "emg_abs_max" ma bardzo dodatnią wartość SHAP na poziomie epoki dla Wake, co wskazuje, że "emg_abs_max" z wybranej epoki zwiększa prawdopodobieństwo, że wybrana epoka zostanie oceniona jako "Wake" (Rysunek 4). Jest to fizjologicznie uzasadnione, ponieważ duża amplituda EMG oznacza aktywne ruchy, wskazując w ten sposób na etap "Wake".

W przykładzie globalnego wykresu SHAP (Rysunek 5), każda kropka na wykresie p-swarm reprezentuje jedną próbkę danych. Oś y wykresów przedstawia 10 pierwszych obiektów z najwyższymi bezwzględnymi globalnymi wartościami SHAP obliczonymi na podstawie 500 losowo dobranych epok. Oś x przedstawia wartości SHAP, które wskazują udział każdej funkcji w prognozie w porównaniu ze średnią prognozą. W odróżnieniu od wykresu SHAP epoki, globalny wykres SHAP ma dwa wymiary: wartość x każdej kropki i intensywność koloru kropki. Dodatnia wartość SHAP na osi x wskazuje na dodatni wkład w prognozę i na odwrót. Próbki o ciemniejszym czerwonym kolorze mają wyższe wartości cech. Badając wizualnie korelacje pozycji i koloru 500 kropek dla każdej cechy, można zinterpretować, w jaki sposób LightGBM podejmuje decyzje na podstawie wartości każdej cechy. Na globalnym wykresie SHAP "Przebudzenie", gdy wartości SHAP dla "emg_abs_max" zwiększają się z bardziej ujemnych do bardziej dodatnich, kolor kropek staje się ciemniejszy. Wskazuje to, że zwiększone prawdopodobieństwo bycia przewidzianym jako "Wake" jest dodatnio skorelowane ze zwiększoną wartością "emg_abs_max". Warto również zauważyć, że cechy z szerszymi rozkładami wartości SHAP (wyższe wartości bezwzględne) w większym stopniu przyczyniają się do przewidywania przez model. Na przykład globalny wykres SHAP NREM (Rysunek 5) ma szeroki rozrzut kropek dla funkcji "eeg2_gamma_delta_ratio". Wysoce ujemna wartość SHAP funkcji zmniejsza prawdopodobieństwo, że model zostanie oceniony jako etap "NREM".

figure-results-1
Rysunek 1: Przegląd strony GUI po uruchomieniu predykcji dla pliku Example-1 EDF/EDF+ z modelem 1_LightBGM-2EEG. Oceniane jest zarówno przewidywanie fazy snu, jak i obliczanie SHAP. Górny wykres pokazuje kanały EEG i EMG z hipnogramem przewidywania faz snu. Środkowy wykres przedstawia wartości SHAP epoki. Dolny wykres przedstawia globalne wartości SHAP. Kliknij tutaj, aby zobaczyć większą wersję tego rysunku.

figure-results-2
Rysunek 2: Hipnogram przewidywania fazy snu z pliku Przykład-1 EDF/EDF+. Na wykresie prezentowane są 4 dane. Górny wiersz to przewidywane wyniki. Dolne 3 wiersze to surowe dane odpowiednio z 2 kanałów EEG i 1 EMG. W górnym rzędzie kolor pomarańczowy sugeruje etap "Wake", niebieski sugeruje etap "NREM", a czerwony sugeruje etap "REM" w każdej epoce. Kliknij tutaj, aby zobaczyć większą wersję tego rysunku.

figure-results-3
Rysunek 3: Hipnogram przewidywania fazy snu z pliku Example-1 EDF/EDF+ z manualną korektą zmodyfikowaną przez użytkownika. Epoka 1305 została zmieniona z etapu "Wake" na etap "REM" jako demonstracja ręcznej korekcji fazy snu w GUI. Przerywana czerwona linia wskazuje zmodyfikowaną przez użytkownika fazę snu "REM". Kliknij tutaj, aby zobaczyć większą wersję tego rysunku.

figure-results-4
Rysunek 4: Wartości SHAP Wake, NREM i REM Epoch dla przykładu-1 pliku EDF/EDF+ w Epoch 1305. Oś y wykresu SHAP epoki przedstawia 10 pierwszych obiektów z najwyższymi bezwzględnymi wartościami SHAP dla wybranej epoki. Oś x przedstawia wartości SHAP, które wskazują udział każdej funkcji w prognozie w porównaniu ze średnią prognozą. Kliknij tutaj, aby zobaczyć większą wersję tego rysunku.

figure-results-5
Rysunek 5: Wartości Wake, NREM i REM Global SHAP dla pliku Example-1 EDF/EDF+. Każda kropka na wykresie p-swarm reprezentuje jedną próbkę danych. Oś y wykresów przedstawia 10 pierwszych obiektów z najwyższymi bezwzględnymi globalnymi wartościami SHAP obliczonymi na podstawie 500 losowo dobranych epok. Oś x przedstawia wartości SHAP, które wskazują udział każdej funkcji w prognozie w porównaniu ze średnią prognozą. Oś x globalnej wartości SHAP ma dwa wymiary: wartość x każdej kropki i intensywność koloru kropki. Dodatnia wartość SHAP na osi x wskazuje na dodatni wkład w prognozę i na odwrót. Próbki o ciemniejszym czerwonym kolorze mają wyższe wartości cech. Kliknij tutaj, aby zobaczyć większą wersję tego rysunku.

Dyskusja

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

W tym artykule przedstawiono, jak używać graficznego interfejsu użytkownika IntelliSleepScorer (v1.2) do automatycznej oceny faz snu myszy oraz jak wykorzystać wartości/wykresy SHAP w celu lepszego zrozumienia wyników faz snu generowanych przez model.

Ważną kwestią podczas korzystania z oprogramowania jest kompatybilność danych. Dane wewnętrzne wykorzystane w tym badaniu ograniczały się do elektrod umieszczonych w okolicy czołowej i ciemieniowej. W niezależnym zestawie danych przeprowadzonym przez Miladinovic i współpracowników11, pomimo różnych współrzędnych elektrod dla tych regionów, oprogramowanie utrzymało zadowalającą wydajność. Chociaż oprogramowanie może mieć zastosowanie do innych obszarów mózgu, nie przeprowadziliśmy testów, aby to potwierdzić. Dlatego nie możemy twierdzić, że nie ma ograniczeń dotyczących rozmieszczenia elektrod. Zachęcamy jednak użytkowników do przetestowania go, jeśli posiadają nagrania z innych regionów.

Czas trwania sesji zapisu EEG/EMG w celu analizy fazy snu różni się w zależności od konkretnych celów badania. Zazwyczaj sesje nagraniowe trwają albo 12 godzin, obejmując jasną lub ciemną fazę, albo 24 godziny, obejmujące obie fazy w ciągu jednego dnia. Zarówno nagrania 12-godzinne, jak i 24-godzinne są powszechnie używane do uchwycenia różnych wzorców snu i czuwania oraz rytmów okołodobowych. Testy na modelu pokazują, że ocena fazy snu jest wiarygodna i dokładna zarówno dla 12-godzinnych, jak i 24-godzinnych sesji nagranych. Nie jest znana górna granica czasu trwania nagrań.

Dwa warte odnotowania kroki w protokole oprogramowania to wstępne przetwarzanie danych i ręczna weryfikacja. Aby zwiększyć możliwość uogólnienia wytrenowanych modeli, zezwoliliśmy na szum i artefakty w danych wejściowych oraz wdrożyliśmy minimalne środki kontroli jakości. Przeprowadzona przez nas kontrola jakości ma na celu wykluczenie słabych nagrań spowodowanych utratą sygnału. Utrata sygnałów jest zwykle spowodowana problemami z połączeniem, takimi jak poluzowanie lub odpadnięcie elektrod. Utrata sygnałów może spowodować błędy w wynikach snu generowanych przez oprogramowanie. Na przykład płaska linia w kanale EMG obudzonej myszy spowodowana luźną elektrodą EMG może mieć tę samą cechę, co faza unieruchomienia/uśpienia myszy, co może prowadzić do przewidywania "NREM" lub "REM" przez modele LightGBM. Dla porównania, użyliśmy następujących kryteriów, aby automatycznie wykluczyć nagrania, które miały znaczną utratę sygnału: 1) amplituda dowolnego sygnału EEG jest mniejsza niż 1 μV przez co najmniej 50% czasu trwania nagrania lub 2) amplituda sygnału EMG jest mniejsza niż 1 pV przez co najmniej 50% czasu trwania nagrania. Użytkownicy muszą wdrożyć własne kryteria kontroli jakości w oparciu o swoją eksperymentalną konfigurację i system nagrywania. Szumy linii spowodowane prądem przemiennym są zwykle zlokalizowane na częstotliwości 50 Hz lub 60 Hz. Te szumy linii zostaną usunięte podczas kroku filtra pasmowoprzepustowego (1-40 Hz) zaimplementowanego w oprogramowaniu. W związku z tym nie ma potrzeby, aby użytkownicy wstępnie przetwarzali szumy linii przed wprowadzeniem danych do oprogramowania. Podczas opracowywania modelu uwzględniono drobne dźwięki lub czynniki zakłócające, takie jak ruchy ciała1. Podejście zastosowane w tym badaniu zapewnia, że uogólnialność modelu może tolerować te drobne artefakty, które nie wpływają znacząco na końcowe wyniki oceny stanu snu. Format, jakość nagrania i sekwencja organizacyjna plików danych EDF są kluczowymi elementami optymalizującymi wydajność tego wstępnie wytrenowanego modelu.

W przypadku weryfikacji ręcznej, biorąc pod uwagę, że model LightGBM działał słabo (wynik REM F1 < 0,6) na kilku nagraniach, zalecamy, aby użytkownicy zweryfikowali fazy snu wygenerowane przez model, jeśli dokładna ocena fazy REM ma kluczowe znaczenie. W przypadku badań koncentrujących się na fizjologii fazy czuwania lub NREM, model LightGBM nadal obsługuje bardzo solidny i w pełni zautomatyzowany potok analityczny. Interpretacja wartości SHAP może stać się doskonałym narzędziem w połączeniu z ręczną weryfikacją w celu potwierdzenia dokładności wyników generowanych przez oprogramowanie. SHAP to podejście, które wykorzystuje teorię gier do wyjaśnienia wyników modeli uczenia maszynowego. Łączy optymalną alokację punktów z lokalnymi wyjaśnieniami przy użyciu klasycznych wartości Shapleya i powiązanych z nimi rozszerzeń20. Na przykład na wykresie Globalne wartości SHAP NREM (Rysunek 4) jeśli po prawej stronie obiektu "eeg2_gamma_delta_ratio" nagle pojawi się ciemnoczerwona kropka, może to oznaczać anomalię w tej epoce. Dzieje się tak, ponieważ izolowana kropka próbki epoki odbiega od całego zestawu danych. Interpretacja wykresów SHAP może również dostarczyć użytkownikom jasnego i przyjaznego dla użytkownika wyjaśnienia punktacji faz snu. Na przykład wykresy SHAP epoki dostarczają informacji o tym, które cechy są najważniejszym czynnikiem decydującym o ocenie fazy snu. Hipnogram przewidywania wyników (ryc. 2) również dostarcza istotnych informacji na temat wyników przewidywania. W przypadkach, gdy oceniane fazy snu w hipnogramie wykazują częste przejścia między fazami "czuwania" i "REM", co jest fizjologicznie nieprawidłowe, zaleca się przeprowadzenie kompleksowej oceny punktacji i odpowiadających jej wartości SHAP w celu ustalenia jakości wyników. Dzięki wykresom SHAP i hipnogramu naukowcy mogą szybko zidentyfikować wszelkie błędy przewidywania podczas oceny faz snu. Jednak chociaż wartości SHAP wyjaśniają, w jaki sposób model tworzy przewidywania, niekoniecznie oznaczają, że przewidywania lub sposób, w jaki model tworzy pewne przewidywania, są poprawne. Celem prezentacji wartości SHAP jest pomoc użytkownikom w zrozumieniu procesu oceniania fazy snu i umożliwienie użytkownikom szybkiej identyfikacji wszelkich błędów poprzez zbadanie logiki modelu LightGBM.

W obecnej wersji (v1.2) modelu są dwie wyjątkowe funkcje. Po pierwsze, zgodnie z poprzednim akapitem, ręczna weryfikacja/korekta może być bardzo żmudna i niewygodna, jeśli użytkownicy muszą wrócić do plików CSV w celu wprowadzenia modyfikacji, szczególnie w przypadku długich nagrań. Dlatego oferujemy funkcję ręcznej korekcji bezpośrednio zintegrowaną z graficznym interfejsem użytkownika, aby użytkownicy mogli zmienić punktowaną fazę snu w dowolnej epoce. Po kliknięciu przez użytkownika określonej epoki, oceniona faza snu "Wake", "REM" lub "NREM" zostanie wyświetlona w menu rozwijanym na górze paska GUI. Jeśli użytkownik chce zmienić etap z jednego na drugi, może po prostu wybrać inny etap z menu rozwijanego, a zostanie wygenerowany nowy plik punktowany, ręcznie poprawiony przez użytkowników. Ponadto, zamiast standardowej, stałej, 10-sekundowej długości epoki przewidzianej do analizy, udostępniamy opcję dostosowania długości epoki w graficznym interfejsie użytkownika, aby zaspokoić specyficzne potrzeby eksperymentalne różnych badaczy snu. Obecnie dostępne są epoki 4-s, 10-s i 20-s, które są powszechnie używane wśród badaczy snu. Mimo że model ten został wytrenowany na podstawie wewnętrznych danych z epok 10-sekundowych, wydajność modelu w niezależnych testach danych z epok 4-s z różnych laboratoriów była porównywalna z wydajnością ekspertów we wszystkich fazach snu1. Użytkownicy muszą zachować ostrożność podczas wdrażania epok 20-sekundowych, ponieważ: 1) ocenianie snu/czuwania myszy w epokach 20-sekundowych może przegapić bardzo krótkie zdarzenia, takie jak przejściowe pobudzenia; 2) Epoki 20-s z większym prawdopodobieństwem obejmują mieszane etapy w każdej epoce8.

Wnikliwe będzie porównanie tego modelu z innymi istniejącymi metodami automatycznej oceny faz snu dla użytkowników. Oprócz IntelliSleepScorer istnieje kilka innych opracowanych modeli do automatycznego oceniania faz snu o różnym stopniu dokładności, złożoności i skuteczności 8,9,10,11,12,13,14,15,16,17,18 . Model wykorzystany w tym badaniu wykorzystuje algorytm LightGBM w celu osiągnięcia wysokiej dokładności oceny faz snu, porównywalnej z istniejącymi modelami. W naszej ocenie IntelliSleepScorer wykazał ogólną dokładność na poziomie 95,2%, co jest na równi z metrykami wydajności raportowanymi dla podobnych modeli, takich jak MC-SleepNet8 i Sleep-Deep-Learner9. Jednak prawdziwa różnica IntelliSleepScorer polega nie tylko na jego dokładności, ale także na jego dostępności i łatwości użycia dla nieprzeszkolonych badaczy z ograniczonym doświadczeniem w kodowaniu.

MC-SleepNet8, wytrenowany przy użyciu głębokich sieci neuronowych na dużym zbiorze danych 4200 myszy, osiąga wysoką dokładność punktacji 96,4% i statystykę kappa 0,94, przewyższając większość istniejących metod. Jednakże, o ile nam wiadomo, do tej pory nie istnieje żadne oprogramowanie oparte na MC-SleepNet, które byłoby publicznie dostępne.

Sleep-Deep-Learner9 automatyzuje ocenianie u myszy z wynikiem F1 wynoszącym 0,86 dla snu REM, 0,95 dla snu NREM i 0,97 dla czuwania. Jednak autorzy odnieśli się w artykule, że Sleep-Deep-Learner nie jest odpowiedni dla osób, które nie są dobrze zorientowane w ocenie snu i czuwania, ponieważ wymaga podzbioru ręcznie ocenianych epok. Z drugiej strony IntelliSleepScorer nie wymaga żadnych dalszych ręcznych manipulacji podczas oceniania fazy snu i ma bardzo przyjazny dla użytkownika graficzny interfejs użytkownika dla wszystkich badaczy.

Somnivore10 to wszechstronny, wielowarstwowy system przeznaczony do automatycznej oceny fazy czuwania i snu, biegły w uczeniu się na podstawie ograniczonych zestawów treningowych ze złożonymi danymi wejściowymi polisomnograficznymi. Działa z dużą wydajnością obliczeniową i wykazuje solidne uogólnienie na różne tematy, w tym ludzi, gryzonie (dzikie i transgeniczne) oraz gołębie. Jednak Somnivore nie jest darmowy.

SlumberNet11 i AccuSleep12 są łatwo dostępne odpowiednio na Zenodo i GitHub i mają dokładność punktacji 97% i 96,8%. Jednak oba modele mają stosunkowo małe rozmiary danych treningowych wynoszące 9 lub 10 myszy i nie obejmowały niezależnej walidacji testów. Dlatego ich rzeczywista wydajność pozostaje nieznana.

SPINDLE13 to kolejny model internetowy wyszkolony przy użyciu mniejszego zestawu danych z udziałem 4-6 myszy/szczurów wykorzystujących konwolucyjne sieci neuronowe. Zweryfikowany na podstawie danych z trzech niezależnych laboratoriów snu, projekt SPINDLE osiągnął średni wskaźnik zgodności na poziomie 93%-99% z oceną ekspertów z różnych laboratoriów, odzwierciedlającą ludzkie możliwości.

Wreszcie, Somnotate14 wykazał dokładność 0,97 ± 0,01 oraz ważony wynik F1 wynoszący 0,97 ± 0,01 podczas oceny na wewnętrznych zestawach danych, które zawierały sześć 24-godzinnych nagrań opartych na konsensusie co najmniej trzech ręcznych adnotacji. Podczas testów na zbiorze danych Somnotate wydajność IntelliSleepScorer zmniejszyła się, z dokładnością 0,75 ± 0,04 i ważonym wynikiem F1 wynoszącym 0,73 ± 0,0514. Ta zmniejszona wydajność może być przypisana różnicom w ustawieniach eksperymentalnych lub warunkach nagrywania w różnych zestawach danych. Biorąc pod uwagę różnorodność rzeczywistych przypadków użycia, zachęcamy użytkowników do oceny wydajności IntelliSleepScorer na swoich zestawach danych, zwłaszcza jeśli ich konfiguracje eksperymentalne lub warunki nagrywania znacznie różnią się od naszych. Jeśli wydajność oprogramowania nie spełnia oczekiwań, użytkownicy mają możliwość dostrojenia wstępnie wytrenowanego modelu za pomocą swoich danych, ponieważ modele i kod używany do programowania są udostępniane jako oprogramowanie typu open source.

Oprócz przykładów istniejących modeli omówionych powyżej, istnieje kilka innych opracowanych zautomatyzowanych systemów oceny snu, z których badacze mogą wybierać w zależności od konkretnych i różnych potrzeb swoich badań 15,16,17,18.

W przyszłych pracach zamierzamy opracować/wytrenować nowy model, który zoptymalizuje czas automatycznego oceniania faz snu. Obecnie GUI przetwarza 12 h nagrań próbkowanych z częstotliwością 1000 Hz w około 10 minut na procesorze Intel Core i7-8550U @ 1,80 GHz. Jednak czas przetwarzania wydłuża się o około 2,5 raza w przypadku oceniania faz snu z epokami 4-s w porównaniu z domyślnymi epokami 10-s. Ten nowy model może zaspokoić potrzeby niektórych użytkowników, którzy pragną szybszej automatycznej oceny fazy snu u myszy. Zawsze słuchamy również opinii użytkowników, a każda nowa funkcja może zostać dodana na żądanie.

Podsumowując, zapewniamy bezpłatne, publicznie dostępne i przyjazne dla użytkownika oprogramowanie GUI, IntelliSleepScorer, aby stworzyć wygodny, zautomatyzowany potok do oceny faz snu myszy. Ponadto poszliśmy o krok dalej, oferując wizualizacje wartości SHAP, które wyjaśniają decyzję o punktacji podejmowaną przez model. Doświadczeni użytkownicy mogą również dostosować nasz wstępnie wytrenowany model przy użyciu swoich danych, biorąc pod uwagę, że pliki modelu i skrypty do wyodrębniania funkcji do trenowania/dostrajania są publicznie dostępne w repozytorium GitHub. Mamy nadzieję, że ten ogólnodostępny model może zmniejszyć lukę technologiczną i ułatwić przejście od gromadzenia danych do nowatorskich odkryć z wykorzystaniem modeli mysich w badaniach nad snem, jednocześnie zmniejszając pracochłonność.

Oświadczenia

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

Autorzy deklarują brak konfliktu interesów.

Podziękowania

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,

Dziękujemy Kerenie Yan i Jingwen Hu za ręczne ocenianie faz snu oraz Eunah i Soonwiik za nagrania.

Materiały

Lista materiałów użytych w tym artykule
NazwaFirmaNumer katalogowyKomentarze
Canonical Unbuntu 18.04Canonicalhttps://releases.ubuntu.com/18.04/Wspierający system operacyjny dla oprogramowania IntelliSleep Scorer: Windows, Mac lub Linux
Intel Core i7-8550U CPU @ 1,80 GHz 1,99 GHz; Pamięć RAM: 24 GB Wymagania sprzętowe firmy Intel Corphttps://www.intel.com/content/www/us/en/products/details/processors/core-ultra.htmldotyczące oprogramowania: Oba wymienione tutaj rdzenie wewnętrzne zostały użyte do przetwarzania danych. Przetworzenie 12 godzin nagrania próbkowanego z częstotliwością 1000 Hz dla obu urządzeń zajmuje około 10 minut. Każdy podobny lub lepszy sprzęt zapewni porównywalną lub lepszą wydajność.  
Procesor Intel Core i7-10610U @1,80 GHz 2,30 GHz; Pamięć RAM: 16 GBIntel Corphttps://www.intel.com/content/www/us/en/products/details/processors/core-ultra.htmlWymagania sprzętowe dla oprogramowania: Oba wymienione tutaj rdzenie wewnętrzne zostały użyte do przetwarzania danych. Przetworzenie 12 godzin nagrania próbkowanego z częstotliwością 1000 Hz dla obu urządzeń zajmuje około 10 minut. Każdy podobny lub lepszy sprzęt zapewni porównywalną lub lepszą wydajność.  
LightGBMMicrosofthttps://lightgbm.readthedocs.io/en/latest/index.htmlalgorytm oparty na uczeniu maszynowym, który został użyty do trenowania oprogramowania. 
MacBook ProApplehttps://www.apple.com/in/macbook-pro/Obsługa systemu operacyjnego dla oprogramowania IntelliSleep Scorer: Windows, Mac lub Linux
Windowshttps://www.microsoft.com/en-in/windows/?r=1Obsługa systemu operacyjnego dla oprogramowania IntelliSleep Scorer: Windows, Mac lub Linux
Microsoft

Bibliografia

Loading...
$$\rightleftharpoonup{xx}$$ $$\longleftharp{xx}$$, $$\longrightharp{xx}$$,
  1. Wang, L. A., Kern, R., Yu, E., Choi, S., Pan, J. Q. Intellisleepscorer, a software package with a graphic user interface for automated sleep stage scoring in mice based on a light gradient boosting machine algorithm. Sci Rep. 13 (1), 4275(2023).
  2. Astori, S., Wimmer, R. D., Luthi, A. Manipulating sleep spindles--expanding views on sleep, memory, and disease. Trends Neurosci. 36 (12), 738-748 (2013).
  3. Fraigne, J. J., Torontali, Z. A., Snow, M. B., Peever, J. H. Rem sleep at its core-circuits, neurotransmitters, and pathophysiology. Front Neurol. 6, 123(2015).
  4. Huber, R., Deboer, T., Tobler, I. Effects of sleep deprivation on sleep and sleep eeg in three mouse strains: Empirical data and simulations. Brain Res. 857 (1-2), 8-19 (2000).
  5. Brown, R. E., Basheer, R., Mckenna, J. T., Strecker, R. E., Mccarley, R. W. Control of sleep and wakefulness. Physiol Rev. 92 (3), 1087-1187 (2012).
  6. Lacroix, M. M., et al. Improved sleep scoring in mice reveals human-like stages. BioRxiv. 489005, (2018).
  7. Rayan, A., et al. Sleep scoring in rodents: Criteria, automatic approaches and outstanding issues. Eur J Neurosci. 59 (4), 526-553 (2024).
  8. Yamabe, M., et al. Mc-sleepnet: Large-scale sleep stage scoring in mice by deep neural networks. Sci Rep. 9 (1), 15793(2019).
  9. Katsuki, F., Spratt, T. J., Brown, R. E., Basheer, R., Uygun, D. S. Sleep-deep-learner is taught sleep-wake scoring by the end-user to complete each record in their style. Sleep Adv. 5 (1), zpae022(2024).
  10. Allocca, G., et al. Validation of 'somnivore', a machine learning algorithm for automated scoring and analysis of polysomnography data. Front Neurosci. 13, 207(2019).
  11. Jha, P. K., Valekunja, U. K., Reddy, A. B. Slumbernet: Deep learning classification of sleep stages using residual neural networks. Sci Rep. 14 (1), 4797(2024).
  12. Barger, Z., Frye, C. G., Liu, D., Dan, Y., Bouchard, K. E. Robust, automated sleep scoring by a compact neural network with distributional shift correction. PLoS One. 14 (12), e0224642(2019).
  13. Miladinovic, D., et al. Spindle: End-to-end learning from eeg/emg to extrapolate animal sleep scoring across experimental settings, labs and species. PLoS Comput Biol. 15 (4), e1006968(2019).
  14. Brodersen, P. J. N., et al. Somnotate: A probabilistic sleep stage classifier for studying vigilance state transitions. PLoS Comput Biol. 20 (1), e1011793(2024).
  15. Akada, K., et al. A deep learning algorithm for sleep stage scoring in mice based on a multimodal network with fine-tuning technique. Neurosci Res. 173, 99-105 (2021).
  16. Rytkonen, K. M., Zitting, J., Porkka-Heiskanen, T. Automated sleep scoring in rats and mice using the naive Bayes classifier. J Neurosci Methods. 202 (1), 60-64 (2011).
  17. Kam, K., Rapoport, D. M., Parekh, A., Ayappa, I., Varga, A. W. Wavesleepnet: An interpretable deep convolutional neural network for the continuous classification of mouse sleep and wake. J Neurosci Methods. 360, 109224(2021).
  18. Crisler, S., Morrissey, M. J., Anch, A. M., Barnett, D. W. Sleep-stage scoring in the rat using a support vector machine. J Neurosci Methods. 168 (2), 524-534 (2008).
  19. Ke, G., et al. Lightgbm: A highly efficient gradient boosting decision tree. Neural Information Processing Systems. , (2017).
  20. A unified approach to interpreting model predictions. Lundberg, S. M., Lee, S. I. In Proceedings of the 31st International Conference on Neural Information Processing Systems (NIPS'17), , Curran Associates Inc. Red Hook, NY. 4768-4777 (2017).

Przedruki i uprawnienia

Poproś o pozwolenie na ponowne wykorzystanie tekstu lub ilustracji tego artykułu JoVE

Poproś o pozwolenie

Tagi

Automated Sleep ScoringMouse Sleep StagesSleep Stage ScoringLightGBM AlgorithmEEG EMG AnalysisSHAP Value VisualizationGraphic User InterfaceManual Sleep CorrectionSleep Research SoftwareSleep Stage Classification

Powiązane artykuły