{"id":22155906,"url":"https://github.com/citiususc/qrsdel","last_synced_at":"2025-07-26T07:32:28.177Z","repository":{"id":30321075,"uuid":"33873328","full_name":"citiususc/qrsdel","owner":"citiususc","description":"A noise robust QRS delineation algorithm","archived":false,"fork":false,"pushed_at":"2016-11-22T15:13:58.000Z","size":1136,"stargazers_count":11,"open_issues_count":0,"forks_count":9,"subscribers_count":6,"default_branch":"master","last_synced_at":"2024-04-16T11:35:33.472Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/citiususc.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}},"created_at":"2015-04-13T14:28:36.000Z","updated_at":"2019-08-24T05:39:02.000Z","dependencies_parsed_at":"2022-08-02T13:13:43.708Z","dependency_job_id":null,"html_url":"https://github.com/citiususc/qrsdel","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/citiususc%2Fqrsdel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/citiususc%2Fqrsdel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/citiususc%2Fqrsdel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/citiususc%2Fqrsdel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/citiususc","download_url":"https://codeload.github.com/citiususc/qrsdel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227660728,"owners_count":17800409,"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":[],"created_at":"2024-12-02T02:32:57.042Z","updated_at":"2024-12-02T02:32:57.794Z","avatar_url":"https://github.com/citiususc.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# qrsdel\nThis project provides the implementation of a noise robust multi-lead QRS\ndelineation algorithm on ECG signals. A full description of the algorithm\nis detailed in [this paper](http://www.cinc.org/archives/2015/pdf/0209.pdf)\npresented in the [2015 Computing in Cardiology conference](http://www.cinc.org/archives/2015/).\nIt is recommended to be familiar with the \n[WFDB software package](http://www.physionet.org/physiotools/wfdb.shtml) \nin order to fully exploit this package.\n\n## Installation\n\nThis project is implemented in pure python, so no installation is required.\nHowever, there are strong dependencies with the following python packages:\n\n1. [sortedcontainers](https://pypi.python.org/pypi/sortedcontainers)\n2. [scipy](https://pypi.python.org/pypi/scipy)\n3. [numpy](https://pypi.python.org/pypi/numpy)\n\nMoreover, if you want to use **qrsdel** as a standalone application, it is\nnecessary to have access to a proper installation of the WFDB software\npackage.\n\nOnce all these dependencies are satisfied, is enough to download the project\nsources and execute or import the proper python scripts, as explained in the\nnext section.\n\n## Getting Started\n\n### qrsdel as a standalone application:\n\n**qrsdel** can be used directly from the command line in order to perform the\ndelineation of a set of previously detected QRS complexes in a signal file in the\n[WFDB format](http://www.physionet.org/physiotools/wag/wag.htm). To do this,\nsimply enter the following command from the root *qrsdel* directory:\n\n```\npython -m qrsdel.qrsdel [-h] -r RECORD -a REF -o OUTPUT\n  -r RECORD   Input record.\n  -a REF      Annotator name containing reference QRS annotations.\n  -o OUTPUT   Annotator name where the delineation results are stored.\n```\n\nThis action loads the `RECORD` record and the QRS annotations from the\nannotations file with `REF` extension, and generates a new annotations file\nwith `OUTPUT` extension with the delineation of every QRS complex.\n\n### qrsdel as a library:\n\nIt can also be possible to use **qrsdel** as a library to be included in wider\nprojects. In that case, there are no dependencies with the WFDB software package,\nbut the responsibility to provide the signal and the proper parameters remains\nin the user. The entry point of the library is the `delineate_qrs()` function\nin the *qrsdel/delineation.py* module, and a usage example is shown in the\n*qrsdel/qrsdel.py* main module.\n\nUsing **qrsdel** as a library allows you to deeply control how the algorithm\nworks, besides obtaining additional information as per-lead delineation\ninformation or qualitative characterizations of the recognized waveforms.\n\n## Algorithm Evaluation\n\nThe project also includes some utilities to evaluate the robustness of the\nalgorithm. The *generate_nsqtdb.py* script allows to generate a new database from\nthe [Physionet QT database](http://www.physionet.org/physiobank/database/qtdb/)\nby adding different amounts of electrode motion noise to each record, by\nfollowing these steps:\n\n1. Download the full QT database to a new directory, and also copy the *em_250*\nrecord that can be found in the *records* directory.\n2. Modify the *generate_nsqtdb.py* script to set `DB_DIR` variable to the path\nto the directory where the database has been downloaded.\n3. Run `python generate_nsqtdb.py` in order to generate the new records.\n\nOnce the database has been generated and **qrsdel** has been executed with each\nrecord, the *error_measurements.py* module can be used to generate a markdown\nreport with the mean error and standard deviation of the QRS delineation in each\nrecord. Following we show an example of one of such reports, obtained from the\noriginal records of the QT database.\n\n### Distances table\n| Record | Se | QRS Onset (ms) | QRS Peak (ms)| QRS Offset (ms)|\n|--------|----|----------------|--------------|----------------|\n|**sel100** |1.00|6.00 ± 15.24|-10.80 ± 2.10|-2.13 ± 6.67|\n|**sel102** |0.99|44.86 ± 24.70|-41.43 ± 24.01|-48.33 ± 59.78|\n|**sel103** |1.00|20.40 ± 7.96|-2.93 ± 3.71|-1.07 ± 9.23|\n|**sel104** |1.00|24.36 ± 17.83|-29.19 ± 22.59|-7.27 ± 21.55|\n|**sel114** |1.00|9.84 ± 15.50|-1.44 ± 1.92|-7.20 ± 14.49|\n|**sel116** |1.00|9.04 ± 13.24|-11.68 ± 1.93|-0.48 ± 15.77|\n|**sel117** |1.00|11.60 ± 9.54|-10.00 ± 3.39|0.80 ± 11.79|\n|**sel123** |1.00|15.87 ± 16.18|-6.67 ± 2.39|8.40 ± 13.52|\n|**sel14046** |1.00|6.84 ± 7.55|-10.06 ± 3.19|0.52 ± 5.63|\n|**sel14157** |1.00|16.67 ± 15.73|-17.73 ± 4.58|-2.27 ± 7.98|\n|**sel14172** |1.00|17.04 ± 13.45|-19.68 ± 13.76|-0.48 ± 6.82|\n|**sel15814** |1.00|17.07 ± 13.10|-4.13 ± 7.41|-22.53 ± 34.06|\n|**sel16265** |1.00|10.00 ± 11.21|-7.60 ± 2.39|9.73 ± 10.21|\n|**sel16272** |1.00|-4.00 ± 11.78|-4.27 ± 2.52|3.87 ± 8.42|\n|**sel16273** |1.00|-4.27 ± 18.12|-12.80 ± 6.65|3.07 ± 8.18|\n|**sel16420** |1.00|12.93 ± 6.59|-1.73 ± 4.09|0.80 ± 7.11|\n|**sel16483** |1.00|15.33 ± 9.86|-9.87 ± 2.47|7.73 ± 8.26|\n|**sel16539** |1.00|8.40 ± 7.11|-6.27 ± 5.90|3.33 ± 5.37|\n|**sel16773** |1.00|20.80 ± 10.45|-10.27 ± 3.04|7.07 ± 7.84|\n|**sel16786** |1.00|-9.07 ± 16.65|-17.60 ± 2.44|-0.53 ± 9.45|\n|**sel16795** |1.00|8.00 ± 8.82|-19.73 ± 3.57|1.20 ± 8.83|\n|**sel17152** |1.00|17.73 ± 7.64|3.47 ± 3.22|-3.33 ± 12.99|\n|**sel17453** |1.00|10.00 ± 8.63|-16.27 ± 3.26|6.27 ± 8.98|\n|**sel213** |1.00|22.25 ± 14.55|-16.28 ± 11.98|8.73 ± 8.18|\n|**sel221** |1.00|0.40 ± 16.76|-7.73 ± 4.49|5.33 ± 15.64|\n|**sel223** |1.00|10.32 ± 17.62|-0.65 ± 1.79|27.87 ± 15.26|\n|**sel230** |1.00|12.32 ± 12.05|-12.16 ± 3.83|8.88 ± 7.26|\n|**sel231** |1.00|-11.44 ± 16.14|-13.04 ± 5.65|5.52 ± 17.71|\n|**sel232** |1.00|10.53 ± 9.09|2.13 ± 2.00|-54.67 ± 39.70|\n|**sel233** |1.00|10.40 ± 11.01|-5.73 ± 3.68|2.00 ± 8.69|\n|**sel30** |1.00|-0.93 ± 19.51|-9.20 ± 1.83|-14.40 ± 8.62|\n|**sel301** |1.00|11.33 ± 8.20|-4.40 ± 2.15|8.27 ± 7.08|\n|**sel302** |1.00|17.73 ± 5.23|-6.13 ± 2.47|-1.07 ± 7.79|\n|**sel306** |1.00|2.56 ± 14.55|-11.78 ± 3.99|3.11 ± 7.61|\n|**sel307** |1.00|14.67 ± 6.23|-6.00 ± 2.00|6.27 ± 6.51|\n|**sel308** |1.00|13.52 ± 15.39|-48.24 ± 8.67|3.12 ± 10.25|\n|**sel31** |1.00|16.40 ± 21.00|-12.00 ± 2.31|-9.60 ± 6.08|\n|**sel310** |1.00|19.87 ± 5.11|-9.60 ± 1.96|0.67 ± 7.24|\n|**sel32** |1.00|8.53 ± 13.77|-11.60 ± 4.54|-3.60 ± 10.03|\n|**sel33** |1.00|24.67 ± 3.11|-10.80 ± 3.60|-16.53 ± 14.23|\n|**sel34** |1.00|19.73 ± 4.95|-10.00 ± 2.00|-40.40 ± 6.88|\n|**sel35** |1.00|12.90 ± 13.51|-10.71 ± 2.36|-7.48 ± 7.09|\n|**sel36** |1.00|15.74 ± 10.56|-9.42 ± 2.39|-61.29 ± 38.51|\n|**sel37** |1.00|18.08 ± 16.86|-7.68 ± 8.68|-7.12 ± 12.83|\n|**sel38** |1.00|32.27 ± 11.77|24.00 ± 6.20|-16.27 ± 9.74|\n|**sel39** |1.00|4.93 ± 6.42|-17.20 ± 4.75|-25.73 ± 28.16|\n|**sel40** |1.00|20.80 ± 11.61|-12.13 ± 2.19|-6.13 ± 8.56|\n|**sel41** |1.00|17.47 ± 6.81|-7.60 ± 1.58|-2.53 ± 9.77|\n|**sel42** |1.00|43.47 ± 5.91|-12.40 ± 10.75|-6.40 ± 5.23|\n|**sel43** |1.00|57.20 ± 13.15|-3.73 ± 5.56|-0.27 ± 5.26|\n|**sel44** |1.00|33.47 ± 29.64|-10.13 ± 2.00|-28.67 ± 23.03|\n|**sel45** |1.00|22.67 ± 5.78|-11.60 ± 1.89|-6.27 ± 8.93|\n|**sel46** |1.00|5.07 ± 17.34|-18.53 ± 8.67|-2.80 ± 5.38|\n|**sel47** |1.00|24.67 ± 16.75|-12.00 ± 3.10|-13.87 ± 16.58|\n|**sel48** |1.00|17.73 ± 12.51|-13.33 ± 1.89|-22.13 ± 15.86|\n|**sel49** |1.00|15.47 ± 5.03|-5.73 ± 1.98|-11.60 ± 10.65|\n|**sel50** |1.00|15.62 ± 16.62|-8.88 ± 3.57|-4.25 ± 14.03|\n|**sel51** |1.00|10.93 ± 5.05|-1.20 ± 1.83|-20.00 ± 7.45|\n|**sel52** |1.00|-1.87 ± 21.48|-8.00 ± 2.53|-8.67 ± 12.61|\n|**sel803** |1.00|12.00 ± 7.93|-3.73 ± 2.29|8.67 ± 13.15|\n|**sel808** |1.00|3.87 ± 8.67|-27.73 ± 3.99|1.20 ± 7.88|\n|**sel811** |1.00|13.47 ± 14.22|-4.80 ± 2.40|6.67 ± 18.48|\n|**sel820** |1.00|-0.27 ± 13.14|-10.00 ± 2.25|10.40 ± 9.44|\n|**sel821** |1.00|6.13 ± 7.28|-8.93 ± 3.38|4.93 ± 4.09|\n|**sel840** |1.00|9.26 ± 4.56|-12.06 ± 5.72|8.00 ± 6.34|\n|**sel847** |1.00|4.36 ± 13.41|-8.97 ± 3.94|2.91 ± 6.70|\n|**sel853** |1.00|-0.67 ± 16.82|-17.47 ± 2.63|7.20 ± 5.69|\n|**sel871** |1.00|32.69 ± 9.27|-29.60 ± 9.06|3.60 ± 5.82|\n|**sel872** |1.00|15.20 ± 7.19|-4.53 ± 2.25|10.93 ± 6.10|\n|**sel873** |1.00|12.97 ± 5.83|-7.27 ± 5.95|4.36 ± 6.56|\n|**sel883** |1.00|10.13 ± 14.92|-6.40 ± 3.20|6.27 ± 15.75|\n|**sel891** |1.00|5.75 ± 15.13|-19.32 ± 2.51|-3.61 ± 18.79|\n|**sele0104** |1.00|16.40 ± 4.77|-11.73 ± 2.29|9.73 ± 7.84|\n|**sele0106** |1.00|20.53 ± 4.47|-5.07 ± 9.85|11.73 ± 4.73|\n|**sele0107** |1.00|17.06 ± 11.24|-6.59 ± 3.20|2.47 ± 5.74|\n|**sele0110** |1.00|8.93 ± 4.70|-13.47 ± 7.12|3.20 ± 4.78|\n|**sele0111** |1.00|7.60 ± 7.11|-10.53 ± 3.50|7.20 ± 17.26|\n|**sele0112** |1.00|16.40 ± 10.62|-10.24 ± 3.68|19.36 ± 8.37|\n|**sele0114** |1.00|13.87 ± 10.11|-6.53 ± 2.42|10.13 ± 9.45|\n|**sele0116** |1.00|2.13 ± 16.77|-6.00 ± 3.39|-18.13 ± 25.77|\n|**sele0121** |1.00|7.07 ± 5.03|-3.87 ± 1.63|14.93 ± 8.06|\n|**sele0122** |1.00|11.33 ± 4.51|-9.73 ± 1.98|16.27 ± 7.72|\n|**sele0124** |1.00|7.04 ± 8.96|-5.76 ± 4.74|3.28 ± 11.99|\n|**sele0126** |1.00|11.73 ± 7.65|-1.60 ± 4.80|8.80 ± 10.65|\n|**sele0129** |1.00|-10.27 ± 19.67|-22.80 ± 3.12|14.27 ± 7.84|\n|**sele0133** |1.00|4.00 ± 20.16|-24.67 ± 3.11|13.33 ± 7.96|\n|**sele0136** |1.00|18.93 ± 5.46|-6.00 ± 2.68|9.47 ± 7.04|\n|**sele0166** |1.00|-29.78 ± 13.15|-11.67 ± 7.20|-0.44 ± 16.43|\n|**sele0170** |1.00|9.87 ± 5.91|-3.87 ± 0.72|6.93 ± 3.26|\n|**sele0203** |1.00|11.33 ± 7.87|-5.33 ± 2.15|2.67 ± 8.78|\n|**sele0210** |1.00|17.73 ± 7.64|-6.00 ± 2.00|2.93 ± 12.00|\n|**sele0211** |1.00|9.60 ± 18.11|-5.07 ± 2.05|8.53 ± 8.87|\n|**sele0303** |1.00|14.27 ± 4.70|-2.13 ± 2.68|12.40 ± 8.54|\n|**sele0405** |1.00|-2.13 ± 10.26|-12.80 ± 2.17|2.67 ± 10.03|\n|**sele0406** |1.00|5.29 ± 13.95|-5.68 ± 3.01|4.26 ± 3.79|\n|**sele0409** |1.00|12.00 ± 6.28|-3.73 ± 1.44|0.40 ± 5.69|\n|**sele0411** |1.00|7.20 ± 6.23|-6.53 ± 2.19|3.60 ± 12.58|\n|**sele0509** |1.00|6.27 ± 4.58|-6.13 ± 2.00|-34.13 ± 5.34|\n|**sele0603** |1.00|6.53 ± 13.72|-10.80 ± 2.95|1.20 ± 15.18|\n|**sele0604** |1.00|8.53 ± 6.09|-15.33 ± 7.24|7.87 ± 10.46|\n|**sele0606** |1.00|16.93 ± 6.59|-6.13 ± 2.00|-26.80 ± 4.64|\n|**sele0607** |1.00|22.40 ± 14.03|-23.07 ± 1.69|4.80 ± 6.88|\n|**sele0609** |1.00|21.87 ± 11.40|1.60 ± 1.96|11.07 ± 12.12|\n|**sele0612** |1.00|13.47 ± 14.51|-6.00 ± 2.25|-0.93 ± 11.99|\n|**sele0704** |1.00|11.60 ± 9.08|-20.27 ± 4.84|-84.53 ± 12.76|\n|**Total:** |1.00|13.09 ± 17.48|-11.47 ± 12.01|-2.41 ± 22.34|\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcitiususc%2Fqrsdel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcitiususc%2Fqrsdel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcitiususc%2Fqrsdel/lists"}