{"id":13536836,"url":"https://github.com/obss/BIOBSS","last_synced_at":"2025-04-02T03:31:18.658Z","repository":{"id":65504899,"uuid":"567294426","full_name":"obss/BIOBSS","owner":"obss","description":"A package for processing signals recorded using wearable sensors, such as Electrocardiogram (ECG), Photoplethysmogram (PPG), Electrodermal activity (EDA) and 3-axis acceleration (ACC).","archived":false,"fork":false,"pushed_at":"2024-04-26T14:06:05.000Z","size":12398,"stargazers_count":117,"open_issues_count":9,"forks_count":22,"subscribers_count":6,"default_branch":"main","last_synced_at":"2025-03-05T19:41:23.184Z","etag":null,"topics":["acceleration","ecg","eda","electrocardiography","electrodermal-activity","feature-extraction","galvanic-skin-response","heart-rate-variability","hrv","photoplethysmography","ppg","signal-processing"],"latest_commit_sha":null,"homepage":"https://biobss.readthedocs.io/en/latest/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/obss.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-17T13:43:51.000Z","updated_at":"2025-03-04T11:17:51.000Z","dependencies_parsed_at":"2024-01-16T15:40:38.578Z","dependency_job_id":"c967b0f1-d53b-4e39-a293-b8ea41d6a199","html_url":"https://github.com/obss/BIOBSS","commit_stats":{"total_commits":139,"total_committers":6,"mean_commits":"23.166666666666668","dds":0.539568345323741,"last_synced_commit":"1febc6e7a82601e52cd8ee8ef6b5c12f50fc4f24"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obss%2FBIOBSS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obss%2FBIOBSS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obss%2FBIOBSS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/obss%2FBIOBSS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/obss","download_url":"https://codeload.github.com/obss/BIOBSS/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246751100,"owners_count":20827834,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["acceleration","ecg","eda","electrocardiography","electrodermal-activity","feature-extraction","galvanic-skin-response","heart-rate-variability","hrv","photoplethysmography","ppg","signal-processing"],"created_at":"2024-08-01T09:00:50.318Z","updated_at":"2025-04-02T03:31:13.901Z","avatar_url":"https://github.com/obss.png","language":"Python","funding_links":[],"categories":["Python","Library"],"sub_categories":[],"readme":"# \u003cdiv align=\"center\"\u003e __BIOBSS__ \u003c/div\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://pypi.org/project/biobss\"\u003e\u003cimg src=\"https://img.shields.io/pypi/pyversions/biobss\" alt=\"Python versions\"\u003e\u003c/a\u003e\n\u003ca href=\"https://pepy.tech/project/biobss\"\u003e\u003cimg src=\"https://pepy.tech/badge/biobss\" alt=\"downloads\"\u003e\u003c/a\u003e\n\u003ca href=\"https://pypi.org/project/biobss\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/biobss\" alt=\"PyPI version\"\u003e\u003c/a\u003e\n\u003cbr\u003e\n\u003ca href=\"https://github.com/obss/biobss/blob/main/LICENSE\"\u003e\u003cimg alt=\"License: MIT\" src=\"https://img.shields.io/github/license/obss/biobss\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/obss/biobss/actions\"\u003e\u003cimg alt=\"Build status\" src=\"https://github.com/obss/biobss/actions/workflows/ci.yml/badge.svg\"\u003e\u003c/a\u003e\n\u003ca href=\"https://github.com/psf/black\"\u003e\u003cimg alt=\"Code style: black\" src=\"https://img.shields.io/badge/code%20style-black-000000.svg\"\u003e\u003c/a\u003e\n\n\nA package for processing signals recorded using wearable sensors, such as Electrocardiogram (ECG), Photoplethysmogram (PPG), Electrodermal activity (EDA) and 3-axis acceleration (ACC). \n\nBIOBSS's main focus is to generate end-to-end pipelines by adding required processes from BIOBSS or other Python packages. Some preprocessing methods were not implemented from scratch but imported from the existing packages.\n\nMain features:\n\n- Applying basic preprocessing steps (*)\n- Assessing quality of PPG and ECG signals\n- Extracting features for ECG, PPG, EDA and ACC signals\n- Performing Heart Rate Variability (HRV) analysis using PPG or ECG signals\n- Extracting respiratory signals from PPG or ECG signals and estimating respiratory rate (*)\n- Calculating activity indices from ACC signals\n- Generating and saving pipelines \n\n(*): Not all methods were implemented from scratch but imported from existing packages.\n\nThe table shows the capabilites of BIOBSS and the other Python packages for physiological signal processing.\n\n\u003ctable\u003e\n  \u003cthead\u003e\n    \u003ctr\u003e\n      \u003cth style=\"text-align:center\" colspan=\"2\"\u003e\u003cb\u003eFunctionality\u003c/b\u003e\u003c/th\u003e\n      \u003cth style=\"text-align:center\"\u003eBIOBSS\u003c/th\u003e\n      \u003cth style=\"text-align:center\"\u003eBioSPPy\u003c/th\u003e\n      \u003cth style=\"text-align:center\"\u003eHeartPy\u003c/th\u003e\n      \u003cth style=\"text-align:center\"\u003eHRV\u003c/th\u003e\n      \u003cth style=\"text-align:center\"\u003ehrv-analysis\u003c/th\u003e\n      \u003cth style=\"text-align:center\"\u003epyHRV\u003c/th\u003e\n      \u003cth style=\"text-align:center\"\u003epyPhysio\u003c/th\u003e\n      \u003cth style=\"text-align:center\"\u003ePySiology\u003c/th\u003e\n      \u003cth style=\"text-align:center\"\u003eNeurokit2\u003c/th\u003e\n      \u003cth style=\"text-align:center\"\u003eFLIRT\u003c/th\u003e\n    \u003c/tr\u003e\n  \u003c/thead\u003e\n  \u003ctbody\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" colspan=\"2\"\u003e\u003cb\u003eFile reader\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003e\u0026check;\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" colspan=\"2\"\u003e\u003cb\u003eSliding window\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003e\u0026check;\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" colspan=\"2\"\u003e\u003cb\u003ePreprocessing\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003e\u0026check;\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" colspan=\"2\"\u003e\u003cb\u003ePipeline\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003e\u0026check;(*)\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" style=\"text-align:center\" rowspan=\"5\"\u003e\u003cb\u003eProcessing\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eECG\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003e\u0026check;\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" style=\"text-align:center\"\u003e\u003cb\u003ePPG\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003e\u0026check;\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" style=\"text-align:center\"\u003e\u003cb\u003eIBI / RRI\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003e\u0026check;\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" style=\"text-align:center\"\u003e\u003cb\u003eEDA\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003e\u0026check;\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" style=\"text-align:center\"\u003e\u003cb\u003eACC\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003e\u0026check;\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" style=\"text-align:center\" rowspan=\"4\"\u003e\u003cb\u003eFeature Extraction\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003eECG\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003e\u0026check;\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" style=\"text-align:center\"\u003e\u003cb\u003ePPG\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003e\u0026check;\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" style=\"text-align:center\"\u003e\u003cb\u003eEDA\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003e\u0026check;\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\" style=\"text-align:center\"\u003e\u003cb\u003eACC\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003cb\u003e\u0026check;\u003c/b\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u003c/td\u003e\n      \u003ctd align=\"center\"\u003e\u0026check;\u003c/td\u003e\n    \u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\n(*): Pipeline module differs between the two packages. BIOBSS pipeline aims to provide a more flexible and customizable pipeline for the user.\n\n__Modified from__ Föll, Simon, et al. “FLIRT: A feature generation toolkit for wearable data.” Computer Methods and Programs in Biomedicine 212 (2021): 106461.\n\nYou can also read the [blog post about BIOBSS](https://medium.com/codable/biobss-a-biological-signal-processing-and-feature-extraction-library-137f9b082634).\n\n## \u003cdiv align=\"left\"\u003e __Preprocessing__ \u003c/div\u003e\nBIOBSS has modules with basic signal preprocessing functionalities. These include:\n- Resampling\n- Segmentation\n- Normalization\n- Filtering (basic filtering functions with commonly used filter parameters for each signal type)\n- Peak detection \n\n## \u003cdiv align=\"left\"\u003e __Visualization__ \u003c/div\u003e\nBIOBSS has basic plotting modules specific to each signal type. Using the modules, the signals and peaks can be plotted using Matplotlib or Plotly packages.\n\n## \u003cdiv align=\"left\"\u003e __Signal Quality Assessment__ \u003c/div\u003e\nSignal quality assessment steps listed below can be used with PPG and ECG signals.\n- Clipping detection\n- Flatline detection\n- Physiological checks\n- Morphological checks\n- Template matching\n\n## \u003cdiv align=\"left\"\u003e __Feature Extraction__ \u003c/div\u003e\n\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth style=\"text-align:center\"\u003eSignal\u003c/th\u003e\n\u003cth style=\"text-align:center\" width=\"110\"\u003eDomain / Type\u003c/th\u003e\n\u003cth style=\"text-align:center\"\u003eFeatures\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003eECG\u003c/td\u003e\n\u003ctd align=\"center\"\u003eTime\u003c/td\u003e\n\u003ctd align=\"center\"\u003eMorphological features related to fiducial point locations and amplitudes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\" rowspan=\"3\"\u003ePPG\u003c/td\u003e\n\u003ctd align=\"center\"\u003eTime\u003c/td\u003e\n\u003ctd align=\"center\"\u003eMorphological features related to fiducial point locations and amplitudes, zero-crossing rate, signal to noise ratio\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003eFrequency\u003c/td\u003e\n\u003ctd align=\"center\"\u003eAmplitude and frequency of FFT peaks, signal power\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003eStatistical\u003c/td\u003e\n\u003ctd align=\"center\"\u003eMean, median, standard deviation, percentiles, mean absolute deviation, skewness, kurtosis, entropy\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003eVPG\u003c/td\u003e\n\u003ctd align=\"center\"\u003eTime\u003c/td\u003e\n\u003ctd align=\"center\"\u003eMorphological features related to fiducial point locations and amplitudes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003eAPG\u003c/td\u003e\n\u003ctd align=\"center\"\u003eTime\u003c/td\u003e\n\u003ctd align=\"center\"\u003eMorphological features related to fiducial point locations and amplitudes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\" rowspan=\"3\"\u003eACC\u003c/td\u003e\n\u003ctd align=\"center\"\u003eFrequency\u003c/td\u003e\n\u003ctd align=\"center\"\u003eMean, median, standard deviation, min, max, range, mean absolute deviation, median absolute deviation, interquartile range, skewness, kurtosis, energy, entropy of fft signal; fft-peak related features and signal power\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003eStatistical\u003c/td\u003e\n\u003ctd align=\"center\"\u003eMean, median, standard deviation, min, max, range, mean absolute deviation, median absolute deviation, interquartile range, skewness, kurtosis, energy, momentum of ACC signals; peak related features\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003eCorrelation\u003c/td\u003e\n\u003ctd align=\"center\"\u003eCorrelation of ACC signals of different axes\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\" rowspan=\"4\"\u003eEDA\u003c/td\u003e\n\u003ctd align=\"center\"\u003eTime\u003c/td\u003e\n\u003ctd align=\"center\"\u003eRms, acr length, integral, average power\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003eFrequency\u003c/td\u003e\n\u003ctd align=\"center\"\u003eFFT peak related features, energy, entropy of fft signal\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003eStatistical\u003c/td\u003e\n\u003ctd align=\"center\"\u003eMean, standard deviation, min, max, range, kurtosis, skewness, momentum\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003eHjorth\u003c/td\u003e\n\u003ctd align=\"center\"\u003eActivity, complexity, mobility\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n## \u003cdiv align=\"left\"\u003e __Heart Rate Variability Analysis__ \u003c/div\u003e\nHeart rate variability analysis can be performed with BIOBSS and the parameters given below can be calculated for PPG or ECG signals.\n\n\u003ctable\u003e\n\u003cthead\u003e\n\u003ctr\u003e\n\u003cth style=\"text-align:center\"\u003eDomain\u003c/th\u003e\n\u003cth style=\"text-align:center\"\u003eParameters\u003c/th\u003e\n\u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003eTime-domain\u003c/td\u003e\n\u003ctd align=\"center\"\u003emean_nni, sdnn, rmssd, sdsd, nni_50, pnni_50, nni_20, pnni_20, cvnni, cvsd, median_nni, range_nni mean_hr, min_hr, max_hr, std_hr, mad_nni, mcv_nni, iqr_nni\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003eFrequency-domain\u003c/td\u003e\n\u003ctd align=\"center\"\u003evlf, lf, hf, lf_hf_ratio, total_power, lfnu, hfnu, lnLF, lnHF, vlf_peak, lf_peak, hf_peak\u003c/td\u003e\n\u003c/tr\u003e\n\u003ctr\u003e\n\u003ctd align=\"center\"\u003eNonlinear\u003c/td\u003e\n\u003ctd align=\"center\"\u003eSD1, SD2, SD2_SD1, CSI, CVI, CSI_mofidied, ApEn, SampEn\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\n\n## \u003cdiv align=\"left\"\u003e __Activity Indices__ \u003c/div\u003e\nBIOBSS has functionality to calculate activity indices from 3-axis acceleration signals. These indices are:\n- Proportional Integration Method (PIM)\n- Zero Crossing Method (ZCM)\n- Time Above Threshold (TAT)\n- Mean Amplitude Deviation (MAD)\n- Euclidian Norm Minus One (ENMO)\n- High-pass Filtered Euclidian (HFEN)\n- Activity Index (AI)\n\nReference: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0261718\n\nThe preprocessing steps which should be applied on the raw acceleration differs for each of the activity indices listed above. In other words, each activity index can be calculated only from specific datasets. These datasets can be generated using BIOBSS both independently or as a part of activity index calculation pipeline.\n\nThe generated datasets are:\n- UFXYZ: unfiltered acc signals \n- UFM: magnitude of unfiltered acc signals \n- UFM_modified: modified magnitude of unfiltered signals (absolute(UFM-length(UFM)))\n- UFNM: normalized magnitude of unfiltered acc signals \n- FXYZ: filtered acc signals\n- FXYZ_modified: modified filtered acc signals (absolute(FXYZ))   \n- FMpre: magnitude of filtered acc signals\n- SpecialXYZ: filtered acc signals (special filter parameters)  \n- SpecialM: magnitude of filtered acc signals (special filter parameters)\n- FMpost: filtered magnitude of acc signals\n- FMpost_modified: modified of filtered magnitude of acc signals (absolute(FMpost))\n\n## \u003cdiv align=\"left\"\u003e __Respiratory Analysis__ \u003c/div\u003e\nBIOBSS has modules to perform basic respiratory analyses. The functionalities are:\n- Preprocessing PPG or ECG signals for respiratory analysis using predefined filter parameters\n- Extracting respiratory signals from modulations (amplitude modulation, frequency modulation, baseline wander) in PPG or ECG signals\n- Estimating respiratory rate from the extracted respiratory signals\n- Calculation respiratory quality indices (RQI)\n- Fusing respiratory rate estimates \n\n\n## \u003cdiv align=\"left\"\u003e __Pipeline Generation__ \u003c/div\u003e\n\nThe main focus of BIOBSS is to generate and save pipelines for signal processing and feature extraction problems. Thus, it is aimed to :\n- Simplify the preprocessing procedures by generating signal and event channels\n- Make it easy to use processes \n- Decrease the amount of work for repetitive processes and for those who work on multiple datasets\n- Make it possible to save and share pipelines to compare results of different works\n\n\u003cbr/\u003e\u003cbr/\u003e\nTo learn more, visit the [Documentation page](https://biobss.readthedocs.io/en/latest/).\n\n\n## \u003cdiv align=\"center\"\u003e Installation \u003c/div\u003e\n\nThrough pip,\n\n    pip install biobss\n\nor build from source,\n\n    git clone https://github.com/obss/biobss.git\n    cd BIOBSS\n    python setup.py install\n\n## \u003cdiv align=\"center\"\u003e Dependencies \u003c/div\u003e \n\n- neurokit2\n- antropy\n- cvxopt\n- heartpy\n- scipy\n- py_ecg_detectors\n\n\n## \u003cdiv align=\"center\"\u003e Tutorial notebooks \u003c/div\u003e\n\n- PPG Signal Processing   [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/obss/BIOBSS/blob/main/examples/ppg_processing.ipynb)\n- ECG Signal Processing   [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/obss/BIOBSS/blob/main/examples/ecg_processing.ipynb)\n- ACC Signal Processing   [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/obss/BIOBSS/blob/main/examples/acc_processing.ipynb)\n- HRV Analysis    [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/obss/BIOBSS/blob/main/examples/hrv_analysis.ipynb)\n- Respiratory Analysis    [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/obss/BIOBSS/blob/main/examples/respiratory_analysis.ipynb)\n\n\n## \u003cdiv align=\"center\"\u003e License \u003c/div\u003e\n\nLicensed under the [MIT](LICENSE) License.\n\n\n## \u003cdiv align=\"center\"\u003e Contributing \u003c/div\u003e\n\nIf you have ideas for improving existing features or adding new features to BIOBSS, please contact us. \n\n\n## \u003cdiv align=\"center\"\u003e Contributors \u003c/div\u003e\n[Çağatay Taşcı](https://github.com/tascic)\n\n[İpek Karakuş](https://github.com/karakusipek)\n\n[Devrim Çavuşoğlu](https://github.com/devrimcavusoglu)\n\n[Fatih Çağatay Akyön](https://github.com/fcakyon)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobss%2FBIOBSS","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobss%2FBIOBSS","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobss%2FBIOBSS/lists"}