This is a simple tool to analyze the features of a dataset, prototype and test machine learning/statistical models. The project is built with Python type hints in all modules.
1. Prerequisites
- Python 3.12+: Make sure you have Python 3.12 (or venv ;) ) or more recent installed on your system.
- WSL (on Windows): Windows users should install the Windows Subsystem for Linux (WSL) to use Poetry.
2. Install Poetry (Optional but RECOMMENDED)
Poetry is used to manage dependencies and build the project. Follow the link to install it or continue with to install with pyenv and pip.
3. Install Project
-
Clone the repository:
git clone <repository-url> cd <repository-folder>
-
Install the dependencies:
poetry install
-
Install Pyenv:
curl https://pyenv.run | bash -
Install and configure the Python version:
pyenv install 3.12.0 pyenv local 3.12.0 -
Install the facilities using the
requirements.txt:pip install -r requirements.txt
-
The option to run via Docker is in its early stages and is a work in progress
# If you are using X11, remember to allow the connection xhost +local:docker docker buildx build -t fa . # If u must use the local files, remember to map to volume docker run --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix --name fa fa
3. Run
cd src
python main.py
# Or with make
make run- Basic
├── assets # Assets files
│ ├── styles # Global styles
│ └── icons # Icons
├── docs # Documentation used by MkDocs
├── i18n # Internationalization files
├── src # Source code
│ ├── context # Context (Global state)
│ │ ├── states/* # States (With handlers)
│ │ └── store.py # Store/Merge context
│ ├── interfaces # Project interfaces
│ ├── models # Project models (extends FAModel)
│ ├── lib # Project libraries
│ │ ├── model_manager # Model manager
│ │ ├── orm # Typed JSON ORM with Pydantic and tinydb
│ │ ├── state_manager # State manager with Observer
│ │ ├── utils # Generic utils
│ │ └── widget.py # Generic Widget (extends Gtk.Widget)
│ └── sdk # SDKs for other services
├── .env.example # Environment variables example
└── requirements.txt # Python requirements file (alternative to poetry)Advanced
├── assets # Assets files
│ ├── styles # Global styles
│ └── icons # Icons
├── docs # Documentation used by MkDocs
├── i18n # Internationalization files
├── src # Source code
│ ├── context # Context (Global state)
│ │ ├── states/* # States (With handlers)
│ │ └── store.py # Store/Merge context
│ ├── models/* # Project models (extends FAModel)
│ ├── interfaces # Project interfaces
│ │ ├── application.py # Global app interface
│ │ ├── controller.py # Generic (handler and connect signals)
│ │ ├── module.py # Generic (handler root state signals)
│ │ ├── state.py # Generic State
│ │ └── widget.py # Generic Widget (extends Gtk.Widget)
│ ├── lib # Project libraries
│ │ ├── model_manager # Model manager
│ │ ├── orm # Typed JSON ORM with Pydantic and tinydb
│ │ ├── state_manager # State manager with Observer
│ │ ├── utils # Generic utils
│ │ │ ├── bin_.py # Binary models access
│ │ │ ├── hsash.py # Hash utils
│ │ │ ├── lock.py # Lock utils to multiprocessing
│ │ │ ├── logger.py # Global logger
│ │ │ ├── meta.py # Meta class utils (Singleton)
│ │ │ ├── time_.py # Timezone, etc
│ │ │ ├── types_.py # State manager with Observer
│ │ │ ├── ui.py # State manager with Observer
│ │ └── widget.py # Generic Widget (extends Gtk.Widget)
│ └── sdk # SDKs for other services
├── .editorconfig # Editor configuration
├── .env.example # Environment variables example
├── .gitignore # Git ignore file
├── .pre-commit-config.yaml # Pre-commit configuration
├── Dockerfile # Dockerfile
├── Makefile # Makefile with common commands
├── poetry.lock # Poetry lock file
├── pyproject.toml # Python project file
├── requirements.txt # Python requirements file (alternative to poetry)
└── ruff.toml # Ruff (code linter/formatter) options- Widget: Interact with the user/screen
- Controller: Handle the widget state setter's/handle signals
- Module: Handle the controller with root state subscribes
- State: Integrate the module and interact with data/graphs, group widgets/modules, be creative ; )
@misc{FeaturesAnalyzer,
title={Boilerplate para Ferramentas de Visualização e Análise de Dados},
author={Zaú Júlio},
year={2024},
url={https://github.com/ZauJulio/FeaturesAnalyzer},
}UFRN/ZauJulio - 2024 💙🎓️
