1Introduction:
2=============
3
4The aim of this repository is providing a software library for biomedical signal processing.
5Biosig consists of the following parts:
6(1) "Biosig for Octave and Matlab" and
7(2) "Biosig for C/C++" provides libbiosig, and several command line tools
8(3) binding of libbiosig to the following programming languages:
9 Python, Mathematica, Matlab/Octave, Java, and R.
10
11== Installation ==
12
13The build and installation is quite flexible, and will adapt to your configuration. If numpy/libpython-dev
14is available, the biosig language binding for python will be installed. The same is try
15for Octave, Matlab, Mathematica, R, and Java.
16
17--- Recommended packages at compile time ---
18
19 apt-get install \
20 gawk \
21 libb64-dev tinyxml-dev libdcmtk-dev \
22 liboctave-dev octave \
23 python-numpy python3-numpy \
24 python-setuptools python3-setuptools \
25 libpython-dev libpython3-dev \
26 R texlive-fonts-extra \
27 default-jdk
28
29--- Recommended packages at runtime ---
30 apt-get install \
31 libb64 tinyxml libdcmtk14 \
32 python-numpy python3-numpy \
33 R default-jre \
34 octave octave-tsa octave-nan octave-signal octave-statistics
35
36
37Installing Biosig from source is as simple as
38 ./configure
39 make
40 sudo make install
41
42This should install libbiosig and als biosig command line tools like
43
44 save2gdf
45 biosig_fhir
46 physicalunits
47
48Depending on your software configuration, also language bindings to
49 Matlab, Octave, Python, Java, R, Mathematica
50might be installed. If you have python/numpy/libpython-dev installed, also biosig for python will be installed.
51If you have Octave/liboctave-dev installed, also mexbiosig will be installed in octave.
52
53However there are some known (and probably also unknown) limitations. Known limitations are
54- Java language binding does not compile on MacOSX
55- Cross compilation for Windows does not work (except for Matlab and Mathematica language bindings)
56
57
58
59
60BioSig4C++ provides several tools:
61
62(1) = LIBRARIES =
63(1a) "libbiosig" provides a library for accessing different dataformats.
64The supported data formats are listed here:
65 http://pub.ist.ac.at/~schloegl/biosig/TESTED
66(1b) "libgdf" is a lightweight version of libbiosig, supporting only the GDF format.
67it requires only GCC not G++ for linking, has potentially much less security loopholes (XML) and bugs,
68and a much smaller memory footprint, which might be especially useful for embedded devices.
69It's interface is the same than for libbiosig, namely biosig.h
70(1c) "libphysicalunits" provides conversion tools for physical units from
71ascii text to 16bit integers according to ISO/IEEE 11073-10101:2004 Table A.6.3: Vital signs units of measurements
72text strings are cached for performance reasons, and can be used in a multi-threaded application.
73
74* Installation of official source release (for users):
75 download source release and run
76 see above
77
78
79* Installation from git repository (for developers, usually untested):
80 Requirement: gawk
81 ** Checkout code for the first time:
82
83 git clone https://git.code.sf.net/p/biosig/code biosig-code
84 cd biosig-code
85 autoconf # needed only the first time after checkout
86 ./configure
87 make
88 sudo make install
89
90 ** next time just update latest changes
91
92 git pull
93 autoreconf -fi # usually this can be omitted
94 ./configure # usually this can be omitted
95 make
96 make install
97
98
99For doing some advanced (special) configurations, you can modify these flags in Makefile.in
100
101(2) = converter and tools =
102contains several tools for data conversion,
103 save2gdf: is a converter between different file formats, including but not limited to
104 SCP-ECG(EN1064), HL7aECG (FDA-XML), GDF, EDF, BDF, CWFB and others
105 save2gdf can be also used to upload or retrieve data
106 from a bscs server, and to display the header information
107 in ascii and in JSON format.
108 biosig2fhir: is a tool than converts biosig data into a hl7/fhir binary template,
109 the header information is encoded in JSON format, the data is converted
110 into a base64-encoded GDF (OeNorm K2202:2015) formatted file.
111 physicalunits: is a tool to show the encoding of physical units according to ISO/IEEE 11073
112
113These can can be build with:
114 make tools
115
116
117(3) language bindings and foreign function interfaces:
118(3a) "mexSLOAD" is a MEX-interface for Octave and Matlab
119and is linked statically to libbiosig. It can be build with
120 make mex4o # octave
121 make mex4m # matlab
122for details see mex/README.
123
124(3b) "python" is an interface to python and dynamically linked to libbiosig.
125Requirement: python, python-dev, python-numpy
126for Debian/Ubuntu:
127 sudo apt-get install python python-dev python-numpy python-setuptools
128 sudo apt-get install python3 python3-dev python3-numpy python3-setuptools
129It can be build with any of the following commands:
130 make python
131 make -C biosig4c++/python build
132 make -C biosig4c++/python release
133For installation, you can than do either
134 cd biosig4c++/python && python setup.py install
135 cd biosig4c++/python && python3 setup.py install
136or
137 python -m pip install python/dist/Biosig-2.1.1.tar.gz
138 python3 -m pip install python/dist/Biosig-2.1.1.tar.gz
139Use of the interface is shown in ./python/demo2.py
140
141
142(3c) mathematica
143is linked dynamically to libbiosig and can be build with:
144 make mma
145see also biosig4c++/mma/README, and biosig4c++/mma/biosig, biosig4c++/mma/hdrinfo.nb, biosig4c++/mma/mySLOAD.nb for more details.
146
147(3z) other language interfaces
148Basic interfaces for R and Java are also available. For other languages
149(including PHP, Perl and TCL) are considered, but these still need to be implemented and tested.
150
151
152(5) Biosig tools for Matlab and Octave
153The easiest approach is to change into the directory
154 cd biosig4matlab
155and run "install" from within Matlab or Octave. This will set the path to the subdirectories.
156
157
158(6) Precompiled binaries for Win32 and Win64
159 biosig4c++/win##/save2gdf.exe binary converter
160 biosig4c++/win##/libbiosig.{lib,dll} static and dynamic library (requires zlib and libws2_32)
161 biosig4c++/mma/biosig.exe Mathematica binding through Mathlink interface
162 biosig4c++/mex/mexSLOAD.mexw32 Mex-file for Win32/Matlab
163
164
165The internal data structure resemble the header structure similar to
166 https://sourceforge.net/p/biosig/code/ci/master/tree/biosig4matlab/doc/header.txt
167and is defined in
168 https://sourceforge.net/p/biosig/code/ci/master/tree/biosig4c++/biosig-dev.h
169(see HDRTYPE and CHANNEL_TYPE)
170
171Encoding of Event/Markers/Annotations is available here:
172 http://pub.ist.ac.at/~schloegl/matlab/eeg/EventCodes.html
173
174The latest list of supported data formats is available here:
175 http://pub.ist.ac.at/~schloegl/biosig/TESTED
176
177
178File(s):
179-------------
180 README this file
181 biosig.h definition of external biosig interface
182 biosig-dev.h definition of internal functions
183 biosig.c SOPEN, SREAD, SWRITE, SEOF, SCLOSE functions
184 save2gdf.c converter between various file formats.
185 physicalunit.c en-/decodes physical units according to ISO/DIS 11073-10101:2003
186 mexSLOAD.cpp is a MEX-File for loading data in Octave and Matab.
187 t210/* reading SCP,FAMOS file format
188 t220/* writing SCP file format
189 t230/* support of HL7aECG file format
190 t240/* Support for CNSystems' File Exchange Format (CNS-FEF), note this is different to CENTS14271 in t241/
191 t241/*.asn1 ASN.1 specification of ISO11073-xxxxx and CENTS-14271 (FEF),
192 test0/* scripts and functions for testing
193 Makefile script for compiling and testing under GNU/Linux
194 Makefile.win32 script for compiling and testing on win32 using mingw
195 mex/* Octave/Matlab binding through MEX-interface
196 mma/* MathLink interface to mathematica
197 win32/* library and executables for Windows
198 python/*.py show example and demo
199 src/*.c applications: flowmon reads data from serial port, ttl2trig reads data from audio card
200
201
202More information is available at http://biosig.sf.net/
203
204If you have any questions you can also contact the mailinglist
205https://lists.sourceforge.net/lists/listinfo/biosig-general
206
207
208 Copyright (C) 2005-2020 Alois Schloegl <alois.schloegl@gmail.com>
209 This function is part of the BioSig repository at http://biosig.sf.net/
210
211