Az agykéregből elvezetett akciós potenciálok osztályozásának módszerei és azok összehasonlító analízise Varga Eszter PPKE-ITK 2010 témavezető: Dr. Karmos György
Nyilatkozat
Alulírott Varga Eszter, a Pázmány Péter Katolikus Egyetem Információs Technológiai Karának hallgatója kijelentem, hogy ezt a diplomatervet meg nem engedett segítség nélkül, saját magam készítettem, és a diplomamunkában csak a megadott forrásokat használtam fel. Minden olyan részt, melyet szó szerint, vagy azonos értelemben, de átfogalmazva más forrásból átvettem, egyértelműen a forrás megadásával megjelöltem. Ezt a Diplomamunkát más szakon még nem nyújtottam be.
2
Tartalomjegyzék Tartalmi összefoglaló ........................................................................................................ 4 Abstract ........................................................................................................................... 5 1 Bevezetés .................................................................................................................... 6 2 Feladatkiírás ................................................................................................................ 8 3 Előzmények ............................................................................................................... 12 4 Sejtválogatás és összehasonlítás ................................................................................ 18 4.1 4.1.1 4.1.2 4.1.3 A.
Mesterséges jel .............................................................................................. 20 Mesterséges jel generálása ..................................................................................... 20 Mesterséges jellel való összehasonlítás .................................................................. 23 Eredmények ............................................................................................................ 23 Amplitúdó alapú válogatás ..................................................................................... 24 Hisztogrammal történő válogatás .......................................................................... 24 CEM algoritmus ...................................................................................................... 25 K-means algoritmus................................................................................................ 26 B. PCA alapú válogatás ............................................................................................... 31 CEM algoritmus ...................................................................................................... 32 K-means algoritmus................................................................................................ 33 C. Hibák és a küszöbérték kapcsolata ......................................................................... 34 D. Az amplitúdó és a PCA alapú válogatás összehasonlítása ...................................... 36 E. Összefoglalás .......................................................................................................... 37 4.2 Természetes jel .............................................................................................. 38 4.2.1 Jelfeldolgozás sejtválogatással ................................................................................ 38 4.2.2 Jelfeldolgozás más megoldással .............................................................................. 48 A. Firing rate változások.............................................................................................. 49 B. Statisztika................................................................................................................ 53 5 Összefoglalás ............................................................................................................. 60 6 Köszönetnyilvánítás ................................................................................................... 62 7 Mellékletek ............................................................................................................... 65 7.1 7.2
Matlab kódok ................................................................................................. 65 Eredmények ................................................................................................... 87
3
Tartalmi összefoglaló A sejtválogatás fontos eleme azoknak a biológiai kísérleteknek, melyeknek célja az egyes sejtek megismerése, funkciójuk és működésük felderítése, az idegsejtek esetén a neurális hálózat megértése és az ott betöltött szerepük. A sejtválogatás során több sejt aktivitását tartalmazó jelből megkapjuk egy-egy sejt aktivitását. Ezt az eredményt a sejtválogató algoritmusok adják, melyek különböző matematikai függvények segítségével osztályozzák a sejtek által leadott csúcsokat a rájuk jellemző tulajdonság szerint. Ezzel a módszerrel klaszterek jönnek létre, melyek az egyes sejtekhez tartozó spike-okat adják meg, tehát egy különálló klaszter egy neuront jelöl. Munkámban macska agyi tevékenységéből elvezett jellel dolgoztam, így a tipikus idegsejt-mintázatok csoportosítására törekedtem. A sejtválogatással megismerkedve több, már korábban alkalmazott algoritmus is rendelkezésemre állt a válogatáshoz, ezért összehasonlítottam ezeket. Ennek alapjául a kimeneti eredményt vettem, hogy a létrejött klaszterek mennyire különülnek el az algoritmus futása során és hogy mekkora a pozitív és negatív hiba aránya. Ezt az összevetést nem tudtam volna biológiai jelre elvégezni annak komplexitása miatt, ezért mesterségesen generált jelet hoztam létre. Kiemelkedően jó eredményt nem kaptam, de két algoritmus, az amplitúdó alapú és a PCA (Principal Component Analysis) alapú K-means válogatás eredményei közelítettek leginkább a helyes válogatáshoz. Emiatt további válogatásaim során ezeket az algoritmusokat részesítettem előnyben. A sejtválogatás eredményeiből különféle következtetések vonhatóak le az adott neuronok működésére vonatkozóan. Meg lehet határozni a sejtek aktivitását a tüzelési ráta kiszámolásával, mint ahogy azt diplomamunkámban meg is tettem. Ezek alapján össze tudtam hasonlítani az egyes sejteket. Mivel a vizsgált jel többféle éberségi állapotból lett elvezetve, ezért lehetőségem volt kapcsolatot létesíteni a különböző állapotok és a tüzelési frekvenciák, az eltérő sejtek aktivitása között. Statisztikai módszerekkel összehasonlítottam az egyes sejtekre kapott tüzelési mintázatot, és bizonyítékokat kerestem az így kapott eredményekre, melyeket ábrákkal és számadatokkal is igazoltam.
4
Abstract Spike sorting is an important part of the biological experiments which aim is to recognize different cells or individual cells as well, their functions and their contribution to the system in which they are in. Single-unit activity is derived from the multi-unit activity signal during the spike sorting technique. In this project
we focus on the neural network and
nerve cells, and try to understand them more. Signals from the brain activity of a cat were analyzed and studied. We use special spike sorting algorithms to get the separate signal of one specific cell out of the global signal, which contains approximately the signals of more cells. The sorting is done by mathematical calculations which categorize the signal. The spikes are characterized by the cells according to their typical features (amplitude, principal components). More algorithms were available from previous works. I compared them according to the difference in result, how distinct clusters were generated by the spike sorting, and what was the rate of positive and negative errors. I worked with an artificially generated signal in order to realize the comparative analysis, since on real biological signals these algorithmic comparisons would not be possible. Two algorithms gave nice output, they mostly approach to the correct spike sorting, the Kmeans algorithms, which is based on the amplitude or the PCA (Principal Component Analysis), however I didn’t get any prominently results for given algorithms. This was the reason that I used these algorithms in further sorting work during the project. Different conclusions can be deducted from the results of the spike sorting algorithms in according to the function of given group of nerve cells. For example we can determine the activity of cells with the count of the firing rate as I have done this in my thesis. By right of these results I can compare the different cells. The examined signal was gained at different stage (such as awake, REM (Rapid Eye Movement), SWS (Slow Wave Sleep) and anesthesia), thus I was able to find a relationship between this stages and the firing rates and different cell activities. I used statistical methods to do this analysis, and I gave explanations for the obtained results. I confirm these results with figures and numerical data as well.
5
1 Bevezetés Diplomamunkámban a sejtválogató algoritmusokkal foglalkoztam, azokat ismertem meg, majd pedig összehasonlítottam őket egymással mesterséges és valós, elvezetett biológiai jel segítségével. Szükség van ezek helyes megismerésére, hiszen nem csak a biológiában, hanem más szakterületeken is igen nagy jelentősége van hasonló osztályozó algoritmusoknak. Elhanyagolhatatlan szerepük van olyan területeken, ahol egy adott jelsorozatból ki kell válogatni a különböző tulajdonságokkal bíró jelrészleteket, s ezeket közös tulajdonságaik alapján szükséges csoportosítani. Az algoritmusok hasznosítási területe a biológián kívül például a jelfeldolgozás, telefónia, adattömörítés. A biológia területén belül fontos az idegsejtek helyes elkülönítése azok pontosabb megismerése és az általuk kialakított hálózati struktúra felderítése céljából. A neurális hálózatot egy zenekarhoz lehetne hasonlítani, mivel a zenekarban is jó tudni, hogy az egyes hangszerek mit adnak hozzá a teljes zenei élményhez saját, egyedi hangjukkal. Ugyanígy az egyes típusú neuronoknak más és más a funkciójuk, hasonlóan a hangszerekhez. Ahhoz, hogy meg tudjuk érteni az idegi hálózat működését, meg kell tudni érteni az egyes sejtek működését, tudni kell azonosítani a sejteket. Ebben segít a sejtválogatás módszere. Buzsáki György neurobiológus szerint az agy olyan, mint egy karmester. Vezérli az érzékelést, gondolkodást és az agyban lezajló eseményeket az idegsejtek aktivitásmintázata alapján. A neurális hálózat bemeneti-kimeneti analízisét igen nehéz megismerni, megfejteni, ennek egyik módszere a sejtválogatás. A sejtválogatás feladata egyszerűsödik azáltal, hogy mint egy zenekarban is, nem szükséges megérteni a zenekar működését, anélkül is megérthetjük a zeneművet, amelyet játszanak a zenészek. Kiválogatni a sejteket annyit jelent, mint egy zenekari játék felvételéből megkülönböztetni például a hegedű hangját egy másik zenekarban játszó hegedűs hangjától. Az egy sejt közelítése is olyan, mint amikor adott hangszert vizsgálunk egy zenekarban. Ha a zenekar mellett nagy zaj van, akkor nehezebb megfigyelni a zenét, hasonlóan a válogatáshoz, hiszen ott is nagy háttérzajjal nehéz kiválogatni a spike-okat.[4] Munkám célja az volt, hogy megismerjem a különböző sejtválogató algoritmusokat, azok matematikai hátterét és alkalmazásukat. Különböző szempontok alapján összehasonlítást végeztem a megismert algoritmusok között, és így próbáltam meghatározni, melyik a legjobbnak mutatkozó módszer. Ehhez mesterségesen generált jelet használtam, és erre, majd pedig a való életből vett, biológiai jelekre futtattam le az algoritmusokat. A diplomaterv a következők alapján épül fel: először bevezetést próbálok nyújtani a sejtválogatásról: milyen lépései vannak, az egyes lépések milyen szempontból lényegesek. Majd a megismert algoritmusok fontosabb jellemzőit ismertetem, azok legelőnyösebb alkalmazási területét, és azt a programot, mely ezen algoritmusok megvalósítását tartalmazza. 6
Ezt követi a mesterséges jel bevezetése, annak tulajdonságai, és az erre lefuttatott sejtválogató algoritmusok eredménye, maga a sejtválogatás. Ezek után összehasonlítom a különböző algoritmusok által adott válogatásokat, és ebből vonok le következtetéseket. A legjobb válogatást adó algoritmusokat használom a biológiai jelek szétválogatására. A válogatás eredményét tovább elemzem különböző szempontok alapján. A sejtek egy jellemző tulajdonsága, a tüzelési frekvenciájuk szerint hasonlítom össze a különböző elvezetéseket, csatornákat, sejteket és az így kapott adatokat statisztikai módszerekkel elemzem, és végül értékelem az eredményeket.
7
2 Feladatkiírás Az idegrendszer központi komponense az agy, melyben az idegsejtek száma 1012 nagyságrendű. Mivel a magasabb kognitív feldolgozásban részt vevő idegsejtek többségében itt helyezkednek el, ezért ezek megfigyelésére az agyból szoktak jeleket elvezetni. A sejtválogatás az agyi funkciók megértésének egyik alapfeltétele, melynek során a háttérzajból és más, számunkra kevésbé fontos sejtek jelei közül kiemeljük az általunk megfigyelésre szánt sejtek jeleit. Az idegsejtek akciós potenciálokkal kommunikálnak egymással, mely lényegében rövid feszültségtüske, vagy más néven spike. A neuronok általában nem önmaguktól, spontán bocsátanak ki magukból jeleket, hanem valamilyen inger hatására. Ez az inger lehet belső, a saját szervezet által adott jel, de lehet külső, valamilyen környezeti hatás miatt bekövetkező jel. A sejtek által leadott jelekre µV-os nagyságú amplitúdó és ms-os értékű időtartam jellemző. Az egyes neuronok nem folyamatosan tüzelnek, az általuk leadott spike-ok között el kell telnie egy minimális időnek, hogy újra ingerületbe hozhatóakká váljanak a sejtek. Ez az idő sejttípustól függően más és más, így lehet 2-5 ms is. Ezeket az időintervallumokat a sejt refrakter periódusának hívjuk. Ennyi időre van szüksége a neuronnak, hogy visszatérjen nyugalmi állapotába. Ez idő alatt a sejt természetesen nem bocsát ki magából akciós potenciált. Az idegsejtek által leadott spike-ok összessége határozza meg a sejtek közötti kommunikációt, magasabb szinten pedig az idegrendszer működését, melynek megértéséhez a sejtválogatás módszere szükséges, amellyel a különböző sejtek által leadott spike-ok elkülöníthetőek. A sejteket az elvezető elektród elhelyezkedésétől függően kétféleképpen lehet megfigyelni: az elektród a sejtek közötti térben vagy magában a sejtben helyezkedhet el. Előbbi az extracelluláris elvezetés, melynek előnye, hogy egyszerre több sejt jele is megfigyelhetővé válik, ám az érzékelt jel amplitúdója kicsi, 10-500 μV-os nagyságú. Utóbbi az intracelluláris elvezetés, mely során csak egy adott sejt működése figyelhető meg, és a sejtek jelére nagyobb amplitúdó jellemző, mivel az elektróda a sejt belsejéből vezeti el a jeleket. A sejtválogató algoritmusokat extracelluláris elvezetésekből származó jelekre szoktuk használni, mivel ilyen elvezetéskor több sejt működését lehet egyszerre megfigyelni; emellett szét kell választani a különböző sejtek jeleit egymástól. Az extracelluláris térben lokális mezőpotenciál (LFP) is mérhető, mely a posztszinaptikus potenciálok szummálódásából származik. Munkám során a MUA-val (Multi-Unit Activity), a több sejtes aktivitással foglalkoztam, mivel ebből lehet az egyes sejtek single-unit aktivitását, akciós potenciálját meghatározni.
8
A sejtek által leadott jelek többfajta elektróddal vezethetőek el az extracelluláris térből: üvegkapilláris mikroelektróddal, egy vagy több kontaktusú fémszállal, vagy szilícium alapú multielektróddal. Az egy kontaktusú fémelektród az elektródok legegyszerűbb fajtája: hegyezett fémszál, mely anyagát tekintve általában wolfram szál. Csúcsa pár µm-es nagyságú, ezen a vékony hegyen keresztül érzékeli a sejtek jeleit. A hegyén kívül a fémszálat szigetelni szokták. Ilyen módszerrel egyszerre, egy időben csak egy helyről lehet elvezetést végezni. Ellenben egy több kontaktusú elektróddal, melyen akár 24 elvezetési hely is található egymás alatt, egyszerre 24 helyről lehet megfigyelni az elektród körül elhelyezkedő sejtek aktivitását. Más, több sejt jelét elvezetni képes elektród típus a tetród, melynek alkalmazásával több információt nyerhetünk egy elvezetésből. Ez 4 egymáshoz szorosan elhelyezkedő elektródból áll, ezáltal az így elvezetett jelből a sejtek térbeli elhelyezkedését lehet jobban megfigyelni. A több kontaktusú elektródok előnye, hogy egyszerre több rétegből, több sejtből tudunk elvezetést nyerni, ilyen például az 1. ábrán látható rajzszög elektród.
1. ábra Több kontaktusú rajzszög elektród
Ezt beszúrva az agykéreg valamely részébe, a különböző rétegekben lévő más típusú sejtek jeleit tudjuk vele megfigyelni. Az agykéregbe szúrt 16 csatornás mikroelektróddal az agy 16 különböző mélységű területére érkező jeleket érzékelhetjük. A sejtválogatás célja, hogy az így elvezetett jelekből kiválogassa az egy sejthez tartozó akciós potenciálokat. Az elvezetéseket in vivo, tehát élő szervezetben kell elvégezni, hiszen az egész organizmus működése eltérhet az elszigetelt, in vitro sejtekétől. Sok nehézség lép fel az ilyen elvezetés során, hiszen az elvezetett jelben artefaktok jelennek meg. Ezek különböző forrásúak lehetnek: az elvezető rendszerben használatos erősítő, a kapacitív, induktív, mágneses vagy elektrosztatikus kölcsönhatás megjelenése, az elektród kontaktusa és az élő szövet között fellépő elektrolízis, az elektród kis mozgásának zavara vagy más, a környezetből jövő elektromágneses hullámok jelenléte igen nagy mértékben tudja rontani az elvezetett jel információtartalmát.
9
Az idegsejtek aktivitására, működésére jellemző jelet az agykéregbe (neocortex) szúrt egy vagy több kontaktusú elektródok segítségével vezethetjük el. Az így, extracellulárisan elvezetett jelet nagysága miatt erősíteni, majd szűrni kell. 500 és 5000 Hz közötti sávszűrőt alkalmazva a szűrt jelben a multi-unit aktivitás marad benne a zavaró zaj nagy mértékű jelenléte nélkül. A szűrt jel így már szoftver segítségével analizálhatóvá válik, ezek után kezdhető el a sejtválogatást. Az elektród által elvezetett jel tehát több sejtből érkezik; a jelek neuronokból származó akciós potenciál-sorozatokat tartalmaznak. A sejtválogatás alaptételeként fogalmazható meg, hogy az elektród kontaktusához közelebb lévő sejtek akciós potenciáljai nagyobb amplitúdóval jelentkeznek a kontaktus által elvezetett jelben, mint a kontaktustól távolabb lévők. Így az is előfordulhat, hogy az elektródtól távolabb lévő sejtnek a spike-ja nem „jut el” az elektród kontaktusáig, az elvezetett jelen nem látszódik annak a sejtnek az aktivitása. Emiatt jól látható, ha egy sejt közel vagy távol volt egy adott kontaktushoz.
2. ábra Extracelluláris elvezetésből származó jel 4 csatornája
A 2. ábrán egy elvezetés 4 kontaktusából származó jele látható. Az 1. és a 2. csatornán csak az A sejt akciós potenciáljai figyelhetőek meg, míg a 3-as és a 4-es csatornán már a B sejt jelei is megjelentek. Viszont ez utóbbi két csatornán már az A sejt spike-jai kisebb amplitúdójúak. Ez tehát nem azt jelenti, hogy egy másik sejt aktivitása jelent meg az alsó két kontaktuson, hanem hogy az A sejttől messzebb volt e két kontaktus, emiatt kisebb méretben jelentek meg a csúcsok a jelen. Az akciós potenciálok sejtenként különböző alakúak, különböző tulajdonságúak: más amplitúdóval, más szélességgel rendelkeznek. Ezt a különbözőséget lehet kihasználni arra, hogy a spike-okat szét tudjuk választani egymástól. A sejtválogatás célja, hogy egy olyan jelet, melyben egyszerre több sejt saját spike-ja található, úgy válogassunk szét különböző típusú spike-okra, hogy egy csoportba egy fajta, 10
hasonló tulajdonságú csúcsok kerüljenek. Így, a csoportok úgy tekinthetőek, mint egy közös tulajdonságot képviselő, egyedi sejttől származó spike-ok. Ezért azt mondhatjuk, hogy az egy klaszterbe tartozó spike-ok feltehetően egy sejttől származtak. Ennek ellenőrzésére szolgál a refrakter periódus, mely megmutatja, hogy a spike-okat milyen gyakorisággal adta le a sejt. A sejtválogatásnak több lépése van: küszöb meghatározása (spike-ok felismerése), a meglévő spike-okból egy vagy több adott tulajdonság kinyerése és ezen tulajdonságok alapján való osztályozás. A küszöb megadását az általam használt programban kézzel vagy pedig érték megadásával lehetett meghatározni. A küszöböt meg lehet adni pozitív vagy negatív értéknek, attól függően, hogy a jel felső vagy alsó felét szeretnénk a későbbiekben tekinteni. Az általam használt algoritmusoknál az osztályozáshoz előre meg kell adni, hogy maximum hány klaszterbe válogassa szét az algoritmus a spike-okat. Ha az ehhez használt program nem talál annyi elkülöníthető csoportot, akkor is létrehozza a megadott számú klasztert, ám akkor valamelyik üres lesz. Ez az előzetes klaszterszám jelenti azt, hogy feltehetően hány sejt volt az elvezető elektród kontaktusához közel. Ha megtörtént a válogatás, ellenőrzésképpen a refrakter periódus meglétét lehet megnézni, mely megmutatja, hogy a spike-ok egymáshoz képest mekkora latenciával érkeztek a sejtből. Ha megjelenik a refrakter periódus és szépen elkülönült, meghatározott darabszámú „felhőkké”, klaszterekké válogatta szét az algoritmus a spike-okat, akkor azt mondhatjuk, hogy a jelet sikerült jól kiválogatni, eredményes lett a sejtválogatás.
11
3 Előzmények A sejtválogatás már igen régi módszer: elsőként Emil du Bois-Reymond a XIX. század végén fedezte fel az idegi akciós potenciált. Lényegében innentől kezdve vált aktuálissá a sejtválogatás, hiszen ezek után már a kor tudósai az agykéregből vezettek el idegsejtekből származó jeleket, melyek több sejt aktivitását tartalmazták. A sejtek jeleit legtöbbször mikroelektróddal vezetjük el, mely az egy területen, hozzá közel lévő sejtek jeleit érzékeli. Az elvezetett jelet idő szerint osztályozni kell, amely algoritmusok segítségével történik. A sejtek jelei neurális kódot alkotnak: ha tudjuk, hogy melyik időpillanatban melyik sejt tüzelt, akkor könnyen megmondható, melyik jel melyik sejttől érkezett. Az elvezető elektród alakjától függ, hogy milyen jelet szeretnénk elvezetni: nagy hegyű elektróddal több sejt jele mérhető, mivel nagyobb a felülete. Ám ha túl nagy az elektród hegye, akkor lényegében lehetetlen az idegsejtek szétválasztása, mert annyi jelet képes felfogni a vezető csúcs. Ha kicsi a vezető hegy, akkor nehéz detektálni a spike-okat, mivel ilyenkor nagyon kevés jelet vezet az elektród. A csúcs alakja is fontos szerepet játszik: az üvegelektród kör alakú csúcsa más jeleket vesz fel, mint egy üveg burkolatú platina-irídium elektród gömb formájú hegye. Az elektróddal elvezetett jelek feltehetően több sejttől származnak, több sejt akciós potenciálját foglalják magukba. Egy sejt akciós potenciálja relatív stabil, ezért annak alakjára lehet támaszkodni. A neuronok jelének kiemelkedő jellemzője az amplitúdó, azaz a tüske magassága. Ez az egyik olyan tulajdonság, amely alapján az osztályozó algoritmusok válogatnak. Viszont nem mindig ad jó eredményt, mert például ha két sejt ugyanakkora amplitúdóval rendelkező spike-ot ad le, akkor azokat egy csoportba fogja helyezni az algoritmus, pedig nem is egy sejttől származtak a jelek. [2] A sejtválogatás alapja, hogy az idegsejtek sejttípusonként más és más tulajdonságokkal rendelkező akciós potenciálokkal kommunikálnak egymással. A válogatás olyan folyamat, melynek eredménye, hogy a különböző spike-ok osztályozva lesznek. A csoportokra jellemző, hogy az egy osztályban lévő spike-ok egy neuron aktivitásából származnak, s ezt az egyetlen idegsejtet fizikailag nem, vagy csak nehezen lehet lokalizálni. Ez amiatt lehetséges, hogy nem tudunk egyszerre jelet is elvezetni és pontosan meghatározni, milyen sejt volt az elektródhoz közel. Így tehát az állapítható meg, hogy a sejtválogató algoritmus által kapott eredményben egy klaszter egy idegsejtnek felel meg, és a benne lévő pontokkal ábrázolt spike-ok egy neurontól származtak. Általában kis klaszterszámot és hibaklasztert beállítva lehet a legjobb eredményt kapni. Elektródonként más az ideális válogatási osztályok száma, 2 és 6 között változhat. Legfontosabb a sejtválogatás után az eredményekből meghatározható fiziológiás információk felismerése, hiszen ez visz közelebb a neurális hálózat jobb megismeréséhez, az agyi tevékenységek idegi szabályozásához. Hasznos kiszámolni a tüzelési rátát, felrajzolni a hisztogramot vagy meghatározni a keresztkorrelációt. [1] 12
A sejtválogatás kezdeti lépése egy küszöbérték és bizonyos esetekben klaszterszám meghatározása. A küszöbérték azért szükséges, mert ez határozza meg, hogy az ennél abszolút értékben kisebb feszültségű jelet elhanyagoljuk, a nagyobbat pedig feldolgozzuk. Az elhanyagolt részben olyan jelek találhatók, melyek zajból vagy az elvezető elektródtól nagyon távoli sejtektől érkező, számunkra nem fontos jeleket tartalmaznak. Ha a különböző sejtektől származó jelek nem különböznek jelentősen, valószínűleg a klaszterek sem fognak. Mivel nehéz meghatározni ezt a küszöbértéket, hibák jelennek meg a válogatás végén: a pozitív és a negatív hiba, melyek során nem pontosan az egy neuronhoz tartozó jelek kerülnek egy csoportba. Pozitív hibának hívjuk, amikor egy klaszterbe kerülnek olyan spike-ok, melyek nem egy neurontól származnak, negatív hiba pedig, amikor az egy csoportba tartozó csúcsok nem egy klaszterben vannak elhelyezve. Látható, hogy a küszöb meghatározásakor lényegében egy optimalizálási feladatot kell megoldani, mivel optimumot szeretnénk találni a pozitív és a negatív hiba között. [2] A sejtválogatás előtti klaszterszám megadását csak néhány válogató algoritmus követeli meg. Ez a paraméter azt mutatja, hogy a program hány klaszterbe csoportosítja a spike-okat. Ezzel előre meg lehet becsülni az elvezető elektródhoz közel lévő sejtek számát. Mindkét paramétert nehéz meghatározni, hiszen nem egyszerű megtalálni az optimális küszöbértéket és megállapítani a diszkriminálandó neuronok számát sem. Sokszor a válogatás folyamata közben kell eldönteni az előbb említett paraméterek értékeit, ezt hívják „ad hoc” technikának. [1] A sejtválogatás következő lépésében tulajdonság-analízissel határozzuk meg, milyen jellegzetes tulajdonság alapján válogassa szét a spike-okat egymástól a később kiválasztott algoritmus. Olyan minimális tulajdonsághalmazt kell választanunk, mely jól elkülöníti egymástól a különböző neuronok által leadott csúcsokat, jól megkülönböztethetőek egymástól a jelben lévő, más sejttől származó akciós potenciálok. A válogató algoritmusokat a kiválasztott tulajdonsággal megkülönböztetett jelekre futtatjuk le. A sejtválogatás során tulajdonsága lehet a jelnek, mint hullámnak az amplitúdója, a spike-ok szélessége vagy a hullámalak komponensekre bontása, melyet a PCA (Principal Component Analysis), főkomponens analízis segítségével lehet megkapni. Ezt követően maga a sejtválogatás algoritmus futtatása és az így kapott eredmények elemzése következik. Az algoritmus eredményét tulajdonságtérben szokták ábrázolni; olyan 2 vagy 3 dimenziós térben, ahol az egyes tengelyeken a spike-ok jobb elkülönítéséhez szükséges, előre kiválasztott tulajdonságok szerepelnek. Így a válogatás eredményei a tulajdonságok egymáshoz viszonyított kapcsolatát mutatják az egyes spike-okra nézve. [1, 11] A PCA analízis automatikusan választja ki a spike legjellemzőbb tulajdonságát. Meghatározza a jel sajátértékeit és sajátvektorait, ezeket csökkenő sorrendbe téve kiválasztja az első 2-3 komponenst és ezekkel dolgozik tovább. 13
1. egyenlet Az si a főkomponensek együtthatóját (score), a c i az x(t) jel főkomponensét jelenti. Az analízis az 1. egyenlet szerint kapott sajátértékeket (si-ket) a jel kovariancia mátrixának diagonálisába helyezi el. Így olyan optimális ortonormált bázisok keletkeznek, melyek jól közelítik az akciós potenciálok alakját. Megfigyelésekből tudjuk, hogy a jel nagyság szerint első két sajátvektora 80-90 %-osan reprezentálja az akciós potenciálokat, tehát tényleg elég csak ezt a két komponenst tekinteni a válogatásnál. A főkomponens analízis lényegében adattömörítésre szolgál, főleg jelátviteli alkalmazása van, de a sejtválogatásban is jó eredményeket ad. [1, 2, 11] Ahhoz, hogy össze tudjuk hasonlítani az egyes sejtválogató algoritmusokat, szükség van mesterséges adat generálására, mellyel a pontosságot és más jellemzőt lehet összehasonlítani függetlenül attól, hogyan sikerült az adott elvezetés. Paraméterezve a spike-ok számára, alakjára, amplitúdóra, tüzelési rátájára, illetve a zaj nagyságára létrehozható egy jelalak, melyben a spike-ok véletlenszerűen helyezkednek el. Zajt hozzáadva a természetes jelhez jól közelítő jelet kaphatunk. Az algoritmusok pontosságát a pozitív és negatív hiba nagyságával lehet legjobban ellenőrizni. [3] A setjválogató algoritmusok egyike a K-means algoritmus, mely olyan iteratív eljárás, amely automatikusan klaszterekbe osztja a bemenetként kapott adatot. Az algoritmus implementációjában határozható meg az osztályok száma (K darab), mely megadja azon csoportok számát, amelybe az algoritmus szétválogatja a csúcsokat. Addig ismétlődik a spike-ok klaszterekbe osztása, amíg az utolsó két besorolás ugyanaz nem lesz, tehát már nem változik az osztályozás. Eredményként szemmel is jól látható, elkülönült „felhők”, vagy elmosódott, egymásra csúszott, illetve egymással egy közös oldallal rendelkező klaszterek jönnek létre. Ez utóbbi általában akkor lehetséges, ha az algoritmusnak adott bemeneti jelben átlapolódó spike-ok voltak. Ezt igen nehéz előre, az algoritmus futtatása előtt meghatározni. Az algoritmus az alapján változtatja meg a csoportokba sorolást, hogy mekkora távolság van az egy klaszterbe tartozó spike-ok és a klaszter középpontja között. Ezt a 2. egyenlet alapján számolja ki, amelynek segítségével az algoritmus minimalizálja a távolságot; így jönnek létre az egymástól jól elszeparált klaszterek.
14
2. egyenlet Minimalizálandó célfüggvény, ahol az xi a j. klaszterbe sorolt input vektor, a cj pedig a j. klaszter középpontja Az algoritmussal történő válogatás minősége függ az előre meghatározott klaszterszámtól. Ha ez a szám túl nagy, akkor az egy neurontól származó és az esetlegesen változó zajjal szuperponált spike-okat külön csoportokba helyezi az algoritmus. Ha pedig túl kicsi a klaszterek száma, akkor éppen az ellenkezője történhet: a különböző idegsejtektől származó spike-ok egy sejttől érkezettnek, azaz egy klaszterbe tartozónak lesznek csoportosítva. A válogatás eredményességét mindig a felhasználó állapítja meg a klaszterszám nagysága, a klaszterek egymástól való elkülönülése és a refrakter periódus alapján. Ezt az algoritmust leginkább
izomaktivitásból
származó
akciós
potenciálok
elkülönítésére
szokták
alkalmazni. [1] Másik, általam is használt sejtválogató algoritmus a CEM (Conditional Expectation Maximization) algoritmus, mely az EM (Expectation Maximization) algoritmushoz hasonló iterációs eljárás. Az EM algoritmus várható értéket maximalizáló iterációs algoritmus, mely k kezdeti értékként, előre megadott számú halmazzal kezdi meg futását. Az első lépésben kezdeti értéket keres, majd paramétert becsül. Ezek után a várható értéket kiszámolja, ismét megbecsüli a paramétert és egy előre megadott konvergenciára ellenőrzést végez. Ha teljesül a konvergencia, akkor megáll, ha nem, egy lépéssel tovább halad. Tehát az algoritmus megáll, ha a k. iterációban a logaritmikus valószínűség valós értéke nagyon közel van a becsült végső konvergencia értékéhez. A CEM algoritmus az első lépésben különbözik az EM algoritmustól. Az előbbi egy megadott partícionálásból indulva lépésenként változtatja meg a klaszterezést oly módon, hogy minden iterációs lépésben az újra kiszámolt feltételes valószínűség alapján olyan újabb klaszterezést választ, mellyel a klaszterek egymástól való távolsága maximális, ezáltal a csoportok egyre inkább elhatároltak lesznek segítve ezzel a pontosabb válogatást. A CEM algoritmus megáll, ha az aktuális feltételes valószínűség megegyezik az előző két iteráció feltételes valószínűségével. [6, 13] Az elvezetési technikákat tekintve nem csak egy elektróddal lehet elvezetést végezni, hanem például tetróddal vagy sztereotróddal végzett elvezetés is ismert már az elektrofiziológiában. A tetród négy darab, a sztereotród két darab egykontaktusú elektródból áll, így tetróddal egyszerre 4 közeli helyről lehet folyamatosan elvezetni jelet, sztereotróddal 15
csak 2 helyről. Az ilyen összetett elektródokkal ezért egyszerre több sejtet lehet megfigyelni, mivel azon az elven működnek, hogy két idegsejt ugyanakkora amplitúdójú spike-kal tüzelhet egy elektródon, ezért jelüket nehéz elkülöníteni egymástól. Tetródnál vagy sztereotródnál ilyen nem fordulhat elő, mert az elektródok különböző távolságra vannak a sejtektől 3 dimenzióban, így könnyebb lokalizálni a megtalált neuronokat. Az ilyen elektródok hátránya, hogy az így történő elvezetéssel nő a komplexitás, nehezebb elvégezni a sejtválogatást, viszont nagyobb távolságból lehet elvezetni velük jeleket, és az elvezetett hullámalakok más rétegekből is származhatnak. Fontos az elvezető kontaktusok helyzete, a pontos geometriai elhelyezkedésük, mivel ez határozza meg az izolált neuronok térbeli kapcsolatát. [1, 12] A fentebb említett és más összetett elektródok használata napjainkban modernnek és újnak számít. Így is valójában sajnos csak az idegsejtek kis része választható szét sejtválogatással; a kimaradó sejtek feltehetőleg az elektród hegyéhez közel voltak, vagy éppen nem tüzeltek az elvezetés alatt, vagy kicsi amplitúdóval, illetve olyan messze voltak, hogy csak kis amplitúdójú jelként érkezett már az elektródhoz a távol eső neuron jele. Ezért nagy méretű „hézag van az elvezetett jel válogatása során meghatározott neuronok száma és az elvi érzékelhető sejtek száma között. Ennek a „hézag”-nak a csökkentésére az ideális elektród kis tömegű és minél több kontaktussal rendelkező. Utóbbihoz újabb megoldás a MEMS technológiával készült elektródok bevezetése. [3] Létezik egy olyan válogatási eljárás, melyet tetród elvezetés során szoktak alkalmazni; ez az ICA (Independent Component Analysis), a független komponens analízis, melyet sokdimenziós adathalmazok feldolgozására alkalmaznak. A módszer a vizsgált adatokat úgy tekinti, mint mintavételezett valószínűségi változókat, melyek lényegében néhány független változó lineáris kombinációjából származnak. Az analízis alkalmazásakor azzal a feltételezéssel kell élni, hogy a független jelek száma megegyezik az elvezetett jelek számával, azaz a csatornaszámnak meg kell egyeznie a források számával, melyet nehéz meghatározni. Az ICA-val a jelek független komponenseit lehet megtalálni, melynek segítségével könnyen diszkriminálhatjuk a jeleket egymástól. Az ICA a PCA kiterjesztett változata, alkalmazásával szétválogathatóak a spike-ok csatorna szerint. Az eljárás feltételezi, hogy a többcsatornás elvezetés során a források egymástól függetlenek. [2, 8, 10] A fentebb említett módszereken kívül még több különféle matematikai algoritmusokra és fizikai jelenségekre épülő válogatási módszer is létezik, például template illesztés, hullámalak transzformáció, algoritmus betanítása a helyes kimenetre és szuperparamágneses osztályozás. [5, 7, 9] A sejtválogatás során több probléma felmerülhet, ilyenek például az átlapolódó spike-ok, a változó háttérzaj jelenléte és a detekciós problémák. Az átlapolódó spike-ok kettéhasadó klasztert tartalmazó eredményt adhatnak. Egy csoport kettéválása amiatt következhet be, hogy jelentős azon spike-ok száma, amelyek megsértik a 16
refrakter periódus feltételét. Az együtt lévő klaszterek pedig szétválhatnak, ha a múló tüzelési mintázat két unit-ot foglal magában. Az átlapolódó spike-ok jelenléte és azok szétválasztása, helyes osztályozása még lényegében megoldatlan probléma, bár létezik már rá néhány megoldás, például neurális hálózatok betanítása. Ebben az esetben szükség van olyan tanulóhalmazra, azaz olyan spike-okra, melyeket szét lehet választani egymástól, ha átlapolódva is helyezkednek el. Nehézsége ennek a megoldásnak, hogy a tanulásnak az eredményesség miatt nagyon pontosnak kell lennie. Másik megoldás az átlapolódó spike-ok válogatására a spike-ok kivonása. Ezzel elvileg megkaphatjuk az egyes spike-okat, de a kivonás sajnos több zajt eredményez, és nem megfelelő, ha közel vannak egymáshoz a spike-ok, illetve, ha a spike megjelenési ideje nem állandó, tehát mindig változik a neuron tüzelése. Újabb megközelítése a probléma megoldásának, hogy egy rendszer a két átlapolódó spike-ra minden lehetséges kombinációt összehasonlít a spike előfordulási idején belül és megkeresi a legnagyobb valószínűségűt, és azt elfogadja. Előnye, hogy felismeri, ha két spike pontos átfedésben van egymással, hátránya pedig, hogy csak sok átlapolódás jelenlétekor jó, kevésre nem, és sok időbe telik, amíg megvizsgálja az összes kombinációt. A neuronok burst-ös tüzelése is nehézséget okoz a válogatásban, mert ha belevesszük ezeket a válogatásba, akkor az azt tartalmazó klaszter szélesebbé válik, így könnyen átlapolódhatnak a csoportok. A beültetett elektród helyzetének változása is problémát okoz, hiszen az elektród elmozdulásából származó nyomásra kapott neurális válasz az akciós potenciál alakjának fokozatos változásában érzékelhető. A változó háttérzaj is nehezíti a válogatás hatékonyságát, hiszen a változás miatt nem tudunk egyszerűen kiszűrni egy adott nagyságú zajt. Ezért pontatlanná válhat az osztályozás. A sejtválogatás során felmerülő detekciós problémák alatt azt értjük, amikor az első lépésben szét kell választani egy küszöbértékkel a hasznos és számunkra haszontalan jelet. Gyakran ezt nem lehet megtenni, mert kicsi a jel vagy nagy a háttérzaj. Ezt a nagy mértékű, kétféle hiba jelzi: a pozitív és a negatív hiba. A megismert szakirodalmakból kiderült számomra, hogy a sejtválogatásnak nagy szerepe van az idegi hálózat megértésében. Nem könnyű feladat helyesen elvégezni egy sejtválogatást, jól beállítani a különböző paramétereket, felfedezni az átlapolódó spike-okat, azokat helyesen csoportosítani és következtetéseket levonni a kapott eredményekből. A cikkekből megismert módszereket, javaslatokat alkalmaztam a diplomamunkám során, például a
tesztadat,
mesterségesen
generált
jel
összehasonlításának alapötletét.
17
létrehozását
és
azon
az
algoritmusok
4 Sejtválogatás és összehasonlítás Munkám során Csercsa Richárd és Magony Andor által írt Matlab alapú programot használtam. Az előbb említett programnak, a Wave Solution-nek sok megvalósított funkciói közül egyike a sejtválogatás. A szoftver sejtválogatást végző része úgynevezett cnt (continuous) fájlokat dolgoz fel. Betöltés után a program megjeleníti a fájlban eltárolt adatokat, hasonlóan a NeuroScan szoftverhez, mely szintén elektrofiziológiás elvezetések feldolgozására alkalmas. Ilyenkor látszik, hogy hány elvezető kontaktusa volt a használt elektródnak. Az egyes csatornák jelei egymás alatt helyezkednek el, így a valósághoz hasonlóan láthatóak a jelek. Hiszen az elektródot közel függőleges helyzetben szúrják be a macska neocortex-ébe, ahonnan a jeleket elvezetik. Mivel az elektródon egymás alatt vannak a kontaktusok, ezért az elvezetések egymás alatti helyekről származnak. Ez az „elrendezés” látható a Wave Solution programmal megjelenítve.
3. ábra Wave Solution programmal megjelenített egyik használt elvezetés 24 csatornája
Ezek után a spike sorting funkciót kiválasztva egy új ablakban megjelennek a sejtválogatáshoz szükséges paraméterek, a szoftverben megvalósított algoritmusok, a spike-tulajdonságok listája és az ábrák, melyekbe a válogatás eredményeként kapott klaszterek rajzolódnak ki a válogatás után. A Wave Solution-ben be lehet állítani, hogy a program melyik fájlból melyik csatornát vizsgálja meg adott időintervallumra.
18
4. ábra A Wave Solution spike sorting funkciója egy válogatás eredményével
A sejtválogatás kezdeti lépéseként beállítható egy küszöbszint, melyet feszültség értékként vagy SD (standard deviation) értékként lehet megadni. Például a 3 SD értékű küszöb azt jelenti, hogy a határ a jel átlagának és háromszor a jel szórásának az összege lesz. A feszültség értéket előjelesen lehet megadni, mely igen előnyös lehet, hiszen a biológiai jeleknél sokszor előfordul, hogy a negatív értékeket tekintve sokkal jobban eltérnek egymástól a különböző neurontól származó spike-ok, tehát jobban ki lehet őket válogatni, a sejtválogató algoritmus jobb eredményt fog adni. Meghatározva a küszöbérték paraméterét, a program a továbbiakban csak abszolút értékben az ennél nagyobb feszültség értékkel rendelkező jelet fogja figyelembe venni és arra futtatja le a sejtválogató algoritmust. Ezt követően az algoritmushoz szükséges beállítások következnek. Meg kell határozni, hogy mi legyen az a spike-tulajdonság, amely alapján az algoritmus diszkriminálja a különböző spike-okat, és meg kell jelölni a kívánt algoritmus, mely a sejtválogatást elvégzi. A program úgy van megírva, hogy a spike-ok főkomponenseit tekintve nem lehet hisztogram alapján válogatni, ennek nem is lenne értelme. A szoftverben beállítható paraméterek közül a válogatás szempontjából fontos érték a klaszterek száma, mely meghatározza, hogy az 19
algoritmus hány klaszterbe ossza a spike-okat. Nehéz előre jól megbecsülni ezt az értéket, hiszen ehhez tudni kellene, hogy az elektród elvezető kontaktusához közel hány neuron helyezkedett el. Ezek után a kiválasztott algoritmus a beállított paraméterek alapján lefut, és meghatározza a klasztereket, elhelyezi benne a spike-okat és megjeleníti az elszeparált csoportokat. Az így keletkezett halmazokban a pontok az egyes spike-okat jelentik, az egyes neuronok által leadott jelet, lényegében egy-egy akciós potenciált. A csoportok pedig egy-egy neuront jelölnek. Be lehet állítani hibaklasztert is, melynek az a funkciója, hogy a csoporttól nagyon távol lévő spike-okat különválassza magától a klasztertől és egy újabba helyezze el. A program ezt jelöli piros színnel. A hibaklaszter értékét is SD segítségével lehet megadni, általában 0 és 2 közötti értéket állítottam be. Ellenőrzésképp a refrakter periódus szolgál, mely megmutatja, hogy milyen sűrűn tüzelt az idegsejt. Szemmel is le lehet ellenőrizni a válogatást: ha a felhők különállóak és a kiválogatott spike-ok ábráján is szépen elkülönült alakú jelek láthatóak, akkor az eredményes sejtválogatásra utal.
4.1 Mesterséges jel 4.1.1 Mesterséges jel generálása Az algoritmusok összehasonlításához, mint ahogy azt a szakirodalomban is olvastam, szükségem volt egy mesterségesen generált jelre, melyről pontosan tudtam, hogy milyen időpontokban tartalmaz spike-okat. A jel létrehozásához Matlab programot használtam fel, abban írtam egy jelgeneráló kódot (lásd a mellékletben), melynek segítségével létrehoztam három olyan jelet, melyek önmagukban 0 értékűek voltak. Ezekbe a jelekbe véletlenszerűen elhelyeztem egy-egy különböző spike alakot 300 különböző mintapontban. Ezeket a spike-okat valós, elvezetett jelből válogattam ki, melyek a zajtól jól elkülöníthetőek voltak.
5. ábra Az 1. spike, melyet felhasználtam a mesterséges jelben
20
6. ábra A 2. spike, melyet a mesterséges jelben felhasználtam
7. ábra A 3. spike, melyet a mesterséges jelben felhasználtam
Mindhárom spike-on jól látszik, hogy egymástól jelentősen eltérőek, mind amplitúdó nagyságban, mind alakban, mind pedig a spike hosszában. Erre azért volt szükség, hogy megkönnyítsem a sejtválogató algoritmus feladatát, hogy minél jobb legyen a válogatás. A Matlab miatt mintapontokban kellet az értékeket megjeleníteni és később ezt számoltam át ms-os értékre, mely a valóságnak jobban megfelel. A spike-ok 10 %-os amplitúdó-varianciával kerültek a jelbe, ami azt jelenti, hogy az egyes előállított spike-ok amplitúdója minden pontban a mintaspike-hoz képest ± 5 %-kal voltak nagyobbak, illetve kisebbek az eredeti csúcsokhoz képest. Emiatt még jobban biztosítva lett a véletlenszerű megjelenés. Ám ha két spike így túlságosan közel került volna egymáshoz, tehát valós esetben nem lett volna meg a neuron refrakter periódusa, akkor elcsúsztattam ezeket egymástól, amíg nem volt közöttük legalább 5 ms, azaz 20 kHz-es mintavételi frekvencia esetén 100 mintapontnyi távolság.
21
8. ábra A három spike által generált jel szuperponálásával keletkezett jelsorozat
Ezek után a keletkezett három jelet összeadtam, majd hozzáadtam 25 dB értékű Gaussi fehérzajt, és így már a természetben is megfigyelhető jelhez hasonló eredményt kaptam.
9. ábra A mesterségesen generált jel Gaussi fehérzajjal
A jel 30 s hosszúságú, azaz 600000 mintapontot tartalmaz. A kapott jelet elmentettem cnt kiterjesztésű fájlba, hogy futtatni tudjam rajta a Wave Solution programot. (A megírt Matlab kódok a mellékletben találhatóak.)
22
4.1.2 Mesterséges jellel való összehasonlítás A mesterségesen generált jel segítségével megpróbáltam összehasonlítani a különböző algoritmusokat. Mivel tudtam, hogy három különböző alakú spike-ot helyeztem el a jelben, azaz három mesterséges neuronom volt, ezért pontosan meg tudtam határozni a klaszterek számát, mely megegyezik az idegsejtek számával. A hasonlítás megkezdésekor először létrehoztam a mesterségesen generált jelet, majd e jelre lefuttattam a különböző algoritmusokat a paraméterek más és más beállításaival. Ezen eredményeket elmentettem event fájlba, mely tartalmazza a felismert spike-ok idejét és klaszterbe való besorolását. Az így kapott eredményeket hasonlítottam össze a mesterséges jellel, hiszen abban tudtam a spike-ok jelben történő megjelenési idejét. Matlab kód segítségével megállapítottam (lásd a mellékletben), hogy az adott sejtválogató algoritmus hány spike-ot talált meg jól, mennyi volt a pozitív és a negatív hibája a futtatott algoritmusoknak. Mindezeket az információkat az algoritmusok által elmentett event, eseményeket tartalmazó fájlból és az általam generált jel event fájljának összehasonlításából kaptam meg. Ezen lépéseket többször megismételve minden algoritmusra több eredményt kaptam, melyből megpróbáltam levonni néhány következtetést az algoritmusokra vonatkozóan. A két jel összehasonlítását mozgó ablakkal végeztem, melynek méretét az előre sejthető eredményekből állítottam be. 20 mintapont szélességű lett az ablak, mely azt jelenti, hogy ha az eredeti jelben lévő spike kezdőpontjához képest a válogatott jel spike-jának kezdőpontja 20 mintaponton belül el van csúszva, akkor még lehet, hogy ugyanazt a spike-ot ismerte fel az algoritmus. Erre azért volt szükség, mert az általam generált jelben a spike-ok kezdeti időpontja volt adott, viszont az algoritmus azt az időpontot adta meg, ahol a spike csúcsa volt, s ez utóbbi időben később van, mint az eredeti jelben a spike helye. Az ablakméret kiválasztása nehéz volt, mert ha túl nagyra választottam, akkor több spike-ot egy spike-nak tekintett. Ha pedig túl kicsi lett az ablakméret, akkor túlságosan szigorú lett a feltétel és csak olyat talált meg, amely spike csúcsának időpontja pontosan megegyezik a spike kezdetének időpontjával.
4.1.3 Eredmények Megpróbáltam minden algoritmust mindegyik spike-tulajdonsággal (spike amplitúdója és a jel főkomponensei) lefuttatni és az így kapott eredményeket összehasonlítani. Ez azért nem volt könnyű, mert például a főkomponensek alapján való válogatás esetén nem lehetett hisztogrammal válogatást készíteni, ezért a spike-ok amplitúdóját tekintve a hisztogram segítségével történő válogatás eredményét nem tudtam mivel összehasonlítani.
23
A. Amplitúdó alapú válogatás Az amplitúdó alapú válogatás során a csúcsok amplitúdójának nagyságát, magasságát választjuk a jeleket egymástól megkülönböztető tulajdonságnak. Az ilyen válogatások során kézzel kell megadni (ebben a programban) 3 olyan helyet, ahol megvizsgálja az algoritmus, hogy mennyire térnek el egymástól a spike-ok. Ha ezek egymástól jelentősen eltérő helyen vannak, jó esély van rá, hogy eredményes lesz a válogatás. Ám ez nem mindig igaz, mert ilyen esetekben is előfordulhat, hogy például az algoritmus egy klaszterbe helyezi az összes spike-ot, és a valójában egy csoportot kettészedi, ám ezek nem lesznek egymástól jól elkülönült csoportok.
Hisztogrammal történő válogatás Elsőként a hisztogram szerinti válogatást próbáltam eredményesség szempontjából vizsgálni. E válogatás futtatása során még a klaszterek határát is kézzel kellett megadni, emiatt az eredmény igen változó lett. 2 SD küszöbértéket határoztam meg, azaz a jel átlagának és kétszer a jel szórásának összegét vettem küszöbnek. Az egyik válogatással az algoritmus 681 spike-ot helyezett klaszterekbe úgy, hogy azok megfeleltek a mesterséges jel spike-jai által generált csoportoknak. Válogatás eredménye
Pozitív hiba
Negatív hiba
928
219
1. csoport: 257 2. csoport: 152 3. csoport: 272 A helyesen megtalált spike-ok száma: 681 1. táblázat Amplitúdó hisztogrammal történt válogatás eredménye A válogatás során az algoritmus előre megadott számú klaszterbe válogatta szét az általa felismert spike-okat. Az algoritmus szerint meghatározott csoportokba sorolt spike-ok darabszámát jelzik a táblázat első oszlopában lévő számok. A válogatás eredményei közül az első szám azt jelenti, hogy az algoritmus a mesterséges jel első fajta spike-jához 257 hasonló spike-ot talált. A második szám hasonlóan a generált jel második spike-jához hasonlító, a harmadik szám pedig a harmadik spike-hoz hasonlító spike-ok számát adja meg. Más klaszterhatárokat megjelölve más lett a válogatás eredménye. Az 1. válogatásnál nagyobb, a másodiknál kisebb klasztereket határoztam meg, azaz egy klaszter határai közelebb voltak egymáshoz. Ezáltal az eredmény is alapján változott: a 2. válogatásnál szűkebb klasztereket kijelölve kevesebb spike-ot javasolt jónak a válogatás.
24
Válogatás
1. válogatás
2. válogatás
262
167
164
262
285
273
711
702
Pozitív hiba
1013
124
Negatív hiba
189
198
Válogatás alapján javasolt spike-ok száma
2. táblázat Amplitúdó hisztogrammal történt más válogatások eredményei
2.5 SD-re növelve a küszöbértéket, különböző futtatásokra egyre kevesebb spike-ot helyezett klaszterekbe az összehasonlító algoritmus, ahogy ez jól látszik a táblázatban is. A magasabb küszöbérték esetében a válogatás szerint jól klaszterezett spike-ok száma 692 vagy annál kevesebb lett, míg 2 SD-re 700-as nagyságrendű is volt. Válogatás
1.
2.
309
303
142
183
241
154
692
640
Pozitív hiba
1024
680
Negatív hiba
208
260
Válogatás alapján javasolt spike-ok száma
3. táblázat 2.5 SD küszöbértékű amplitúdó hisztogrammal történt válogatások eredményei
Mindkét esetben megfigyelhető volt, hogy minél kisebb volt egy klaszter két széle közti különbség, annál kevesebb jól megtalált spike volt. Az algoritmus hibájaként tekinthető, hogy a különböző csoportokba válogatott spike-ok közül egyet-egyet megtekintve, a refrakter periódus nem volt elegendő, tehát a válogatás nem eredményes és az algoritmus válogatásának pozitív hibája jelentős mértékű.
CEM algoritmus A CEM algoritmust futtatva nem kellett már klaszterhatárokat kézzel meghatározni, csak azt a klaszterszámnyi pontot kijelölni az egymásra rajzolt és a 0-ba tolt spike-ok ábráján, mely alapján csoportokba osztja az algoritmus a felismert spike-okat. A reálisan legkisebb küszöbértéket, 2 SD-t beállítva is csak 2 klaszterbe tudta sorolni a spike-okat az algoritmus, 25
tehát nem tudott jól válogatni a megadott klaszterszámra. Ezért a CEM algoritmussal történő válogatás eredményeit nem is vizsgáltam a továbbiakban.
K-means algoritmus Először 2 SD küszöbértékre futtattam a K-means algoritmust, ahol a spike-okat amplitúdó alapján különböztette meg a program. Ebben a válogatásban is manuálisan kellett, jelen esetben három helyet kijelölni, ami alapján kiszámolta az algoritmus a klaszterek középpontját, s
hogy
melyik klaszterbe
melyik
csúcs
tartozzon. Ezen helyeket
különbözőképpen választva más-más eredményeket kaptam. Ha azon az ábrán, ahol a spike-ok fel vannak tüntetve és a 0 pontba vannak tolva, azt a 3 helyet jelöltem ki, ahol a spike-ok a legkülönbözőbbek, a válogatás csak 2 klasztert adott. Ám, ha más helyeket jelöltem ki az ábrán, az algoritmus már három klaszterbe válogatta a spike-okat.
10. ábra Az egymásra rajzolt és a 0 időpillanatba tolt spike-ok
Ebben a válogatásban 2 olyan helyet választottam ki, ahol a spike-ok egymáshoz képest jelentősen eltérnek, és egy olyan helyet, ahol ez az eltérés kisebb a spike-ok között. Láthatóan az algoritmus 1082 csúcsot talált meg, pedig eredetileg ebben a jelben összesen csak 900 spike lett elhelyezve.
26
11. ábra A válogatás eredménye: különböző alakú spike-ok különböző klaszterbe kerültek
12. ábra A válogatás eredménye (egy klaszterbe tartozó spike-ok egy színűek)
A fenti ábrán a 10. ábra szerinti három megjelölt hely közül kettő függvényében vannak ábrázolva a spike-ok, mint pontok. Az egy klaszterbe tartozó spike-ok egyféle színűek. Egy klaszter egy neuront szimbolizál, tehát szépen látszik, hogy az algoritmus jól különválasztotta a három „mesterséges” neurontól származó jeleket, hiszen jól elkülönülnek egymástól a klaszterek.
27
Ekkor összesen 887 spike volt az algoritmus szerint jól megtalált csúcsok száma. Az eredményt a refrakter periódussal ellenőriztem. Az alábbi ábrán látható, hogy minden klaszterben 4 ms-os szünet volt a hozzá tartozó spike-ok között.
13. ábra Az algoritmus által létrehozott klaszterek, mint neuronok refrakter periódusa
Ha más helyeket jelöltem be, a válogatás eredménye is megváltozott.
14. ábra Spike-ok egymástól hasonlóan mértékben eltérő helyeinek megjelölése
Jelen esetben olyan helyeket jelöltem ki, ahol a spike-ok eltérése kevésbé volt jelentős. Az algoritmus lefutás után kapott válogatására a hasonlítás 560 spike-ot talált jó klaszterbe 28
helyezve. A spike-ok kiválogatása nagyon hasonló volt az előző válogatáshoz, de a klaszterek 2 dimenziós megjelenésében kis eltérés látható.
15. ábra A megkülönböztetett spike-ok
16. ábra Klaszterek 2 dimenziós megjelenítése 2 kijelölt hely függvényében
Ha a két fentebbi válogatást összehasonlítjuk, látható, hogy a 15. ábrán a szürke színnel jelölt spike-ok alakja különböző, emiatt a 16. ábrán a klaszterek felrajzolásában a szürke csoport kettévált. Az algoritmus ebben az esetben talán nem a legjobb válogatást adta, viszont jól elkülönült klasztereket hozott létre. Ehhez képest az első válogatás, melynek eredményét a11. és 12. ábra mutatja, e kétfajta csúcsokat külön csoportokba válogatta. Viszont a kék színnel jelölt klaszterbe olyan spike-okat rakott, melyeket az utóbbi válogatás különválasztott. Ellenben az első válogatásnál is, mint ahogy a másodiknál jól diszkrimináltak a klaszterek és szépen megjelent a refrakter periódus is. 29
Másik 3 helyet kijelölve ismét más eredményű válogatást kaptam.
17. ábra Egymáshoz közel lévő helyek kijelölése a spike-ok ábráján
18. ábra Kiválogatott spike-ok alakja
19. ábra Kiválogatott spike-ok klaszter szerinti elhelyezkedése
Itt 2 olyan hely lett kijelölve, ahol a spike-ok kis mértékben térnek el egymástól, a harmadik helyen pedig jelentősebb eltérést mutatnak a spike-ok egymáshoz képest. Ekkor már 652 lett az algoritmus által helyesnek ítélt válogatott spike-ok száma. Annak ellenére, hogy a refrakter periódus jelen volt minden klaszterben, a válogatás mégsem lett tökéletes: a 17. ábrán a 3 megjelölés egymáshoz közel esett, ezért a két legközelebb eső helyen tekintve a spike-tulajdonságot, a jelek nem lettek egymástól függetlenek. Ez jelenik meg a klasztereket ábrázoló ábrán is. Talán ezzel magyarázható a kék és a zöld színnel jelzett csoport egymáshoz való közelsége. Ez megfigyelhető a 17. ábrán is, ahol e két színű spike-ok igen hasonlítanak egymásra. Az eddigiekből következik, hogy az algoritmus helyessége, azaz hogy mennyi spike-ot talált meg jól a válogatás, jelentősen függ attól, hogy milyen helyeken vizsgálja az algoritmus a spike-ok egymáshoz képesti hasonlóságát, különbözőségét.
30
Válogatás
1. válogatás
2. válogatás
300
298
297
292
290
247
887
837
Pozitív hiba
0
245
Negatív hiba
3
63
Válogatás alapján javasolt spike-ok száma
4. táblázat Amplitúdó alapú K-means algoritmussal történt válogatások eredményei
További válogatásokon is megfigyeltem, hogy nagyobb SD küszöbértékre kevesebb spike-ot talált meg jól az algoritmus, hiszen kisebb tartományban lévő jeleket válogatott. Ezt bizonyítja, hogy 2.3 SD értékű küszöbre a válogatás során a legjobb érték 808, 2.5 SD értékű küszöbre pedig 781 spike lett. Ezek a számok az algoritmus által helyesnek vélt spike-ok számát jelentik. Az algoritmus nem feltétlenül ugyanazokat a spike-okat találta jónak, mint amelyek ténylegesen azok, ezért fogalmaztam a fentiek szerint. Adott küszöbérték
2 SD
2.3 SD
2.5 SD
300
298
296
297
227
243
290
283
242
887
808
781
Pozitív hiba
0
196
133
Negatív hiba
3
92
119
szerinti válogatás
Válogatás alapján javasolt spike-ok száma
5. táblázat Különböző küszöbértékekre a válogatás eredménye
B. PCA alapú válogatás A
spike-ok
főkomponenseit
tekintve
a
csúcsok
egymást
megkülönböztető
tulajdonságának, nincs szükség olyan kézzel történő helyek bejelölésére a spike-ok ábráján, mint amilyet az amplitúdó alapú válogatások megkívántak. Ez megkönnyíti a válogatást és ezáltal csökken a válogatás paraméterfüggősége. Ebben az esetben már csak a küszöbérték változtatásával lehet jobb, illetve rosszabb eredményű válogatást kapni.
31
A Wave Solution program a PCA-val történő válogatások esetében először felrajzolja a megadott küszöb által megmaradt jelet, mint egymásra rajzolt spike-okat, majd ezeknek kiszámolja a főkomponenseit. Az első három legnagyobbat felrajzolja és megmutatja, hogy a jel információtartalmának melyik komponens hány százalékát adja. A komponensek felrajzolásakor már megsejthető a válogatás eredménye. Ha nagyon eltérőek a hullámok, jól elkülönültek lesznek a válogatott klaszterek. Ám ha egymáshoz elég hasonlóak a komponensek, akkor a válogatás eredményében olyan csoportok keletkeznek, melyek talán egynek tűnnek, az algoritmus mégis kettévágja őket. Tehát a klasztereknek egymással közös oldaluk van.
CEM algoritmus A CEM algoritmus és a K-means algoritmus között, ha a spike-ok főkomponenseit tekintjük, nincs semmi különbség az algoritmus futása alatt. Az eredmények különbözőek, de futási időre és a felügyeltségre ugyanaz jellemző mindkét esetben. CEM algoritmus futtatása során különböző küszöbértékekre természetesen más és más eredményeket kaptam. Válogatás
2 SD-vel
2.3 SD-vel
300
185
290
299
297
297
887
781
Pozitív hiba
3
98
Negatív hiba
13
119
Válogatás alapján javasolt spike-ok száma
6. táblázat PCA CEM válogatással kapott eredmények
A 6. táblázat adataiból kitűnik, hogy alacsonyabb küszöbértékre már közel 900 spike-ot talált jónak az algoritmus, amely jól közelíti a valós értéket, ráadásul kicsi volt a pozitív és a negatív hiba értéke is. Az eredményekből következően ez a válogatás jónak tűnik. Növelve a küszöböt, a hibák egyre nagyobbak és az algoritmus által jól megtalált spike-ok száma egyre kevesebb. 2.5 SD küszöbértékre pedig még jobban romlik a válogatás minősége. Ezt bizonyítja, hogy az előre megadott 3 klaszter helyett csak 2 klaszterbe rendezte a spike-okat az algoritmus, a harmadik csoportot üresen hagyta.
32
K-means algoritmus A K-means algoritmussal történő válogatás során olyan eredmények születtek, melyekre az ellenőrzésként szolgáló refrakter periódus szépen megjelent. Bár nagyobbak a hibák, mint a CEM algoritmusnál, de a spike-ok közötti, a neuron nyugalmi állapotába visszasegítő idő megjelent és ez a válogatás „jóság”-át mutatja. Válogatás
2 SD-vel
2.3 SD-vel
2.5 SD-vel
301
306
301
315
301
265
191
123
76
807
730
640
Pozitív hiba
275
274
274
Negatív hiba
93
170
260
Válogatás alapján javasolt spike-ok száma
7. táblázat PCA K-means algoritmussal történt válogatás eredményei különböző küszöbértékekre
Itt is jól megfigyelhető, mint a korábbi értékeknél, hogy növekvő küszöbértékre csökkent a válogatás alapján javasolt spike-ok száma, s ennek következtében nőtt a negatív hiba nagysága.
33
C. Hibák és a küszöbérték kapcsolata A pozitív és a negatív hibák nagysága összefüggésben áll az előre meghatározott küszöbértékkel. Minél magasabb a küszöbérték, annál kevesebb spike-ot ismer fel az algoritmus, ezáltal nagyobb lehet a fel nem ismert spike-ok száma, melyet a negatív hiba ad meg.
20. ábra Amplitúdó alapú hisztogram válogatás hibái
A 20. ábrán látható, hogy a pozitív hiba akár 800-nál nagyobb értéket is elérhet. Míg a többi algoritmussal történő válogatás esetén kisebb nagyságrendek szerepelnek a spike-ok darabszámánál.
21. ábra Amplitúdó alapú K-means algoritmussal történt válogatás hibái
A hibákat tekintve legjobb válogatás az amplitúdó alapú K-means algoritmus futtatása során történő válogatás volt 2 SD küszöbbel. Ebben az esetben mind a pozitív, mind a negatív hiba kicsi volt, elenyésző a többi válogatáshoz képest.
34
22. ábra PCA alapú CEM válogatás hibái
A 22. ábráról leolvasható, hogy a PCA alapú válogatás, mint ahogy a többi válogatás esetében is kisebb küszöbértékre ad jó eredményt.
23. ábra PCA alapú K-means válogatás hibái
Általában megfigyelhető, hogy a negatív hiba növekvő küszöbérték esetén nő, a pozitív hiba pedig teljesen változó. Utóbbi legtöbb esetben a negatív hibához képest jóval nagyobb értéket mutat. A két hiba közül talán a negatív hiba játszik döntő szerepet egy algoritmus pontosságának meghatározásában. Igaz, a pozitív hiba is szükséges ennek megállapítására, de a negatív azért fontosabb, mert inkább az a fontos, hogy minden, egy neuronhoz tartozó spike egy klaszterben legyen, és az kevésbé, hogy néhányat még hozzávett az algoritmus.
35
D. Az amplitúdó és a PCA alapú válogatás összehasonlítása E kétfajta tulajdonság alapján való válogatást csak a K-means algoritmus futtatásával kapott eredményekkel tudtam összehasonlítani. Ennek oka, hogy a hisztogram szerinti válogatás csak amplitúdó tulajdonsággal lehetséges, PCA-val nem, és az amplitúdó alapú CEM algoritmus pedig 3 klaszter helyett csak kettőt talált meg, így ez is alkalmatlan volt a PCA-val való összehasonlításra. Mindkét fajta válogatásnál különböző küszöbértékekre futtattam a K-means algoritmust. PCA-nál egy küszöbértékre csak egyszer futtattam le a programot, mivel ott nem lehet változtatni olyan paramétert, mely befolyásolná a válogatást, míg az amplitúdó alapú válogatásnál lehet, ezért ott többször, más paraméterekkel futtattam le. 2 SD küszöb
Amplitúdó alapú válogatás
PCA alapú válogatás
300
298
301
297
292
315
290
247
191
887
837
807
Pozitív hiba
0
245
275
Negatív hiba
13
63
93
Válogatás alapján javasolt spike-ok száma
8. táblázat Különböző válogatások összehasonlítása 2 SD küszöbértékre
A fenti ábrán 2 SD küszöbértékre látható kétfajta válogatás. A PCA alapú kevésbé eredményes, hiszen a válogatás alapján javasolt spike-ok száma kisebb, mint az amplitúdó alapú válogatások esetében, és a kétfajta hiba is nagyobb a másik kettő válogatásnál. 2.3 SD küszöb
Amplitúdó alapú válogatás
PCA alapú válogatás
298
300
306
227
280
301
283
297
123
808
877
730
Pozitív hiba
196
126
274
Negatív hiba
92
23
170
A válogatás által javasolt spike-ok száma
9. táblázat Különböző válogatások összehasonlítása 2.3 SD küszöbértékre
36
A 2.3 SD küszöbértékű válogatásoknál ugyanaz figyelhető meg, mint az előző esetben: a PCA alapú válogatás kevesebb spike-ot talált meg jól, azaz helyezett úgy klaszterbe, ahogy az az eredeti mesterséges jelben is volt. Jelen esetben is a hibák nagysága a PCA alapú válogatásnál a legnagyobb. 2.5 SD küszöb
Amplitúdó alapú válogatás
PCA alapú válogatás
299
297
301
262
300
265
60
241
74
621
838
640
Pozitív hiba
293
76
274
Negatív hiba
279
62
260
Válogatás alapján javasolt spike-ok száma
10. táblázat Különböző válogatások összehasonlítása 2.5 SD küszöbértékre
Az általam megfigyelt legnagyobb, 2.5 SD küszöbértékű válogatásoknál már a PCA alapú K-means algoritmus válogatott eredményesebben, a hiba nagysága sem a legnagyobb értékű a válogatások között.
E. Összefoglalás A különböző válogatások más lehetőségeket jelentenek az őket alkalmazó felhasználó számára. Az amplitúdó alapú válogatások felhasználásakor több lehetőség van az éppen használt algoritmus futási eredményének befolyásolására amiatt, hogy a spike-okat együtt és egy közös pontba felrajzolva meg lehet határozni azokat a helyeket, amelyek alapján a továbbiakban az algoritmus megkülönbözteti a csúcsokat. Később ezek adják a válogatás dimenzióit, melyek segítségével a program ábrázolja a klasztereket. Ez a válogatások előnye és hátránya is lehet, hiszen felügyelet szükséges a lefuttatáshoz, viszont nem annyira determinált a válogatás eredménye. A PCA analízis ellenben eredményesebben keresi meg a spike-ok olyan jellemző tulajdonságát, mely alapján könnyebb válogatni, ám a futási idő csökkentése miatt az analízis nem minden információt tart meg az egyes spike-ról a válogatás alatt. Emiatt információt veszíthetünk a jelből, mely a válogatás pontatlanságához vezet. Az algoritmusok futtatásai és az ebből kapott eredmények összehasonlítása során az amplitúdó alapú válogatások bizonyultak eredményesebbnek, ám nagyobb küszöbértékre már a PCA alapú válogatás adott jobb eredményt. Mégsem lehet kijelenteni, hogy legjobb válogatást az amplitúdó alapú válogatások adják, mert azok nem ismerik fel, ha két neuron ugyanakkora amplitúdójú spike-kal tüzel. Viszont PCA-val külön lehet ezeket választani, 37
mivel ha a spike-ok amplitúdója megegyező méretű, akkor más tulajdonságuk különböző, hiszen különböző neuronoknak különböző jeleiknek kell lenni, ezért a más egymástól megkülönböztető tulajdonságokat a PCA analízis valószínűleg kinyeri a spike-okból. A továbbiakban az itt bemutatott és a tapasztalatom szerint jónak vélt algoritmusokat használtam fel a természetes jel sejtválogatásához.
4.2 Természetes jel A sejtválogató algoritmusok alkalmazása valós, biológiai jeleken történik. Ekkor igen nehéz megállapítani, hogy „helyes” volt-e a válogatás vagy sem, hiszen nem lehet tudni, hogy az elvezetéshez használt elektród egy adott kontaktusához hány sejt volt közel, illetve mely sejtek aktivitása szólt bele jelentősen a kontaktus által elvezetett jelbe.
4.2.1 Jelfeldolgozás sejtválogatással Munkámban macskából elvezetett jeleket használtam természetes, biológiai jelként. Az állatba több hónapig voltak elhelyezve az elektródok, így lényegében bármely napszakban lehetett elvezetést végezni. Ennek köszönhetően megfigyelhetővé vált az állat különböző viselkedések pillanatában: ébrenlét vagy alvás közben, REM (rapid eye movement – gyors szemmozgással járó alvás) és nREM, azaz nem álomlátó alvás közben. Két elvezetésből származó jeleket dolgoztam fel. Az egyiken nem sikerült jól a sejtválogatás, a másikon szépen megjelentek az elkülönült klaszterek. Elsőként olyan elvezetésnek jeleit vizsgáltam meg, melyet 2009. 11. 18-án vezettek el beépített elektródok segítségével, amelyeket 11. 03-án helyeztek az állat fejének különböző pontjaira.
24. ábra NeuroScan program segítségével megjelenített elvezetés
38
Felszíni elektródokat ültettek be a macska bal és jobb oldali akusztikus kérge fölé, a 24. ábrán látható jel ebből az elvezetésből származik. Az 1-8. csatornák a bal, 9-15. csatornák pedig a jobb oldalról elvezetett jeleket mutatják. A 16. csatornán a jobb oldali motoros kéreg, a 17. csatornán a bal oldali vizuális kéreg által leadott jelek láthatóak. A 18-as csatorna jele a vertex-ből, a 19 és 20-as csatorna jele a hippocampusból származik. A 21 és 22-es csatornák az EOG-ot (Elektro-OkuloGram) mutatják, mivel azok az elektródok, melyekkel ezeket a jeleket vették fel, a szem körül helyezkedtek el. A 23-as csatornán egy izomba szúrt elektródával elvezetett izomaktivitás figyelhető meg; a 24-es csatornán pedig a trigger jel követhető, mely 3/s-os hanginger volt. Az ezt követő csatornák egy 24 csatornás rétegelektród kontaktusaiból származó jelet mutatnak. Az ábrán mégis csak 23 csatorna jelenik meg, mivel gradiens elvezetést végeztek a kísérlet során, mely azt jelenti, hogy két elvezető kontaktus közti különbséget tekintették, emiatt jelenik meg eggyel kevesebb csatorna a jelen. Az elvezetéshez használt 24 kontaktusú elektród 25 µm átmérőjű, szigetelt, platina-irídium ötvözetből álló huzal. Ekörül epoxy gyantával kitöltött, vékony falú, rozsdamentes, 350 µm átmérőjű acélcső helyezkedik el. A kontaktusok az elektród csúcsánál, egymástól 100 µm távolságra vannak.
1 mm
25. ábra 25 kontaktusú rétegelektród
A természetes jelet eredeti formájában nehéz volt kezelni, hiszen több zavaró tényező is megfigyelhető volt a jelen: artefaktok, az elvezetéshez közel lévő más elektronikai eszközök hatása, a kábelek hosszából származó elektromos sugárzás. Ezért NeuroScan program segítségével szűrést végeztem rajta, melynek során IIR (Infinite Impulse Response) sávszűrőt, végtelen impulzusválaszú szűrőt használtam, mely az 500 és 5000 Hz közötti jelet meghagyta, a többit pedig levágta. Így megmaradtak a multi-unit aktivitásból származó jelek, az egyes sejtek jeleinek összessége és természetesen maga a trigger jel is. Ezen az elvezetésen a trigger 39
egyoldali akusztikus hanginger volt, 3/s-os frekvenciával. A szűrt cnt fájlból kivágtam a 25-47-es csatornákat, hiszen számomra ezen elvezetések voltak fontosak, ezekből lehet kinyerni a SUA-t (Single-Unit Activity), az egyes sejteknek az aktivitását. A természetes jel válogatása során néhány problémába ütköztem. A cnt fájl megszűrése után külön kellett tekinteni az egyes csatornákat, hiszen a sejtválogatást csak egy-egy csatornára lehet elvégezni és így, mivel kevesebb az egyszerre feldolgozandó adat, gyorsabban tudnak lefutni az algoritmusok. A gyakorlati megvalósításban az elvezetés 10 fájlban lett felvéve, ezek összideje 30 percnél több volt. A helyes osztályozás szempontjából megpróbáltam az egyes, különböző időben történt elvezetéseknek az azonos csatornáit tartalmazó fájlokat összefűzni és azon jeleket kiválogatni. Így olyan nagy fájlokat kaptam, hogy nem tudtam a rendelkezésemre álló számítógépekkel dolgozni velük. Ha a sejtválogató algoritmust elkezdtem futtatni ezeken a jeleken, több tízezer spike-ot talált meg, és memóriahiány miatt leállt a Matlab program, mivel nem volt elég kapacitása, hogy szétválogassa a megtalált csúcsokat néhány, általa különbözőnek vélt klaszterbe. Ezért a továbbiakban nem az összefűzött fájlokkal dolgoztam, hanem az egyes elvezetésekből származó egy-egy csatorna jelét tartalmazó fájlokkal, mely elvezetésenként majdnem 22 fájlt jelentett. Nehézségem volt, hogy nem tudtam mihez hasonlítani a válogatási eredményeket, hiszen a természetes jel válogatása esetében nem lehetett pontosan megmondani, hogy az elvezetés alatt hány sejt volt közel az elektród kontaktusához. Így egy válogatás „jóságának” meghatározása attól függött, hogy mennyire voltak szemmel láthatóan jól elszeparáltak a válogatás során kapott klaszterek és mennyire jelent meg a refrakter periódus. Ezen kívül nehéz volt beállítani az SD alapú küszöbértéket, hogy az ténylegesen csak a jelenlévő spike-okat hagyja meg, és ne maradjanak benne a háttérzajból származó egyéb, jelentéktelen hullámok, de ne is vesszenek el az élő sejtek által leadott spike-ok. A küszöbértéket emiatt sokszor változatni kellett, hogy a válogatás eredménye reális legyen. Ezért 2.5 és 8 közötti értékeket használtam fel. A sejtválogatás során meg kell adni előre, hogy az algoritmus hány klaszterbe válogassa szét a különböző spike-okat. Ezt természetes jel esetén nehéz megmondani, hiszen az elvezetés alatt nem lehet látni, hogy az elektród közelében hány sejt helyezkedett el. Tapasztalat alapján lehet sejteni, hogy 2-3 sejtnél több nem fordulhatott elő az elvezető elektród kontaktusához közel. Ezt az állítást az elvezetett jel formájából is igazolni lehet, hogy szemmel láthatóan hány jól elkülöníthető spike alak jelent meg. Az elsőként feldolgozott jelet nem sikerült a sejtválogató algoritmusokkal jól szétválogatni: az algoritmusok eredményként csak egy klasztert határoztak meg a beállított két klaszter helyett és az az egy is elég széles tartományú volt, „felhő”-vel ábrázolva nagy kiterjedésű volt a felhő. 40
Viszont kezdetben, a válogatás előtt, szemmel is látható volt a cnt fájlon, hogy jól elkülöníthetőek a különböző sejtek különböző amplitúdójú jelei az egyes csatornákon. Mégis, ennek ellenére az algoritmusok nem tudták helyesen elszeparálni a vélhetően két sejt által leadott jeleket.
26. ábra A 34-es csatorna elvezetéséből származó jel egy részlete, melyen szemmel is jól elkülöníthető legalább két sejt által leadott spike
Ennek oka lehet, hogy a két sejtnek a jelalakjai egymáshoz képest nem voltak lényegesen eltérőek, azaz nem volt olyan éles határ köztük, mely közelében könnyen megállapítható lett volna egy algoritmus számára is, hogy a spike épp melyik sejthez tartozik. Ehelyett átmenet volt a két sejt jelalakjai között. Ezt a kis jel-zaj viszony okozta, feltételezhetően túl nagy háttérzaj volt a jel elvezetése alatt, melyet nem lehetett igazán kiszűrni. A háttérzaj a sejtek által leadott spike-okhoz hozzáadódott, emiatt szuperponált jelt keletkezett és ezt próbálta szétválogatni az algoritmus. Talán a változó zaj miatt lehetett a változó csúcsméret is: hol kisebb, hol nagyobb volt a zaj, ezáltal csökkent, illetve nőtt a spike-ok amplitúdója is. Emiatt az első elvezetésből származó jelet nem tudtam jól feldolgozni és egy újabb, másik műtét során elvezetett jelet vizsgáltam a továbbiakban. A másik jel szintén macskából származó elvezetés volt, melyet 2008.01.31-én végeztek. Hasonló műtét volt a fentebb leírtakhoz, annyi különbséggel, hogy itt volt olyan időszak, amikor ketamin-xilazin altatóval elaltatták a macskát. Ez azért érdekes, mert akkor máshogy viselkedik az állat szervezete, más sejtek lesznek aktívak. Ezen az elvezetésen megfigyelhető volt, hogy az elektród kontaktusához közel kevés, egy-két sejt volt, így ezek határozták meg jelentősen az elvezetett jelet. A küszöbértéket először mindig ahhoz képest változtattam, hogy mennyi spike-ot ismert fel a jelben a sejtválogató program egy adott értékre. Ha ez túl sok volt a jel időtartamához képest, akkor növeltem a 41
küszöböt, hiszen így valószínűleg zaj is került a spike-ok közé Ha pedig túl kevés spike-ot talált meg, akkor kis mértékben csökkentettem az értéket, hogy ne essenek ki az információt tartalmazó, sejttől érkező spike-ok az osztályozott csúcsok közül. E két elvárást kellett jól kiegyenlíteni, hogy a sejtválogatás eredményes legyen. Sajnos az így válogatott jeleket és az ezekből származó eredményeket nem tudtam a későbbiekben felhasználni. Ennek oka, hogy minden válogatásnál más és más küszöbértéket használtam, így ezen érték szerint nem lehet összehasonlítani az eredményeket. Ezért következő lépésként meghatároztam minden csatornára egy olyan küszöbértéket, melyre „jó” válogatást kaptam. Először a küszöböt SD alapján, majd pedig feszültség érték alapján adtam meg. A sejtválogatásban eleinte az amplitúdó alapú K-means algoritmust használtam. De mivel a PCA analízissel is hasonló eredményt kaptam, ezért később már csak a PCA alapú K-means algoritmust használtam a sejtválogatásra. Ez a választás talán azért jobb, mert kisebb a paraméterfüggősége, nem szükséges minden egyes válogatásnál meghatározni a spike-okon a megkülönböztető helyeket. A válogatás sajnos nem mindig volt eredményes: voltak olyan szakaszok, amikor a kapott eredményben egy felhőben két klaszter jelent meg, tehát olyan spike-okat válogatott külön csoportokba az algoritmust, melyeket nem biztos, hogy el kellett volna különíteni egymástól. Az összehasonlítás céljának érdekében nem változtattam meg ezeknél a küszöbértéket, hogy jobb válogatást adjanak. Így össze lehetett vetni az eredményeket. A vizsgálandó jelet 6 fájlban kaptam meg. A fájlok már a megszűrt jelet tartalmazták. A korábbi vizsgált jeltől eltérően itt a fájlokban már csak 24 csatornás elvezetésnek a jelei voltak, ez látható a 27. ábrán.
27. ábra 24 kontaktusú rétegelektród elvezetéséből származó jelek
42
Nem mind a 24 csatornára futtattam le a sejtválogató algoritmusokat, hanem néhányra közülük, hiszen nem mindegyiken látható szemmel is, hogy valamilyen sejt közelében volt az elektród kontaktusa és elvezetette volna annak a jelét. Először kiválasztottam, hogy a 7-es, 8-as, 14-es, 15-ös, 16-os és 22-es csatornákat fogom vizsgálni. Ezen, ahogy a 28. ábra is mutatja tüskékkel ábrázolva megjelennek a jelek, azaz az egyes neuronok által leadott spike-ok, melyek lényegében akciós potenciálok. Tehát azok a csatornák voltak megfelelőek számomra, melyeken szépen látszódtak a jelek. Ezeken a csatornákon volt esély, hogy a sejtválogató algoritmus megtalálja a spike-okat, melyek már a SUA aktivitáshoz tartoznak.
28. ábra A kiválasztott csatornák, melyeken jól látszódnak a neuronok által leadott spike-ok
A hat különböző fájl hat különböző időpontból való elvezetésből származik. A 08-cal, 09-cel, 10-zel és 11-gyel jelölt fájlok egymás utáni elvezetéseket tartalmaznak, a 21-gyel és 22-vel jelölt fájlok későbbi elvezetésből származnak. A válogatáskor nem a fájl teljes egészét vizsgáltam egyszerre, hiszen annak nem lett volna értelme, mert egy fájlon belül is változott a macska ébrenléti állapota. Ezért először meghatároztam, hogy a fájlokban mely időpontokban milyen állapotban lehetett a macska. Ezt NeuroScan program segítségével állapítottam meg, melyben viszonylag gyorsan lehet egyszerre több csatornát hosszú időintervallumon megjeleníteni. Az állapotok elkülönítéséhez segítség volt, hogy ébrenlét alatt az állat agyi tevékenysége sokkal inkább változó, mint alvás alatt. Így könnyű volt megkülönböztetni e két állapotot. Alvás alatt pedig lehetett REM, álomlátó alvásban a macska, vagy pedig SWS-ben (Slow Wave Sleep), azaz olyan állapotban, amikor az álomlátó alvásnál mélyebben pihen az állat és az agyi tevékenységében lassú hullámok jelennek meg. A REM-et és az ébrenlétet onnan lehetett megkülönböztetni egymástól, hogy REM-ben az izomaktivitás megszűnik, 43
viszont van szemmozgás, ébrenlét alatt pedig a szemmozgáshoz kapcsolódik még az izomaktivitás is. A kísérlet különlegessége, hogy altatót is használtak az utolsó két elvezetés során, ezért altatás alatt is meg lehetett figyelni a sejtek aktivitását. A 21-es és a 22-es fájlban lévő jelek ketamin-xilazinnal történő altatás alatti elvezetésekből származnak. A különböző állapotok különválasztásából származó időintervallumokat az alábbi táblázat tartalmazza. A későbbiekben ezek alapján állítottam be a sejtválogatás időparaméterét és ezeket figyelembe véve vontam le következtetéseket az eredményekből. Az elvezetést tartalmazó fájlok
Időintervallum (s)
Ébrenléti állapot
1-28
SWS
90-155
SWS
160-230
SWS
240-280
SWS
285-340
REM
360-500
SWS
500-520
REM
5-215
éber
275-455
SWS
15-55
SWS
60-110
éber
112-225
SWS
240-520
REM
9-160
éber
215-250
SWS
275-290
SWS
300-500
éber
21
1-520
altatás
22
1-520
altatás
száma 08
09
10
11
11. táblázat Különböző elvezetési fájlokban a különböző állapotokhoz tartozó időpontok Néhol kimaradtak egyes időszakaszok; ez azért van, mert sokszor volt olyan része az elvezetésnek, amikor nehezen volt megállapítható, hogy milyen állapotban volt a macska, például ébrenlét és SWS, alvás között. Ezért inkább csak a biztosan meghatározható szakaszokat vizsgáltam. 44
A sejtválogatást tehát elvégeztem minden csatornára minden fentebb megadott időintervallumra. Az így kapott eredményeket event fájlba mentettem, ezekkel tudtam a továbbiakban dolgozni. Az eredményekből meghatároztam a firing rate-t, a tüzelési rátát, mely megadja, hogy 1 s alatt hány spike-ot adott le egy neuron, azaz a tüzelési frekvenciáját. Ezt úgy számoltam ki, hogy az event fájlban elmentett klaszterek közül tudtam, hogy melyik tekinthető úgy, mint egy neuron, és az ebbe a klaszterbe tartozó spike-ok gyakoriságát számoltam ki Matlab program segítségével (lásd a mellékletben). Az eredményeket szétválogattam csatornák és a macska éberségi állapotai szerint. A sejtválogatáshoz először küszöbértéket kellett meghatároznom. Elsőként SD értékekkel, majd pedig konkrét feszültség értékek megadásával állapítottam meg minden csatornára a küszöböt. A különböző elvezetéseket tartalmazó fájlokra egy-egy csatornára ugyanazt az értéket alkalmaztam, hogy össze tudjam hasonlítani egymással a válogatás eredményeit. A 12. táblázatban lévő értékeket használtam fel a válogatásaimhoz. SD
Küszöbérték
küszöbérték
(µV)
7
9
-90
8
6
-70
14
10
-100
15
8
-75
16
8
-50
22
14
-75
Csatornaszám
12. táblázat Használt küszöbértékek a különböző csatornákra A fenti táblázaton látható, hogy minden csatornára pozitív SD küszöbértéket állítottam be, mely a válogatás során negatív µV-os értéket jelentett, tehát minden válogatást negatív küszöbbel végeztem el. Ennek oka, hogy a spike-ok negatív értékei (már a 28. ábrán is) szemmel láthatóan sokkal jobban elkülönülnek, mint a pozitív értékek, ezért talán könnyebb a sejtválogató algoritmusnak jól kiválogatnia a spike-okat. Csatornánként igen különböző küszöböt kellett beállítanom, hogy a válogatás eredményei jók legyenek. Sajnos így is több olyan fájl volt, amelyre nem sikerült jól a válogatás. Nem mindig kaptam olyan eredményt, hogy szépen, egymástól jól elkülönülő felhők lettek volna, hogy megjelent volna minden válogatott klaszterre a refrakter periódus és hogy szemmel láthatóan is jól elkülönítette volna az algoritmus egymástól a spike-okat. Például a 22. csatornára mindegyik válogatás szép volt, ám a 7. csatornára már nem. Pedig ez utóbbinál a refrakter periódus azt mutatta, hogy eredményes volt a válogatás.
45
30. ábra A kiválogatott spike-ok
29.ábra A 22. csatorna jele
A 29. ábra altatásból (21-es számmal jelölt elvezetésből) származó jelet mutatja, melyen jól látható, hogy a negatív értékekben jelentősen elkülönülnek amplitúdó tekintetében a spike-ok, tehát a sejtválogatásnak is el kell tudnia különíteni egymástól a jeleket. A 30. ábrán már a 75 µV-os küszöbbel végzett PCA K-means válogatás eredményeként megjelenő szétválasztott spike-ok képe látszik. A piros a hiba klasztert jelöli, a kék és a szürke szín pedig az algoritmus által egy-egy neuronnak vélt csoportot.
31. ábra A kiválogatott spike-ok jól elkülönülő klaszterekben
32. ábra Az 1. klaszterbe tartozó spike-ok megjelenési gyakorisága
33. ábra A 2. klaszterbe tartozó spike-ok megjelenési gyakorisága
A PETH (Peri-Event firing rate Time Histograms) ábrák megmutatják, hogy egymáshoz képest időben mekkora késéssel jelennek meg a spike-ok. A 32. és 33. ábrából megállapítható, hogy az egy neuront jelentő csoport valószínűleg az 1. klaszter, mivel ott jelenik meg a néhány ms-os refrakter periódus. Ezért feltehetőleg a másik klaszter a spike-ok melletti zajból származik, ahogy a hiba klaszter is. Ez a válogatás eredményesnek mondható, mivel a sejtnek tekinthető csoportban a spike-ok között megjelenik az idegsejtnek szükséges „pihenési” idő és a klaszterek is egymástól elhatároltak. Ezzel szemben a 7. csatornára a válogatás már nem lett ilyen eredményes.
46
35. ábra A kiválogatott spike-ok
34. ábra A 7. csatorna jele
A 9. elvezetésből származó 7. csatornát 9 SD értékű küszöbbel válogattam, melynek jele a 34. ábrán látható. Itt is, mint az előbbi válogatási példán elkülönülőnek látszódnak a negatív feszültség értékben lévő csúcsok, ezért eredményes válogatást lehet remélni. A válogatás egyik ábráján (35. ábra), ahol a csoportokba szétválasztott spike-ok jelennek meg, ott is jónak tűnik a válogatás, hiszen a különböző alakkal rendelkező spike-ok más színnel vannak jelölve, ami más klaszterbe való tartozást jelent.
36. ábra A kiválogatott spike-ok egy közösnek látszó, de mégis 2 klaszterben
37. ábra Az 1. klaszterbe tartozó spike-ok megjelenési gyakorisága
38. ábra A 2. klaszterbe tartozó spike-ok megjelenési gyakorisága
Az eredményként kapott klaszterek közül lényegében mindkettőben megjelenik a refrakter periódus, mint ahogy azt a 37. és a 38. ábra mutatja. Ám a különböző csoportokat jelölő „felhők” a 36. ábrán nem válnak ketté, hanem lényegében egy klasztert mutatnak. Mégis egymástól színnel meg vannak különböztetve, mert a válogató algoritmus helytelenül kettévágta az egy klasztert. Az előző megállapítások alapján kijelenthető, hogy a válogatás nem lett eredményes. Mivel az előzőhöz több hasonló válogatást is kaptam, ezért az ezekből származó eredményekből számított firing rate-t nem tudtam jól összehasonlítani egymással a különböző csatornákra és a különböző állapotokra. Hiszen ha már a sejtválogatás sem helyes, akkor a rá épülő számítások is rosszak lesznek, helytelenek lennének az ebből származó következtetések. A sejtválogatás eredménytelenségét a paraméterek beállítása okozhatja és az, 47
hogy nem állt rendelkezésemre akkora RAM memóriát tartalmazó számítógép, amely több tízezres nagyságrendű spike-ot képes lett volna kiválogatni Matlab programmal. Többször előfordult olyan eset, hogy kiválasztottam valamelyik csatornára egy küszöbértéket és elkezdtem a különböző elvezetésekre válogatni. Eközben az egyik válogatás során memóriahiány miatt leállt a program, mert olyan sok spike-ot talált, hogy azt nem tudta helyesen szétválogatni. Ezért meg kellett növelnem a küszöböt, hogy a sejtválogatás lefuthasson a jeleken. Ha ilyen történt, természetesen az egész csatornára meg kellett változtatnom a küszöböt, mely valószínűleg rontotta az eredményt, mert így megemelt küszöbre nem került bele az összes spike, ezáltal kisebb tüzelési ráta értéket kaptam.
4.2.2 Jelfeldolgozás más megoldással A
sejtválogatás
során
előbukkant
problémákat
kikerülve
más
megoldással
próbálkoztam: NeuroScan segítségével meghatároztam mindegyik csatornára az előzőnél nagyobb küszöbértéket, melyre már szemmel is látható volt, hogy az ezzel a küszöbbel kinyert jel feltehetőleg egy sejt által leadott spike-okat tartalmaz. Így lényegében sejtválogatás nélkül kaptam egy olyan event fájlt, melyben nagy részben egy sejt aktivitása jelent meg. Azt, hogy egy vagy több sejt aktivitását tartalmazza egy jel, a spike-ok közti időintervallumok, a PETH mutatja meg. Ha ezen megjelenik a 2-3 ms-os refrakter periódus, akkor egy sejt aktivitását (SUA-t) sikerült megtalálni, ha nincs ilyen spikementes intervallum, akkor több sejt aktivitását (MUA-t) mutatja az ábra és a vizsgált jel is több neuronnak a jelét tartalmazza. A kezdeti elgondolás, miszerint a meghatározott küszöbérték felett már csak egy sejt aktivitása van jelen, nem volt helyes, melyet a PETH ábrákról le lehet olvasni. Mert a cnt fájl szerint főként egy neuronnak a jelei láthatóak a küszöbérték feletti jelben, de még más sejtek által leadott spike-ok is megjelentek. Ezt mutatja a 39. ábra. Auto PETH
Auto PETH
80 70 60
Auto PETH 160
45
60
140
40
120
35
200 150
50 40 30
100
20
50
10
Number of spikes
250
Auto PETH
70
50
Number of spikes
Number of spikes
Number of spikes
300
40
30
100
Number of spikes
Auto PETH
350
80 60
30 25 20 15
20
40
10
10
20
5 0 -10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
0 -10
10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
0 -10
10
-8
-6
-4
-2
4
6
8
0 -10
10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
10
0 -10
-8
-6
-4
-2
Auto PETH
Auto PETH
Auto PETH
Auto PETH
0 2 Time (ms)
0 2 Time (ms)
4
6
8
10
Auto PETH
55
400
150 50
30
50
350
200 150
30
20
35
Number of spikes
250
Number of spikes
15
40 Number of spikes
20
45 40
300 Number of spikes
Number of spikes
25
30 25 20
50
15
10
100
0 -10
10
10
5
50
5
0 -10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
0 -10
-8
-6
-4
-2
10
Auto PETH
0 2 Time (ms)
4
6
8
-8
-6
-4
10
-2
0 2 Time (ms)
4
6
8
0 -10
10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
0 -10
10
-6
-4
-2
0 2 Time (ms)
4
6
8
10
4
6
8
10
Auto PETH
110
300
16
100
70
40 90
14
250
35
60
80
20 15
10 8 6
10
4
5
2
200
150
-6
-4
-2
0 2 Time (ms)
4
6
8
10
0 -10
60 50 40
50 40 30
30
100
20 20 10
50
-8
70
Number of spikes
25
Number of spikes
Number of spikes
30
Number of spikes
12 Number of spikes
-8
Auto PETH
Auto PETH
Auto PETH
45
0 -10
100
0 -10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
10
0 -10
-8
-6
-4
-2
48
0 2 Time (ms)
4
6
8
10
10 -8
-6
-4
-2
0 2 Time (ms)
4
6
8
10
0 -10
-8
-6
-4
-2
0 2 Time (ms)
Auto PETH
Auto PETH
Auto PETH
Auto PETH
Auto PETH
70
25 160
400
35
60
140
350
30
20 50
40
25
20
15
Number of spikes
60
Number of spikes
80
15
10
0 -10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
0 -10
200 150
10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
10
0 -10
-8
-6
-4
-2
Auto PETH
Auto PETH
0 2 Time (ms)
4
6
8
0 -10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
-4
-2
0 2 Time (ms)
4
6
8
10
8
10
Auto PETH
Auto PETH
Auto PETH
1000 900
30
20
800 700
Number of spikes
25
80
60
20 40
15
Number of spikes
Number of spikes
100
Number of spikes
-6
10
120
Number of spikes
-8
10
140
30
30
20
0 -10
50
40
40
50
5
5
10
250
100
10
20
Number of spikes
300 100
Number of spikes
Number of spikes
120
20
15
600 500 400 300
10 200 100
10 10
0 -10
5
20
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
10
5 0 -10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
0 -10
10
-8
-6
-4
-2
0 2 Time (ms)
Auto PETH
4
6
8
10
0 -10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
0 -10
10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
10
Auto PETH
Auto PETH
Auto PETH
18
90
180
160
Auto PETH
80 140
16
160
350
14
70
140
60
250
50 40 30
40
200
Number of spikes
Number of spikes
80
Number of spikes
100
12
300
60
Number of spikes
Number of spikes
120
120 100
6
60
4
100
40
2
10 -6
-4
-2
0 2 Time (ms)
4
6
8
0 -10
10
-8
-6
-4
-2
0 2 Time (ms)
Auto PETH
4
6
8
10 0 -10
0 -10 -8
-6
-4
-2
0 2 Time (ms)
Auto PETH
4
6
8
-8
-6
-4
-2
10
0 2 Time (ms)
Auto PETH
4
6
8
-8
-6
-4
-2
0 2 Time (ms)
4
6
10
Auto PETH
Auto PETH
180
400 200
1200
250
160
350
140
1000
300
600
150
100
100 80 60
400
250 200
100
150 50
40
100
50
200
150
120
Number of spikes
800
Number of spikes
Number of spikes
200 Number of spikes
0 -10
20
50 -8
Number of spikes
0 -10
8
150
20 20
10
80
20
50 0 -10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
10
0 -10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
0 -10
10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
0 -10
10
0 -10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
10
-8
-6
-4
-2
0 2 Time (ms)
4
Auto PETH 25
Number of spikes
20
15
10
5
0 -10
-8
-6
-4
-2
0 2 Time (ms)
4
6
8
10
39. ábra PETH ábrák különböző elvezetésekre és különböző csatornákra
A kicsi ábrák közepén nem mindig jelenik meg a 2-3 ms-os refrakter periódus, helyette maximum 1 ms-nyi szünet fedezhető fel a spike-ok között. Tehát más sejt aktivitását is sikerült elvezetni, multi-unit aktivitás figyelhető meg a jeleken.
A. Firing rate változások Általánosan elmondható, hogy nagyságrendben macskánál 2-3 Hz-nél nagyobb értékű szokott lenni a tüzelési frekvencia, embernél ennél alacsonyabb. A firing rate-ket minden elvezetésre, minden csatornára és minden állapotra kiszámoltam. Megfigyeltem mozgó ablakkal, hogyan változik időben a sejtaktivitás: a mozgó ablak szélességét 10 s-ra, az átlapolódást pedig ennek felére állítottam be. Kisebb értékekre nagyon lassú futási idejű és néha memóriahiányra utaló eredményeket kaptam, ezért választottam ezeket a paramétereket, melyre igen jó felbontású ábrákat adott a Matlab program.
49
6
8
10
7
6
Tüzelési ráta (Hz)
5
4
3
2
1
0
100
200
300
400
500
600
Idő (s)
40. ábra SWS állapotból történő elvezetés firing rate változása (16. csatorna) A 40. ábrán látható eredményt kaptam a tüzelési frekvencia változását megfigyelve: a sejtek aktivitása egy éberségi állapoton belül sem egyenletes, nagy mértékben ingadozik, oszcillál az érték. Minden csatornára minden elvezetésre és minden állapotra hasonló ábrákat kaptam, természetesen más és más nagyságrendű firing rate értékekkel. 19
18
17
Tüzelési ráta (Hz)
16
15
14
13
12
11
10
9
0
100
200
300
400 Idő (s)
41. ábra Éber állapotból történő elvezetés firing rate változása (14. csatorna) 50
500
600
700
Éber állapotban a tüzelési ráta értéke akár 18 Hz fölé is mehetett, mely már a multi-unit aktivitásra utal. Ezekből az adatokból mégsem lehetett pontosan meghatározni még arra vonatkozó következtetéseket sem, hogy a különböző állapotokban melyiknek lett volna jelentősen nagyobb vagy kisebb a tüzelési frekvenciája. Következő lépésként egy-egy csatornára néztem meg a firing rate változást. Így egy ábrán több állapotban válik láthatóvá a sejtek aktivitása és az aktivitások közti átmenetek. 15
14
13
Tüzelési frekvencia (Hz)
12
11
10
9
8
7
6
0
50
100
150
200
250 Idő (s)
300
350
400
450
500
42. ábra 9. elvezetés 16. csatornájából származó jel tüzelési frekvenciájának változása Így is, mint a korábbi eredményeken látva, a firing rate időben oszcillál a különböző állapotoktól függően. A 42. ábrán ez úgy mutatkozik meg, hogy az elvezetés első felében, 5 és 215 s, amikor éber állapotban volt a macska, nagyobb a tüzelési frekvencia értéke, mint később, 275-455 s között, amikor már SWS állapotban volt az állat. A tüzelési frekvencia láthatóan csökken és kisebb amplitúdóval ingadozik a lassú hullámú alvás alatt.
51
10
9
8
Tüzelési ráta (Hz)
7
6
5
4
3
2
1
0
50
100
150
200
250 Idő (s)
300
350
400
450
500
43. ábra 10. elvezetés 22. csatornájából származó jel tüzelési frekvenciájának változása A 10. elvezetésben éber, SWS és REM alvás állapotában is megfigyelhető a tüzelési frekvencia változása. SWS alvás 112-225 s között van, utána 240-től az elvezetés végéig REM alvás következett. Az ábrán ez úgy mutatkozik meg, hogy az álomlátó alvás során nagyobb a tüzelési ráta, mint lassú hullámú alvás alatt. 5
4.5
4
Tüzelési ráta (Hz)
3.5
3
2.5
2
1.5
1
0
50
100
150
200
250 Idő (s)
300
350
400
450
500
44. ábra 22. elvezetés 22. csatornájából származó jel tüzelési frekvenciájának változása Az altatás alatt sokkal gyorsabb mértékű volt a firing rate változása, mint más állapotok alatt. Ezt bizonyítja a 44. ábra, mely a 22. elvezetést, azaz altatást mutat a 22. csatornára. A gyors tüzelési ráta értékek változásait a lassú hullámú alvásban szépen megjelenő up- és
52
down-state-k jelenléte okozhatja. Down-state esetében kevesebbet, up-state esetében többet tüzelnek a neuronok, mivel az előbbi alatt a sejtek membránpotenciálja hiperpolarizált, utóbbi esetben pedig depolarizált állapotban van. A tüzelési frekvencia értékek itt is igen nagyok, ebből következtethetünk, hogy nem csak single-unit aktivitás jelent meg a jelen. Mivel az előző mérésekkel és az így kapott eredményekkel nem tudtam igazán szignifikáns eredményt találni, ezért statisztikai módszerekkel próbáltam megnézni, hogy a sok firing rate eredményből milyen átlag, milyen összehasonlítás kapható.
B. Statisztika Az egyes állapotok különböző csatornáit tekintettem 5 s-os időintervallumokra és ezekre számoltam ki a tüzelési frekvenciát. Ezek az értékek csatornánként és állapotonként egymástól függetlennek tekinthetők, egymástól független csoportokat alkotnak. Mivel az ébrenléti állapotokat, mint független változót, a tüzelési ráta értékeket pedig, mint függő változót lehet tekinteni, ezért varianciaanalízist, egy szempontos ANOVA varianciaanalízist alkalmaztam a függő és független változókra. Az analízissel az állapotok hatását vizsgáltam a tüzelési rátára nézve. Az egy szempontos analízis feltételei, hogy a függő változó számérték legyen, a független pedig valami más, hogy a függő változó normális eloszlású legyen és a független változó minden értékében azonos szórással rendelkezzen [14]. A módszer robosztus a feltételeit tekintve, azaz akkor is helyes eredményt ad, ha ezek valamelyike nem teljesül. Az analízishez Tukey post hoc HSD (Honestly Significant Difference) tesztet és Kruskal-Wallis próbát használtam; előbbi páros összehasonlításra alkalmas teszt, az utóbbinak pedig nem feltétele, hogy normális eloszlású legyen a feldolgozandó adat. Statisztikai elemzésem kezdetén azzal a feltételezéssel éltem, hogy a csatornák függetlenek egymástól, mely feltevés helyes, bár léteznek olyan esetek, amikor egyes sejtek az elektród egymás mellett lévő kontaktusai által elvezetett jelekre is hatnak, mert éppen két kontaktus között helyezkednek el és mindkettő csatornán látható a neuronnak a jele. A csatornákon általában egy sejtet sikerült elkülöníteni, ahogy azt már a korábbi eredményekből is lehetett látni, ezért egy csatornát egy sejtnek feleltettem meg. Így a 6 csatorna 6 idegsejtnek tekinthető, melyek a különböző állapotokban más gyakorisággal adnak le jeleket. A statisztikai analízis egymáshoz hasonlította a bemenetként adott értékeket, ezért az egymáshoz való viszonyokról kaptam általa információt. A statisztikai megfigyelések során a kapott eredményeket, mint számértékeket és mint ábrákat elemeztem. Először megvizsgáltam, hogy az egyes „sejtek” tüzelési rátája hogyan változik egy csatornára, mint egy sejtre nézve a különböző állapotokban.
53
45. ábra A tüzelési frekvenciák változása az egyes csatornákon különböző állapotokban A 45. ábrán mind a hat csatornának a tüzelési frekvencia értékeire számolt átlaga, az átlaghoz képest tekintett hiba (SE - Standard Error) és a standard eloszlás (SD - Standard Deviation) látható. Az x tengelyen az egyes éberségi állapotok jelennek meg: 1-SWS, 2-éber, 3-REM és 4-altatás, az y tengelyen pedig a firing rate értékei vannak ábrázolva. Az ábrákon a különböző állapotokban kiszámolt tüzelési frekvencia átlaga körrel, a hiba téglalappal, a variancia pedig vonallal van jelölve. Sleep stage
{1} 1
{2}
{3}
{4}
0.000008 0.616117 0.375597
2 0.000008
0.000008 0.000008
3 0.616117 0.000008
0.999993
4 0.375597 0.000008 0.999993
13. táblázat A 7. csatornán észlelt neuron tüzelési frekvenciájának összevetése különböző állapotokban és azok kapcsolata A 45. ábráról leolvasható, hogy az első sejt, melyet a 7. csatornán detektáltam, ébrenlét alatt igen kiugró tüzelési frekvenciával rendelkezett a többi állapotban megfigyelt frekvenciákhoz képest. Ezt a számadatok is igazolják, melyet a 13. táblázat mutat: az összehasonlítás az SWS-éber (1-2), éber-REM (2-3) és éber-altatott (3-4) állapotok között lett szignifikáns, mely azt jelenti, hogy ott volt a leginkább jelentős (a számérték kisebb, mint 0.05) a különbség két állapot között. Ezt mutatják a táblázatban más színnel jelölt számértékek is. Tehát ez a sejt ébrenlét alatt volt a legaktívabb.
54
A második sejt, melyet a 8. csatornán sikerült elkülöníteni a többi sejt vagy más zajból származó jeltől, a 45. ábra alapján REM állapotban rendelkezett a legnagyobb tüzelési frekvenciával. Sleep stage 1
1
2
3
4
1.000000 0.335952 1.000000
2
1.000000
3
0.335952 1.000000
1.000000 1.000000
4
1.000000 1.000000 1.000000
1.000000
14. táblázat A 8. csatornán észlelt neuron tüzelési frekvenciájának összevetése különböző állapotokban és azok kapcsolata Ebben az esetben az analízis semelyik másik állapottal összehasonlítva nem talált kiugróan nagy különbséget az átlagok között, mivel a különbség még a konfidencia intervallumon belül volt, a számértékek nem érték lettek 0.05-nél kisebbek. A harmadik sejt, mely a 14. csatornán jelent meg, az ábra szerint szintén REM állapotban volt a legaktívabb. Sleep stage 1
1
2
3
4
0.048310 1.000000 1.000000
2
0.048310
3
1.000000 0.041440
0.041440 0.012149
4
1.000000 0.012149 1.000000
1.000000
15. táblázat A 14. csatornán észlelt neuron tüzelési frekvenciájának összevetése különböző állapotokban és azok kapcsolata A számadatokat tekintve szignifikáns különbség az SWS-éber, éber-REM és éber-altatás állapotok között volt. Ez látható ezen adatok grafikus megjelenésében is, ahol az éber állapot rendelkezik a legkisebb tüzelési frekvenciával és ehhez képest mindegyik másik állapotnak jelentősen nagyobb ez az értéke. A negyedik sejttől (15. csatorna) is REM állapotban érkezett a legtöbb jel, az álomlátó alvás alatt volt a neuron tüzelési rátája a legnagyobb. Az előző sejthez képest ez aktívabb volt, mivel a tüzelési frekvencia számértékei, az ábra függőleges tengelyén nagyobb értékeket vett fel. Sleep stage 1
1
2
3
4
0.001773 0.002039 0.031520
2
0.001773
1.000000 1.000000
3
0.002039 1.000000
4
0.031520 1.000000 0.650748
0.650748
16. táblázat A 15. csatornán észlelt idegsejt tüzelési frekvenciájának összevetése különböző állapotokban és azok kapcsolata
55
A statisztika eredményeként kapott számadatok azt mutatják, hogy az SWS-éber, SWS-REM és SWS-altatás között volt jelentős a tüzelési frekvencia különbsége, ott volt szignifikáns eltérés az állapotok között. Az ötödik sejt (16. csatorna) az első sejthez volt hasonló olyan szempontból, hogy ez is ébrenlét alatt volt a legaktívabb. Az ábráról leolvasható, hogy az analízis csak az SWS állapottal összehasonlítva adott szignifikáns eltérést. Sleep stage 1
1
2
3
4
0.043923 0.364159 0.421984
2
0.043923
1.000000 1.000000
3
0.364159 1.000000
4
0.421984 1.000000 1.000000
1.000000
17. táblázat A 16. csatornán észlelt idegsejt tüzelési rátájának összevetése különböző állapotokban és azok kapcsolat Ezt az eredményt természetesen a számadatok is igazolták, hiszen az analízis csak az SWS-éber állapotokat összehasonlítva talált 0.05-nél kisebb értéket a két állapotban lévő tüzelési ráták különbségére. A hatodik sejt, melyet a 22. csatornán észleltem, szinte ugyanannyit tüzelt ébrenlét és REM alvás alatt. Szignifikáns eltérések az összes sejtet nézve itt jelennek meg leginkább, mivel az éber és REM állapothoz képest a többi állapot igen eltérő volt a tüzelési frekvenciát tekintve. Így a statisztika a két kiemelkedő állapotot tekintve minden más állapotok között szignifikáns eredményt adott. Sleep stage 1
1
2
3
4
0.000000 0.000000 0.000012
2
0.000000
1.000000 0.000054
3
0.000000 1.000000
4
0.000012 0.000054 0.005242
0.005242
18. táblázat A 22. csatornán észlelt neuron tüzelési frekvenciájának összevetése különböző állapotokban és azok kapcsolata Ha ezeket az eredményeket összehasonlítjuk egymással látható, hogy lényegében két állapotban volt a legnagyobb a sejtek aktivitása: REM-ben és éber állapotban. Ez talán azzal magyarázható, hogy ezekben az állapotokban az agyban olyan funkciók válnak fontosabbá, melyekért ezek, az általam kiválogatott neuronok is felelősek lehetnek. Hiszen természetes vagy mesterséges alvás alatt is az élő szervezet pihen, tehát a sejtek egy része kevésbé aktív. Az is egy lehetséges magyarázat, hogy az egyes csatornákon nem ugyanolyan típusú neuronok jelei figyelhetők meg. Lehet, hogy az egyik kontaktushoz olyan sejt volt közel, amely ébrenlét alatt aktív, a másik kontaktushoz pedig olyan neuron volt közelebb, amely az álomlátás alatt
56
aktív vagy éppen gátolja azt, hogy az állat felébredjen. Ezek a feltételezések mind csak találgatások, mert nem lehet pontosan megmondani, hogy milyen sejt volt az elektródhoz közel, mely sejtnek a jele szólt bele az elvezetésbe. Az eddigi és a további eredményeket a Kruskal-Wallis próbával kaptam, ám a 46. ábra a Tukey post hoc HSD tesztből származik.
46. ábra Az egyes sejtek tüzelési frekvenciájának változása különböző állapotok alatt A 46. ábrán összesítve látható az előző eredményekhez nagyon hasonló, de másik módszerrel kapott eredmény: a legnagyobb tüzelési rátával az 1. sejt rendelkezett, azaz a 7. csatornán jelen lévő sejt volt a legaktívabb minden éberségi állapotban. Talán azért, mert az volt legközelebb az elvezető elektród kontaktusához, így annak a jele folyamatosan megjelent az elvezetett jelen. Vagy lehet, hogy több hasonló sejtnek az aktivitása jelent meg úgy, mintha egy sejt adta volna ki azt a spike-ot. Ha az összes sejtre néztem meg a számadatokat, azt láttam, hogy ott csak az SWS-éber állapotok összehasonlításában adott az analízis szignifikáns különbséget. Külön állapotokra is megnéztem, hogy a tüzelési ráták változása hogyan alakul különböző sejteknél.
57
47. ábra SWS, altatás, ébrenlét és REM állapotok csatornánkénti tüzelési frekvenciájának változása Jól látszik a 47. ábrán, hogy az utolsó csatorna rendelkezik a legkisebb tüzelési frekvenciával, azaz az elektród 22. csatornája, legnagyobb értékek pedig az 1. és a 4. csatornán láthatóak. Ez mindegyik állapotban igaz. Ha a sejtek átlagát tekintjük, megfigyelhető, hogy a tüzelési frekvenciák nagysága állapotfüggetlen; ám ez a pontos értékekre természetesen nem igaz. Ha egymáshoz képest tekintem az egyes „sejteket”, csatornákat, akkor minden állapotban a következő sorrend jelenik meg: 1., 4., 3., 5., 2. és 6. csatorna. A firing rate értékének nagyságát tekintve nem mutatkoztak jelentősebb eltérések a különböző állapotokban. A legkiemelkedőbb ébrenlétben volt, hiszen ott a tüzelési frekvencia értékek átlaga 30 fölé is ment, bár ez csak egy csatornán volt megfigyelhető. A többi állapotban maximum 24-ig ment fel a firing rate átlaga, mely a multi-unit aktivitásra utal. Összefoglalásként elmondható, hogy a sejtek állapotoktól függetlenül különbözőképpen tüzelnek. Ezt jól igazolják a statisztikai számadatok is, ahol minden sejtre és minden állapotra nézve szinte az összehasonlítás minden esetében szignifikáns különbség adódott, tehát az egyes sejtek tüzelési frekvenciája jelentősen eltérő. Ha az állapotok összehasonlításának átlagát tekintjük, akkor az éber-SWS és éber-altatás (Kruskal-Wallis próbával csak az utóbbi) között van szignifikáns különbség: éber állapotban tüzelnek a legtöbbet a sejtek, SWS-ben pedig a legkevesebbet. Ám ez a megfigyelés egyes sejtek esetében már nem igaz. Ennek oka lehet, hogy azon sejteknek más a funkciójuk, éppen ellentétes esetben aktívak a többi sejthez 58
képest. A tüzelések gyakoriságára magyarázat lehet az is, hogy nem figyeltem külön az alvás során megjelenő up- és down-state-k jelenlétét, amikor az agyhullámban alvás alatt jól látszódnak a membránpotenciál de- és hiperpolarizációs fázisai. Depolarizációban a sejtek tüzelnek, hiperpolarizációban pedig „csendben” vannak, tehát az up-state alatt nagyobb, míg down-state alatt kisebb a sejtek tüzelési frekvenciája.
59
5 Összefoglalás Diplomamunkámban a sejtválogatással és a felmerülő problémákkal ismerkedtem meg. A sejtválogató algoritmusok matematikai hátterét szakirodalom segítségével sajátítottam el és ezekből kaptam segítséget, ötletet a további kutatásokhoz. Mesterséges jelet generálva összehasonlítottam a különböző algoritmusokat, melyeket a sejtválogatáshoz használnak. Ezek már Matlab programban meg voltak valósítva, én a paraméter beállításaitól való függőséget vizsgáltam. Eredményként azt kaptam, hogy változó, mikor melyik algoritmus ad jobb eredményt, de azért az megfigyelhető volt, hogy a válogatni kívánt jelre alacsonyabb küszöbértéket használva az amplitúdó alapú K-means algoritmus volt megfelelő, magasabb küszöbre pedig a PCA alapú K-means válogatás tűnt eredményesebbnek. Az eredményességet a pozitív és negatív hiba nagyságából próbáltam meghatározni és az alapján, hogy mennyi volt az algoritmus által jól kiválogatottnak ítélt spike-ok száma és ez mennyire volt közel ahhoz az értékhez, amely valójában megmutatta, mennyi spike volt a jelben. Miután volt már valami sejtésem, hogy melyik algoritmust érdemes használni a sejtválogatásokhoz, biológiai jelen próbáltam hasznosítani a tapasztalataimat. Nehéz volt olyan jelet találni, amelyre minden válogatásban szép eredmények jöttek volna ki, két elvezetésből származó jellel is próbálkoztam. Az első elvezetésből származó jel nem volt válogatható, mert a különböző neuronok által leadott spike-ok nem voltak jól megkülönböztethetőek egymástól. Valószínűleg azért, mert az elvezetés alatt a jelre rakódott fluktuáló zaj szuperponálva jelent meg az idegsejtek jeleivel együtt és ezért a sejtválogató algoritmusok nehezen tudták helyesen elkülöníteni egymástól a különböző idegsejtek jeleit. Újabb elvezetésből származó jelekre már jobb eredményt kaptam. Ekkor is voltak még olyan válogatások, melyek nem adtak egymástól jól elkülönülő klasztereket, melynek oka az általam használt számítógépek memóriájának hiánya volt. Többször állt elő olyan helyzet, hogy egy olyan küszöbértékre, melyre az egyik csatorna szinte mindegyik elvezetése jó válogatást adott volna, az egyik elvezetésben ezek közül olyan sok spike-ot ismert fel az algoritmus, hogy ezt a számítógép nem bírta kiválogatni RAM memóriahiány miatt. Másik sejtválogatási probléma pedig a több paraméter jelenléte volt: nehéz volt megtalálni azt a helyes paraméterezést minden csatornára, melyre mindegyik elvezetésre minden állapotban jó eredményt adtak volna a sejtválogató algoritmusok. Mivel a felmerülő problémákat nem tudtam kiküszöbölni, ezért a jelek további vizsgálatához meghatároztam NeuroScan programmal egy voltage threshold-ot, feszültség értéket, melyet a jel küszöbeként adtam meg. A továbbiakban az abszolút értékben ennél kisebb jeleket figyelmen kívül hagyta a program. A meghatározott küszöbérték a jelalakot tekintve biztonságosan megadható volt a single-unit aktivitásra. Bár a későbbi feldolgozás során láttam a tüzelési frekvencia értékekből, hogy valószínűleg mégsem csak egy sejt aktivitása volt jelen a maradék jelben, tehát feltehetőleg a single- és a multi-unit aktivitás „határa” körül adtam 60
meg a küszöbértéket. Ennek ellenére tovább vizsgáltam a jelet és a benne lévő spike-okat a tüzelési frekvencia vonatkozásában. Megnéztem minden, az elvezetésben megjelenő éberségi állapotra a firing rate-t és ezeket összehasonlítottam, majd pedig a sejtek aktivitását vizsgáltam a különböző csatornákra. Az eredményeket statisztikai módszerekkel elemeztem. Az elemzésből kiderült, hogy lényegében két állapotban, REM alvás és ébrenlét alatt voltak a legaktívabbak a sejtek. A csatornákat tekintve pedig az elektród 1. és 4. csatornáján mutatkozó neuronok tüzelési frekvenciája volt a legnagyobb. Erre magyarázatként szolgálhat, hogy feltehetőleg ott, az elvezető elektród 1. és 4. kontaktusához közel jelentek meg más idegsejtek jelei is, illetve e két kontaktuson talált egy-egy sejt a többi, általam vizsgált sejtekhez képest önmagukban is aktívan vettek részt a REM és az ébrenléti állapotokban. A már eddig ismert sejtválogatási és tüzelési frekvencia vizsgálatok eredményeiből várható volt, hogy macskában 2 Hz-nél nagyobb értékű lesz a firing rate, ez be is igazolódott a megfigyeléseimben. A statisztikai eredményekből látszik, hogy az egyes sejtek tüzelési frekvenciája sejtenként nagyon eltérő, ám az állapotoktól függően változik a firing rate mintázata. A különböző éberségi állapotok között az ébrenlét és SWS, valamint ébrenlét és altatás alatt találtam szignifikáns különbségeket.
61
6 Köszönetnyilvánítás Ezúton szeretnék köszönetet mondani Karmos György konzulensemnek, aki biztosította számomra a szakirodalom elérhetőségét és segített magyarázatot találni a jelek kevésbé pontos válogatására. Köszönöm neki a biológiai jelek közzétételét számomra és a műtétből származó dokumentációkat. Köszönöm Csercsa Richárd doktorandusznak a diplomamunka és annak előzményei alatt felmerülő, kisebb-nagyobb problémák megoldását, továbblépési ötleteit, a Matlab programban nyújtott segítségét, munkám folyamatos felügyelését és szakmai ellenőrzését. Köszönöm neki és Ulbert Istvánnak a munkám során kapott eredményeimre adott tudományos magyarázatokat és a statisztikában nyújtott segítségüket.
62
Irodalomjegyzék [1]
Miguel A. L. Nicolelis, Methods for neural ensemble recordings, 1st ed. United States of America: Florida, Bruce C. Wheeler, 1999, pp. 61-77.
[2]
Michael S. Lewicki, „A review of methods for spike sorting: the detection and classification of neural action potentials”, Network: Computational in Neural Systems, vol. 9, pp. R53-R78, 1998
[3]
Sarah Gibson, Jack W. Judy, and Dejan Markovic, „Comparison of spike-sorting algorithms for future hardware implementation”, 30th Annual International IEEE EMBS Conference, Vancouver, British Columbia, Canada, pp. 5015-5020, Aug. 2008
[4]
Buzsáki
György,
„Large-scale
recording
of
neuronal
ensembles”,
Nature
Neuroscience, vol. 7, pp. 446-450, 2004 [5]
Xiaowei Yang, Shihab A. Shamma, „A totally automated system for the detection and classification of neural spikes”, IEEE Transactions on Biomedical Engineering, vol. 35, pp. 806-816, 1988
[6]
Gilles Celeux, Gérard Govaert, „A classification EM algorithm for clustering and two stochastic versions”, Computational Statistics & Data Analysis, vol. 14, pp. 315-332, 1992
[7]
R.Quian Quiroga, Z. Nadasdy, Y. Ben-Shaul, „Unsupervised spike detection and sorting with wavelets and superparamagnetic clustering” Neural Computation, vol. 16, pp. 1661-1687, 2004
[8]
Susumu Takahashi, Yuichiro Anzai, Yoshio Sakurai, „A new approach to spike sorting for multi-neuronal activities recorded with a tetrode - how ICA can be practical”, Neuroscience Research, vol. 46, pp. 265-272, 2003
[9]
Guang-Li Wang, Yi Zhou, Ai-Hua Chen, Pu-Ming Zhang, Pei-Ji Liang, „A robust method for spike sorting with automatic overlap decomposition”, IEEE Transactions on Biomedical Engineering, vol. 53, pp. 1195-1198, 2006
[10] Thomas Hermle, Cornelius Schwarz, Martin Bogdan, „Employing ICA and SOM for spike sorting for multielectrode recordings from CNS”, Journal of Physiology – Paris, vol. 98, pp. 349-356, 2004 [11] Dimitios A. Adamos, Efstratios K. Kosmidis, George Theophilidis, „Performance evaluation of PCA-based spike sorting algorithms”, Computer Methods and Programs in Biomedicine, vol. 91, 2008 [12] Mircea I. Chelaru, Mandar S. Jog, „Spike source localization with tetrodes”, Journal of Neuroscience Methods, vol. 142, pp. 305-315, 2004
63
[13] Nema Dean, Thomas Brendan Murphy, Gerard Downey, „Using unlabelled data to update classification rules with applications in food authenticity studies”, Journal Of The Royal Statistical Society Series C, vol. 55, pp. 1-14, 2006 [14] Sajtos László, Mitev Ariel, SPSS kutatási és adatelemzési kézikönyv, 1. kiadás Budapest, Sajtos László, 2007, pp. 163-185.
64
7 Mellékletek 7.1 Matlab kódok function [y]=Erand1()% 1. spike alak - zaj nélküli jel a visszatérési érték load spike1.mat;% betölti az 1.spike-ot (neve=jojel1) mintapont=600000;% 30 ms-os jel x=(0:1:mintapont)'; y=zeros(mintapont+1,1);% jel, kezdetben 0 db=300;% spike darabszáma a jelben variancia=10; v=rand(db,1);% a spike-ok helye a generált jelben for i=1:1:db v(i)=v(i)*mintapont; end v=sort(v);%rendezi az elemeket v=floor(v);%egésszé konvertálja át for i=2:1:size(v) while (v(i)-v(i-1))<100% ha nincs meg a refrakter periodus v(i)=v(i)+20;% megnöveli az értékét end end save rand1.mat v; spike=jojel1; spike1=spike; A=size(spike); for i=1:1:db% a spike helyei a vektorban for j=1:1:size(spike)% spike méretéig megy spike1(j)=spike(j)+((rand(1,1)*abs(max(spike)... -min(spike))/variancia)-(abs(max(spike)... -min(spike))/variancia/2));% 10%-os variancia end y(v(i):v(i)+A(1)-1)=spike1;% az eredeti jel end end function [y]=Erand2()% 2. spike alak load spike2.mat;% spikeA-t tölti be mintapont=600000; x=(0:1:mintapont)'; y=zeros(mintapont+1,1); db=300; variancia=10; v=rand(db,1); for i=1:1:db v(i)=v(i)*mintapont; end v=sort(v); v=floor(v); for i=2:1:size(v) while (v(i)-v(i-1))<100 v(i)=v(i)+20; end end save rand2.mat v; spike2=spikeA; A=size(spikeA); for i=1:1:db for j=1:1:size(spikeA)
65
spike2(j)=spikeA(j)+((rand(1,1)*abs(max(spikeA)... -min(spikeA))/variancia)-(abs(max(spikeA)... -min(spikeA))/variancia/2)); end y(v(i):v(i)+A(1)-1)=spike2; end end function [y]=Erand3()% 3. spike alak load spike3.mat; mintapont=600000; x=(0:1:mintapont)'; y=zeros(mintapont+1,1); db=300; variancia=10; v=rand(db,1); for i=1:1:db v(i)=v(i)*mintapont; end v=sort(v); v=floor(v); for i=2:1:size(v) while (v(i)-v(i-1))<100 v(i)=v(i)+20; end end save rand3.mat v; spike3=spikeB; A=size(spikeB); for i=1:1:db for j=1:1:size(spikeB) spike3(j)=spikeB(j)+((rand(1,1)*abs(max(spikeB)... -min(spikeB))/variancia)-(abs(max(spikeB)... -min(spikeB))/variancia/2)); end y(v(i):v(i)+A(1)-1)=spike3; end end function [Yosszes]=Etobbjel() figure(1); y1=Erand1();% első spike alakkal generált hullám subplot(3,1,1); plot(y1); title('1. spike alak'); y2=Erand2();% 2. spike alakkal generált hullám subplot(3,1,2); plot(y2); title('2. spike alak'); y3=Erand3();% 3. spike alakkal generált hullám subplot(3,1,3); plot(y3); title('3. spike alak'); Yosszes=y1; for i=1:1:600000% szuperponálódnak, ha egy helyen több is lenne Yosszes(i)=y1(i)+y2(i)+y3(i); end figure(2); plot(Yosszes); save Osszetett_jel.mat Yosszes;
66
Yosszes=awgn(Yosszes,25);% zajos szuperponált figure(3); plot(Yosszes); end load Osszetett_jel.mat; cntwrite(Yosszes*10,20000,'0var25zajmentes.cnt'); jel8zajmentes=getcntdata('0var25zajmentes.cnt',1,0,20000); figure(1); plot(jel8zajmentes); Yosszes=awgn(Yosszes,25);%zajos szuperponált cntwrite(Yosszes*5, 20000, '0var25zaj.cnt'); jel8 = getcntdata('0var25zaj.cnt', 1, 0,20000); figure(2); plot(jel8); function hasonlitas() filename='G:\Spike Sorting\jelgenerálás\valogatas.ev2'; load rand1.mat;% v vektor, itt vannak az 1. spike-ok v1=v; load rand2.mat;% 2. spike-ok helye v2=v; load rand3.mat;% 3. spike-ok helye v3=v; [es_ido,melyik]=readev2(filename);% .ev2 beolvasása for i=1:length(v1) index=find(es_ido>v1(i)-50 & es_ido
0 v1result(i)=melyik(index(1)); else v1result(i)=NaN; end end for i=1:length(v2) index=find(es_ido>v2(i)-50 & es_ido0 v2result(i)=melyik(index(1)); else v2result(i)=NaN; end end for i=1:length(v3) index=find(es_ido>v3(i)-50 & es_ido0 v3result(i)=melyik(index(1)); else v3result(i)=NaN; end end v11=length(find(v1result==1)); v12=length(find(v1result==2)); v13=length(find(v1result==3)); v21=length(find(v2result==1)); v22=length(find(v2result==2)); v23=length(find(v2result==3)); v31=length(find(v3result==1)); v32=length(find(v3result==2)); v33=length(find(v3result==3)); end
67
function [fir_rate]=Firing_rate_other(filename,sejt,kezd_ido,veg_ido) mint_frekv=20000;% mintavételi frekvencia [es_ido,melyik]=readev2(filename);% .ev2 fájlt beolvas es_ido=es_ido'; melyik=melyik'; j=1; % ido-időpontok s-ban, amelyekben az általunk vizsgált % sejt tüzelt for i=1:length(es_ido) if(melyik(i)==sejt)% ha a kívánt klaszterbe tartozik ido(j,1)=es_ido(i)/mint_frekv; %az adott klaszterbe tartozó spike-ok időpontjai j=j+1; end end ido=sort(ido);% rendezi az időpontokat resz=find(kezd_ido
68
kezd_ido=240; veg_ido=280; kezd=find(SWS_7==0); eredmeny=szamol('8_7_NS.ev2',kezd_ido,veg_ido); SWS_7(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=360; veg_ido=500; kezd=find(SWS_7==0); eredmeny=szamol('8_7_NS.ev2',kezd_ido,veg_ido); SWS_7(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %9. elvezetésből kezd_ido=275; veg_ido=455; kezd=find(SWS_7==0); eredmeny=szamol('9_7_NS.ev2',kezd_ido,veg_ido); SWS_7(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %10. elvezetésből kezd_ido=15; veg_ido=55; kezd=find(SWS_7==0); eredmeny=szamol('10_7_NS.ev2',kezd_ido,veg_ido); SWS_7(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=112; veg_ido=225; kezd=find(SWS_7==0); eredmeny=szamol('10_7_NS.ev2',kezd_ido,veg_ido); SWS_7(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %11. elvezetésből kezd_ido=215; veg_ido=250; kezd=find(SWS_7==0); eredmeny=szamol('11_7_NS.ev2',kezd_ido,veg_ido); SWS_7(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=275; veg_ido=290; kezd=find(SWS_7==0); eredmeny=szamol('11_7_NS.ev2',kezd_ido,veg_ido); SWS_7(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(SWS_7); title('7. csatorna'); xlswrite('SWS_7',SWS_7); end function SWS_8=felbontas_SWS_8 SWS_ido=656;%656 s-nyi SWS-es jelem van SWS_8=zeros(int8(SWS_ido/10),1); %8. elvezetésből kezd_ido=0; veg_ido=28; eredmeny=szamol('8_8_NS.ev2',kezd_ido,veg_ido); SWS_8(1:length(eredmeny))=eredmeny; kezd_ido=90; veg_ido=155; kezd=find(SWS_8==0); eredmeny=szamol('8_8_NS.ev2',kezd_ido,veg_ido);
69
SWS_8(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=240; veg_ido=280; kezd=find(SWS_8==0); eredmeny=szamol('8_8_NS.ev2',kezd_ido,veg_ido); SWS_8(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=360; veg_ido=500; kezd=find(SWS_8==0); eredmeny=szamol('8_8_NS.ev2',kezd_ido,veg_ido); SWS_8(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %9. elvezetésből kezd_ido=285; veg_ido=455; kezd=find(SWS_8==0); eredmeny=szamol('9_8_NS.ev2',kezd_ido,veg_ido); SWS_8(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %10. elvezetésből kezd_ido=15; veg_ido=55; kezd=find(SWS_8==0); eredmeny=szamol('10_8_NS.ev2',kezd_ido,veg_ido); SWS_8(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=112; veg_ido=225; kezd=find(SWS_8==0); eredmeny=szamol('10_8_NS.ev2',kezd_ido,veg_ido); SWS_8(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %11. elvezetésből kezd_ido=215; veg_ido=250; kezd=find(SWS_8==0); eredmeny=szamol('11_8_NS.ev2',kezd_ido,veg_ido); SWS_8(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=285; veg_ido=290; kezd=find(SWS_8==0); eredmeny=szamol('11_8_NS.ev2',kezd_ido,veg_ido); SWS_8(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(SWS_8); title('8. csatorna'); xlswrite('SWS_8',SWS_8); end function SWS_14=felbontas_SWS_14 SWS_ido=656;%656 s-nyi SWS-es jelem van SWS_14=zeros(int8(SWS_ido/10),1); %8. elvezetésből kezd_ido=0; veg_ido=28; eredmeny=szamol('8_14_NS.ev2',kezd_ido,veg_ido); SWS_14(1:length(eredmeny))=eredmeny; kezd_ido=90; veg_ido=155;
70
kezd=find(SWS_14==0); eredmeny=szamol('8_14_NS.ev2',kezd_ido,veg_ido); SWS_14(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=240; veg_ido=280; kezd=find(SWS_14==0); eredmeny=szamol('8_14_NS.ev2',kezd_ido,veg_ido); SWS_14(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=360; veg_ido=500; kezd=find(SWS_14==0); eredmeny=szamol('8_14_NS.ev2',kezd_ido,veg_ido); SWS_14(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %9. elvezetésből kezd_ido=285; veg_ido=455; kezd=find(SWS_14==0); eredmeny=szamol('9_14_NS.ev2',kezd_ido,veg_ido); SWS_14(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %10. elvezetésből kezd_ido=15; veg_ido=55; kezd=find(SWS_14==0); eredmeny=szamol('10_14_NS.ev2',kezd_ido,veg_ido); SWS_14(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=112; veg_ido=225; kezd=find(SWS_14==0); eredmeny=szamol('10_14_NS.ev2',kezd_ido,veg_ido); SWS_14(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %11. elvezetésből kezd_ido=215; veg_ido=250; kezd=find(SWS_14==0); eredmeny=szamol('11_14_NS.ev2',kezd_ido,veg_ido); SWS_14(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=285; veg_ido=290; kezd=find(SWS_14==0); eredmeny=szamol('11_14_NS.ev2',kezd_ido,veg_ido); SWS_14(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(SWS_14); title('14. csatorna'); xlswrite('SWS_14',SWS_14); end function SWS_15=felbontas_SWS_15 SWS_ido=656;%656 s-nyi SWS-es jelem van SWS_15=zeros(int8(SWS_ido/10),1); %8. elvezetésből kezd_ido=0; veg_ido=28; eredmeny=szamol('8_15_NS.ev2',kezd_ido,veg_ido); SWS_15(1:length(eredmeny))=eredmeny;
71
kezd_ido=90; veg_ido=155; kezd=find(SWS_15==0); eredmeny=szamol('8_15_NS.ev2',kezd_ido,veg_ido); SWS_15(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=240; veg_ido=280; kezd=find(SWS_15==0); eredmeny=szamol('8_15_NS.ev2',kezd_ido,veg_ido); SWS_15(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=360; veg_ido=500; kezd=find(SWS_15==0); eredmeny=szamol('8_15_NS.ev2',kezd_ido,veg_ido); SWS_15(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %9. elvezetésből kezd_ido=285; veg_ido=455; kezd=find(SWS_15==0); eredmeny=szamol('9_15_NS.ev2',kezd_ido,veg_ido); SWS_15(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %10. elvezetésből kezd_ido=15; veg_ido=55; kezd=find(SWS_15==0); eredmeny=szamol('10_15_NS.ev2',kezd_ido,veg_ido); SWS_15(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=112; veg_ido=225; kezd=find(SWS_15==0); eredmeny=szamol('10_15_NS.ev2',kezd_ido,veg_ido); SWS_15(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %11. elvezetésből kezd_ido=215; veg_ido=250; kezd=find(SWS_15==0); eredmeny=szamol('11_15_NS.ev2',kezd_ido,veg_ido); SWS_15(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=285; veg_ido=290; kezd=find(SWS_15==0); eredmeny=szamol('11_15_NS.ev2',kezd_ido,veg_ido); SWS_15(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(SWS_15); title('15. csatorna'); xlswrite('SWS_15',SWS_15); end function SWS_16=felbontas_SWS_16 SWS_ido=656;%656 s-nyi SWS-es jelem van SWS_16=zeros(int8(SWS_ido/10),1); %8. elvezetésből kezd_ido=0; veg_ido=28; eredmeny=szamol('8_16_NS.ev2',kezd_ido,veg_ido);
72
SWS_16(1:length(eredmeny))=eredmeny; kezd_ido=90; veg_ido=155; kezd=find(SWS_16==0); eredmeny=szamol('8_16_NS.ev2',kezd_ido,veg_ido); SWS_16(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=240; veg_ido=280; kezd=find(SWS_16==0); eredmeny=szamol('8_16_NS.ev2',kezd_ido,veg_ido); SWS_16(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=360; veg_ido=500; kezd=find(SWS_16==0); eredmeny=szamol('8_16_NS.ev2',kezd_ido,veg_ido); SWS_16(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %9. elvezetésből kezd_ido=285; veg_ido=455; kezd=find(SWS_16==0); eredmeny=szamol('9_16_NS.ev2',kezd_ido,veg_ido); SWS_16(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %10. elvezetésből kezd_ido=15; veg_ido=55; kezd=find(SWS_16==0); eredmeny=szamol('10_16_NS.ev2',kezd_ido,veg_ido); SWS_16(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=112; veg_ido=225; kezd=find(SWS_16==0); eredmeny=szamol('10_16_NS.ev2',kezd_ido,veg_ido); SWS_16(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %11. elvezetésből kezd_ido=215; veg_ido=250; kezd=find(SWS_16==0); eredmeny=szamol('11_16_NS.ev2',kezd_ido,veg_ido); SWS_16(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=285; veg_ido=290; kezd=find(SWS_16==0); eredmeny=szamol('11_16_NS.ev2',kezd_ido,veg_ido); SWS_16(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(SWS_16); title('16. csatorna'); xlswrite('SWS_16',SWS_16); end function SWS_22=felbontas_SWS_22 SWS_ido=656;%656 s-nyi SWS-es jelem van SWS_22=zeros(int8(SWS_ido/10),1); %8. elvezetésből kezd_ido=0;
73
veg_ido=28; eredmeny=szamol('8_22_NS.ev2',kezd_ido,veg_ido); SWS_22(1:length(eredmeny))=eredmeny; kezd_ido=90; veg_ido=155; kezd=find(SWS_22==0); eredmeny=szamol('8_22_NS.ev2',kezd_ido,veg_ido); SWS_22(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=240; veg_ido=280; kezd=find(SWS_22==0); eredmeny=szamol('8_22_NS.ev2',kezd_ido,veg_ido); SWS_22(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=360; veg_ido=500; kezd=find(SWS_22==0); eredmeny=szamol('8_22_NS.ev2',kezd_ido,veg_ido); SWS_22(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %9. elvezetésből kezd_ido=285; veg_ido=455; kezd=find(SWS_22==0); eredmeny=szamol('9_22_NS.ev2',kezd_ido,veg_ido); SWS_22(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %10. elvezetésből kezd_ido=15; veg_ido=55; kezd=find(SWS_22==0); eredmeny=szamol('10_22_NS.ev2',kezd_ido,veg_ido); SWS_22(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=112; veg_ido=225; kezd=find(SWS_22==0); eredmeny=szamol('10_22_NS.ev2',kezd_ido,veg_ido); SWS_22(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %11. elvezetésből kezd_ido=215; veg_ido=250; kezd=find(SWS_22==0); eredmeny=szamol('11_22_NS.ev2',kezd_ido,veg_ido); SWS_22(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=285; veg_ido=290; kezd=find(SWS_22==0); eredmeny=szamol('11_22_NS.ev2',kezd_ido,veg_ido); SWS_22(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(SWS_22); title('22. csatorna'); xlswrite('SWS_22',SWS_22); end function Eber_7=felbontas_Eber_7 Eber_ido=681;%681 s-nyi Eber-es jelem van Eber_7=zeros(int8(Eber_ido/10)+2,1);
74
%8. elvezetésből kezd_ido=160; veg_ido=230; eredmeny=szamol('8_7_NS.ev2',kezd_ido,veg_ido); Eber_7(1:length(eredmeny))=eredmeny; %9. elvezetésből kezd_ido=5; veg_ido=215; kezd=find(Eber_7==0); eredmeny=szamol('9_7_NS.ev2',kezd_ido,veg_ido); Eber_7(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %10. elvezetésből kezd_ido=60; veg_ido=110; kezd=find(Eber_7==0); eredmeny=szamol('10_7_NS.ev2',kezd_ido,veg_ido); Eber_7(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %11. elvezetésből kezd_ido=9; veg_ido=160; kezd=find(Eber_7==0); eredmeny=szamol('11_7_NS.ev2',kezd_ido,veg_ido); Eber_7(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=300; veg_ido=500; kezd=find(Eber_7==0); eredmeny=szamol('11_7_NS.ev2',kezd_ido,veg_ido); Eber_7(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(Eber_7); title('7. csatorna'); xlswrite('Eber_7',Eber_7); end function Eber_8=felbontas_Eber_8 Eber_ido=681;%681 s-nyi Eber-es jelem van Eber_8=zeros(int8(Eber_ido/10),1); %8. elvezetésből kezd_ido=160; veg_ido=230; eredmeny=szamol('8_8_NS.ev2',kezd_ido,veg_ido); Eber_8(1:length(eredmeny))=eredmeny; %9. elvezetésből kezd_ido=5; veg_ido=215; kezd=find(Eber_8==0); eredmeny=szamol('9_8_NS.ev2',kezd_ido,veg_ido); Eber_8(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %10. elvezetésből kezd_ido=60; veg_ido=110; kezd=find(Eber_8==0); eredmeny=szamol('10_8_NS.ev2',kezd_ido,veg_ido); Eber_8(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny;
75
%11. elvezetésből kezd_ido=9; veg_ido=160; kezd=find(Eber_8==0); eredmeny=szamol('11_8_NS.ev2',kezd_ido,veg_ido); Eber_8(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=300; veg_ido=500; kezd=find(Eber_8==0); eredmeny=szamol('11_8_NS.ev2',kezd_ido,veg_ido); Eber_8(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(Eber_8); title('8. csatorna'); xlswrite('Eber_8',Eber_8); end function Eber_14=felbontas_Eber_14 Eber_ido=681;%681 s-nyi Eber-es jelem van Eber_14=zeros(int8(Eber_ido/10),1); %8. elvezetésből kezd_ido=160; veg_ido=230; eredmeny=szamol('8_14_NS.ev2',kezd_ido,veg_ido); Eber_14(1:length(eredmeny))=eredmeny; %9. elvezetésből kezd_ido=5; veg_ido=215; kezd=find(Eber_14==0); eredmeny=szamol('9_14_NS.ev2',kezd_ido,veg_ido); Eber_14(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %10. elvezetésből kezd_ido=60; veg_ido=110; kezd=find(Eber_14==0); eredmeny=szamol('10_14_NS.ev2',kezd_ido,veg_ido); Eber_14(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %11. elvezetésből kezd_ido=9; veg_ido=160; kezd=find(Eber_14==0); eredmeny=szamol('11_14_NS.ev2',kezd_ido,veg_ido); Eber_14(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=300; veg_ido=500; kezd=find(Eber_14==0); eredmeny=szamol('11_14_NS.ev2',kezd_ido,veg_ido); Eber_14(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(Eber_14); title('14. csatorna'); xlswrite('Eber_14',Eber_14);
76
end function Eber_15=felbontas_Eber_15 Eber_ido=681;%681 s-nyi Eber-es jelem van Eber_15=zeros(int8(Eber_ido/10),1); %8. elvezetésből kezd_ido=160; veg_ido=230; eredmeny=szamol('8_15_NS.ev2',kezd_ido,veg_ido); Eber_15(1:length(eredmeny))=eredmeny; %9. elvezetésből kezd_ido=5; veg_ido=215; kezd=find(Eber_15==0); eredmeny=szamol('9_15_NS.ev2',kezd_ido,veg_ido); Eber_15(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %10. elvezetésből kezd_ido=60; veg_ido=110; kezd=find(Eber_15==0); eredmeny=szamol('10_15_NS.ev2',kezd_ido,veg_ido); Eber_15(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %11. elvezetésből kezd_ido=9; veg_ido=160; kezd=find(Eber_15==0); eredmeny=szamol('11_15_NS.ev2',kezd_ido,veg_ido); Eber_15(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=300; veg_ido=500; kezd=find(Eber_15==0); eredmeny=szamol('11_15_NS.ev2',kezd_ido,veg_ido); Eber_15(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(Eber_15); title('15. csatorna'); xlswrite('Eber_15',Eber_15); end function Eber_16=felbontas_Eber_16 Eber_ido=681;%681 s-nyi Eber-es jelem van Eber_16=zeros(int8(Eber_ido/10),1); %8. elvezetésből kezd_ido=160; veg_ido=230; eredmeny=szamol('8_16_NS.ev2',kezd_ido,veg_ido); Eber_16(1:length(eredmeny))=eredmeny; %9. elvezetésből kezd_ido=5; veg_ido=215; kezd=find(Eber_16==0); eredmeny=szamol('9_16_NS.ev2',kezd_ido,veg_ido); Eber_16(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny;
77
%10. elvezetésből kezd_ido=60; veg_ido=110; kezd=find(Eber_16==0); eredmeny=szamol('10_16_NS.ev2',kezd_ido,veg_ido); Eber_16(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %11. elvezetésből kezd_ido=9; veg_ido=160; kezd=find(Eber_16==0); eredmeny=szamol('11_16_NS.ev2',kezd_ido,veg_ido); Eber_16(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=300; veg_ido=500; kezd=find(Eber_16==0); eredmeny=szamol('11_16_NS.ev2',kezd_ido,veg_ido); Eber_16(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(Eber_16); title('16. csatorna'); xlswrite('Eber_16',Eber_16); end function Eber_22=felbontas_Eber_22 Eber_ido=681;%681 s-nyi Eber-es jelem van Eber_22=zeros(int8(Eber_ido/10),1); %8. elvezetésből kezd_ido=160; veg_ido=230; eredmeny=szamol('8_22_NS.ev2',kezd_ido,veg_ido); Eber_22(1:length(eredmeny))=eredmeny; %9. elvezetésből kezd_ido=5; veg_ido=215; kezd=find(Eber_22==0); eredmeny=szamol('9_22_NS.ev2',kezd_ido,veg_ido); Eber_22(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %10. elvezetésből kezd_ido=60; veg_ido=110; kezd=find(Eber_22==0); eredmeny=szamol('10_22_NS.ev2',kezd_ido,veg_ido); Eber_22(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; %11. elvezetésből kezd_ido=9; veg_ido=160; kezd=find(Eber_22==0); eredmeny=szamol('11_22_NS.ev2',kezd_ido,veg_ido); Eber_22(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; kezd_ido=300; veg_ido=500; kezd=find(Eber_22==0); eredmeny=szamol('11_22_NS.ev2',kezd_ido,veg_ido); Eber_22(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny;
78
figure; plot(Eber_22); title('22. csatorna'); xlswrite('Eber_22',Eber_22); end function REM_7=felbontas_REM_7 REM_ido=355;%355 s-nyi REM-es jelem van REM_7=zeros(int8(REM_ido/10)+2,1); %8. elvezetésből kezd_ido=285; veg_ido=340; eredmeny=szamol('8_7_NS.ev2',kezd_ido,veg_ido); REM_7(1:length(eredmeny))=eredmeny; kezd_ido=500; veg_ido=520; eredmeny=szamol('8_7_NS.ev2',kezd_ido,veg_ido); REM_7(1:length(eredmeny))=eredmeny; %10. elvezetésből kezd_ido=240; veg_ido=520; kezd=find(REM_7==0); eredmeny=szamol('10_7_NS.ev2',kezd_ido,veg_ido); REM_7(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(REM_7); title('7. csatorna'); xlswrite('REM_7',REM_7); end function REM_8=felbontas_REM_8 REM_ido=355;%355 s-nyi REM-es jelem van REM_8=zeros(int8(REM_ido/10)+2,1); %8. elvezetésből kezd_ido=285; veg_ido=340; eredmeny=szamol('8_8_NS.ev2',kezd_ido,veg_ido); REM_8(1:length(eredmeny))=eredmeny; kezd_ido=500; veg_ido=520; eredmeny=szamol('8_8_NS.ev2',kezd_ido,veg_ido); REM_8(1:length(eredmeny))=eredmeny; %10. elvezetésből kezd_ido=240; veg_ido=520; kezd=find(REM_8==0); eredmeny=szamol('10_8_NS.ev2',kezd_ido,veg_ido); REM_8(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(REM_8); title('8. csatorna'); xlswrite('REM_8',REM_8); end
79
function REM_14=felbontas_REM_14 REM_ido=355;%355 s-nyi REM-es jelem van REM_14=zeros(int8(REM_ido/10)+2,1); %8. elvezetésből kezd_ido=285; veg_ido=340; eredmeny=szamol('8_14_NS.ev2',kezd_ido,veg_ido); REM_14(1:length(eredmeny))=eredmeny; kezd_ido=500; veg_ido=520; eredmeny=szamol('8_14_NS.ev2',kezd_ido,veg_ido); REM_14(1:length(eredmeny))=eredmeny; %10. elvezetésből kezd_ido=240; veg_ido=520; kezd=find(REM_14==0); eredmeny=szamol('10_14_NS.ev2',kezd_ido,veg_ido); REM_14(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(REM_14); title('14. csatorna'); xlswrite('REM_14',REM_14); end function REM_15=felbontas_REM_15 REM_ido=355;%355 s-nyi REM-es jelem van REM_15=zeros(int8(REM_ido/10)+2,1); %8. elvezetésből kezd_ido=285; veg_ido=340; eredmeny=szamol('8_15_NS.ev2',kezd_ido,veg_ido); REM_15(1:length(eredmeny))=eredmeny; kezd_ido=500; veg_ido=520; eredmeny=szamol('8_15_NS.ev2',kezd_ido,veg_ido); REM_15(1:length(eredmeny))=eredmeny; %10. elvezetésből kezd_ido=240; veg_ido=520; kezd=find(REM_15==0); eredmeny=szamol('10_15_NS.ev2',kezd_ido,veg_ido); REM_15(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(REM_15); title('15. csatorna'); xlswrite('REM_15',REM_15); end function REM_16=felbontas_REM_16 REM_ido=355;%355 s-nyi REM-es jelem van REM_16=zeros(int8(REM_ido/10)+2,1); %8. elvezetésből kezd_ido=285; veg_ido=340;
80
eredmeny=szamol('8_16_NS.ev2',kezd_ido,veg_ido); REM_16(1:length(eredmeny))=eredmeny; kezd_ido=500; veg_ido=520; eredmeny=szamol('8_16_NS.ev2',kezd_ido,veg_ido); REM_16(1:length(eredmeny))=eredmeny; %10. elvezetésből kezd_ido=240; veg_ido=520; kezd=find(REM_16==0); eredmeny=szamol('10_16_NS.ev2',kezd_ido,veg_ido); REM_16(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(REM_16); title('16. csatorna'); xlswrite('REM_16',REM_16); end function REM_22=felbontas_REM_22 REM_ido=355;%355 s-nyi REM-es jelem van REM_22=zeros(int8(REM_ido/10)+2,1); %8. elvezetésből kezd_ido=285; veg_ido=340; eredmeny=szamol('8_22_NS.ev2',kezd_ido,veg_ido); REM_22(1:length(eredmeny))=eredmeny; kezd_ido=500; veg_ido=520; eredmeny=szamol('8_22_NS.ev2',kezd_ido,veg_ido); REM_22(1:length(eredmeny))=eredmeny; %10. elvezetésből kezd_ido=240; veg_ido=520; kezd=find(REM_22==0); eredmeny=szamol('10_22_NS.ev2',kezd_ido,veg_ido); REM_22(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(REM_22); title('22. csatorna'); xlswrite('REM_22',REM_22); end function Altatas_7=felbontas_Altatas_7 Altatas_ido=1040;%1040 s-nyi altatasos jelem van Altatas_7=zeros(int8(Altatas_ido/10)+2,1); %21. elvezetésből kezd_ido=0; veg_ido=520; eredmeny=szamol('8_7_NS.ev2',kezd_ido,veg_ido); Altatas_7(1:length(eredmeny))=eredmeny; %22. elvezetésből kezd_ido=0; veg_ido=520;
81
kezd=find(Altatas_7==0); eredmeny=szamol('10_7_NS.ev2',kezd_ido,veg_ido); Altatas_7(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(Altatas_7); title('7. csatorna'); xlswrite('Altatas_7',Altatas_7); end function Altatas_8=felbontas_Altatas_8 Altatas_ido=1040;%1040 s-nyi altatasos jelem van Altatas_8=zeros(int8(Altatas_ido/10)+2,1); %21. elvezetésből kezd_ido=0; veg_ido=520; eredmeny=szamol('8_8_NS.ev2',kezd_ido,veg_ido); Altatas_8(1:length(eredmeny))=eredmeny; %22. elvezetésből kezd_ido=0; veg_ido=520; kezd=find(Altatas_8==0); eredmeny=szamol('10_8_NS.ev2',kezd_ido,veg_ido); Altatas_8(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(Altatas_8); title('8. csatorna'); xlswrite('Altatas_8',Altatas_8); end function Altatas_14=felbontas_Altatas_14 Altatas_ido=1040;%1040 s-nyi altatasos jelem van Altatas_14=zeros(int8(Altatas_ido/10)+2,1); %21. elvezetésből kezd_ido=0; veg_ido=520; eredmeny=szamol('8_14_NS.ev2',kezd_ido,veg_ido); Altatas_14(1:length(eredmeny))=eredmeny; %22. elvezetésből kezd_ido=0; veg_ido=520; kezd=find(Altatas_14==0); eredmeny=szamol('10_14_NS.ev2',kezd_ido,veg_ido); Altatas_14(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(Altatas_14); title('14. csatorna'); xlswrite('Altatas_14',Altatas_14); end function Altatas_15=felbontas_Altatas_15 Altatas_ido=1040;%1040 s-nyi altatasos jelem van Altatas_15=zeros(int8(Altatas_ido/10)+2,1); %21. elvezetésből kezd_ido=0; veg_ido=520;
82
eredmeny=szamol('8_15_NS.ev2',kezd_ido,veg_ido); Altatas_15(1:length(eredmeny))=eredmeny; %22. elvezetésből kezd_ido=0; veg_ido=520; kezd=find(Altatas_15==0); eredmeny=szamol('10_15_NS.ev2',kezd_ido,veg_ido); Altatas_15(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(Altatas_15); title('15. csatorna'); xlswrite('Altatas_15',Altatas_15); end function Altatas_16=felbontas_Altatas_16 Altatas_ido=1040;%1040 s-nyi altatasos jelem van Altatas_16=zeros(int8(Altatas_ido/10)+2,1); %21. elvezetésből kezd_ido=0; veg_ido=520; eredmeny=szamol('8_16_NS.ev2',kezd_ido,veg_ido); Altatas_16(1:length(eredmeny))=eredmeny; %22. elvezetésből kezd_ido=0; veg_ido=520; kezd=find(Altatas_16==0); eredmeny=szamol('10_16_NS.ev2',kezd_ido,veg_ido); Altatas_16(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(Altatas_16); title('16. csatorna'); xlswrite('Altatas_16',Altatas_16); end function Altatas_22=felbontas_Altatas_22 Altatas_ido=1040;%1040 s-nyi altatasos jelem van Altatas_22=zeros(int8(Altatas_ido/10)+2,1); %21. elvezetésből kezd_ido=0; veg_ido=520; eredmeny=szamol('8_22_NS.ev2',kezd_ido,veg_ido); Altatas_22(1:length(eredmeny))=eredmeny; %22. elvezetésből kezd_ido=0; veg_ido=520; kezd=find(Altatas_22==0); eredmeny=szamol('10_22_NS.ev2',kezd_ido,veg_ido); Altatas_22(kezd(1):(kezd(1)+length(eredmeny)-1))=eredmeny; figure; plot(Altatas_22); title('22. csatorna'); xlswrite('Altatas_22',Altatas_22); end
83
function felbontas() %SWS 656 s %REM 355 s %éber 681 s %altatott 1040 s SWS_7=felbontas_SWS_7; SWS_8=felbontas_SWS_8; SWS_14=felbontas_SWS_14; SWS_15=felbontas_SWS_15; SWS_16=felbontas_SWS_16; SWS_22=felbontas_SWS_22; Eber_7=felbontas_Eber_7; Eber_8=felbontas_Eber_8; Eber_14=felbontas_Eber_14; Eber_15=felbontas_Eber_15; Eber_16=felbontas_Eber_16; Eber_22=felbontas_Eber_22; REM_7=felbontas_REM_7; REM_8=felbontas_REM_8; REM_14=felbontas_REM_14; REM_15=felbontas_REM_15; REM_16=felbontas_REM_16; REM_22=felbontas_REM_22; Altatas_7=felbontas_Altatas_7; Altatas_8=felbontas_Altatas_8; Altatas_14=felbontas_Altatas_14; Altatas_15=felbontas_Altatas_15; Altatas_16=felbontas_Altatas_16; Altatas_22=felbontas_Altatas_22; end function fajlok_fir_rate eredmeny=szamol('8_7_NS.ev2',1,520); figure; title('8_7'); plot(eredmeny); xlswrite('8_7_NS',eredmeny); eredmeny=szamol('8_8_NS.ev2',1,520); figure; title('8_8'); plot(eredmeny); xlswrite('8_8_NS',eredmeny); eredmeny=szamol('8_14_NS.ev2',1,520); figure; title('8_14'); plot(eredmeny); xlswrite('8_14_NS',eredmeny); eredmeny=szamol('8_15_NS.ev2',1,520); figu re; title('8_15'); plot(eredmeny); xlswrite('8_15_NS',eredmeny); eredmeny=szamol('8_16_NS.ev2',1,520); figure; title('8_16'); plot(eredmeny); xlswrite('8_16_NS',eredmeny); eredmeny=szamol('8_22_NS.ev2',1,520);
84
figure; title('8_22'); plot(eredmeny); xlswrite('8_22_NS',eredmeny); eredmeny=szamol('9_7_NS.ev2',1,520); figure; title('9_7'); plot(eredmeny); xlswrite('9_7_NS',eredmeny); eredmeny=szamol('9_8_NS.ev2',1,520); figure; title('9_8'); plot(eredmeny); xlswrite('9_8_NS',eredmeny); eredmeny=szamol('9_14_NS.ev2',1,520); figure; title('9_14'); plot(eredmeny); xlswrite('9_14_NS',eredmeny); eredmeny=szamol('9_15_NS.ev2',1,520); figure; title('9_15'); plot(eredmeny); xlswrite('9_15_NS',eredmeny); eredmeny=szamol('9_16_NS.ev2',1,520); figure; title('9_16'); plot(eredmeny); xlswrite('9_16_NS',eredmeny); eredmeny=szamol('9_22_NS.ev2',1,520); figure; title('9_22'); plot(eredmeny); xlswrite('9_22_NS',eredmeny); eredmeny=szamol('10_7_NS.ev2',1,520); figure; title('10_7'); plot(eredmeny); xlswrite('10_7_NS',eredmeny); eredmeny=szamol('10_8_NS.ev2',1,520); figure; title('10_8'); plot(eredmeny); xlswrite('10_8_NS',eredmeny); eredmeny=szamol('10_14_NS.ev2',1,520); figure; title('10_14'); plot(eredmeny); xlswrite('10_14_NS',eredmeny); eredmeny=szamol('10_15_NS.ev2',1,520); figure; title('10_15'); plot(eredmeny); xlswrite('10_15_NS',eredmeny); eredmeny=szamol('10_16_NS.ev2',1,520); figure; title('10_16'); plot(eredmeny); xlswrite('10_16_NS',eredmeny);
85
eredmeny=szamol('10_22_NS.ev2',1,520); figure; title('10_22'); plot(eredmeny); xlswrite('10_22_NS',eredmeny); eredmeny=szamol('11_7_NS.ev2',1,520); figure; title('11_7'); plot(eredmeny); xlswrite('11_7_NS',eredmeny); eredmeny=szamol('11_8_NS.ev2',1,520); figure; title('11_8'); plot(eredmeny); xlswrite('11_8_NS',eredmeny); eredmeny=szamol('11_14_NS.ev2',1,520); figure; title('11_14'); plot(eredmeny); xlswrite('11_14_NS',eredmeny); eredmeny=szamol('11_15_NS.ev2',1,520); figure; title('11_15'); plot(eredmeny); xlswrite('11_15_NS',eredmeny); eredmeny=szamol('11_16_NS.ev2',1,520); figure; title('11_16'); plot(eredmeny); xlswrite('11_16_NS',eredmeny); eredmeny=szamol('11_22_NS.ev2',1,520); figure; title('11_22'); plot(eredmeny); xlswrite('11_22_NS',eredmeny); eredmeny=szamol('21_7_NS.ev2',1,520); figure; title('21_7'); plot(eredmeny); xlswrite('21_7_NS',eredmeny); eredmeny=szamol('21_8_NS.ev2',1,520); figure; title('21_8'); plot(eredmeny); xlswrite('21_8_NS',eredmeny); eredmeny=szamol('21_14_NS.ev2',1,520); figure; title('21_14'); plot(eredmeny); xlswrite('21_14_NS',eredmeny); eredmeny=szamol('21_15_NS.ev2',1,520); figure; title('21_15'); plot(eredmeny); xlswrite('21_15_NS',eredmeny); eredmeny=szamol('21_16_NS.ev2',1,520); figure; title('21_16'); plot(eredmeny);
86
xlswrite('21_16_NS',eredmeny); eredmeny=szamol('21_22_NS.ev2',1,520); figure; title('21_22'); plot(eredmeny); xlswrite('21_22_NS',eredmeny); eredmeny=szamol('22_7_NS.ev2',1,520); figure; title('22_7'); plot(eredmeny); xlswrite('22_7_NS',eredmeny); eredmeny=szamol('22_8_NS.ev2',1,520); figure; title('22_8'); plot(eredmeny); xlswrite('22_8_NS',eredmeny); eredmeny=szamol('22_14_NS.ev2',1,520); figure; title('22_14'); plot(eredmeny); xlswrite('22_14_NS',eredmeny); eredmeny=szamol('22_15_NS.ev2',1,520); figure; title('22_15'); plot(eredmeny); xlswrite('22_15_NS',eredmeny); eredmeny=szamol('22_16_NS.ev2',1,520); figure; title('22_16'); plot(eredmeny); xlswrite('22_16_NS',eredmeny); eredmeny=szamol('22_22_NS.ev2',1,520); figure; title('22_22'); plot(eredmeny); xlswrite('22_22_NS',eredmeny); end
7.2 Eredmények 7 17.50 33.80 36.25 16.30 11.70 15.10 16.60 20.20 12.90 16.80 19.40 15.90 20.60
8 6.20 5.40 5.25 6.70 4.60 4.30 6.70 8.70 8.80 7.60 7.00 7.60 9.50
SWS 14 15 16 22 7 8.30 14.40 6.00 1.20 57.90 11.70 24.50 11.80 5.60 38.60 12.13 18.63 11.88 2.50 44.60 14.40 19.00 9.20 5.30 27.60 13.60 21.80 8.00 5.70 25.40 13.80 22.50 7.40 6.20 26.50 15.00 20.80 9.10 2.70 24.80 17.10 18.60 7.70 2.20 49.00 12.30 16.90 8.10 1.80 36.70 13.20 16.60 5.60 1.60 51.30 13.50 19.30 8.30 5.50 52.30 15.60 20.50 7.60 2.50 46.60 13.80 18.40 10.10 1.70 30.30 87
8 7.80 7.70 8.30 5.70 4.40 7.70 5.40 8.50 7.50 8.20 7.00 6.80 8.30
Éber 14 15 11.20 25.90 11.90 23.50 16.10 24.40 13.10 22.80 15.70 22.70 16.30 25.50 13.20 20.20 12.70 24.60 13.20 21.90 13.20 20.60 12.70 22.40 11.30 17.90 14.50 21.50
16 11.50 10.90 9.60 8.70 8.60 8.80 8.20 10.50 11.40 11.50 9.30 8.40 10.90
22 5.40 6.90 7.30 8.00 7.50 6.60 5.90 3.00 4.90 6.40 5.50 7.30 4.70
22.30 19.20 22.30 19.90 17.80 24.70 24.40 15.90 10.30 15.10 20.90 9.70 22.00 35.30 32.40 9.90 11.20 17.10 20.80 21.90 23.80 20.90 36.00 25.40 13.00 19.50 29.20 24.40 17.70 22.20 28.70 19.00 19.40 22.70 26.00 18.20 23.90 20.40 19.10 16.20 17.60 33.80 21.60 28.00 30.30 17.30
6.20 7.90 8.30 7.90 10.60 9.30 9.80 7.10 7.40 7.60 7.00 10.30 8.60 3.90 4.00 4.90 6.90 7.60 8.60 5.80 5.20 5.30 5.20 6.20 6.50 8.40 6.60 4.50 7.30 6.60 6.90 5.10 7.00 8.10 10.30 7.10 6.40 6.40 10.50 6.30 6.80 7.80 9.30 8.40 8.50 7.80
11.80 14.50 13.00 9.40 13.90 11.40 16.10 13.20 12.50 15.40 13.70 19.00 13.90 11.10 14.20 14.50 13.80 16.20 13.00 9.60 11.20 14.60 15.70 15.50 13.70 14.50 15.90 15.10 14.90 16.60 10.80 13.40 15.60 15.10 12.40 11.70 15.40 14.90 16.90 14.30 12.30 13.70 11.30 14.00 12.90 15.10
18.60 19.20 18.40 15.00 20.20 17.70 20.60 17.40 18.80 22.70 18.70 24.50 21.00 22.70 21.50 17.20 18.80 20.60 18.40 16.70 18.90 24.50 21.70 20.60 22.80 25.00 20.80 20.70 20.50 22.50 19.70 16.60 20.30 20.60 14.90 17.00 21.40 21.90 16.40 21.20 21.30 18.50 18.90 19.00 22.60 18.90
8.90 8.40 8.00 8.90 11.30 6.90 8.70 10.10 7.40 10.40 10.30 11.20 10.70 9.60 10.00 6.10 7.80 9.50 9.20 9.10 9.30 10.80 7.90 7.30 10.00 8.60 9.50 9.60 8.60 9.40 9.20 7.10 9.80 7.30 7.30 8.00 7.90 7.60 9.80 9.70 7.80 8.90 8.40 8.10 8.70 8.50
3.30 1.60 2.00 1.80 2.30 3.70 3.40 2.30 1.70 3.10 3.80 2.40 1.90 5.20 4.30 2.70 4.50 2.50 2.00 2.90 2.50 4.10 5.90 2.70 3.80 4.50 5.00 4.40 2.90 1.80 1.60 1.90 2.00 2.60 2.20 2.70 3.80 3.10 2.70 2.20 4.00 2.80 2.20 2.90 2.10 1.90
27.60 32.40 36.80 34.40 26.20 39.80 30.60 23.40 33.60 41.80 33.20 31.70 33.80 33.80 21.80 37.90 28.20 23.50 20.50 13.50 38.00 22.30 26.40 47.70 44.20 41.20 29.40 26.80 26.10 22.50 26.80 39.10 23.20 19.80 34.50 24.00 45.50 30.90 36.90 45.20 40.90 34.40 36.60 31.20 27.40 22.80
88
7.10 7.20 7.40 8.20 6.60 5.90 5.50 7.40 11.30 9.60 6.10 9.20 8.60 7.70 5.60 6.80 7.00 8.90 6.00 5.50 8.50 8.50 7.10 9.10 9.50 10.30 8.10 7.50 8.50 7.40 6.30 8.80 8.60 10.40 8.70 20.00 8.80 7.70 7.40 7.60 6.80 5.80 6.10 7.20 7.50 7.30
13.60 13.00 14.20 12.40 12.60 12.80 12.10 13.70 18.70 12.00 12.30 11.50 14.60 13.90 14.20 13.60 16.80 14.70 15.10 18.10 10.50 11.40 15.10 11.30 9.80 13.30 14.40 14.00 12.90 12.40 11.50 11.70 14.40 17.80 12.00 15.00 13.10 13.80 13.10 13.00 12.90 10.20 11.30 10.50 11.90 13.00
24.40 19.10 21.80 19.70 18.30 19.60 19.50 22.50 27.80 21.30 20.90 19.30 20.30 20.40 21.80 21.40 23.70 26.50 23.10 22.40 19.50 21.50 22.90 22.30 23.20 21.70 22.10 20.60 18.70 20.20 19.00 20.40 24.50 33.60 18.30 16.00 23.40 23.50 20.10 24.60 20.80 20.50 20.80 20.20 20.50 21.10
13.00 12.40 12.60 9.50 7.90 8.60 8.50 11.00 14.70 10.70 8.40 11.80 8.80 10.00 6.70 10.60 10.30 13.80 9.00 8.80 10.50 10.20 11.90 9.40 11.50 11.90 11.30 8.20 7.70 7.20 7.30 8.10 14.30 14.90 8.00 10.00 11.90 11.80 9.60 11.70 8.50 8.00 8.50 8.90 8.60 8.70
3.20 3.10 5.00 5.90 5.00 5.70 5.90 3.90 3.30 2.10 7.80 7.80 8.30 8.40 6.10 4.50 7.20 4.90 6.80 5.70 4.30 5.40 4.20 4.00 4.40 5.90 6.60 6.50 6.40 6.40 7.80 7.10 6.70 3.40 3.20 6.00 5.10 4.50 5.50 6.30 6.30 7.20 7.50 5.40 5.60 6.40
11.30 19.30 23.00 14.90 30.60 23.90 28.40 18.30 13.80
7 34.50 27.40 23.50 26.00 18.10 21.60 16.40 26.30 15.30 19.40 21.50 22.60 19.80 27.00 24.50 15.00 10.90 15.60 16.60 17.20 11.50 17.80 20.80 14.70 17.20 39.30 33.80 32.00 32.40 26.00 37.50 32.60
9.00 8.33 6.60 8.30 6.20 9.00 6.20
8 6.40 9.40 6.30 7.20 6.70 7.60 12.10 8.60 6.70 14.90 12.60 12.40 11.30 13.70 12.10 6.50 9.40 6.20 4.60 6.80 4.50 12.10 8.20 7.00 10.30 6.80 6.70 6.10 7.20 7.10 8.70 6.70
11.20 18.33 15.10 16.20 17.00 17.40 13.00
19.10 9.40 4.30 28.50 24.67 11.00 6.33 20.90 20.80 8.80 3.10 22.00 21.70 9.60 2.60 22.10 21.70 9.80 2.60 17.00 24.20 11.20 5.20 22.90 19.20 8.00 4.80 25.20 35.30 36.70 41.60
REM 14 15 14.00 22.10 14.40 26.80 14.30 23.40 12.80 22.50 14.40 20.00 16.00 20.80 18.50 30.60 18.30 30.10 17.40 22.40 18.50 30.10 15.40 26.30 14.50 23.60 17.00 25.50 19.30 24.00 17.10 27.60 14.60 23.60 13.10 20.30 11.40 19.20 11.60 19.20 13.50 18.20 11.30 15.60 14.20 20.70 14.30 21.40 12.00 16.40 15.80 24.90 12.90 23.30 13.00 20.90 14.00 21.00 12.90 23.40 12.60 20.50 10.60 16.80 15.30 25.20
16 9.70 12.30 8.90 11.20 8.00 7.20 8.70 9.70 7.90 10.70 11.20 11.50 12.40 10.10 13.10 11.70 10.70 6.90 8.50 7.90 6.00 9.80 10.60 7.00 12.80 9.40 10.50 8.80 9.90 6.90 8.00 10.70
22 7.30 5.00 6.40 5.70 4.70 5.00 4.90 7.30 6.40 5.60 6.00 6.60 5.30 7.10 6.20 8.10 4.20 5.00 5.40 4.10 4.10 6.80 4.50 3.30 8.50 8.60 6.40 5.90 5.30 8.50 5.10 5.60
7 17.50 33.80 33.50 40.60 20.50 35.20 27.10 23.20 24.30 16.30 11.70 15.10 16.60 20.20 12.90 37.60 57.90 38.60 44.60 27.60 25.40 26.50 24.80 12.60 19.40 15.90 20.60 22.30 35.60 28.40 20.40 24.70
89
8.60 9.00 6.20 6.50 6.70 7.60 9.10 5.30 6.40 7.80
11.30 11.30 12.60 13.10 11.90 13.50 13.70 11.10 12.90 13.30
18.90 20.70 22.90 22.70 20.90 20.60 21.00 25.60 21.00 24.90
7.10 9.30 7.70 8.50 9.70 8.30 7.10 9.50 8.90 8.20
6.10 7.40 7.80 7.00 6.50 7.90 5.20 5.60 6.20 6.00
8 6.20 5.40 5.70 5.90 7.00 5.80 6.40 6.20 7.30 6.70 4.60 4.30 6.70 8.70 8.80 6.90 7.80 7.70 8.30 5.70 4.40 7.70 5.40 4.80 7.00 7.60 9.50 6.20 7.00 9.80 8.00 7.60
Altatás 14 15 8.30 14.40 11.70 24.50 12.90 18.20 14.20 22.30 16.10 23.80 12.90 22.00 15.70 25.10 12.60 21.50 13.70 21.50 14.40 19.00 13.60 21.80 13.80 22.50 15.00 20.80 17.10 18.60 12.30 16.90 9.40 19.40 11.20 25.90 11.90 23.50 16.10 24.40 13.10 22.80 15.70 22.70 16.30 25.50 13.20 20.20 12.30 17.70 13.50 19.30 15.60 20.50 13.80 18.40 11.80 18.60 13.80 19.80 14.00 23.00 15.20 27.60 13.20 23.60
16 6.00 11.80 12.00 10.80 13.00 11.10 12.20 11.20 8.90 9.20 8.00 7.40 9.10 7.70 8.10 6.90 11.50 10.90 9.60 8.70 8.60 8.80 8.20 7.70 8.30 7.60 10.10 8.90 8.30 10.20 10.40 10.40
22 1.20 5.60 3.30 4.70 4.50 4.30 6.10 6.10 6.20 5.30 5.70 6.20 2.70 2.20 1.80 2.70 5.40 6.90 7.30 8.00 7.50 6.60 5.90 3.50 5.50 2.50 1.70 3.30 3.90 6.30 5.50 5.10
24.40 23.90
8.10 13.00 18.80 7.00 4.80 22.90 7.90 11.90 20.80 10.30 5.80 18.30 10.10 12.40 19.20 22.30 19.90 17.80 24.70 24.40 15.90 10.30 15.10 20.90 9.70 22.00 35.30 32.40 34.50 27.40 16.70 16.50 21.60 24.30 21.90 26.70 37.90 28.20 23.50 20.50 13.50 19.30 18.20 18.00 13.80 30.70 25.10 30.40 24.60 22.90 12.50 19.70 15.90 9.60 16.40 26.30 90
6.20 7.50 4.30 6.80 7.90 8.30 7.90 10.60 9.30 9.80 7.10 7.40 7.60 7.00 10.30 8.60 3.90 4.00 6.40 9.40 5.20 7.50 6.70 8.60 10.40 5.00 6.80 7.00 8.90 6.00 5.50 6.40 7.70 7.20 9.50 5.50 7.90 9.10 8.40 8.20 8.50 9.10 8.40 10.30 12.10 8.60
14.80 14.20 15.50 14.00 14.50 13.00 9.40 13.90 11.40 16.10 13.20 12.50 15.40 13.70 19.00 13.90 11.10 14.20 14.00 14.40 14.70 16.10 13.50 14.30 11.90 11.70 13.60 16.80 14.70 15.10 18.10 15.60 14.90 16.90 14.90 9.60 16.70 11.00 12.70 12.70 16.20 12.60 16.00 16.00 18.50 18.30
22.60 19.00 22.60 19.20 19.20 18.40 15.00 20.20 17.70 20.60 17.40 18.80 22.70 18.70 24.50 21.00 22.70 21.50 22.10 26.80 20.40 21.20 20.10 16.10 16.30 17.80 21.40 23.70 26.50 23.10 22.40 20.70 21.20 18.80 19.60 19.30 21.00 18.70 18.70 21.50 20.60 19.90 22.50 24.10 30.60 30.10
10.10 7.00 9.60 8.10 8.40 8.00 8.90 11.30 6.90 8.70 10.10 7.40 10.40 10.30 11.20 10.70 9.60 10.00 9.70 12.30 9.60 9.70 8.20 7.20 8.10 8.80 10.60 10.30 13.80 9.00 8.80 8.10 7.50 10.00 9.50 6.70 9.30 8.50 8.60 8.60 8.00 9.80 9.60 9.10 8.70 9.70
5.00 5.40 3.30 3.60 1.60 2.00 1.80 2.30 3.70 3.40 2.30 1.70 3.10 3.80 2.40 1.90 5.20 4.30 7.30 5.00 4.70 2.20 2.60 2.80 2.00 3.10 4.50 7.20 4.90 6.80 5.70 4.10 2.70 3.00 2.00 3.80 3.20 2.20 2.40 2.60 1.80 3.80 6.70 4.20 4.90 7.30
15.30 19.40 21.50 22.60 19.80 27.00 24.50 15.00 10.90 15.60 16.60 17.20 11.50 17.80 20.80 14.70 17.20 39.30 33.80 32.00 32.40 26.00 37.50 32.60 24.40 23.90
91
6.70 14.90 12.60 12.40 11.30 13.70 12.10 6.50 9.40 6.20 4.60 6.80 4.50 12.10 8.20 7.00 10.30 6.80 6.70 6.10 7.20 7.10 8.70 6.70 8.10 7.90
17.40 18.50 15.40 14.50 17.00 19.30 17.10 14.60 13.10 11.40 11.60 13.50 11.30 14.20 14.30 12.00 15.80 12.90 13.00 14.00 12.90 12.60 10.60 15.30 13.00 11.90
22.40 30.10 26.30 23.60 25.50 24.00 27.60 23.60 20.30 19.20 19.20 18.20 15.60 20.70 21.40 16.40 24.90 23.30 20.90 21.00 23.40 20.50 16.80 25.20 18.80 20.80
7.90 10.70 11.20 11.50 12.40 10.10 13.10 11.70 10.70 6.90 8.50 7.90 6.00 9.80 10.60 7.00 12.80 9.40 10.50 8.80 9.90 6.90 8.00 10.70 7.00 10.30
6.40 5.60 6.00 6.60 5.30 7.10 6.20 8.10 4.20 5.00 5.40 4.10 4.10 6.80 4.50 3.30 8.50 8.60 6.40 5.90 5.30 8.50 5.10 5.60 4.80 5.80