SigViewer

Z Wikiverzity

SigViewer je prohlížeč a vyhodnocovač biosignálů. Je to součást projektu BioSig.

Základní údaje[editovat]

Verze[editovat]

Na podstránkách jsou zkušenosti s instalací, chybami či kompilací:

  • /0.1.7
  • /0.2.4
  • /0.2.6
  • 0.3.0 2010-06-16 (Ubuntu 9.10, Windows XP/Vista/7) – kompletní port Qt3 -> Qt4
  • 0.4.0 2010-07-01 (Ubuntu 10.04, Windows XP/Vista/7)
  • 0.4.1 2010-07-14 (Ubuntu 10.04, Windows XP/Vista/7)
  • 0.4.2 2010-08-10 (Ubuntu 10.04, Windows XP/Vista/7)
  • /0.4.3 2010-09-29 (Ubuntu 10.04, Windows XP/Vista/7) – switched to new libgdf
  • /0.5.0 2010-12-20 – Bug fix (memory leak) aj.

Soubory[editovat]

Dostupné na https://sourceforge.net/projects/sigviewer/files/

Binárky[editovat]

Zkompilované binárky pro různé platformy:

  • sigviewer-vvv-ubuntuuuu-i386.debUbuntu – platforma Intel 32 bit
  • sigviewer-vvv-ubuntuuuu-amd64.debUbuntu – platforma AMD 64 bit
  • sigviewer-vvv-win32.exe – Windows – platforma Intel 32 bit
  • sigviewer-vvv-macx.dmg – Mac OS X (v.10.5) – platforma Intel 32 bit

Vysvětlivky: vvv značí číslo verze uuu značí versi Ubuntu

Pomocné soubory[editovat]

Zdrojové soubory[editovat]

Zdroje, nezávislé na platformě:

  • sigviewer-vvv-rrr-src.zip

Vysvětlivky: vvv značí číslo verze rrr značí číslo release


Dokumentace[editovat]

Nachází se po rozbalení zdrojových souborů v adresáři ./doc, kde je Makefile for Sphinx documentation. Proto je nutno nainstalovat v Ubuntu balík python-sphinx.

  • přepneme se do adresáře ./doc
  • make – výběr výstupního formátu dokumentace:
    • html to make standalone HTML files
    • dirhtml to make HTML files named index.html in directories
    • singlehtml to make a single large HTML file
    • pickle to make pickle files
    • json to make JSON files
    • htmlhelp to make HTML files and a HTML help project
    • qthelp to make HTML files and a qthelp project
    • devhelp to make HTML files and a Devhelp project
    • epub to make an epub
    • latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter
    • latexpdf to make LaTeX files and run them through pdflatex
    • text to make text files
    • man to make manual pages
    • changes to make an overview of all changed/added/deprecated items
    • linkcheck to check all external links for integrity
    • doctest to run all doctests embedded in the documentation (if enabled)

Generovat jde v pohodě. Spíš je problém, že celá dokumentace patří k release 0.4.2. a je dost neúplná

Kompilace[editovat]

Vyžaduje[editovat]

  • qmake – balík qt4-qmake

Externí knihovny[editovat]

Postup[editovat]

  • instalovat vývojové prostředí Qt 4 – nejspíš balík qt4-dev-tools
  • stáhnout archiv extern pro příslušnou platformu (tj. knihovny libbiosig a libgdf) a rozbalit to do stejného adresáře, kde sídlí sigviewer.pro
  • vyrobíme si Makefile příkazem
qmake sigviewer.pro
  • spustíme
make

Problém[editovat]

cd src/ && /usr/bin/qmake /Data60G/mir/Biosig-sourceforge/sigviewer/0.4.3/sigviewer-0.4.3-r504-src/src/src.pro -unix -o Makefile
Project MESSAGE: RELEASE
cd src/ && make -f Makefile 
make[1]: Entering directory `/Data60G/mir/Biosig-sourceforge/sigviewer/0.4.3/sigviewer-0.4.3-r504-src/src'
/usr/bin/uic-qt4 gui_impl/info_widgets/power_spectrum_info_widget.ui -o ../tmp/release/ui_power_spectrum_info_widget.h
/usr/bin/uic-qt4 gui_impl/dialogs/channel_dialog.ui -o ../tmp/release/ui_channel_dialog.h
/usr/bin/uic-qt4 gui_impl/dialogs/event_time_selection_dialog.ui -o ../tmp/release/ui_event_time_selection_dialog.h
/usr/bin/uic-qt4 gui_impl/dialogs/event_type_selection_dialog.ui -o ../tmp/release/ui_event_type_selection_dialog.h
/usr/bin/uic-qt4 gui_impl/dialogs/scale_channel_dialog.ui -o ../tmp/release/ui_scale_channel_dialog.h
/usr/bin/uic-qt4 gui_impl/dialogs/event_table_dialog.ui -o ../tmp/release/ui_event_table_dialog.h
/usr/bin/uic-qt4 gui_impl/dialogs/about_dialog.ui -o ../tmp/release/ui_about_dialog.h
/usr/bin/uic-qt4 gui_impl/signal_browser/event_creation_widget.ui -o ../tmp/release/ui_event_creation_widget.h
/usr/bin/uic-qt4 gui_impl/signal_browser/event_editing_widget.ui -o ../tmp/release/ui_event_editing_widget.h
/usr/bin/uic-qt4 gui_impl/signal_browser/adapt_browser_view_widget.ui -o ../tmp/release/ui_adapt_browser_view_widget.h
/usr/bin/uic-qt4 gui_impl/event_table/event_table_widget.ui -o ../tmp/release/ui_event_table_widget.h
/usr/bin/uic-qt4 tests/tests_dialog.ui -o ../tmp/release/ui_tests_dialog.h
g++ -c -pipe -O2 -D_REENTRANT -Wall -W -DQT_NO_DEBUG_OUTPUT -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4 -I../extern/include -I. -I../tmp/release -I../tmp/release -o ../tmp/release/data_block.o base/data_block.cpp
g++ -c -pipe -O2 -D_REENTRANT -Wall -W -DQT_NO_DEBUG_OUTPUT -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4 -I../extern/include -I. -I../tmp/release -I../tmp/release -o ../tmp/release/exception.o base/exception.cpp
g++ -c -pipe -O2 -D_REENTRANT -Wall -W -DQT_NO_DEBUG_OUTPUT -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4 -I../extern/include -I. -I../tmp/release -I../tmp/release -o ../tmp/release/math_utils.o base/math_utils.cpp
g++ -c -pipe -O2 -D_REENTRANT -Wall -W -DQT_NO_DEBUG_OUTPUT -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4 -I../extern/include -I. -I../tmp/release -I../tmp/release -o ../tmp/release/signal_channel.o base/signal_channel.cpp
g++ -c -pipe -O2 -D_REENTRANT -Wall -W -DQT_NO_DEBUG_OUTPUT -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4 -I../extern/include -I. -I../tmp/release -I../tmp/release -o ../tmp/release/signal_event.o base/signal_event.cpp
g++ -c -pipe -O2 -D_REENTRANT -Wall -W -DQT_NO_DEBUG_OUTPUT -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4 -I../extern/include -I. -I../tmp/release -I../tmp/release -o ../tmp/release/FFTReal.o signal_processing/FFTReal.cpp
g++ -c -pipe -O2 -D_REENTRANT -Wall -W -DQT_NO_DEBUG_OUTPUT -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4 -I../extern/include -I. -I../tmp/release -I../tmp/release -o ../tmp/release/notch_filter8.o signal_processing/notch_filter8.cpp
In file included from signal_processing/notch_filter8.cpp:1:
signal_processing/notch_filter8.h:9:37: error: boost/circular_buffer.hpp: No such file or directory
In file included from signal_processing/notch_filter8.cpp:1:
signal_processing/notch_filter8.h: In member function ‘void SigViewer_::NotchFilter8::filterImpl(const T&, T&, int) const’:
signal_processing/notch_filter8.h:35: error: ‘boost’ has not been declared
signal_processing/notch_filter8.h:35: error: expected primary-expression before ‘double’
signal_processing/notch_filter8.h:35: error: expected ‘;’ before ‘double’
signal_processing/notch_filter8.h:37: error: ‘buffer’ was not declared in this scope
signal_processing/notch_filter8.h:42: error: ‘buffer’ was not declared in this scope
signal_processing/notch_filter8.h:48: error: ‘buffer’ was not declared in this scope
signal_processing/notch_filter8.h:53: error: ‘buffer’ was not declared in this scope
make[1]: *** [../tmp/release/notch_filter8.o] Error 1
make[1]: Leaving directory `/Data60G/mir/Biosig-sourceforge/sigviewer/0.4.3/sigviewer-0.4.3-r504-src/src'
make: *** [sub-src-make_default] Error 2
  • Vygooglím, že boost http://www.boost.org/ jsou nějaké C++ knihovny, takže mi nejspíš chybí kus té knihovny. Jaký? circular_buffer
  • Nainstaluji balík libboost-doc – je to v /usr/share/doc/libboost1.40-doc
  • /usr/share/doc/libboost1.40-doc/HTML/libs/circular_buffer/doc/circular_buffer.html
  • zkusím instalovat balík libboost1.40-all-dev
  • jo, už to proběhlo OK

Testuji – viz /bug/3084001

Použití[editovat]

Vstupní soubory[editovat]

Menu File -> Open otevře okno k vybrání signálového souboru. Uvažují se následující formáty:

  • .evt
  • .edf – European data format
  • .gdf – General Data Format for Biomedical Signals
  • .bkr
  • .cnt

Výstupní soubory[editovat]

Dle Dataformats supported by BioSig http://biosig.sf.net podporuje SigViewer pro zápis pouze formát GDF v2:

Menu[editovat]

  • File
    • Open Ctrl+O
    • Save Ctrl+S
    • Save as
    • Export events
    • Import events
    • Info Ctrl+I
    • Recent files
    • Close
    • Exit
  • Edit
    • To all channels Ctrl+A
    • Copy to channels Ctrl+P
    • Delete Ctrl+D
    • Change channel Ctrl+N
    • Change type Ctrl+T
    • Event table
  • Mode
    • New events Ctrl+1
    • Edit events Ctrl+2
    • Scroll Ctrl+3
    • Shift signal Ctrl+4
    • Zoom Ctrl+5
  • View
    • Zoom in
    • Zoom out
    • Auto Scale
    • Go To Ctrl+G
  • Options
    • Channels Ctrl+G
    • Show Events Ctrl+G
  • Help
    • Log
    • About SigViewer

bugs[editovat]

gdf2test.gdf[editovat]

Je to přiložený testovací soubor

  • délka 31400 bytes
  • informace viz File → Info
    • GDF verse 1.99
    • 6 kanálů, vzorkování 1000 Hz
    • typ dat: int16
    • délka záznamu: 10 s