Uživatel:Kychot/MFTP/SigViewer, General Data Format a EMG u myofasciálních trigger pointů
< Uživatel:Kychot | MFTP
SigViewer, General Data Format a EMG u myofasciálních trigger pointů
editovat- Heřman P., Čech Z. , Kraus J.
- 34. Dny lékařské biofyziky 1.– 3. června 2011, Plzeň
- http://cs.wikiversity.org/wiki/SigViewer,_General_Data_Format_a_EMG_u_myofasciálních_trigger_pointů
Vzhled:
- chick (úprava skinu pro přednášku – viz ~/chick.css)
- monobook běžný vzhled
Obsah
editovat- myofasciální trigger point (TrP) – příklad konkrétního biosignálu
- metodika – příklad komplikované spolupráce mezi klinikou (+ výrobcem zařízení) a výzkumem
- EMG vyšetření EPN (Endplate Noise)
- aparatura, technické problémy
- formáty datových souborů
- protokol, popis metadat
- proprietární → otevřený datový formát
- možné datové formáty
- otevřený formát GDF (General DataFormat for biosignals)
- univerzální prohlížeč SigViewer
- komunita = programátoři + uživatelé (STV, bugtracking)
- závěr
Myofasciální trigger point
editovatMyofacsiální trigger point (MTrP, TrP – Dr. Janet Travell 1942):
- Bolest pociťovaná ve vztahu s diskrétním, dráždivým bodem kosterního svalu a/nebo přidružené fascie, nezpůsobená akutním lokálním traumatem, zánětem, degenerací, novotvarem anebo infekcí
- Bolestivý bod může být pociťován jako uzlík anebo svalový snopec a v důsledku podráždění TrP (přebrnknutí snopce) lze vyvolat svalový záškub
- Palpaci TrP označuje pacient za bolestivou a tato bolest se šíří specificky pro daný sval
- Bolest nelze vysvětlit z běžného neurologického vyšetření
- David Simons, Siegfried Mense, Karel Lewit, Pavel Kolář
- aktivní (bolestivý) vs. latentní TrP (bolestivý jen při palpaci)
- lokalizace TrP: průsečík napnutého svalového snopce (taut band) & oblast nervosvalových plotének
- EMG aktivita – ploténkový šum (typická amplituda v jednotkách μV – 10 μV)
- terapie: FT (bolesti zad, epicondylitis atd. atd.) – často málo účinná nebo jen dočasná úleva
- efekt suché jehly
Řetězení TrP
editovat- na úrovni CNS – nikoli fyzikální propojení (jakoby akupunkturní dráhy)
- souvisí např. s Vojtovými schematy vývoje lokomoce
- klinická empirie: působení na odlehlé body ⇒ mění aktivitu TrP
Úkol: Pokus o objektivizaci tohoto působení: Mění stimulace zřetězených TrP elektrickou aktivitu ve sledovaném TrP?
Metodika vyšetření
editovat- pac. předem vyšetřen FT
- diagnostikovány paravertebrální TrP (zpravidla Th oblast)
- algometrem změřena citlivost TrP a zřetězených (odlehlých) TrP
- pacient relaxuje v leže na břiše
- poloha TrP upřesněna bodovým měřením kožního odporu
- zavedeny 2 koaxiální EMG elektrody (do místa TrP a symetricky kontralaterálně)
- nalepeny 2 páry povrchových elektrod (po obou stranách jehlových)
- po startu EMG záznamu měřen čas stopkami, eventy zapisovány do protokolu
- jehla posunuta do blízkosti TrP (zvýšený ploténkový šum, ojedinělé AP)
- problém: efekt suché jehly
- kontralaterální jehla srovnána do stejné hloubky
- záznam v klidu
- kontinuální záznam při postupné stimulaci 6 zřetězených TrP (po obou stranách)
- vliv řízeného dýchání
Vlastnosti EMG záznamu
editovat- EMG přístroj KEYPOINT® 4 (90. léta – předtím Medtronic, předtím Dantec)
- pacientská data – soubory *.INV (proprietární nedokumentovaný formát ⇒ RI)
- pův. SW umožňuje pouze 5s EMG záznamy *.EM5 (proprietární formát)
- dokoupeno SW rozšíření OSC – umožňuje kontinuální záznam
- datové soubory:
- mnohakanálové záznamy (4 – 8 kanálů)
- délka ~30 min @ 20 kHz
- objem dat ~500 MB
- proprietární nedokumentovaný formát binárního souboru *.OSC
- možnost ukládání do dokumentovaného binárního exportního formátu *.EXP
- v hlavičce pouze:
- počet kanálů
- vzorkovací frekvence
- citlivost na začátku záznamu
- v hlavičce pouze:
- možnost exportu souboru *.EXP do textového ASCII (mnoho GB dat)
Vlastnosti protokolovacího záznamu
editovat- ručně psaný
- čas měřený stopkami
- kontrola synchronisace – počet uložených MB (nepřesné)
- řada eventů:
- v rámci vyšetřovcího protokolu
- náhodné jevy, události, rušení, poznámky atd.
- cíl – bezpapírový protokol; redukce:
- chyb operátora
- nepřesnosti měření
- chyb z přepisu
Zpracování metadat
editovatNávrh a vytvoření databáze (MySQL):
- emgdb_stru.sql – (70 ř.), 3 tabulky:
- `invor` = INVestigation ORiginal data ← file *.INV
- `bin` = metadata souboru s EMG křivkami ← file *.EXP
- `comm` = komentář ← zpráva od fyzioterapeuta
- emgdb_event_stru.sql (80 ř.) (tabulka `event`)
- v.027 (150 ř.)
Zpracování ručně psaných protokolů
editovat- emgdb-proto.pl (150 ř.)
investigation: 2E date: 2008-11-26 person: **** letter: E expfile: 2EA04425.EXP ;%4chLRcs ~ #1 electrode: coaxial sin ~ #2 electrode: surface sin ~ #3 electrode: coaxial dx ~ #4 electrode: surface dx ;%simons ~ #all amplifier: filter,low =100 [Hz] ~ #all amplifier: filter,high =1 [kHz] ~ #all amplifier: gain =10 [uV/DIV] ~ needle: sin depth =17 [mm] ~ needle: dx depth =20 [mm] ~ calib: =1.7518 [s] 00:00 record: start,localtime =12:29 [CET] 54.4-129.533 #1 signal: AP =10 [Hz] 01:00 #all amplifier: gain =5 [uV/DIV] ;4 %stim1 04:00+00:10 press: sole sin ~38.9 [MB] 05:00+00:10 press: sole dx 06:00+00:10 press: calf sin 07:00+00:10 press: calf dx 08:00+00:10 press: HMS sin 09:00+00:10 press: HMS dx ~86.5 [MB] 10:00+00:10 press: paracocc sin 11:00+00:10 press: paracocc dx ~105.7 [MB] 12:00+00:10 press: paracocc dx ;opakovaná stimulace 13:00+00:10 press: ang_costae5 sin 14:00+00:26 press: ang_costae5 dx ;zapomněl jsem hlásit konec 15:00+00:10 press: ang_costae5 dx 16:00+00:10 press: m_trapesius sin 17:00+00:10 press: m_trapesius dx ~163 [MB] 17:00 signal: activity,high ;zvýšená aktivita 18:00+00:10 press: paracocc sin 18:30 disturbance: touch ;předčasná príprava na press 19:00+00:10 press: paracocc dx ~182 [MB] 20:00+00:10 press: paracocc sin 21:00+00:10 press: paracocc dx ;22 %breath1 18 22:00+00:05 breath: inspir 22:05+00:05 breath: expir 22:10+00:05 breath: inspir 22:15+00:05 breath: expir 22:20+00:05 breath: inspir 22:25+00:05 breath: expir 22:30+00:05 breath: inspir 22:35+00:05 breath: expir 1375-1510 #4 signal: surface dx ;výrazná závislost – na konci nádechů roste aktivita 25:36 motion: head 26:15 other: touch,shoulder sin ;dotyk levé lopatky 27:00+00:10 press: infraspinatus sin 28:00+00:10 press: infraspinatus dx ~268.9 [MB] 29:00 #all amplifier: gain =2 [uV/DIV] ~268.6 [MB] 30:00 record: stop ~288.0 [MB] ;přesně (odchylka +0.03s) letter: F expfile: 2EF04425.EXP ~ #all amplifier: filter,low =20 [Hz] ~ #all amplifier: filter,high =10 [kHz] ~ #all amplifier: gain =10 [uV/DIV] ~ calib: =1.6818 [s] 00:00 record: start 01:00 #all amplifier: gain =5 [uV/DIV] 02:00 #all amplifier: gain =2 [uV/DIV] ~19.6 [MB] 03:00 #all amplifier: gain =1 [uV/DIV] ~29.0 [MB] 04:00 #all amplifier: gain =10 [uV/DIV] ~35.6 [MB] 04:33 #1 needle: left pull ;pomalu nahoru 04:53 #1 needle: left pull,roof 05:00 #1 needle: ;podkoží 05:32 #1 needle: roof ;kůže 06:19 record: stop,unnoticed ~55.5 [MB] ;samo se zastavilo,čas nejistý
Import metadat do databáze
editovat*** 2E/E *** 1 1 1 0.0 0.0 0.0 00:00 -- -- -- -- -- record: start -- -- -- -- 2 2 3 60.0 0.0 60.0 01:00 -- -- -- -- all amplifier: gain -- =5 uV/DIV -- 3 3 11 240.0 10.0 250.0 04:00 00:10 -- 38.9 -- -- press : sole sin -- -- -- 4 4 21 300.0 10.0 310.0 05:00 00:10 -- -- -- -- press : sole dx -- -- -- 5 5 12 360.0 10.0 370.0 06:00 00:10 -- -- -- -- press : calf sin -- -- -- 6 6 22 420.0 10.0 430.0 07:00 00:10 -- -- -- -- press : calf dx -- -- -- 7 7 13 480.0 10.0 490.0 08:00 00:10 -- -- -- -- press : HMS sin -- -- -- 8 8 23 540.0 10.0 550.0 09:00 00:10 -- 86.5 -- -- press : HMS dx -- -- -- 9 9 14 600.0 10.0 610.0 10:00 00:10 -- -- -- -- press : paracocc sin -- -- -- 10 10 24 660.0 10.0 670.0 11:00 00:10 -- 105.7 -- -- press : paracocc dx -- -- -- 11 11 24 720.0 10.0 730.0 12:00 00:10 -- -- -- -- press : paracocc dx -- -- opakovaná stimulace 12 12 15 780.0 10.0 790.0 13:00 00:10 -- -- -- -- press : ang_costae5 sin -- -- -- 13 13 25 840.0 26.0 866.0 14:00 00:26 -- -- -- -- press : ang_costae5 dx -- -- zapomněl jsem hlásit konec 14 14 25 900.0 10.0 910.0 15:00 00:10 -- -- -- -- press : ang_costae5 dx -- -- -- 15 15 16 960.0 10.0 970.0 16:00 00:10 -- -- -- -- press : m_trapesius sin -- -- -- 16 16 26 1020.0 10.0 1030.0 17:00 00:10 -- 163.0 -- -- press : m_trapesius dx -- -- -- 17 17 4 1020.0 0.0 1020.0 17:00 -- -- -- -- -- signal: activity,high -- -- -- zvýšená aktivita 18 18 14 1080.0 10.0 1090.0 18:00 00:10 -- -- -- -- press : paracocc sin -- -- -- 19 19 7 1110.0 0.0 1110.0 18:30 -- -- -- -- -- disturbance: touch -- -- -- předčasná príprava na press 20 20 24 1140.0 10.0 1150.0 19:00 00:10 -- 182.0 -- -- press : paracocc dx -- -- -- 21 21 14 1200.0 10.0 1210.0 20:00 00:10 -- -- -- -- press : paracocc sin -- -- -- 22 22 24 1260.0 10.0 1270.0 21:00 00:10 -- -- -- -- press : paracocc dx -- -- -- 23 23 6 1320.0 5.0 1325.0 22:00 00:05 -- -- -- -- breath: inspir -- -- -- -- 24 -- -- 1325.0 5.0 1330.0 22:05 00:05 -- -- -- -- breath: expir -- -- -- -- 25 24 6 1330.0 5.0 1335.0 22:10 00:05 -- -- -- -- breath: inspir -- -- -- -- 62 44 7 1575.0 0.0 1575.0 26:15 -- -- -- -- -- other : touch,shoulder sin -- -- dotyk levé lopatky 63 45 17 1620.0 10.0 1630.0 27:00 00:10 -- -- -- -- press : infraspinatus sin -- -- -- 64 46 27 1680.0 10.0 1690.0 28:00 00:10 -- 268.9 -- -- press : infraspinatus dx -- -- -- 65 -- -- 1740.0 0.0 1740.0 29:00 -- -- 268.6 -- all amplifier: gain -- =2 uV/DIV -- 66 47 1 1800.0 0.0 1800.0 30:00 -- -- 288.0 -- -- record: stop -- -- -- přesně (odchylka +0.03s)
Zpracování EMG záznamu
editovat- emg_osc.m (Octave, 500 ř.): *.EXP → *.fig → *.PDF
- pův. představa mechanického výpočtu – nerealizovatelná
- nutnost individuálního interaktivního prohlížení záznamu
- možnost sdílení dat ⇒ konverze do otevřeného formátu
- Laboratoř Brain-Computer interface (Tech. univerzita Štýrský Hradec)
- http://biosig.sourceforge.net/
- knihovny pro zpracování biosignálů
- biosig4c++ = BioSig for C++
- biosig4octmat = BioSig for Octave and Matlab
- python-biosig = BioSig for Python
- konverze mezi cca 40 různými datovými formáty
- http://en.wikipedia.org/wiki/General_Data_Format_for_Biomedical_Signals
- integrace ostatních datových formátů do jednoho
- binární hlavičky fixní délky
- nová knihovna pro C++ libgdf (http://sourceforge.net/projects/libgdf/
- http://sigviewer.sourceforge.net
- C++, Qt4
- licence GPL
- knihovna: biosig4c++ → libgdf
konverze *.exp → gdf
editovat- exp2gdf.c (500 ř.)
Voilà!? Ne – problémy!
editovat- ...
- ...
- ...
- řešení: trpělivý bugtracking
ilustrace
editovatzobrazení biosignálů
editovatzoom
editovatnastavení barviček a průsvitnosti pro eventy
editovatThe Cathedral and the Bazaar
editovat- Běžný model (politika atp.): my (normální lidi) vs. oni (politici, parlament, vláda atd.)
- OpenSource model: 1 materiál (kód), nahlížený ze dvou stran (programátoři, uživatelé) = 1 komunita
Katedrála a tržiště (Eric S. Raymond 1997):
- 1. Každý dobrý program začíná tím, že řeší potíže samotného programátora.
- 2. Dobří programátoři vědí co psát. Velcí vědí, co přepsat (a znovu použít = recyklace).
- 6. Pokud jednáte s uživateli jako se spolupracovníky, je to ta nejsnazší cesta k rychlému vylepšení kódu a efektivnímu odstraňování chyb
- 10. Pokud zacházíte s Vašimi testery, jako by byli vaším nejcennějším kapitálem, oni se vaším nejcennějším kapitálem skutečně stanou.
- 11. Skoro stejně důležité, jako mít dobré nápady, je schopnost rozeznat dobré nápady vašich uživatelů. Občas je to druhé dokonce lepší.
- 14. Jakýkoliv nástroj by měl být užitečný očekávaným způsobem, ale opravdu velké nástroje se hodí na použití, které jste nikdy neočekával.