Storage structures for signals (mostly physiological data), metadata and event annotations
Project description
Physio Cassette: Storage structures for signals, metadata and event annotations
Managing signals in physiology and associated metadata can be a pain.
You want abstraction, but not much from any underlying Numpy array holding them.
You want annotations in signals, but not obscure proprietary representations.
Physio Cassette is just that: Numpy arrays and dictionaries with flair. Physio Cassette provides also automatic caching operations using pickle and matlab storage
Basic data structures
- Signal: a numpy array with associated sampling frequency, timestamps and minor metadata. Zero-cost abstraction, the data can be accessed directly
- EventRecord: a class for time annotated events based on traces TimeSeries with support for binary, trains, and multilevel events
Signals can be iterated using EventRecord events as anchor points and viceversa Events can be converted to a sampled Signal
Containers
- DataHolder: your box of cables based on Python dictionary. Parent class of SignalFrame and EventFrame.
- SignalFrame: A container for Signal data structures.
- EventFrame: A container for EventRecord structures, with support to merge operations (e.g. events annotated across multiple channels).
Supported Inputs
Physio-cassette aims to support seamlessly different file and data formats. All parsers can be customized without additional code to support more exotic / less interoperable data representations.
XML format is currently based on NSRR interpretation of data annotations.
Some functionalities will be added in the future. Other format specific features (e.g. physical/digital ranges in EDF and WFDB) are absent on purpose.
Structure | Numpy arrays | CSV/columnar files | Matlab files | EDF files | Physionet WFDB | XML |
---|---|---|---|---|---|---|
Signal | YES | YES | (use SignalFrame) | (use SignalFrame) | ||
SignalFrame | YES | YES (1 file/signal) | YES | YES | ||
EventRecord | YES | YES | YES | YES | ||
EventFrame | (use EventRecords) | YES | YES | YES |
Caching
To cache an operation simply do:
from physio_cassette import autocache
def your_function(x:int) -> bool:
# Some long operation you want to cache
return True
result = autocache(your_function, '~/path_to_cache_folder', 'desired_cache_file')(1)
Installation
To install PhysioCassette run:
$ pip install physio_cassette
Dependencies
- Numpy
- Scipy (Matlab IO)
- traces
- openpyxl-dictreader (excel files IO)
- xlrd (old excel format)
- pyedflib
- pymatreader
- dateutil
- wfdb
- xmltodict
Contributing
Looking for people more experienced in writing unit tests and overall beta-testers to help with the reliability of the library
If you feel generous and this library helped your project:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file physio_cassette-0.2.7.tar.gz
.
File metadata
- Download URL: physio_cassette-0.2.7.tar.gz
- Upload date:
- Size: 27.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3b9da7ffff994a0340bb3418938b0350c64d18fc2ac271b6a6f4bb69d1c922cc |
|
MD5 | 03e8417545ccb7012f48f163e5aaf6c1 |
|
BLAKE2b-256 | 251268787292454e8cc8e3dccec6e282108f6ee3399f468a3d05ff1545e664f7 |
File details
Details for the file physio_cassette-0.2.7-py3-none-any.whl
.
File metadata
- Download URL: physio_cassette-0.2.7-py3-none-any.whl
- Upload date:
- Size: 22.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.18
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b39ab17faec7d69c824d494ccf9d78ef7ab5dbbfdf3d22791740c9fae76ee3b5 |
|
MD5 | 81cf047738e71d57a4ec583ad8afc7af |
|
BLAKE2b-256 | a228d7d2a23410a46edb8d21f738a77f0098780c85544d9f51088aa75e84d053 |