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