Przegląd kluczowych elementów niezbędnych do przeprowadzenia eksperymentu okulomotorycznego przedstawiono na rysunku 1. Każdy blok na schemacie zostanie szczegółowo omówiony poniżej.
1. KONFIGURACJA INSTRUMENTACJI:
- W systemie tym można zastosować dowolny rodzaj monitora ruchów gałek ocznych. Przedstawimy system śledzenia limbusa w podczerwieni oraz system monitorowania wideo.
- Do śledzenia ruchów tandemowych, takich jak sakady lub płynne podążanie, do wyświetlania bodźców wizualnych można wykorzystać pojedynczy komputer. Do badania ruchów przeciwstawnych, takich jak wergencja, lub interakcji wergencji z ruchami tandemowymi (np. wergencji przy bodźcach sakadycznych), wymagany jest haploskop z dwoma monitorami komputerowymi do wyświetlania obrazu, patrz ryc. 2.
2. KALIBRACJA:
- Kalibracja jest niezbędna do przeliczenia jednego zestawu miar na inny. Ruchy gałek ocznych są zazwyczaj określane w stopniach (°) obrotu, jak pokazano na rysunku 3. Jednak monitory komputerowe wykorzystują wartości w pikselach, podczas gdy badacze wzroku często określają bodźce wizualne w stopniach. W związku z tym konieczna jest konwersja wartości pikselowych na stopnie. Można wykorzystać trygonometrię, aby obliczyć, gdzie umieścić fizyczne cele do kalibracji wyświetlaczy wizualnych. Na przykład, jeśli bodziec na ekranie komputera pokrywa się z fizycznym celem o wartości 2° (patrz rysunek 2), to ta wartość w pikselach odpowiada bodźcowi 2°.
- Aby skalibrować system, operator musi otworzyć plik Pixel2Deg.vei w katalogu VisualEyes. Najpierw, w polu trybu rozciągania (stretch mode), należy zdefiniować monitor do kalibracji. Wprowadź liczbę 1 dla monitora lewego oka i liczbę 2 dla monitora prawego oka. Następnie uruchom program i przesuń bodziec w postaci zielonej linii, aż linia ta nałoży się na fizyczny cel. Wprowadź znaną pozycję fizycznego celu w stopniach i naciśnij przycisk zapisu. Następnie kliknij zieloną linię. Wartość w stopniach i pikselach zostanie wyświetlona w lewym dolnym rogu ekranu. Operator powinien zebrać minimum trzy punkty kalibracyjne.
- Po zapisaniu wszystkich punktów kalibracyjnych otwórz plik wyjściowy D2P w katalogu VisualEyes, aby uzyskać punkty kalibracji. Wykreśl punkty kalibracyjne, aby otrzymać równanie regresji liniowej. Użyj tego równania do obliczenia początkowej i końcowej pozycji bodźca wizualnego, którą operator chce zaprogramować w wartościach pikselowych. Przykład krzywej kalibracyjnej dla lewego i prawego oka, uzyskanej przy użyciu pięciu punktów kalibracyjnych dla bodźca konwergencji, przedstawiono na rysunku 4.
- Powtórz kroki 2.2 i 2.3 dla drugiego monitora, jeżeli bodziec wymaga dodatkowego ekranu.
3. PROGRAMOWANIE VISUALEYES:
- Definicja bodźca: Operator musi zdefiniować położenie początkowe i końcowe bodźca dla oka lewego i prawego przed rozpoczęciem eksperymentu. Najpierw należy otworzyć nowy plik tekstowy i w pierwszym wierszu zdefiniować wartości czasu oraz położenia początkowego bodźca. Należy zdefiniować cztery parametry: 1) czas (sekundy), 2) pozycję poziomą (piksel), 3) pozycję pionową (piksel) oraz 4) obrót (°) oddzielone tabulatorem. W ten sam sposób należy zdefiniować cztery parametry dotyczące końcowego czasu i pozycji bodźca. Zapisz bodziec w katalogu VisualEyes jako plik stimulus_name.vei (VEI=VisualEyes Input), a następnie powtórz ten krok dla bodźca dla drugiego oka.
- Ruch bodźca można uogólnić do dwóch typów ruchu: gwałtownego skoku (step) lub ciągłego narastania (ramp). Skok umożliwia gwałtowny ruch lub przeskoczenie bodźca z pozycji początkowej do końcowej. Operator powinien zwrócić uwagę, że w przypadku bodźca skokowego zmiana czasu wynosi 0,001 sekundy. W następnym wierszu należy zdefiniować, jak długo bodziec ma pozostać w pozycji początkowej, a jak długo w pozycji końcowej. Bodźce definiuje się za pomocą czterech pól w jednym wierszu. Przykłady skoku sakkadowego, narastania w pościgu płynnym, skoku wergencyjnego oraz narastania wergencyjnego przedstawiono w Tabeli 1.
- W przypadku bodźców można zastosować pojedynczy bodziec, taki jak skok, lub sekwencję zadań wizualnych, takich jak kroki wieloetapowe.
- Zapisz bodziec w bibliotece bodźców: W katalogu VisualEyes znajdują się pliki dc1.txt (stymulacja lewego oka / monitor) oraz dc2.txt (stymulacja prawego oka / monitor), które zawierają kilka ustawień domyślnych. Pierwsza linia określa procent szerokości ekranu w kierunku poziomym. Druga linia określa procent wysokości ekranu w kierunku pionowym. Trzecia linia zawiera obraz tła, a czwarta obraz pierwszego planu lub obraz celu. Piąta linia wskazuje komputer pracujący w trybie niezależnym. 6th oznacza, który monitor (1 to prawe oko, a 2 to lewe oko). 7th linia określa proporcje obrazu monitorów. Pozostałe linie reprezentują różne rodzaje bodźców, których operator może użyć w ramach sesji eksperymentalnej.
- Otwórz pliki dc1.txt i dc2.txt z katalogu VisualEyes. Te dwa pliki zawierają bodźce biblioteczne odpowiednio dla lewego i prawego oka. W ostatnim wierszu wpisz nazwę pliku bodźca, który został wygenerowany w kroku 3.1. Numer profilu odnosi się do mth wiersz odpowiadający nazwie pliku z bodźcem. Na przykład na rysunku 1 numer profilu bodźca to 8.
- Można powtórzyć kroki 3.1 do 3.2, aby przygotować taką liczbę bodźców, jaka jest potrzebna do przeprowadzenia eksperymentu.
- Napisz scenariusz protokołu eksperymentalnego: Otwórz plik tekstowy, aby wprowadzić polecenia protokołu eksperymentalnego. Plik ten nazywany jest plikiem skryptu, co oznacza, że system VisualEyes odczyta i wykona każde polecenie zawarte w skrypcie w tym pliku. Możliwość stworzenia pliku skryptu dla protokołu eksperymentalnego pozwala użytkownikowi na przeprowadzanie powtarzalnych sesji eksperymentalnych z wykorzystaniem tego samego protokołu. Co więcej, można napisać wiele skryptów, aby zmieniać rodzaj i kolejność poleceń eksperymentalnych. Plik ten można zapisać w katalogu VisualEyes jako plik o nazwie script_name.ves (VES = VisualEyes Script).
- Funkcje VisualEyes posiadają argumenty wejściowe i wyjściowe. W tabeli 2 przedstawiono wszystkie funkcje oprogramowania VisualEyes.
- ExpTrial: Ta funkcja służy do wywołania bodźca zapisanego w bibliotece bodźców w kroku 3.2. Długość danych określa czas, przez który funkcja będzie realizować bodziec. Plik tempfile.lwf pozwala oprogramowaniu VisualEyes na tymczasowe przechowywanie przychodzących danych i przesyłanie ich do bufora wyjściowego. Jeśli plik tempfile.lwf nie zostanie zdefiniowany, podczas wykonywania tej funkcji przychodzące dane nie będą przechowywane w celu digitalizacji.
- LogFile: Ta funkcja zapisuje w pliku out.txt w katalogu VisualEyes ciągi znaków lub bufor wejściowy zdefiniowany w ExpTrial. Po zakończeniu eksperymentu operator musi zmienić nazwę pliku out.txt na inną. W przeciwnym razie dane zostaną nadpisane podczas następnego eksperymentu.
- TriggerWait: Funkcja ta oczekuje, aż badany naciśnie przycisk wyzwalający, aby rozpocząć próbę eksperymentalną (ExpTrial) i zdigitalizować dane. Jest to kanał w karcie akwizycji sygnałów cyfrowych, który oczekuje na zmianę sygnału ze stanu wysokiego (5 V) na niski (0 V).
- RandomDelay: Funkcja ta generuje losny opóźnienie, aby zapobiec przewidywaniu lub antycypacji następnego bodźca.
- WaveMSD: Funkcja ta oblicza średnią i odchylenie standardowe danych.
4. UMIEŚCZENIE MONITORA RUCHÓW OCZU I PRZEPROWADZENIE EKSPERYMENTU:
- Do zbierania i rejestrowania ruchów gałki ocznej można użyć różnych monitorów, takich jak system obrazowania wideo odblasków rogówkowych, system śledzenia limbusa lub cewki poszukiwawczej twardówki.
- Przed przystąpieniem badanego do udziału w badaniu należy wyjaśnić przebieg eksperymentu, a badany musi przeczytać i podpisać formularz świadomej zgody zatwierdzony przez Instytucjonalną Komisję Rewizyjną (Institutional Review Board).
- Operator musi dopasować monitor ruchów gałki ocznej do badanego. Najpierw prosi się badanego o fiksację wzroku na celu. Operator reguluje monitor tak, aby uchwycić cechy anatomiczne oka, takie jak limbus (granica między tęczówką a twardówką) lub źrenica i odblask rogówkowy, w zależności od zastosowanego urządzenia.
- Po prawidłowym dopasowaniu monitora do badanego operator powinien zweryfikować, czy urządzenie rejestruje ruchy oczu, prosząc badanego o wykonanie ruchów wergentnych lub sakadycznych.
- Otwórz program ReadScript.vei w katalogu VisualEyes. W prawym górnym rogu wpisz nazwę pliku skryptu protokołu eksperymentalnego utworzonego w kroku 3.4. Następnie uruchom program ReadScript.vei, naciskając czerwoną strzałkę w lewym górnym rogu.
- Przekaż badanemu przycisk wyzwalający i wyjaśnij, że po jego naciśnięciu rozpocznie się zbieranie danych. Na ekranie automatycznie pojawi się kolejny plik Acquire.vei, który będzie przedstawiał przychodzące dane na wykresie. Próbkowanie danych odbywa się z częstotliwością 50Hz.
- Po zakończeniu eksperymentu program ReadScript.vei zatrzyma się automatycznie. W tym momencie należy przejść do katalogu VisualEyes i odnaleźć plik Out1.txt. Zmień nazwę tego pliku, w przeciwnym razie podczas kolejnego uruchomienia eksperymentu plik z danymi zostanie nadpisany.
5. ANALIZA DANYCH OFF-LINE:
- Operator może analizować dane, korzystając z różnych pakietów oprogramowania (np. MatLab lub Excel). W zależności od badania przedmiotem zainteresowania może być latencja, prędkość szczytowa lub amplituda.
- W katalogu VisualEyes znajduje się przykład kodu do analizy w programie Matlab, służący do wykreślania sakkad, skoków konwergencji i ramp konwergencji. Przykłady zbiorczych zapisów pozycji sakkad, skoków konwergencji i ramp konwergencji wraz z odpowiadającymi im odpowiedziami prędkościowymi przedstawiono na rysunku 5.
6. Reprezentatywne wyniki:
Przykłady zestawu ruchów gałek ocznych zarejestrowanych za pomocą systemu VisualEyes przedstawiono na rysunku 5. Typowe ruchy sakadyczne o amplitudzie 10° pokazano na wykresie 4A. Antysakady to odpowiedzi sakadyczne w sytuacji, gdy badany ma za zadanie wykonać sakadę w kierunku przeciwnym do bodźca wzrokowego; przedstawiono je na wykresie 4B. Jest to zadanie bardziej obciążające poznawczo, w związku z czym można zauważyć, że latencja, czyli czas do rozpoczęcia ruchu, jest dłuższy dla antysakad (wykres 4B) w porównaniu do sakad w kierunku bodźca wzrokowego, zwanych również prosakadami (wykres 4A). Odpowiedzi wergencyjne na skoki 4° przedstawiono na wykresie 4C, a odpowiedzi wergencyjne na bodźce rampowe 5 °/s na wykresie 4D. Każdy zapis reprezentuje pojedynczy ruch oka, gdzie górny rząd przedstawia pozycję wyrażoną w stopniach jako funkcję czasu. Ruchy gałek ocznych są kalibrowane w jednostkach stopni, kątów metrycznych lub dioptrii pryzmatycznych. W naszych badaniach stosujemy stopień obrotu. Dolny rząd przedstawia prędkość wykreśloną w °/s jako funkcję czasu, co określa szybkość ruchu. Skala dla każdego zestawu danych różni się w zależności od rodzaju ruchu.

Rysunek 1. Schemat blokowy kluczowych elementów niezbędnych do przeprowadzenia eksperymentu okulomotorycznego. Przedstawiono przykłady kroków potrzebnych do wygenerowania bodźca za pomocą oprogramowania VisualEyes oraz przeprowadzenia eksperymentu w celu późniejszej analizy danych (offline). Część A przedstawia okno Pixel2Deg.vei. Część B demonstruje cztery parametry niezbędne do zdefiniowania bodźca. Część C to biblioteka bodźców, w której czarne linie tekstu są przykładowymi plikami bodźców, a czerwony tekst definiuje każdą linię. Część D jest przykładem protokołu skryptu eksperymentalnego.

Rycina 2. Konfiguracja doświadczalna haploskopu systemu VisualEyes. Wykorzystano trzy monitory CRT: 1) panel sterowania służący do podglądu bodźców i odpowiedzi, 2) monitor CRT dla bodźców wizualnych prawego oka (RE) oraz 3) monitor CRT dla bodźców wizualnych lewego oka (LE). Lustro półprzepuszczalne umieszczono w odległości 30 cm od dwóch monitorów CRT wyświetlających bodźce wizualne. Ma to na celu zapewnienie rzutowania obrazów z monitorów CRT na lustro półprzepuszczalne (lustro o 50% transmitancji i 50% reflekcji). Lustro umożliwia badanemu widzenie bodźców z ekranów komputerowych nałożonych na cele znajdujące się w określonych odległościach od badanego, co jest niezbędne do kalibracji. W przypadku haploskopu zapotrzebowanie na akomodację obu oczu pozostaje stałe. Odległość między oczami badanego a lustrem wynosi 10 cm. System można dostosować do różnych odległości między źrenicami (IPD), jednak w tej demonstracji przyjmiemy IPD wynoszące 6 cm.

Rycina 3. Przedstawiono obliczenia ruchu sakadycznego (lewo) i wergencyjnego (prawo) przy przemieszczaniu się celu z punktu A do punktu B. IPD oznacza odległość między źrenicami.

Rycina 4. Krzywa kalibracyjna bodźca dla oka lewego (wykres górny) i oka prawego (wykres dolny). Analogiczna procedura zostałaby przeprowadzona dla bodźców wywołujących sakady lub płynne śledzenie.

Rysunek 5. Przykłady sakad (A), antysakad (B), skoków wergencji (C) i ramp wergencji (D) z wykorzystaniem systemu VisualEyes i analizowane za pomocą autorskiego programu MATLAB. Ślady pozycji zespołu (° w funkcji czasu w s) przedstawiono w górnym rzędzie, gdzie każda kolorowa linia reprezentuje inny ruch oka. Odpowiednie przebiegi prędkości (°/s w funkcji czasu w sekundach).
| Typ bodźca | Nazwa_Bodźca_Lewe_Oko.vei | Nazwa_Bodźca_Prawe_Oko.vei |
| | Czas (s) | pozycja x (piksel) | pozycja y (piksel) | Rotacja (°) | Czas (s) | pozycja x (piksel) | pozycja y (piksel) | Rotacja (°) |
| Rampa śledzenia gładkiego | 0 | 100 | 0 | 0 | 0 | 100 | 0 | 0 |
| 10 | 200 | 0 | 0 | 10 | 200 | 0 | 0 |
| Krok sakadyczny | 0 | 100 | 0 | 0 | 0 | 100 | 0 | 0 |
| 0.5 | 100 | 0 | 0 | 0.5 | 100 | 0 | 0 |
| 0.501 | 200 | 0 | 0 | 0.501 | 200 | 0 | 0 |
| 3 | 200 | 0 | 0 | 3 | 200 | 0 | 0 |
| Rampa konwergencji | 0 | 452 | 0 | 0 | 0 | 973 | 0 | 0 |
| 10 | 370 | 0 | 0 | 10 | 1044 | 0 | 0 |
| Krok konwergencji | 0 | 452 | 0 | 0 | 0 | 973 | 0 | 0 |
| 0.5 | 452 | 0 | 0 | 0.5 | 973 | 0 | 0 |
| 0.501 | 416 | 0 | 0 | 0.501 | 1002 | 0 | 0 |
| 3 | 416 | 0 | 0 | 3 | 1002 | 0 | 0 |
Tabela 1. Przykład bodźców w postaci rampy dla śledzenia gładkiego, skoku sakadycznego, rampy dla wergencji oraz skoku dla wergencji
| Funkcja | Składnia |
| PróbaEksperymentalna | Bufor wyjściowy # = ExpTrial („Długość danych: LE Profil: RE Profil”);
Przykład: 2=ExpTrial("13:3:3"); |
| | Bufor wyjściowy # = Exo Trial („Długość danych: LE Profil: RE Profil: tempfile. lwf”) ;
Przykład: 2=ExpTrial("13:3:3:templfile.lwf"); |
| Plik dziennika | Bufor wyjściowy # = LogFile("TEKST");
Przykład: 0=LogFile("Eksperyment 1"); |
| | 0=LogFile( Bufor wejściowy #);
Przykład: 0=LogFile(2); |
| Oczekiwanie na wyzwalacz | 0=TriggerWait(Numer bufora);
Przykład: 0=TriggerWait(0); |
| Losowe opóźnienie | 0=RandomDelay("t2:t1");
Przykład: 0=RandomDelay("200:50"); |
| WaveMSD | Bufor wyjściowy #= WaveMSD(Bufor wejściowy #); |
Tabela 2. Funkcje wykorzystane do zapisania protokołu eksperymentalnego w programie VisualEyes