{"id":17331855,"url":"https://github.com/czyt1988/data-workbench","last_synced_at":"2025-08-20T18:32:25.075Z","repository":{"id":154479435,"uuid":"623962654","full_name":"czyt1988/data-workbench","owner":"czyt1988","description":"Data processing tool software developed by QT（CPP）","archived":false,"fork":false,"pushed_at":"2024-10-29T08:00:57.000Z","size":18290,"stargazers_count":35,"open_issues_count":5,"forks_count":16,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-10-29T09:19:57.140Z","etag":null,"topics":["data-analysis","graphicsview","qt","qt-workflow","qt5","workflow"],"latest_commit_sha":null,"homepage":"","language":"C++","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/czyt1988.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":"2023-04-05T13:06:10.000Z","updated_at":"2024-10-28T02:59:53.000Z","dependencies_parsed_at":"2024-01-09T01:08:57.236Z","dependency_job_id":"b3d1af2a-e4eb-4cdc-8d3a-04bb508d166a","html_url":"https://github.com/czyt1988/data-workbench","commit_stats":{"total_commits":130,"total_committers":2,"mean_commits":65.0,"dds":0.03076923076923077,"last_synced_commit":"f21daf635032847eabd9be29866e095dc63ea668"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/czyt1988%2Fdata-workbench","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/czyt1988%2Fdata-workbench/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/czyt1988%2Fdata-workbench/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/czyt1988%2Fdata-workbench/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/czyt1988","download_url":"https://codeload.github.com/czyt1988/data-workbench/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230445926,"owners_count":18227060,"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":["data-analysis","graphicsview","qt","qt-workflow","qt5","workflow"],"created_at":"2024-10-15T14:55:49.820Z","updated_at":"2025-08-20T18:32:25.021Z","avatar_url":"https://github.com/czyt1988.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"此程序还在开发中，只有基本的一些功能实现\r\n\r\n# 简介\r\n\r\n数据工作流设计器，这个软件的设计目标是实现工作流驱动数据的ETL，集成`pandas`的数据处理能力，实现高效的交互式数据可视化以及能固定输出论文级别的图片，软件主要分三大块：`work flow`、`data`、`chart`，三大板块的关系如下图所示：\r\n\r\n![about-data-work-flow](./doc/PIC/about-data-work-flow.png)\r\n\r\n软件的设计初衷：\r\n\r\n在数据处理过程往往有很多重复性的工作，尤其针对科研实验数据，有可能要面对n组数据，每组数据的清洗抽取方式基本是一样的，因此我希望一个数据处理软件应该是带有工作流功能的，当然python是很容易实现上述功能，但要求有一定的开发基础且要熟悉一些库才能得心应手\r\n\r\npython的`pandas`、`numpy`、`scipy`是数据处理的三大利器，通过python进行数据处理过程，如此多的数据清洗方法，除非你把整个文档浏览一遍，否则你很难想起他们，因此一个交互式的数据清洗工具是很有必要的，把功能通过GUI明确的展现给用户，这样数据处理过程不需要长时间的翻阅文档\r\n\r\n最后也是我用matlab和python这类数据处理工具最头疼的一点，就是数据可视化，虽然matlab和python能做出很漂亮的图，但细微的调节非常令人抓狂，例如要调整一个文本的位置，交互式的设计你只需要拖动一下鼠标，但在脚本语言里你要指定它的坐标，如果图片非常大，渲染时间比较久，那么移动一个文本到你想要的地方是一件令人非常抓狂的事情，而且matlab或者matplotlib的数据可视化函数有多有细，每次操作都要查阅半天文档，这是另人非常苦恼的事情。\r\n\r\n目前没找到一个合适的工具来实现基于工作流的数据分析，比较接近我的需求的是`Orange3`，但`Orange3`更偏向深度学习方面，想进行单一的绘图有比较困难，`Origin`这些又是非常传统的数据分析软件，没有工作流相关模块\r\n\r\n本软件的设计就是为了解决上面遇到的这三个问题，因此软件会分为三大板块：工作流解决固定流程问题，数据处理板块会把pandas的功能进行集成，chart板块能实现交互式的数据可视化，且能生成论文级别的图片\r\n\r\n随着软件的开发，工作流板块逐渐形成体系，使用了有向图作为工作流的数据描述，发现不仅仅用于接近上述数据分析的问题，针对一维仿真也能非常方便的构建出模型，为此此软件也相当于提供了一个一维仿真集成框架，可以实现类似Amesim的一维仿真\r\n\r\n# 编译\r\n\r\n## 第三方库\r\n\r\n编译前请确保已经拉取了第三方库，由于使用的是`git submodule`方式管理大部分第三方库，因此需要执行：\r\n\r\n```shell\r\ngit submodule update --init --recursive\r\n```\r\n\r\n把所有第三方库拉取，具体可见：[submodule.md](./submodule.md)\r\n\r\n编译完第三方库后，需要进行安装(`install`)，所有依赖将安装到bin目录下\r\n\r\n需要编译的第三方库如下：\r\n\r\n- SARibbon\r\n- Qt-Advanced-Docking-System\r\n- ctk(只依赖部分，这里作者对ctk进行了精简，形成一个liteCtk)\r\n- qwt\r\n- QtPropertyBrowser\r\n- spdlog\r\n- pybind11\r\n- ordered-map\r\n\r\n## python环境配置\r\n\r\n\u003e 用户可以不依赖Python，通过`./CMakeLists.txt`的`DA_ENABLE_PYTHON`选项禁用，此时将不会编译python相关模块\r\n\r\n如果开启将自动查找系统的python环境并进行依赖，python环境有如下要求：\r\n\r\n- 至少是python3.7\r\n\r\npython环境需要安装的库：\r\n\r\n```\r\npip install Loguru numpy==1.26.4 pandas scipy openpyxl chardet PyWavelets pyarrow\r\n```\r\n\r\n如果你的python版本小于3.8，还需额外导入\r\n\r\n```\r\npip install typing_extensions\r\n```\r\n\r\n\u003e 为了兼容性，numpy建议2.0以下，这里推荐使用1.26.4\r\n\u003e\r\n\u003e Loguru主要用于进行python脚本的日志记录\r\n\u003e \r\n\u003e openpyxl是pandas导入excel文件的依赖，如果没有安装，则无法导入excel文件\r\n\u003e\r\n\u003e chardet主要用于检测字符编码\r\n\u003e\r\n\u003e PyWavelets是进行小波分析的库\r\n\u003e\r\n\u003e pyarrow是dataframe进行扩展数据导入的库，支持parquet（Partitioning Parquet files）和Feather\r\n\r\npython在win11操作系统下，安装package会把包安装到`用户名\\AppData\\Roaming\\Python\\Pythonxx\\site-packages`下，这对于把整个python打包是不利的，因此需要在执行pip install时加上参数`--target`指定安装路径，例如：\r\n\r\n```shell\r\npip install --target=\"../Lib/site-packages\" loguru numpy==1.26.4 pandas scipy openpyxl chardet PyWavelets pyarrow\r\n```\r\n\r\n项目目录下已经把所有依赖放到了`requirements.txt`文件里，可以直接使用`pip install -r requirements.txt`进行安装\r\n\r\n在需要python时将引入`pybind11`库\r\n\r\ndataworkbench查找python的逻辑是：\r\n\r\n1. 先查看程序运行目录下是否存在`python-config.json`，如果有，讲读取python-config.json里的`config/interpreter`下的值，以此作为python解析器的路径,python-config.json的模板如下：\r\n\r\n```json\r\n{\r\n  \"config\": {\r\n      \"interpreter\": \"path to python interpreter\"\r\n    }\r\n}\r\n```\r\n\r\n\u003e 程序安装目录可以使用`${current-app-dir}`变量替代，例如python安装在程序安装目录下，那么`${current-app-dir}`的值就是程序安装目录，如：${current-app-dir}/python311/python.exe\r\n\r\n2. 如果没有`python-config.json`文件，将使用`where python`来查找系统的python环境\r\n\r\n## 构建\r\n\r\n整个构建过程需要加载3次cmake文件\r\n- 首先需要编译zlib库（如果你开发环境已经有zlib，可以跳过此步骤），用cmake打开`./src/3rdparty/zlib/CMakeLists.txt`,编译完成后需要执行安装命令`install`对zlib库进行安装\r\n- 然后加载`./src/3rdparty/CMakeLists.txt`完成所有第三方库的编译，编译完成后需要执行安装命令`install`，否则第三步无法找到第三方库\r\n- 最后是`./CMakeLists.txt`完成`DataWorkbench`编译，编译完成后需要执行安装命令`install`\r\n- 把zlib库的zd.dll手动复制到bin目录下\r\n\r\n\u003e 第三方库中的quazip依赖zlib，因此需要先编译zlib库，并把zd.dll复制到bin目录下\r\n\r\n第二部可以设置不构建plugin，如果不构建plugin，plugin板块可以单独构建，前提是前两步已经完成且安装好，单独构建插件需要运行`plugins/CMakeLists.txt`\r\n\r\n**详细构建教程见**：[doc/how-to-build.md文档](./doc/how-to-build.md)\r\n\r\n## bin目录\r\n\r\nDA项目编译好的二进制文件统一生成到`bin{Debug/Release}_qt{$$QT_VERSION}_{MSVC/GNU}_{x64/x86}`目录下，如：使用qt5.14.2, msvc版本debug模式64位编译，将生成`bin_Debug_qt5.14.2_MSVC_x64`文件夹\r\n\r\n用户也可以自定义安装路径，需要手动调整`CMakeLists.txt`\r\n\r\n## 编译程序\r\n\r\n在确保完成了`./src/3rdparty/CMakeLists.txt`的编译，以及完成Python路径的配置（如果需要依赖python），直接用Qt Creator （或vs）打开`./CMakeLists.txt`进行编译，编译完成后安装，默认的安装路径会自动把文件安装到工程目录的`bin_xx`目录下\r\n\r\n如果第三方库的安装路径不是使用默认路径，需要指定各个第三方库的安装位置\r\n\r\n\u003e 第三方库构建请见:[src/3rdparty/readme.md](./src/3rdparty/readme.md)\r\n\r\n\u003e 详细构建教程见：[doc/how-to-build.md文档](./doc/how-to-build.md)\r\n\r\n\r\n# 教程\r\n\r\n## 1.开发说明\r\n\r\n[1.开发规范](./coding-standard.md)\r\n\r\n[2.基于cmake的大型工程组织和构建](./doc/基于cmake的大型工程组织和构建.md)\r\n\r\n## 1.程序架构\r\n\r\n[1.插件与接口](./doc/zh/插件与接口.md)\r\n\r\n## 2.工作流模块\r\n\r\n[1.可缩放图元模块](./doc/zh/可缩放图元.md)\r\n\r\n[2.工作流模块](./doc/zh/工作流.md)\r\n\r\n[3.工作流生命周期](./doc/zh/工作流生命周期.md)\r\n\r\n## 3.持久化\r\n\r\n[1.工程文件结构说明](./doc/zh/工程文件结构说明.md)\r\n\r\n## 4.开发指南\r\n\r\n[1.如何添加一个action](./doc/zh/如何添加一个action.md)\r\n\r\n# 程序截图\r\n\r\n![动态演示](./doc/screenshot/screenshot1.gif)\r\n\r\n主体界面演示\r\n\r\n![01](./doc/screenshot/01.png)\r\n\r\n![02](./doc/screenshot/02.png)\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fczyt1988%2Fdata-workbench","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fczyt1988%2Fdata-workbench","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fczyt1988%2Fdata-workbench/lists"}