{"id":23181768,"url":"https://github.com/harshsahu23/wabtec3_brakesgui_shared","last_synced_at":"2026-05-07T08:37:29.271Z","repository":{"id":263101704,"uuid":"889345188","full_name":"HarshSahu23/Wabtec3_BrakesGUI_shared","owner":"HarshSahu23","description":"💻 App to visualize error logs and dump files generated by the braking system of locomotives 🚅","archived":false,"fork":false,"pushed_at":"2025-02-02T23:47:46.000Z","size":2083,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-10T11:22:05.357Z","etag":null,"topics":["csv","data-visualization","graphs","pandas","plotly","python","streamlit","visualization"],"latest_commit_sha":null,"homepage":"https://wabtec-brakesgui-vitbhopal.streamlit.app/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/HarshSahu23.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2024-11-16T06:04:07.000Z","updated_at":"2025-02-02T23:47:49.000Z","dependencies_parsed_at":"2024-12-04T15:22:27.133Z","dependency_job_id":"1617b53e-e9e2-4dd5-a90e-ce4db41d6868","html_url":"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared","commit_stats":null,"previous_names":["harshsahu23/wabtec3_brakesgui_shared"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HarshSahu23%2FWabtec3_BrakesGUI_shared","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HarshSahu23%2FWabtec3_BrakesGUI_shared/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HarshSahu23%2FWabtec3_BrakesGUI_shared/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/HarshSahu23%2FWabtec3_BrakesGUI_shared/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/HarshSahu23","download_url":"https://codeload.github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247280255,"owners_count":20912967,"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":["csv","data-visualization","graphs","pandas","plotly","python","streamlit","visualization"],"created_at":"2024-12-18T08:18:04.632Z","updated_at":"2026-05-07T08:37:29.211Z","avatar_url":"https://github.com/HarshSahu23.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Error Analyzer 📊\n\n\u003ca href=\"https://www.wabteccorp.com/\" target=\"_blank\"\u003e\n  \u003cimg src=\"https://www.wabteccorp.com/themes/custom/wabtec/images/Wabtec-logo-White.svg\" alt=\"Wabtec\" width=\"200\" height=\"100\"/\u003e\n\u003c/a\u003e\n\u003cp\u003e\u003c/p\u003e\n\n\u003e A Python-based application for analyzing error codes from CSV files with interactive visualizations.\n\n## Features ✨\n\n- Interactive GUI built with Streamlit\n- Real-time error code analysis\n- Dynamic visualization using Plotly\n- CSV file processing and management\n- Comprehensive error frequency reporting\n\n## Installation 🚀\n\n### Prerequisites\n\n- Python 3.8+\n- Git\n\n### Quick Start\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared.git\ncd Wabtec3_BrakesGUI_shared\n```\n\n2. Set up virtual environment:\n```bash\npython -m venv venv\n\n# Windows\n.\\venv\\Scripts\\activate\n\n# Unix/MacOS\nsource venv/bin/activate\n```\n\n3. Install dependencies:\n```bash\npip install -r requirements.txt\n```\n\n## Project Structure 📁\n\n```\n.\n├── assets                                          # App/Repo related assets here.\n├── build_scripts                                   # Folder for Build related scripts.    \n│   ├── build_exe.py                                    -\u003e Script to generate exec.            \n│   ├── exclude_modules.py                              -\u003e List of modules to be excluded.                \n│   └── main.spec                                       -\u003e Specifications that can be used with pyinstaller.        \n├── csv                                             # CSV files for testing purposes. \n├── instructions.md                                 # Contains general instructions about project (to be merged with README).        \n├── readme.md                                       # Project instructions.\n├── requirements.txt                                # Required Python packages list.            \n└── src                                             # Containes the source code.   \n    ├── backend                                         -\u003e Code for backend and data processing.    \n    │   ├── data_extractor                                  -\u003e\u003e Code for Data extraction.        \n    │   │   ├── dataframe_classifier.py                         - Identifies the type of log being processed.                                \n    │   │   └── dataframe_extractor.py                          - Extracts the CSV data as a dataframe.\n    │   ├── data_handler.py                                 -\u003e\u003e Code common interface that exposes all the backend functionality to frontend. \n    │   ├── data_processors                                 -\u003e\u003e Code for analytical processing and data formatting.\n    │   │   ├── detailed_data_for_error_grouper.py              - Generate custom dataframe table to obtain detailed data.\n    │   │   ├── dmp_processor.py                                - Dump file procesing and formatting.\n    │   │   ├── ecl_processor.py                                - Error log processor.\n    │   │   ├── error_grouper_for_error_log_tab.py              - Error group generator for error log tab in UI.\n    │   │   └── table_maker_for_summary_tab.py                  - Table maker for summary tab in UI.\n    │   ├── json_config_loader.py                           -\u003e\u003e Loads JSON config from the directory.\n    │   ├── plotter.py                                      -\u003e\u003e Plotting functions for the use in CLI.\n    │   └── utils                                           -\u003e\u003e Utility code.\n    │       ├── exceptions.py                                   - Custom exception class code.\n    │       ├── folder_validator.py                             - Folder path validator.\n    │       └── logging_config.py                               - Logging config file.\n    ├── backup_config.json                              -\u003e Backup config JSON in case some corruption of original happens.\n    ├── config.json                                     -\u003e Config file for the app.\n    ├── frontend                                        -\u003e Frontend code Part.\n    │   ├── cmd_toolset.py                                  -\u003e\u003e Code for cmd toolset.\n    │   ├── compute                                         -\u003e\u003e Computes various charting elements.\n    │   │   ├── calculate_percentages.py                        - Annotaions on the chart.\n    │   │   ├── summary_viz.py                                  - Chart for the summary tab.\n    │   │   ├── update_chart.py                                 - Updates chart when specific button clicked in error log tab.\n    │   │   └── visualizations.py                               - Charts for the error log tab.\n    │   ├── gui.py                                          -\u003e\u003e Main GUI entrypoint.\n    │   ├── tabs                                            -\u003e\u003e Contains GUI code for different tabs.                                      \n    │   └── utils                                           -\u003e\u003e Utility functions for various widgets.    \n    │       ├── create_tab_labels.py                            - CSS designs for labeling.\n    │       ├── css_utils.py                                    - CSS designs for error log tab.\n    │       ├── edit_folder_metadata.py                         - Widget for editing Coach and depot data\n    │       ├── render_section_header.py                        - CSS for section header.\n    │       ├── render_sidebar.py                               - Display custom sidebar.\n    │       └── sidebar_utils.py                                - Widgets displayed inside sidebar. \n    ├── main.py                                         -\u003e Main entry code for the app.\n    └── tester.ipynb                                    -\u003e Tester python notebook to test the new functions. \n```\n\n## Usage 💡\n\n1. Launch the application:\n```bash\npython main.py\n```\n\n2. Process error logs:\n   - Place CSV files in the `csv/` directory\n   - Input expected error descriptions\n   - View analysis results and visualizations\n\nOR \n\n## Use the GUI 💻\n  \u003cbr/\u003e\n\n  ### A) Browse Files to upload :\n  \u003cp\u003e\n    \u003ca href=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/raw/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S1.png\"\u003e\n      \u003cimg src=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/raw/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S1.png\" alt=\"Screenshot 1\" height=\"250\" width=\"400\" style=\"object-fit: cover;\"/\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n\n  ### B) Select files to upload :\n  \u003cp align=\"left\"\u003e\n    \u003ca href=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S2.png\"\u003e\n      \u003cimg src=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S2.png\" alt=\"Screenshot 2\" height=\"250\" width=\"400\" style=\"object-fit: cover;\"/\u003e\n    \u003c/a\u003e\n  \u003c/p\u003e\n\n  ### C) Select/Search various errors\n  \u003cp align=\"left\"\u003e\n    \u003ca href=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S3.png\"\u003e\u003cimg src=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S3.png\" height=\"250\" width=\"400\" style=\"object-fit: cover;\" alt=\"Screenshot 3\" width=\"400\" height=\"250\"/\u003e\u003c/a\u003e\n  \u003c/p\u003e\n  \n  ### D) Use dashboard to view charts \u0026 interact with them:\n  \u003cp align=\"left\"\u003e\n    \u003ca href=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S4.png\"\u003e\u003cimg src=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S4.png\" height=\"250\" width=\"400\" style=\"object-fit: cover;\" alt=\"Screenshot 4\" width=\"400\" height=\"250\"/\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\n  ### E) View various charts:\n  \u003cp align=\"left\"\u003e\n    \u003ca href=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S5.png\"\u003e\n    \u003cimg src=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S5.png\" alt=\"Screenshot 5\" width=\"400\" height=\"250\" style=\"display: inline-block; margin-right: 10px;\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S5_1.png\"\u003e\n    \u003cimg src=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S5_1.png\" alt=\"Screenshot 5_1\" width=\"400\" height=\"250\" style=\"display: inline-block; margin-right: 10px;\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S5_2.png\"\u003e\n    \u003cimg src=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S5_2.png\" alt=\"Screenshot 5_2\" width=\"400\" height=\"250\" style=\"display: inline-block; margin-right: 10px;\"/\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\n  ### F) Get Detailed Data of any selected errors, apply filters\n   \u003cp align=\"left\"\u003e\n    \u003ca href = \"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S6.png\"\u003e\u003cimg src=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S6.png\" alt=\"Screenshot 6\" width=\"400\" height=\"250\" style=\"display: inline-block; margin-right: 10px;\"/\u003e\u003c/a\u003e\n    \u003ca href=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S7.png\"\u003e\u003cimg src=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/89d6f4d39e1d1ce385356e2394db8c27d39bfda4/assets/S7.png\" alt=\"Screenshot 7\" width=\"400\" height=\"250\" style=\"display: inline-block; margin-right: 10px;\"/\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\n  ### G) View Dump Log\n  \u003cp align=\"left\"\u003e\n  \u003ca href=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/81aaa1ab2971562c79e1c544864f95dd936e187b/assets/S8.png\"\u003e\n  \u003cimg src = \"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/81aaa1ab2971562c79e1c544864f95dd936e187b/assets/S8.png\" alt=\"screenshot 8\" width=\"400\" height=\"250\"\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\n  ### H) Detailed Data for Dump Files\n  \u003cp align=\"left\"\u003e\n  \u003ca href=\"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/81aaa1ab2971562c79e1c544864f95dd936e187b/assets/S9.png\"\u003e\u003cimg src = \"https://github.com/HarshSahu23/Wabtec3_BrakesGUI_shared/blob/81aaa1ab2971562c79e1c544864f95dd936e187b/assets/S9.png\" alt=\"screenshot 9\" width=\"400\" height=\"250\"\u003e\u003c/a\u003e\n  \u003c/p\u003e\n\n\n## Development 🛠️\n\n### Code Style\n\n- Follow [PEP 8](https://www.python.org/dev/peps/pep-0008/) guidelines\n- Use descriptive variable and function names\n- Include docstrings and comments where appropriate\n\n### Testing\n\n```bash\n# Run tests\npython -m pytest tests/\n\n# Check code coverage\npython -m pytest --cov=src tests/\n```\n\n## Contributing 🤝\n\n1. Fork the repository\n2. Create a feature branch:\n```bash\ngit checkout -b feature/amazing-feature\n```\n\n3. Commit your changes:\n```bash\ngit commit -m 'Add amazing feature'\n```\n\n4. Push to your branch:\n```bash\ngit push origin feature/amazing-feature\n```\n\n5. Open a Pull Request\n\n### Contribution Guidelines\n\n- Write clear commit messages\n- Include tests for new features\n- Update documentation as needed\n- Submit PRs to the `develop` branch\n\n## License 📝\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n---\n\n\u003cdiv align=\"center\"\u003e\nMade with ❤️ by Team ^_^ - Exceed 3.0\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharshsahu23%2Fwabtec3_brakesgui_shared","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fharshsahu23%2Fwabtec3_brakesgui_shared","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fharshsahu23%2Fwabtec3_brakesgui_shared/lists"}