Skip to main content

NiMBaLWear wearable device data processing pipeline.

Project description

nimbalwear

nimbalwear is an open source toolkit for processing data from wearable sensors.

Contents

  • Under construction

Installation

To install the latest release of nimbalwear directly from GitHub using pip, run the following line in terminal or console:

pip install git+https://github.com/nimbal/nimbalwear

To install a specific release, insert M.m after the repository name to install from the branch associated with that minor release. For example:

pip install git+https://github.com/nimbal/nimbalwear@0.21

Package Dependency

To include the latest release of nimbalwear as a dependency in your Python package, include the following line in setup.py or include the string within the list alongside your other dependencies:

install_requires=['nimbalwear@git+https://github.com/nimbal/nimbalwear@[version]']

To include a specific release, replace [version] with the branch associated with that minor release.

Changes by version

v0.21.8

  • update version dependencies for numpy < 2, matplotlib < 3.9
  • bug fix: resolved start_time inaccuracy for Axivity devices when using fractional timestamps

v0.21.7

  • bug fix: resolved error in collection report if no sync events
  • bug fix: resolved sync event naming issue based on device location in collection report
  • bug fix: fixed logic for including supp_info files with or without password protection
  • updated to require numba v0.59.0 or higher for Python 3.12 compatibility
  • added "create" parameter to Study to give option to create new study folder
  • added Study.sync_raw() method to sync files from raw_source_dir folder
  • moved supp_pwd parameter from Study.__init__() to Study.run_pipeline()

v0.21.6

  • bug fix: resolve error in collection report when not all possible device locations collected

v0.21.5

  • add collection report
  • change vertdetach references to nimbaldetach
  • bug fix: remove all Nonin file capabilities to resolve textract/six issues with Python 3.12

v0.21.4

  • add get_timestamps method to Device object
  • bug fix: error when dataframes not created if data does not exist
  • bug fix: error creating nonwear bouts dataframe if no nonwear detected
  • bug fix: dropping rejected syncs if none detected

v0.21.3

  • update vertdetach version
  • update compatibility with pyedflib v1.0.34 (sex header field and sample_frequency)
  • bug fix: datetime conversion when reading nonwear csv
  • bug fix: add flatten-dict to setup.cfg

v0.21.2

  • bug fix: indexing issue caused states to sometimes be skipped
  • bug fix: start date calculation for multiple gait devices

v0.21.1

  • fixed MANIFEST.in bug

v0.21.0

  • reorganized gait module code

v0.20.1

  • adjust start time moved to before sync

v0.20.0

  • add autocal offset and scale outputs
  • option to save separate sensor EDF files after data prep
  • move settings dump from log into separate file
  • rename Pipeline class to Study
  • separate default, study, and custom pipeline settings
  • some missing data handled and reported as warning instead of raising exception
  • bug fix: all filters now dual pass
  • separate sync event and segments into separate folders
  • syncs detected from any axis rather than choosing those from one axis
  • include config sync in sync list
  • add ref device type and location to sync output

v0.19.8

  • bug fix: properly handles Axivity devices with no gyro collected

v0.19.7

  • bug fix: instead of error, sync returns empty DataFrame when no syncs detected or matched
  • bug fix: fix bug where sync plots aren't displayed

v0.19.6

  • bug fix: ensure physical_min < physical_max when writing edf

v0.19.5

  • bug fix: properly detects sleep bouts when entire SPTW is sleep

v0.19.4

  • added utility to read password protected excel files

v0.19.3

  • bug fix: adjust filter order in activity module
  • bug fix: fix error when trying to run activity module with no sleep detected

v0.19.2

  • bug fix: properly calculates sample indices to be removed - no longer attempts to remove sample beyond end of window

v0.19.1

  • add minimum correlation option for sync
  • bug fix: references to settings.json instead of settings.toml on install

v0.19.0

  • subjects.csv renamed to collections.csv and coll_id column added
  • settings.toml replaces settings.json
  • moved config_time check to only occur on first device in sync and display appropriately in log
  • activity analysis now done for all wrist devices available with options to select cutpoints
  • Pipeline.add_custom_events() provides ability to add or replace custom events from csv
  • can specify separate non-wear detection parameters for ankle, wrist, and trunk devices

v0.18.3

  • change search radius to minutes
  • fix bug in plot if sync is near end of sync radius
  • fix assignment bug if search radius is not set

v0.18.2

  • fix bug where pipeline tries to autocalibrate data from file that wasn't found

v0.18.1

  • fix bug when sync search radius falls outside target collection time

v0.18.0

  • insert wear bouts between nonwear bouts (added event column)

v0.17.3

  • fixed bug excluding sleep windows to exclude from activity

v0.17.2

  • accel step detection uses gait_stats for summary

v0.17.1

  • rename start_timestamp and end_timestamp to start_time and end_time in gait

v0.17.0

  • rename "feedback report"
  • add daily non-wear summary
  • crop non-wear from start of collection
  • separate sedentary detected from wrist data while walking from other sedentary
  • option to classify sptw and sleep bouts as 'overnight'

v0.16.3

  • handle Bittium file import if header is imperfect
  • add sync search radius

v0.16.2

  • activity fixes
    • output 1-second avm
    • fix hard-coded epoch_length

v0.16.1

  • add accel_std_thresh_mg as nonwear setting in JSON file
  • check for accelerometer signals before autocal
  • fix Nonin device data import bugs
  • fix missing gait pushoff data bug

v0.16.0

  • updated filtering and vm calculation for activity calculation (faster)
  • renamed Data object to Device
  • added autocalibration of accelerometers
  • added relevant functions from nwdata, nwnonwear, nwgait, nwsleep, nwactivity, and nwapp as data.py, nonwear.py, gait.py, sleep.py, activity.py and app.py modules
  • tidy sync outputs
  • add option to provide alternative settings.json file
  • new processing log for each collection
  • output settings to log

v0.15.2

  • update to nwdata v0.9.2 (much faster file reading and writing)
  • update to nwgait v0.4.2
  • new processing log for each run call

v0.15.1

  • fix package setup files

v0.15.0

  • add option to adjust start time of device on convert
  • update to nwnonwear v0.2.0 that uses vertdetach package
  • allow choice between accel and gyro step detection
  • update pandas append to concat

v0.14.2

  • bug fix: non-wear end detection windows in proper direction (nwnonwear v0.1.3)
  • bug fix: non-wear detection accounts for temperature frequency in rate of change (nwnonwearv0.1.3)

v0.14.1

  • add option to lowpass data before activity calculations (nwactivity v0.2.1)
  • bug fix: does not count activity during nonwear or sleep (nwactivity v0.3.0)

v0.14.0

  • add option to synchronize devices on convert (nwdata v0.9.0)
  • select activity cutpoints based on age (nwactivty v0.2.0)
  • bug fix: dominant hand from subjects.csv no longer case sensitive

v0.13.0

  • gyro step detection for gait

v0.12.0

  • nwdata v0.8.0 update
    • add option to crop NWData inplace
    • add read_header method to CWAFile
    • add rotate_z method to rotate accelerometer and gyroscope data around z axis
    • adjust Bittium accelerometer signals to g instead of mg
    • restructure NWData header

v0.11.1

  • create separate file for rejected steps
  • bug fix: only include single device in cropped nonwear csv
  • bug fix: report correct steps detected in log file
  • bug fix: do not allow sleep and nonwear to overlap (nwsleep v0.3.1)
  • bug fix: dedicated logger based on study code

v0.11.0

  • reorganized Pipeline and Collection classes
  • moved many settings to settings.json file
  • read and convert split so convert can be tracked by status
  • update to nwdata v0.7.2
  • adjust gait algorithm and vertical axis detection (nwgait v0.3.0)
  • bug fix: quiet variable is passed to edf export function

v0.10.0

  • modify collection loop to only perform collections included in device list
  • create cropped non-wear time file
  • bug fix: file duration calculation while cropping (nwdata v0.7.1)

v0.9.0

  • updated to nwdata v0.7.0 to incorporate multiple changes
    • convert to ndarray before write with pyedflib (bug)
    • handle Bittium Faros 360 and variable signals
    • update device type codes
  • Modify device and sensor logic to match nwdata v0.7.0
  • bug fix: axis selection during gait detection (nwgait v0.1.4)

v0.8.0

  • add option to run daily sleep stats on all sptw that contain sleep (nwsleep v0.3.0)

v0.7.2

  • add option to select axis used to detect gait
  • add daily_all sleep stats output
  • bug fix: convert device locations to upper case when selecting devices
  • bug fix: add column names to steps table if none found (workaround)
  • bug fix: check for minimum usable data and candidate sptw and sleep bouts before continuing processing (nwsleep v0.2.2)

v0.7.1

  • update pyedflib for all required packages

v0.7.0

  • add mechanism to add data dictionaries to output folders
  • ignore non-wear when detecting sleep period time windows (nwsleep v0.2.0)
  • run t5a5 and t8a4 sleep bout detection
  • require pyedflib v0.1.22

v0.6.0

  • add non-wear detection for Axivity devices (AXV6) (nwnonwear v0.1.2)
  • interpolate inserted values when correcting clock drift or sample rate (nwdata v0.5.0)
  • faster GENEActiv read and progress bars on clock drift correct (nwdata v0.6.0)
  • adjust device selection logic for activity, gait, sleep analytics

v0.5.0

  • update nwdata to require v0.4.0
    • fixes bug where startdate not updated when cropping NWData
    • adds method to get day indices of a signal
  • add subjects.csv
  • add sleep detection and analysis (nwsleep v0.1.0)
  • fix bug where errors during collection not logged correctly

v0.4.0

  • update nwactivity to require v0.1.1 (remove mvpa from daily summary)
  • update nwgait to require v0.1.2 (add daily gait summary)
  • add daily gait summary output
  • add pipeline status tracking
  • renames EDF files to standard names based on information from devices.csv
  • loads data only required devices for single stage
  • add support for Axivity AX6 devices (update nwdata to require v0.3.0)

v0.3.0

  • add gait processing (nwgait v0.1.0)
  • add unexpected error handling with traceback output to log
  • add activity processing (nwactivity v0.1.0)
  • add study_code as an identifier for all generated data
  • add nonwear_bout_id to nonwear output (nwnonwear v0.1.1)

v0.2.0

  • add nonwear processing (nwnonwear v0.1.0)
  • add option to process only a single stage of the pipeline

v0.1.1

  • update nwdata to require v0.1.2

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nimbalwear-0.21.8.tar.gz (89.7 kB view details)

Uploaded Source

Built Distribution

nimbalwear-0.21.8-py3-none-any.whl (92.3 kB view details)

Uploaded Python 3

File details

Details for the file nimbalwear-0.21.8.tar.gz.

File metadata

  • Download URL: nimbalwear-0.21.8.tar.gz
  • Upload date:
  • Size: 89.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for nimbalwear-0.21.8.tar.gz
Algorithm Hash digest
SHA256 d7af92944fd7b95d662afe8218196174d40ecc8cb14c553964e018273897ad98
MD5 5ca49dc77eb80d0a067ea1ea6b1682cd
BLAKE2b-256 6c121b0bb9218021101b9a7b8d23a034d3192c879dff8873b475b824794e4a33

See more details on using hashes here.

File details

Details for the file nimbalwear-0.21.8-py3-none-any.whl.

File metadata

  • Download URL: nimbalwear-0.21.8-py3-none-any.whl
  • Upload date:
  • Size: 92.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for nimbalwear-0.21.8-py3-none-any.whl
Algorithm Hash digest
SHA256 f5286dbd8340249f7b1ac2e0b122660b7fa7517f8edf6f0b8f6561a9c1dd9f58
MD5 748c52d8e9a2d0f7923bf879940a78de
BLAKE2b-256 44eede294a74c977ff58a01f85c6800e7162e4d1a012f1c9406338ba713cd48d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page