{"id":24698996,"url":"https://github.com/harmonicode/signal-viewer","last_synced_at":"2026-02-14T17:03:34.422Z","repository":{"id":258818651,"uuid":"868586737","full_name":"HarmoniCode/Signal-Viewer","owner":"HarmoniCode","description":"Signal-Viewer is a user-friendly tool designed to help you visualize and analyze various signals such as ECG, EEG, and EMG. It provides an intuitive interface for loading, displaying, and interpreting signal data.","archived":false,"fork":false,"pushed_at":"2025-01-28T07:18:48.000Z","size":1536,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-09-05T08:37:32.105Z","etag":null,"topics":["biomedical-signal-processing","data-visualization","pyqt5","python","signal-processing"],"latest_commit_sha":null,"homepage":"","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/HarmoniCode.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,"zenodo":null}},"created_at":"2024-10-06T18:53:24.000Z","updated_at":"2025-05-24T14:49:43.000Z","dependencies_parsed_at":"2025-07-04T23:07:45.825Z","dependency_job_id":"7d760a3e-0a5c-4259-b95e-633db8abde7d","html_url":"https://github.com/HarmoniCode/Signal-Viewer","commit_stats":null,"previous_names":["ahmed-226/signal-viewer","harmonicode/signal-viewer"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/HarmoniCode/Signal-Viewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HarmoniCode%2FSignal-Viewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HarmoniCode%2FSignal-Viewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HarmoniCode%2FSignal-Viewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HarmoniCode%2FSignal-Viewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HarmoniCode","download_url":"https://codeload.github.com/HarmoniCode/Signal-Viewer/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HarmoniCode%2FSignal-Viewer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29450607,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-14T15:52:44.973Z","status":"ssl_error","status_checked_at":"2026-02-14T15:52:11.208Z","response_time":53,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["biomedical-signal-processing","data-visualization","pyqt5","python","signal-processing"],"created_at":"2025-01-27T04:35:05.568Z","updated_at":"2026-02-14T17:03:34.406Z","avatar_url":"https://github.com/HarmoniCode.png","language":"Python","readme":"\u003c!-- PROJECT LOGO --\u003e\n\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n  \u003ca\u003e\n    \u003cimg src=\"Icons/pics/logo.png\" alt=\"Logo\" width=\"80\" height=\"80\"\u003e\n  \u003c/a\u003e\n\n  \u003ch3 align=\"center\"\u003eSignal Viewer\u003c/h3\u003e\n\n  \u003cp align=\"center\"\u003e\n    Your best solution to viewing signals!\n\u003c/div\u003e\n\n\n\n\u003c!-- TABLE OF CONTENTS --\u003e\n\u003cdetails\u003e\n  \u003csummary\u003eTable of Contents\u003c/summary\u003e\n  \u003col\u003e\n    \u003cli\u003e\n      \u003ca href=\"#about-the-project\"\u003eAbout The Project\u003c/a\u003e\n      \u003cul\u003e\n        \u003cli\u003e\u003ca href=\"#built-with\"\u003eBuilt With\u003c/a\u003e\u003c/li\u003e\n      \u003c/ul\u003e\n    \u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#features\"\u003eFeatures\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#installation\"\u003eInstallation\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#usage\"\u003eUsage\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contributing\"\u003eContributing\u003c/a\u003e\u003c/li\u003e\n    \u003cli\u003e\u003ca href=\"#contact\"\u003eContact\u003c/a\u003e\u003c/li\u003e\n  \u003c/ol\u003e\n\u003c/details\u003e\n\n\n\n\u003c!-- ABOUT THE PROJECT --\u003e\n## About The Project\n\n\u003cimg src=\"Icons/pics/first_page.png\" alt=\"first page screenshot\"\u003e\n\n\u003cbr\u003e\n\nA **Signal Viewer** is a powerful and intuitive application for visualizing and analyzing biomedical signals such as ECG, EEG, and EMG. With a user-friendly interface, this tool allows for easy loading, display, and interaction with various signal datasets, making it essential for researchers, clinicians, and students in biomedical engineering.\n\n## Features\n\n- **Multi-Signal Visualization**: Display multiple signals simultaneously with synchronized controls.\n- **Play/Pause Functionality**: Control signal playback with play and pause buttons.\n- **Zoom and Pan**: Zoom in and out, and pan for detailed signal inspection.\n- **Linked Controls**: Synchronize playback and control across multiple signal graphs.\n- **Signal Alignment**: Align the speed of multiple signals for comparative analysis.\n- **Region of Interest (ROI)**: Highlight specific regions of the signal for focused analysis.\n- **Signal Processing**: Perform operations such as signal extraction, gap/overlap processing, and signal merging.\n- **Report Generation**: Generate detailed reports on the analyzed signals.\n- **Customizable Interface**: Modify the appearance and layout to suit your needs.\n\n\n\nhttps://github.com/user-attachments/assets/f765d72a-f8d8-4948-9389-0c810c6c9d1e\n\n\n\n## Installation\n\n1. **Clone the repository**:\n   ```bash\n   git clone https://github.com/yourusername/signal-viewer.git\n   ```\n\n2. **Navigate to the project directory**:\n   ```bash\n   cd signal-viewer\n   ```\n\n3. **Install the required dependencies**:\n   ```bash\n   pip install -r requirements.txt\n   ```\n\n## Usage\n\n1. **Run the main application**:\n   ```bash\n   python main.py\n   ```\n\n2. **Load signal datasets** from the `Datasets` directory.\n\n3. **Control playback** using the play, pause, zoom, and pan buttons.\n\n4. **Synchronize playback** for multiple signals using linked controls.\n\n5. **Highlight regions of interest** and perform signal processing as needed.\n\n6. **Generate reports** for detailed analysis and documentation.\n\n## Project Structure\n\n- **`main.py`**: Initializes and runs the Signal Viewer application.\n- **`GraphWidget.py`**: Contains the `GraphWidget` class for rendering and interacting with signal graphs.\n- **`ReportDialog.py`**: Handles generation and display of signal analysis reports.\n- **`Datasets`**: Directory for sample signal datasets.\n- **`Styles`**: Directory with QSS files for customizing the app's appearance.\n- **`Icons`**: Directory for icons used in the application.\n\n## Contributing\n\nWe welcome contributions to enhance Signal Viewer’s functionality and usability! Follow these steps to contribute:\n\n1. **Fork the repository**.\n2. **Create a new branch**:\n   ```bash\n   git checkout -b feature-name\n   ```\n\n3. **Make your changes** and commit:\n   ```bash\n   git commit -m \"Add your message here\"\n   ```\n\n4. **Push to the branch**:\n   ```bash\n   git push origin feature-name\n   ```\n\n5. **Open a pull request**.\n\n\n### Contributors:\n\n\u003ca href=\"https://github.com/ahmed-226\"\u003e\n  \u003cimg src=\"https://avatars.githubusercontent.com/u/124817234?v=4\" alt=\"ahmed abdelaal image\" width = \"150\" heigh = \"150\"/\u003e\n  \n\u003c/a\u003e\n\u003ca href=\"https://github.com/louai111\"\u003e\n  \u003cimg src=\"https://avatars.githubusercontent.com/u/79408256?v=4\" alt=\"louai eleslamboly image\" width = \"150\" heigh = \"150\"/\u003e\n  \n\u003c/a\u003e\n\u003ca href=\"https://github.com/Anasmo1323\"\u003e\n  \u003cimg src=\"https://avatars.githubusercontent.com/u/116515989?v=4\" alt=\"anas mohamed image\" width = \"150\" heigh = \"150\"/\u003e\n  \n\u003c/a\u003e\n\u003ca href=\"https://github.com/aliyounis33\"\u003e\n\n  \u003cimg src=\"[https://avatars.githubusercontent.com/u/125222093?v=4](https://media.licdn.com/dms/image/v2/D4E03AQG6W9o6HSAzaQ/profile-displayphoto-shrink_400_400/profile-displayphoto-shrink_400_400/0/1684759057692?e=1736380800\u0026v=beta\u0026t=S_EJxWi9SeJOqKYbFMSFoqB_gbEvfBdl04B4RC4M4w0)\" alt=\"ali younis image\" width = \"150\" heigh = \"150\"/\u003e\n  \n\u003c/a\u003e\n\n\n\n\n\n### Built With\n\n* \u003cimg src=\"https://img.icons8.com/?size=100\u0026id=13441\u0026format=png\u0026color=000000\" alt=\"python logo\" width = \"80\" heigh = \"80\"/\u003e\n\n\n\n\n\u003c!-- CONTACT --\u003e\n## Contact\n\u003ca href=\"https://www.linkedin.com/in/ahmed-mahmoud-5837b8253/\"\u003e\n  Ahmed Abdelaal\n\u003c/a\u003e\n\u003cbr\u003e\n\u003ca href=\"https://www.linkedin.com/in/louai-eleslamboly1/\"\u003e\n  Louai Eleslamboly\n\u003c/a\u003e\n\u003cbr\u003e\n\u003ca href=\"https://www.linkedin.com/in/anas-mohamed-hany-71a9a5235/\"\u003e\n  Anas Mohamed\n\u003c/a\u003e\n\u003cbr\u003e\n\u003ca href=\"https://www.linkedin.com/in/ali-younis-98b780277/\"\u003e\n  Ali Younis\n\u003c/a\u003e\n\u003cbr\u003e\n\n\n\n\n\u003c!-- MARKDOWN LINKS \u0026 IMAGES --\u003e\n\u003c!-- https://www.markdownguide.org/basic-syntax/#reference-style-links --\u003e\n[contributors-shield]: https://img.shields.io/github/contributors/othneildrew/Best-README-Template.svg?style=for-the-badge\n[contributors-url]: https://github.com/othneildrew/Best-README-Template/graphs/contributors\n[forks-shield]: https://img.shields.io/github/forks/othneildrew/Best-README-Template.svg?style=for-the-badge\n[forks-url]: https://github.com/othneildrew/Best-README-Template/network/members\n[stars-shield]: https://img.shields.io/github/stars/othneildrew/Best-README-Template.svg?style=for-the-badge\n[stars-url]: https://github.com/othneildrew/Best-README-Template/stargazers\n[issues-shield]: https://img.shields.io/github/issues/othneildrew/Best-README-Template.svg?style=for-the-badge\n[issues-url]: https://github.com/othneildrew/Best-README-Template/issues\n[license-shield]: https://img.shields.io/github/license/othneildrew/Best-README-Template.svg?style=for-the-badge\n[license-url]: https://github.com/othneildrew/Best-README-Template/blob/master/LICENSE.txt\n[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge\u0026logo=linkedin\u0026colorB=555\n[linkedin-url]: https://linkedin.com/in/othneildrew\n[product-screenshot]: images/screenshot.png\n[Next.js]: https://img.shields.io/badge/next.js-000000?style=for-the-badge\u0026logo=nextdotjs\u0026logoColor=white\n[Next-url]: https://nextjs.org/\n[React.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge\u0026logo=react\u0026logoColor=61DAFB\n[React-url]: https://reactjs.org/\n[Vue.js]: https://img.shields.io/badge/Vue.js-35495E?style=for-the-badge\u0026logo=vuedotjs\u0026logoColor=4FC08D\n[Vue-url]: https://vuejs.org/\n[Angular.io]: https://img.shields.io/badge/Angular-DD0031?style=for-the-badge\u0026logo=angular\u0026logoColor=white\n[Angular-url]: https://angular.io/\n[Svelte.dev]: https://img.shields.io/badge/Svelte-4A4A55?style=for-the-badge\u0026logo=svelte\u0026logoColor=FF3E00\n[Svelte-url]: https://svelte.dev/\n[Laravel.com]: https://img.shields.io/badge/Laravel-FF2D20?style=for-the-badge\u0026logo=laravel\u0026logoColor=white\n[Laravel-url]: https://laravel.com\n[Bootstrap.com]: https://img.shields.io/badge/Bootstrap-563D7C?style=for-the-badge\u0026logo=bootstrap\u0026logoColor=white\n[Bootstrap-url]: https://getbootstrap.com\n[JQuery.com]: https://img.shields.io/badge/jQuery-0769AD?style=for-the-badge\u0026logo=jquery\u0026logoColor=white\n[JQuery-url]: https://jquery.com \n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharmonicode%2Fsignal-viewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharmonicode%2Fsignal-viewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharmonicode%2Fsignal-viewer/lists"}