<h1 align="center">
NiaAML-GUI
</h1>
<p align="center">
<a href="https://pypi.python.org/pypi/niaaml-gui">
<img alt="PyPI Version" src="https://img.shields.io/pypi/v/niaaml-gui.svg">
</a>
<img alt="PyPI - Python Version" src="https://img.shields.io/pypi/pyversions/niaaml-gui.svg">
<img alt="PyPI - Downloads" src="https://img.shields.io/pypi/dm/niaaml-gui.svg">
<a href="https://repology.org/project/niaaml-gui/versions">
<img alt="Packaging status" src="https://repology.org/badge/tiny-repos/niaaml-gui.svg">
</a>
<a href="https://src.fedoraproject.org/rpms/NiaAML-GUI">
<img alt="Fedora package" src="https://img.shields.io/fedora/v/NiaAML-GUI?color=blue&label=Fedora%20Linux&logo=fedora">
</a>
<a href="https://github.com/flukapecnik/NiaAML-GUI/blob/master/LICENSE">
<img alt="GitHub license" src="https://img.shields.io/github/license/lukapecnik/NiaAML-GUI.svg">
</a>
<a href="https://github.com/firefly-cpp/NiaAML-GUI/actions/workflows/test.yml">
<img alt="GitHub Actions" src="https://github.com/firefly-cpp/NiaAML-GUI/actions/workflows/test.yml/badge.svg">
</a>
</p>
<p align="center">
<img alt="GitHub commit activity" src="https://img.shields.io/github/commit-activity/w/lukapecnik/NiaAML-GUI.svg">
<a href='http://isitmaintained.com/project/lukapecnik/NiaAML-GUI "Average time to resolve an issue"'>
<img alt="Average time to resolve an issue" src="http://isitmaintained.com/badge/resolution/lukapecnik/NiaAML-GUI.svg">
</a>
<a href='http://isitmaintained.com/project/lukapecnik/NiaAML-GUI "Percentage of issues still open"'>
<img alt="Percentage of issues still open" src="http://isitmaintained.com/badge/open/lukapecnik/NiaAML-GUI.svg">
</a>
<img alt="GitHub contributors" src="https://img.shields.io/github/contributors/lukapecnik/NiaAML-GUI.svg">
</p>
<p align="center">
<a href="#-installation">📦 Installation</a> •
<a href="#-usage">🚀 Usage</a> •
<a href="#-example">📓 Example</a> •
<a href="#-references">📝 References</a> •
<a href="#-cite-us">📄 Cite us</a>
</p>
A graphical user interface for building and running machine learning pipelines using the [NiaAML](https://github.com/firefly-cpp/NiaAML) framework. This GUI now supports **block-based pipeline composition**, drag-and-drop components, visual connections, and CSV editing.
* **Free software:** MIT license
* **Python versions:** 3.10.x, 3.11.x, 3.12.x, 3.13.x
## 📦 Installation
To install `NiaAML-GUI` with pip, use:
```sh
pip install niaaml_gui
```
After successful installation, run [main.py](niaaml_gui/main.py):
```sh
python main.py
```
### Fedora Linux
To install `NiaAML-GUI` on Fedora, use:
```sh
$ dnf install NiaAML-GUI
```
### Alpine Linux
To install `NiaAML-GUI` on Alpine Linux, enable Community repository and use:
```sh
$ apk add niaaml-gui
```
## 🚀 Usage
NiaAML GUI application allows you to use the main features of the [NiaAML](https://github.com/firefly-cpp/NiaAML) framework. There are two views in the application. In the first one, you can prepare an environment for a pipeline optimization process. The purpose of the second one is to allow you to use an existing pipeline from a file. **The application currently supports data input in the form of CSV files.**
### Pipeline Canvas View
Below is a screenshot of the first view with labeled components and you can find a description for each component under the screenshot.
<p align="center"><img src=".github/gui1.png" alt="NiaAML GUI First View" title="NiaAML GUI First View"/></p>
| Component | Description |
|:----------|:------------|
| 1 | Tabbed view for choosing components to be added to the canvas. Components can be dragged and dropped onto the canvas to visually build the pipeline. |
| 2 | The canvas area where blocks (components) are placed and connected. Users can construct the pipeline visually by drawing arrows between valid components. |
| 3 | "Select CSV File" block. Input dataset selection. Includes a file browser, CSV header checkbox, and an edit button to view/modify the CSV content. <br> <p align="center"><img src=".github/gui3.png" alt="NiaAML GUI Edit Dataset View" title="NiaAML GUI Edit Dataset View"/></p> |
| 4 | "Categorical Encoder" block. Allows selection of encoding method for categorical features. Dropdown populated dynamically. |
| 5 | "Missing Imputer" block. Allows selection of imputation method to handle missing values. |
| 6 | "Feature Selection" block. Multi-selection dialog allows the user to choose one or more feature selection algorithms. |
| 7 | "Feature Transform" block. Multi-selection dialog allows choosing one or more feature transformation algorithms. |
| 8 | "Classifier" block. Multi-selection dialog for selecting one or more classification models. |
| 9 | "Optimization Algorithm (Selection)" block. Dropdown for choosing the optimization algorithm used in component selection. |
| 10 | "Optimization Algorithm (Tuning)" block. Dropdown for choosing the algorithm used for hyperparameter tuning. |
| 11 | "Population Size (Components Selection)" block. Numeric input for specifying the population size during component selection. |
| 12 | "Population Size (Parameter Tuning)" block. Numeric input for specifying the population size for hyperparameter tuning. |
| 13 | "Number of Evaluations (Component Selection)" block. Sets the number of allowed evaluations during selection. |
| 14 | "Number of Evaluations (Parameter Tuning)" block. Sets the number of evaluations for hyperparameter tuning. |
| 15 | "Fitness Function" block. Dropdown for selecting the fitness function used during evaluation of each candidate pipeline. |
| 16 | "Pipeline Output Folder" block. Defines the target folder where output files (pipeline, logs, results) are saved. |
| 17 | Arrow connections between blocks. Only valid connections are allowed. When drawing, green/red highlights show whether the target is acceptable. |
| 18 | Validation system. Before running optimization, the system checks whether all required components are present and properly configured. |
#### Optimization
Below you can see screenshots of views during and after the optimization has finished.
<p align="center"><img src=".github/gui2.png" alt="NiaAML GUI Optimization Running" title="NiaAML GUI Optimization Running"/></p>
<p align="center"><img src=".github/gui4.png" alt="NiaAML GUI Optimization Finished" title="NiaAML GUI Optimization Finished"/></p>
## 📓 Example
Let's say we want to find an optimal classification pipeline for the Example dataset. You can see the optimization setup in the screenshot below.
<p align="center"><img src=".github/gui6.png" alt="NiaAML GUI Optimization Setup" title="NiaAML GUI Optimization Setup"/></p>
We hit the `Start optimization` button and wait... You can see the output in the screenshot below.
<p align="center"><img src=".github/gui7.png" alt="NiaAML GUI Optimization Output" title="NiaAML GUI Optimization Output"/></p>
There are also 2 new files in the selected destination directory.
<p align="center"><img src=".github/gui8.png" alt="NiaAML GUI Output Files" title="NiaAML GUI Output Files"/></p>
Now we can use the exported pipeline file for further classification on the unseen data.
<p align="center"><img src=".github/gui9.png" alt="NiaAML GUI Run Pipeline" title="NiaAML GUI Run Pipeline"/></p>
## 📝 References
<a id="1">[1]</a> Dua, D. and Graff, C. (2019). [UCI Machine Learning Repository](http://archive.ics.uci.edu/ml). Irvine, CA: University of California, School of Information and Computer Science.
## 📄 Cite us
L. Pečnik, I. Fister Jr. "[NiaAML: AutoML framework based on stochastic population-based nature-inspired algorithms](https://joss.theoj.org/papers/10.21105/joss.02949)." Journal of Open Source Software 6.61 (2021): 2949.
Raw data
{
"_id": null,
"home_page": "https://github.com/firefly-cpp/NiaAML-GUI",
"name": "NiaAML-GUI",
"maintainer": null,
"docs_url": null,
"requires_python": "<3.14,>=3.10",
"maintainer_email": null,
"keywords": "classification, NiaPy, NiaAML, scikit-learn, nature-inspired algorithms, feature selection, preprocessing",
"author": "Luka Pe\u010dnik",
"author_email": "lukapecnik96@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/23/76/132a9e1e60aa9a77abe19f2f9e71b03d380cf5a931776d776f9648d37859/niaaml_gui-0.4.2.tar.gz",
"platform": null,
"description": "<h1 align=\"center\">\n NiaAML-GUI\n</h1>\n\n<p align=\"center\">\n <a href=\"https://pypi.python.org/pypi/niaaml-gui\">\n <img alt=\"PyPI Version\" src=\"https://img.shields.io/pypi/v/niaaml-gui.svg\">\n </a>\n <img alt=\"PyPI - Python Version\" src=\"https://img.shields.io/pypi/pyversions/niaaml-gui.svg\">\n <img alt=\"PyPI - Downloads\" src=\"https://img.shields.io/pypi/dm/niaaml-gui.svg\">\n <a href=\"https://repology.org/project/niaaml-gui/versions\">\n <img alt=\"Packaging status\" src=\"https://repology.org/badge/tiny-repos/niaaml-gui.svg\">\n </a>\n <a href=\"https://src.fedoraproject.org/rpms/NiaAML-GUI\">\n <img alt=\"Fedora package\" src=\"https://img.shields.io/fedora/v/NiaAML-GUI?color=blue&label=Fedora%20Linux&logo=fedora\">\n </a>\n <a href=\"https://github.com/flukapecnik/NiaAML-GUI/blob/master/LICENSE\">\n <img alt=\"GitHub license\" src=\"https://img.shields.io/github/license/lukapecnik/NiaAML-GUI.svg\">\n </a>\n <a href=\"https://github.com/firefly-cpp/NiaAML-GUI/actions/workflows/test.yml\">\n <img alt=\"GitHub Actions\" src=\"https://github.com/firefly-cpp/NiaAML-GUI/actions/workflows/test.yml/badge.svg\">\n </a>\n</p>\n\n<p align=\"center\">\n <img alt=\"GitHub commit activity\" src=\"https://img.shields.io/github/commit-activity/w/lukapecnik/NiaAML-GUI.svg\">\n <a href='http://isitmaintained.com/project/lukapecnik/NiaAML-GUI \"Average time to resolve an issue\"'>\n <img alt=\"Average time to resolve an issue\" src=\"http://isitmaintained.com/badge/resolution/lukapecnik/NiaAML-GUI.svg\">\n </a>\n <a href='http://isitmaintained.com/project/lukapecnik/NiaAML-GUI \"Percentage of issues still open\"'>\n <img alt=\"Percentage of issues still open\" src=\"http://isitmaintained.com/badge/open/lukapecnik/NiaAML-GUI.svg\">\n </a>\n <img alt=\"GitHub contributors\" src=\"https://img.shields.io/github/contributors/lukapecnik/NiaAML-GUI.svg\">\n</p>\n\n<p align=\"center\">\n <a href=\"#-installation\">\ud83d\udce6 Installation</a> \u2022\n <a href=\"#-usage\">\ud83d\ude80 Usage</a> \u2022\n <a href=\"#-example\">\ud83d\udcd3 Example</a> \u2022\n <a href=\"#-references\">\ud83d\udcdd References</a> \u2022\n <a href=\"#-cite-us\">\ud83d\udcc4 Cite us</a>\n</p>\n\nA graphical user interface for building and running machine learning pipelines using the [NiaAML](https://github.com/firefly-cpp/NiaAML) framework. This GUI now supports **block-based pipeline composition**, drag-and-drop components, visual connections, and CSV editing.\n\n* **Free software:** MIT license\n* **Python versions:** 3.10.x, 3.11.x, 3.12.x, 3.13.x\n\n## \ud83d\udce6 Installation\n\nTo install `NiaAML-GUI` with pip, use:\n\n```sh\npip install niaaml_gui\n```\n\nAfter successful installation, run [main.py](niaaml_gui/main.py):\n\n```sh\npython main.py\n```\n\n### Fedora Linux\n\nTo install `NiaAML-GUI` on Fedora, use:\n\n```sh\n$ dnf install NiaAML-GUI\n```\n\n### Alpine Linux\n\nTo install `NiaAML-GUI` on Alpine Linux, enable Community repository and use:\n\n```sh\n$ apk add niaaml-gui \n```\n\n## \ud83d\ude80 Usage\n\nNiaAML GUI application allows you to use the main features of the [NiaAML](https://github.com/firefly-cpp/NiaAML) framework. There are two views in the application. In the first one, you can prepare an environment for a pipeline optimization process. The purpose of the second one is to allow you to use an existing pipeline from a file. **The application currently supports data input in the form of CSV files.**\n\n### Pipeline Canvas View\n\nBelow is a screenshot of the first view with labeled components and you can find a description for each component under the screenshot.\n\n<p align=\"center\"><img src=\".github/gui1.png\" alt=\"NiaAML GUI First View\" title=\"NiaAML GUI First View\"/></p>\n\n| Component | Description |\n|:----------|:------------|\n| 1 | Tabbed view for choosing components to be added to the canvas. Components can be dragged and dropped onto the canvas to visually build the pipeline. |\n| 2 | The canvas area where blocks (components) are placed and connected. Users can construct the pipeline visually by drawing arrows between valid components. |\n| 3 | \"Select CSV File\" block. Input dataset selection. Includes a file browser, CSV header checkbox, and an edit button to view/modify the CSV content. <br> <p align=\"center\"><img src=\".github/gui3.png\" alt=\"NiaAML GUI Edit Dataset View\" title=\"NiaAML GUI Edit Dataset View\"/></p> |\n| 4 | \"Categorical Encoder\" block. Allows selection of encoding method for categorical features. Dropdown populated dynamically. |\n| 5 | \"Missing Imputer\" block. Allows selection of imputation method to handle missing values. |\n| 6 | \"Feature Selection\" block. Multi-selection dialog allows the user to choose one or more feature selection algorithms. |\n| 7 | \"Feature Transform\" block. Multi-selection dialog allows choosing one or more feature transformation algorithms. |\n| 8 | \"Classifier\" block. Multi-selection dialog for selecting one or more classification models. |\n| 9 | \"Optimization Algorithm (Selection)\" block. Dropdown for choosing the optimization algorithm used in component selection. |\n| 10 | \"Optimization Algorithm (Tuning)\" block. Dropdown for choosing the algorithm used for hyperparameter tuning. |\n| 11 | \"Population Size (Components Selection)\" block. Numeric input for specifying the population size during component selection. |\n| 12 | \"Population Size (Parameter Tuning)\" block. Numeric input for specifying the population size for hyperparameter tuning. |\n| 13 | \"Number of Evaluations (Component Selection)\" block. Sets the number of allowed evaluations during selection. |\n| 14 | \"Number of Evaluations (Parameter Tuning)\" block. Sets the number of evaluations for hyperparameter tuning. |\n| 15 | \"Fitness Function\" block. Dropdown for selecting the fitness function used during evaluation of each candidate pipeline. |\n| 16 | \"Pipeline Output Folder\" block. Defines the target folder where output files (pipeline, logs, results) are saved. |\n| 17 | Arrow connections between blocks. Only valid connections are allowed. When drawing, green/red highlights show whether the target is acceptable. |\n| 18 | Validation system. Before running optimization, the system checks whether all required components are present and properly configured. |\n\n\n#### Optimization\n\nBelow you can see screenshots of views during and after the optimization has finished.\n\n<p align=\"center\"><img src=\".github/gui2.png\" alt=\"NiaAML GUI Optimization Running\" title=\"NiaAML GUI Optimization Running\"/></p>\n<p align=\"center\"><img src=\".github/gui4.png\" alt=\"NiaAML GUI Optimization Finished\" title=\"NiaAML GUI Optimization Finished\"/></p>\n\n## \ud83d\udcd3 Example\n\nLet's say we want to find an optimal classification pipeline for the Example dataset. You can see the optimization setup in the screenshot below.\n\n<p align=\"center\"><img src=\".github/gui6.png\" alt=\"NiaAML GUI Optimization Setup\" title=\"NiaAML GUI Optimization Setup\"/></p>\n\nWe hit the `Start optimization` button and wait... You can see the output in the screenshot below.\n\n<p align=\"center\"><img src=\".github/gui7.png\" alt=\"NiaAML GUI Optimization Output\" title=\"NiaAML GUI Optimization Output\"/></p>\n\nThere are also 2 new files in the selected destination directory.\n\n<p align=\"center\"><img src=\".github/gui8.png\" alt=\"NiaAML GUI Output Files\" title=\"NiaAML GUI Output Files\"/></p>\n\nNow we can use the exported pipeline file for further classification on the unseen data.\n\n<p align=\"center\"><img src=\".github/gui9.png\" alt=\"NiaAML GUI Run Pipeline\" title=\"NiaAML GUI Run Pipeline\"/></p>\n\n## \ud83d\udcdd References\n\n<a id=\"1\">[1]</a> Dua, D. and Graff, C. (2019). [UCI Machine Learning Repository](http://archive.ics.uci.edu/ml). Irvine, CA: University of California, School of Information and Computer Science.\n\n## \ud83d\udcc4 Cite us\n\nL. Pe\u010dnik, I. Fister Jr. \"[NiaAML: AutoML framework based on stochastic population-based nature-inspired algorithms](https://joss.theoj.org/papers/10.21105/joss.02949).\" Journal of Open Source Software 6.61 (2021): 2949.\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "GUI for NiaAML Python package",
"version": "0.4.2",
"project_urls": {
"Homepage": "https://github.com/firefly-cpp/NiaAML-GUI",
"Repository": "https://github.com/firefly-cpp/NiaAML-GUI"
},
"split_keywords": [
"classification",
" niapy",
" niaaml",
" scikit-learn",
" nature-inspired algorithms",
" feature selection",
" preprocessing"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "3f387fba0fa4c6ed7f756b99c8457f312eced5b761c931dab8906d7473acdcd8",
"md5": "de8276475d83780751805af139cd0d7a",
"sha256": "f544b689c90993ad529d6cac0f2b6aec7b116c22e4d286758ed90bf424c65379"
},
"downloads": -1,
"filename": "niaaml_gui-0.4.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "de8276475d83780751805af139cd0d7a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<3.14,>=3.10",
"size": 1641714,
"upload_time": "2025-07-31T08:34:54",
"upload_time_iso_8601": "2025-07-31T08:34:54.458315Z",
"url": "https://files.pythonhosted.org/packages/3f/38/7fba0fa4c6ed7f756b99c8457f312eced5b761c931dab8906d7473acdcd8/niaaml_gui-0.4.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2376132a9e1e60aa9a77abe19f2f9e71b03d380cf5a931776d776f9648d37859",
"md5": "8ee6f23726df14cb4e62b4212ae4d7b9",
"sha256": "8f5e3dcbba2f82bb0df18e902730acc6ba18274ece4b8b9cd54ed1e1db96db9b"
},
"downloads": -1,
"filename": "niaaml_gui-0.4.2.tar.gz",
"has_sig": false,
"md5_digest": "8ee6f23726df14cb4e62b4212ae4d7b9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<3.14,>=3.10",
"size": 1608609,
"upload_time": "2025-07-31T08:34:56",
"upload_time_iso_8601": "2025-07-31T08:34:56.049520Z",
"url": "https://files.pythonhosted.org/packages/23/76/132a9e1e60aa9a77abe19f2f9e71b03d380cf5a931776d776f9648d37859/niaaml_gui-0.4.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-31 08:34:56",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "firefly-cpp",
"github_project": "NiaAML-GUI",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "niaaml-gui"
}