|   |     | 
| Linia 1: | Linia 1: | 
|  | ==[[Svarog/Users Manual/Compiling_Svarog|Compiling and running Svarog]]== |  | ==[[Svarog/Users Manual/Compiling_Svarog|Compiling and running Svarog]]== | 
|  | How to download and compile Svarog on your computer. What to expect during the first run. |  | How to download and compile Svarog on your computer. What to expect during the first run. | 
| − | 
 |  | 
| − | Svarog isn't yet really distributed as a compiled package, so it is best to use the source from the repository and compile and run.
 |  | 
| − | 
 |  | 
| − | == How to download the development version ==
 |  | 
| − | It's best to download the sources using [http://git-scm.com git].
 |  | 
| − |   git clone git://escher.fuw.edu.pl/git/svarog
 |  | 
| − | This will create directory ''svarog'' populated with the latest version.
 |  | 
| − | 
 |  | 
| − | If you can't/don't want to use ''git'', you can go to
 |  | 
| − | http://escher.fuw.edu.pl/git/svarog and download one of the ''.tar.bz2'' or ''.zip'' archives using the links on the right hand side.
 |  | 
| − | 
 |  | 
| − | ==Requirements==
 |  | 
| − | #You will need [http://maven.apache.org/ maven].
 |  | 
| − | #protoc from [http://code.google.com/apis/protocolbuffers/docs/overview.html Google Protocol Buffers] version 2.4.x
 |  | 
| − | == How to compile svarog and plugins ==
 |  | 
| − | Change into the directory <tt>svarog</tt> and execute
 |  | 
| − |  mvn clean package
 |  | 
| − | 
 |  | 
| − | This will download the necessary maven plugins
 |  | 
| − | and also some libraries needed by Svarog which are distributed separately.<BR>
 |  | 
| − | Downloaded files go by default into ''~/.m2/repository''.
 |  | 
| − | 
 |  | 
| − | This command also creates a package of Svarog complete with dependencies in one file (<code>svarog/target/svarog-0.5.0-SNAPSHOT.one-jar.jar</code>).
 |  | 
| − | 
 |  | 
| − | == How to run (svarog and plugins) ==
 |  | 
| − | In the toplevel ''svarog'' repository execute
 |  | 
| − |   mvn -pl svarog exec:java
 |  | 
| − | 
 |  | 
| − | When run as a binary, svarog accepts the following options:
 |  | 
| − | 
 |  | 
| − |  usage: /usr/bin/svarog <options>
 |  | 
| − |    -D <arg>        define java property (allowed multiple times)
 |  | 
| − |    -h,--help       display help
 |  | 
| − |    -m,--moltest    include test method
 |  | 
| − |    -R,--reset      reset workspace settings
 |  | 
| − |    -s,--nosplash   don't display splash screen
 |  | 
| − | 
 |  | 
| − | Those options can be passed to Svarog when launching Svarog using Maven by setting <tt>-Dexec.args=...</tt>. E.g.
 |  | 
| − |   mvn -pl svarog exec:java -Dexec.args=--nosplash
 |  | 
| − | 
 |  | 
| − | Some options can only be set using Java properties. When using maven to launch Svarog, properties can be set using <tt>-Dproperty=value</tt>.
 |  | 
| − | 
 |  | 
| − | Useful options include:
 |  | 
| − | 
 |  | 
| − | * <tt>log4j.debug=true</tt> debug log4j configuration. This is useful to see why logging messages are displayed (or not).
 |  | 
| − | * <tt>signalml.root</tt> specifies the location of the Svarog settings directory.
 |  | 
| − | * <tt>svarog.security_manager=enforcing/permissive/off</tt>. The default is currently <tt>off</tt>. See javadoc:org/signalml/app/SvarogSecurityManager.html for more information.
 |  | 
| − | 
 |  | 
| − | == Accessing and generating documentation ==
 |  | 
| − | Code is documented through java-docs, which can be accessed online http://signalml.org/svarog/apidocs/index.html.
 |  | 
| − | 
 |  | 
| − | This documentation can be also generated from the source tree:
 |  | 
| − |   mvn install
 |  | 
| − |   mvn javadoc:javadoc
 |  | 
| − | The generated documents are in the directory target/site/apidocs under the source tree.
 |  | 
| − | 
 |  | 
| − | == Compiling and running just Svarog ==
 |  | 
| − | If you are not working on the plugins, they don't have to be rebuilt constantly. Compile only svarog with:
 |  | 
| − |   mvn -pl svarog compile
 |  | 
| − |   mvn exec:java
 |  | 
| − | 
 |  | 
| − | == Troubleshooting ==
 |  | 
| − | === On Ubuntu 10.4 ===
 |  | 
| − | <pre>
 |  | 
| − | [INFO] Unable to find resource 'flanagan:flanagan:pom:1.0.3' in repository central (http://repo1.maven.org/maven2)
 |  | 
| − | [INFO] [compiler:compile {execution: default-compile}]
 |  | 
| − | [INFO] Compiling 1078 source files to /home/adam/svarog/svarog/target/classes
 |  | 
| − | [INFO] ------------------------------------------------------------------------
 |  | 
| − | [ERROR] BUILD FAILURE
 |  | 
| − | [INFO] ------------------------------------------------------------------------
 |  | 
| − | [INFO] Compilation failure
 |  | 
| − | Unable to locate the Javac Compiler in:
 |  | 
| − |   /usr/lib/jvm/java-6-openjdk/jre/../lib/tools.jar
 |  | 
| − | Please ensure you are using JDK 1.4 or above and
 |  | 
| − | not a JRE (the com.sun.tools.javac.Main class is required).
 |  | 
| − | In most cases you can change the location of your Java
 |  | 
| − | installation by setting the JAVA_HOME environment variable.
 |  | 
| − | </pre>
 |  | 
| − | 
 |  | 
| − | Instaling openjdk-6-jdk (sudo apt-get install openjdk-6-jdk) helps.
 |  | 
| − | [[category:Svarog]]
 |  | 
| − | 
 |  | 
| − | === On various systems ===
 |  | 
| − | <pre>
 |  | 
| − | [INFO] Compilation failure
 |  | 
| − | 
 |  | 
| − | /home/svarog/tmp/s6/svarog/target/generated-sources/org/signalml/multiplexer/protocol/SvarogProtocol.java:[11,22]
 |  | 
| − | org.signalml.multiplexer.protocol.SvarogProtocol.Variable is not
 |  | 
| − | abstract and does not override abstract method
 |  | 
| − | newBuilderForType(com.google.protobuf.GeneratedMessage.BuilderParent) in
 |  | 
| − | com.google.protobuf.GeneratedMessage
 |  | 
| − | 
 |  | 
| − | /home/svarog/tmp/s6/svarog/target/generated-sources/org/signalml/multiplexer/protocol/SvarogProtocol.java:[165,24]
 |  | 
| − | org.signalml.multiplexer.protocol.SvarogProtocol.Variable.Builder is not
 |  | 
| − | abstract and does not override abstract method
 |  | 
| − | internalGetFieldAccessorTable() in
 |  | 
| − | com.google.protobuf.GeneratedMessage.Builder
 |  | 
| − | 
 |  | 
| − | /home/svarog/tmp/s6/svarog/target/generated-sources/org/signalml/multiplexer/protocol/SvarogProtocol.java:[342,22]
 |  | 
| − | org.signalml.multiplexer.protocol.SvarogProtocol.VariableVector is not
 |  | 
| − | abstract and does not override abstract method
 |  | 
| − | newBuilderForType(com.google.protobuf.GeneratedMessage.BuilderParent) in
 |  | 
| − | com.google.protobuf.GeneratedMessage
 |  | 
| − | ...
 |  | 
| − | </pre>
 |  | 
| − | 
 |  | 
| − | <tt>protoc</tt> has wrong version. It should be 2.4.
 |  | 
| − | 
 |  | 
| − | ==Installing Svarog from a Debian package (experimental)==
 |  | 
| − | <ol><li>Put <tt>svarog.list</tt> in directory <tt>/etc/apt/sources.list.d/.</tt>:
 |  | 
| − | <source lang="bash">sudo wget -O/etc/apt/sources.list.d/svarog.list http://escher.fuw.edu.pl/debian/svarog.list </source>
 |  | 
| − | <li>Install the gpg key used to verify package signatures: 
 |  | 
| − | <source lang="bash">sudo apt-key adv --keyserver pgp.mit.edu --recv-keys 46F44D47 </source>
 |  | 
| − | or alternatively
 |  | 
| − | <source lang="bash">wget -O- http://escher.fuw.edu.pl/debian/gpg.key | sudo apt-key add - </source>
 |  | 
| − | Warning: the key will be changed, right now it is [[User:ZbyszekSzmek|my personal key]]. 
 |  | 
| − | <li>Update the list of available packages with 
 |  | 
| − | <source lang="bash">sudo apt-get update </source>
 |  | 
| − | <li>Svarog can be installed with 
 |  | 
| − | <source lang="bash">sudo apt-get install svarog </source>
 |  | 
| − | </ol>
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | '''This package does not work on UBUNTU.'''
 |  | 
| − | 
 |  | 
| − | ==Examples==
 |  | 
| − | Examples of biomedical signals that can be viewed using Svarog can be found [http://brain.fuw.edu.pl/~zbyszek/eeg/dane/ here]. One can download them using <tt>wget</tt>.
 |  | 
| − | <source lang="bash">wget -np -r -l5 -c http://brain.fuw.edu.pl/~zbyszek/dane</source>
 |  | 
| − | '''Warning''': The files are big.
 |  | 
| − | ==First run==
 |  | 
| − | During the first run of Svarog user makes important decisions about Svarog's appearance.
 |  | 
| − | # Chooses the language Svarog is going to use — either English or Polish (Fig. <xr id="rys_1"/>). [[File:Svarog 1 uruchomienie 0.png|center|thumb|500px|<figure id="rys_1"/>Choosing language]]
 |  | 
| − | # Chooses directory, where Svarog will store its configuration and files (Fig. <xr id="rys_2"/>). One can store them in <tt>signalml</tt> directory inside default home or choose custom location (Fig. <xr id="rys_3"/>).[[File:Svarog 1 uruchomienie 2.png|thumb|500px|center|<figure id="rys_2"/>Choosing location of configuration storage.]]
 |  | 
| − | # To change the chosen language it is necessary to remove the <tt>signalml</tt> directory.[[File:Svarog 1 uruchomienie 3.png|thumb|500px|center|<figure id="rys_3"/>Custom location]]
 |  | 
| − | #Before accessing Svarog GUI <xr id="rys_5"/>, one gets the final warning <xr id="rys_4"/>.[[File:Svarog 1 uruchomienie 4.png|thumb|800px|center|<figure id="rys_4"/>Final warning]][[File:Svarog_uruchomiony.png|thumb|800px|center|<figure id="rys_5"/>Svarog]]
 |  | 
| − | 
 |  | 
| − | 
 |  | 
| − | ==Disabling warnings==
 |  | 
| − | Default Svarog warnings might be annoying. In order to disable them, choose <tt>Edit -> Preferences</tt>. Open tab <tt> Miscellaneous</tt>, choose <tt>Disable serious warning dialagos for preset operations</tt> as in Fig <xr id="fig:rys_6"/>.
 |  | 
| − | 
 |  | 
| − | [[File:Svarog preferences disable warnings.png|thumb|600px|center|<figure id="fig:rys_6"/> Disabling warnings]]
 |  | 
| − | 
 |  | 
| − | ==[[Svarog/Users Manual/Loading signal|Loading signals]]==
 |  | 
| − | How to load signal:
 |  | 
| − | *[[Svarog/Users_Manual/Loading_signal/From file|from file]],
 |  | 
| − | *[[Svarog/Users_Manual/Loading_signal/Online|streamed from a port]],
 |  | 
| − | *[[Svarog/Users_Manual/Loading_signal/Online|from an amplifier]].
 |  | 
| − | ==[[Svarog/Users Manual/Viewing books|Viewing books]]==
 |  | 
| − | How to open and browse books (representations of signals obtained by [http://en.wikipedia.org/wiki/Matching_pursuit MP decomposition]).
 |  | 
| − | 
 |  | 
| − | ==[[Svarog/Users Manual/Recording|Recording signals]]==
 |  | 
| − | How to record signals using Svarog.
 |  | 
| − | ==[[Svarog/Users_Manual/Loading_signal/Montages|Montage]]==
 |  | 
| − | How to change, choose and save signal montages.
 |  | 
| − | ==[[Svarog/Users_Manual/Loading_signal/Filtering|Filtering]]==
 |  | 
| − | How to filter the signal.
 |  | 
| − | ==[[Svarog/Users Manual/Tagging signal|Tagging signals]]==
 |  | 
| − | How to tag an offline signal.
 |  | 
| − | 
 |  | 
| − | ==[[Svarog/Users Manual/FFT|Online/Offline FFT tool]]==
 |  | 
| − | How to check the frequency content using FFT.
 |  | 
| − | <!--==[[Svarog/Users Manual/Plugins|Plugins]]==
 |  | 
| − | How to check frequency content of a part of a signal.-->
 |  | 
| − | ==[[Svarog/Users Manual/MP Decomposition|Signal decomposition using Matching Pursuit]]==
 |  | 
| − | How to decompose the signal using the Matching Pursuit algorithm
 |  | 
| − | ==[[Svarog/Users Manual/Average Evoked Potentials|Average Evoked Potentials]]==
 |  | 
| − | How to compute Average Evoked Potentials using Svarog.
 |  | 
| − | ==[[Svarog/Users Manual/Stager|Automatic sleep staging]]==
 |  | 
| − | How to automatically stage sleeps EEG, obtaining a polysomnogram.
 |  | 
| − | ==[[Svarog/Users Manual/Artifact|Automatic artifact detection]]==
 |  | 
| − | How to perform automatic EEG artifact detection using Svarog.
 |  | 
| − | ==[[Svarog/Users Manual/Presets|Preset interface in Svarog]]==
 |  | 
| − | Saving configuration and settings in Svarog.
 |  | 
| − | ==[[Svarog/Users Manual/Export to EEGLab|Export to EEGLab]]==
 |  | 
| − | Svarog allows to export the currently opened signal to EEGLab.
 |  | 
| − | 
 |  | 
| − | ==How to==
 |  | 
| − | #[[Svarog/Users Manual/Change electrode names|Change electrode names]].
 |  | 
| − | #[[Svarog/Users Manual/Check signal|Check quality of the signal received online]].
 |  | 
| − | [[Category:Svarog - User manual]]
 |  | 
| − | #[[Svarog/Users Manual/Add cap type|Add EEG cap type]]
 |  | 
| − | <!--Mostly self-explanatory, yet contributions of users are surely welcome! :-)
 |  | 
| − | 
 |  | 
| − | === Filters-design-window attributes (in Polish by now) ===
 |  | 
| − | no więc, jak jest filtr, to on ma passband (pasmo częstotliwości, które 
 |  | 
| − | przepuszcza) i stopband (pasmo częstotliwości, które filtr tłumi).
 |  | 
| − | W przypadku filtru dolno/górnoprzepustowego jest po jednym takim paśmie, 
 |  | 
| − | w przypadku pasmowoprzepustowego jest jedno pasmo przepustowe i dwa 
 |  | 
| − | zaporowe, w przypadku zaporowego jest jedno pasmo zaporowe, dwa 
 |  | 
| − | przepustowe.
 |  | 
| − | 
 |  | 
| − | Stopband attenuation [dB] - jak bardzo mają być tłumione wszystkie 
 |  | 
| − | częstotliwości z pasma zaporowego (np. 40 dB)
 |  | 
| − | 
 |  | 
| − | passband ripple [dB] - jakie mogą być wahania tłumienia w paśmie 
 |  | 
| − | przepustowym (idealnie by było, gdyby pasmo przepustowe nie było nigdy 
 |  | 
| − | wcale tłumione, no ale filtrom jest 'łatwiej', żeby były jakieś wahania 
 |  | 
| − | w tym, że w niektórych częstotliwościach sobie trochę potłumią, tak ze 3 
 |  | 
| − | dB).
 |  | 
| − | 
 |  | 
| − | pomiedzy pasmem zaporowym a przepustowym jest zawsze pasmo przepustowe - 
 |  | 
| − | czestotliwosci należące do niego nie są ani tak stłumione, jak chcemy 
 |  | 
| − | ustawiając stopband attenuation, ani nie są tak dobrze przepusczzane jak 
 |  | 
| − | chce passband ripple.
 |  | 
| − | 
 |  | 
| − | passband edge frequencies - skrajne częstotliwości z pasma przepustowego 
 |  | 
| − | (z jednej strony stykaja sie z pasmem przepustowym, a z drugiej z pasmem 
 |  | 
| − | przejsciowym)
 |  | 
| − | stopband edge frequencies - skrajne częstotliwości z pasma zaporowego (z 
 |  | 
| − | jednej strony stykają się z pasmem zaporowym, a z drugiej z pasmem 
 |  | 
| − | przejściowym).
 |  | 
| − | 
 |  | 
| − | odległość pomiędzy passband edge frequency a stopband edge frequency to 
 |  | 
| − | pasmo przejsciowe - im większe, tym niższy rząd filtra. 0.5 Hz to trochę 
 |  | 
| − | za mało, butterworth sobie nie poradzi, ellip może już bardziej.
 |  | 
| − | 
 |  | 
| − | aha - zawsze trzeba sobie sprawdzić, czy projektant poradził sobie z 
 |  | 
| − | parametrami - przy zbyt restrykcyjnych parametrach - wąskie pasmo 
 |  | 
| − | (pasma) przejściowe, wysokie tłumienie w paśmie zaporowym (stopband 
 |  | 
| − | attenuation), niskie tłumienie w paśmie - on może bez ostrzeżenia 
 |  | 
| − | zaprojektować filtr, który nie zadziała - widać to wtedy na wykresie, 
 |  | 
| − | który wygląda słabo, dlatego trzeba sobie sprawdzać wykresy do 
 |  | 
| − | filtrów.
 |  | 
| − | 
 |  | 
| − | === How to add in-built standard filters to standar-filters-list (in Polish by now) ===
 |  | 
| − | jest taki plik AbstractSignalTypeConfigurer.java i tam są pododawane.
 |  | 
| − | 
 |  | 
| − | np.
 |  | 
| − | 
 |  | 
| − | filters.add(new TimeDomainSampleFilter(FilterType.LOWPASS, ApproximationFunctionType.BUTTERWORTH, new double[] {20, 0}, new double[] {30, 0}, 5.0, 20.0));
 |  | 
| − | 
 |  | 
| − |  
 |  | 
| − | 
 |  | 
| − |  
 |  | 
| − | 
 |  | 
| − | parametry to:
 |  | 
| − | 
 |  | 
| − | -typ filtra
 |  | 
| − | 
 |  | 
| − | - rodzina
 |  | 
| − | 
 |  | 
| − | - tablica częstotliwości granicznych pasma przepustowego
 |  | 
| − | 
 |  | 
| − | - tablica częstotliwości granicznych pasma zaporowego
 |  | 
| − | 
 |  | 
| − | - wahania w paśmie przepustowym
 |  | 
| − | 
 |  | 
| − | - wymagane tłumienie w paśmie zaporowym
 |  | 
| − | 
 |  | 
| − |  
 |  | 
| − | 
 |  | 
| − | jak robisz lowpassa/highpassa to z w tych tablicach ważny jest tylko pierwszy element, ale drugi też wpisz (np. 0).
 |  | 
| − | 
 |  | 
| − |  
 |  | 
| − | 
 |  | 
| − | Czasem się robi błąd - człek robi np lowpassa, a częstotliwość graniczna pasma przepustowego ustawia większą niż częstotliwość graniczna pasma zaporowego (czyli w częstotliwościach jest highpass, a w parametr pierwszy mówi, że to highpass) i analogiczne błedy dla bandpassów itd. W GUI takie coś jest zablokowane, ale w kodzie można to wpisać.
 |  | 
| − | [[category:Svarog]]-->
 |  |