{ "info": { "author": "Pedro Gomes", "author_email": "pgomes92@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Intended Audience :: Education", "Intended Audience :: Science/Research", "License :: OSI Approved :: BSD License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3" ], "description": "# opensignalsreader\nPython package to read [OpenSignals (r)evolution](http://bitalino.com/en/software) files and automatic sensor data conversion for [BITalino (r)evolution](http://bitalino.com) sensor data.\n\n**Important:** \nThis repository does not contain any code written by PLUX and/or the BITalino team. Use the [issue board of the opensignalsreader repository](https://github.com/PGomes92/opensignalsreader/issues) in case you experience any issues using opensignalsreader or if you need any support, instead of contacting PLUX.\n\n\n## Installation\nThis package can be installed using the ```pip``` tool:\n```python\npip install opensignalsreader\n```\n\n### Examples & How to Use this Package\nThis package comes with the OpenSignalsReader class which facilitates the import of sensor signals acquired using the _OpenSignals (r)evolution_ software. Additionally, it does also read and save the most important acquisition metadata.\n\nThe examples below demonstrate how to use this class to load OpenSignals files, access signals, access metadata, and how to plot the imported sensor data.\n\n#### Reading OpenSignals Files\nImport OpenSignalsReader class and read OpenSignals file ('SampleECG.txt').\n```python\n# Import OpenSignalsReader\nfrom opensignalsreader import OpenSignalsReader\n\n# Read OpenSignals file\nacq = OpenSignalsReader('SampleECG.txt')\n```\n\nNote, when using the `OpenSignalsReader` class in scripts (or other formats), use absolute file paths to ensure that the file will be found and used.\n\n#### Accessing Sensor Data\nObjects of the `OpenSignalsReader` class store raw digital sensor values and additionally their conversion into the sensor's original physical units (e.g. ECG -> mV). Use the `OpenSignalsReader.raw()` and the `OpenSignalsReader.signal()` methods to access the signals.\n\nAccessing individual sensor data (this method returns data in a NumPy array):\n```python\n# Access single sensor signal using the sensor's channel number\nacq.raw(2)\nacq.signal(2)\n\n# Access single sensor signal using the sensor's label\nacq.raw('ECG')\nacq.signal('ECG')\n```\n\nAccessing multiple sensor data (this method returns data in a dictionary with the sensor labels as keys):\n```python\n# Access multiple sensor signals using the channel numbers (here: channel 1 & 2)\nacq.raw([1,2])\nacq.signal([1,2])\n\n# Access multiple sensor signals using the sensor labels (here: channel 1 & 2)\nacq.raw(['ECG', 'EEG'])\nacq.signal(['ECG', 'EEG'])\n```\n\n#### Plotting Sensor Data\nThe OpenSignalsReader class comes with plotting features as shown below.\n\nRead OpenSignals file and plot all signals.\n```python\n# Read OpenSignals file and plot all signals\nacq = OpenSignalsReader('SampleECG.txt', show=True)\n\n# Read OpenSignals file and plot all raw signals.\nacq = OpenSignalsReader('SampleECG.txt', show=True, raw=True)\n```\nPlotting a single channel ECG signal results in the plot below.\n\n![Image](SampleECG.png)\n\nAlternatively, select the individual signals you want to plot using the `OpenSignalsReader.plot()` and the signal sensor label or channel number.\n\n```python\n# Plot ECG signal using the channel number\nacq.plot('ECG')\n\n# Plot ECG signal using the sensor label\nacq.plot(2)\n\n# Plotting multiple signals using the channel number\nacq.plot(['ECG', 'EMG'])\n\n# Plotting multiple signals using the sensor label\nacq.plot([1, 2])\n```\n\nTo plot the raw signals set the `raw` parameter to `True`.\n\n```python\n# Plot raw ECG data\nacq.plot('ECG', raw=True)\n```\n\n### BITalino (r)evolution Transfer Functions\nThis package includes the _bitalino_tf_ module which contains all available transfer functions of the current BITalino (r)evolution sensors. It is used by the _OpenSignalsReader_ class to convert raw signal samples imported from OpenSignals files into their original units.\n\nThis package can also be useful if you want to convert sensor signals within your own software when not importing signals from the OpenSignals files.\n\nBITalino sample series can be converted into their original units using the sensor's transfer function. See below how to use the functions of this module on the example of the ECG sensor.\n```python\nimport numpy as np\nimport opensignalsreader.bitalino_tf as bit\nsignal = np.loadtxt('SampleECG.txt', 'r')[:, -1]\n\n# Convert signal to mV (10-bit resolution as default resolution)\necg_signal = bit.ecg(signal)\n\n# Convert signal acquired with 6-bit sampling resolution\necg_signal = bit.ecg(signal, 6)\n```\n\nList of currently supported sensors (& datasheets):\n- [Electrocardiography (ECG)](http://bitalino.com/datasheets/REVOLUTION_ECG_Sensor_Datasheet.pdf)\n- [Electroencephalography (EEG)](http://bitalino.com/datasheets/REVOLUTION_EEG_Sensor_Datasheet.pdf)\n- [Electromyography (EMG)](http://bitalino.com/datasheets/REVOLUTION_EMG_Sensor_Datasheet.pdf)\n- [Electrodermal Activity (EDA)](http://bitalino.com/datasheets/REVOLUTION_EDA_Sensor_Datasheet.pdf)\n- [Accelerometer (ACC)](http://bitalino.com/datasheets/REVOLUTION_ACC_Sensor_Datasheet.pdf)\n- [Temperature (TEMP)](http://bitalino.com/datasheets/REVOLUTION_TMP_Sensor_Datasheet.pdf)\n- [High Definition Temperature (NTC)](http://bitalino.com/datasheets/NTC_Sensor_Datasheet.pdf)\n- [Light (LUX)](http://bitalino.com/datasheets/REVOLUTION_LUX_Sensor_Datasheet.pdf)\n- SpO2 Reader (OSL)\n- Glucose Meter Reader (GMR)\n- Blood Pressure Reader (BPR)\n- [Electrogastropraphy (EGG)](http://bitalino.com/datasheets/REVOLUTION_EGG_Sensor_Datasheet.pdf)\n- [Electrooculography (EOG)](http://bitalino.com/datasheets/REVOLUTION_EOG_Sensor_Datasheet.pdf)\n\n### Useful Links\nDetailed documentation about BITalino (r)evolution sensors can be found here:\n\nhttp://bitalino.com/en/learn/documentation\n\nBITalino (r)evolution sample files can be found here:\n\nhttps://github.com/BITalinoWorld/revolution-sample-data\n\nDownload the OpenSignals (r)evolution software from the BITalino website:\n\nhttp://bitalino.com/en/software\n\n### Important Notes\n- Please **do not sent support e-mails for the use of this package to PLUX**. This package is not part of any of PLUX's solutions, but an independent open-source package to facilitate the data import stored in OpenSignals files. Use the [issue board of this repository](https://github.com/PGomes92/opensignalsreader/issues) in case you find any issues with this package or if you need any support.\n- OpenSignals (r)evolution files in .H5 or .EDF format are not supported (yet)\n- No multi-device acquisition functions supported (yet, currently limited to a single device only) \n- Number of plotted signals is currently limited to 6 signals only\n\n### Dependencies\n- [matplotlib](https://matplotlib.org)\n- [numpy](http://www.numpy.org)\n\n### Context of this Work\nThis package is part of the master thesis \"Development of an Open-Source Python Toolbox for Heart Rate Variability (HRV)\" at the University of Applied Sciences Hamburg, Germany and PLUX wireless biosignals, S.A.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/PGomes92/opensignalsreader", "keywords": "opensignals,opensignalsreader,physiological signals,BITalino,biosignalsplux", "license": "", "maintainer": "", "maintainer_email": "", "name": "opensignalsreader", "package_url": "https://pypi.org/project/opensignalsreader/", "platform": "", "project_url": "https://pypi.org/project/opensignalsreader/", "project_urls": { "Homepage": "https://github.com/PGomes92/opensignalsreader" }, "release_url": "https://pypi.org/project/opensignalsreader/0.2.2/", "requires_dist": [ "numpy", "matplotlib" ], "requires_python": "", "summary": "Python package to read OpenSignals (r)evolution files.", "version": "0.2.2" }, "last_serial": 5368261, "releases": { "0.2.1": [ { "comment_text": "", "digests": { "md5": "cf352d57aebe394b4a857e5c12f5f7ea", "sha256": "4f9a77a6814fa71ab0d3e3dfec97ba8f11b72628c8334f104a3c72e8f808beb4" }, "downloads": -1, "filename": "opensignalsreader-0.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "cf352d57aebe394b4a857e5c12f5f7ea", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 14428, "upload_time": "2018-10-13T19:14:36", "url": "https://files.pythonhosted.org/packages/07/d1/6eec47cd01b785deafbde5193748f2afed2247fedc3bb2fdbadac6fb37e8/opensignalsreader-0.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "82d09ebc8ae366d01f3bbcd714fca789", "sha256": "f1badc7839afab565b2e7d4c820d32e910ae9dddf8eb2c494a7e1fa72ead2b64" }, "downloads": -1, "filename": "opensignalsreader-0.2.1.tar.gz", "has_sig": false, "md5_digest": "82d09ebc8ae366d01f3bbcd714fca789", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 14430, "upload_time": "2018-10-13T19:14:38", "url": "https://files.pythonhosted.org/packages/de/2a/6cf0b7b2a927bfbd1c5c57f398f927a613103cb2142c8b3b24051cf68a0c/opensignalsreader-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "c6bb72c381fc4eb9749ca5234683b7b2", "sha256": "105d973947488d298508b18bf954996703cdcf399002d359743538a7d2444721" }, "downloads": -1, "filename": "opensignalsreader-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c6bb72c381fc4eb9749ca5234683b7b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 55850, "upload_time": "2019-06-06T17:20:54", "url": "https://files.pythonhosted.org/packages/2b/02/351a98db5d9f259ec83108b2acc8aceeed6a85999cd74cb444e52f74ad4f/opensignalsreader-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2bc6ea635f4a2e44fb0431d40279bd03", "sha256": "37fe2fd789fc0d2d908bb873839690b70239ee3e1e422077fa59a7614420f603" }, "downloads": -1, "filename": "opensignalsreader-0.2.2.tar.gz", "has_sig": false, "md5_digest": "2bc6ea635f4a2e44fb0431d40279bd03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12996, "upload_time": "2019-06-06T17:20:55", "url": "https://files.pythonhosted.org/packages/ee/83/b8910447eec6ba611fa7cc99a17a5f43e4fec0da8f1a7a0df6beebf3597c/opensignalsreader-0.2.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "c6bb72c381fc4eb9749ca5234683b7b2", "sha256": "105d973947488d298508b18bf954996703cdcf399002d359743538a7d2444721" }, "downloads": -1, "filename": "opensignalsreader-0.2.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c6bb72c381fc4eb9749ca5234683b7b2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 55850, "upload_time": "2019-06-06T17:20:54", "url": "https://files.pythonhosted.org/packages/2b/02/351a98db5d9f259ec83108b2acc8aceeed6a85999cd74cb444e52f74ad4f/opensignalsreader-0.2.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2bc6ea635f4a2e44fb0431d40279bd03", "sha256": "37fe2fd789fc0d2d908bb873839690b70239ee3e1e422077fa59a7614420f603" }, "downloads": -1, "filename": "opensignalsreader-0.2.2.tar.gz", "has_sig": false, "md5_digest": "2bc6ea635f4a2e44fb0431d40279bd03", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12996, "upload_time": "2019-06-06T17:20:55", "url": "https://files.pythonhosted.org/packages/ee/83/b8910447eec6ba611fa7cc99a17a5f43e4fec0da8f1a7a0df6beebf3597c/opensignalsreader-0.2.2.tar.gz" } ] }