Skip to content

refactor/recommender-modular-structure#64

Open
DYung26 wants to merge 53 commits into
PlotSenseAI:developfrom
DYung26:refactor/recommender-modular-structure
Open

refactor/recommender-modular-structure#64
DYung26 wants to merge 53 commits into
PlotSenseAI:developfrom
DYung26:refactor/recommender-modular-structure

Conversation

@DYung26
Copy link
Copy Markdown
Contributor

@DYung26 DYung26 commented Oct 31, 2025

This pull request introduces a new extensible plot generation system for the plotsense.plot_generator package, focusing on modularity and support for both basic and advanced (smart) plotting functionalities. The changes include a new base class for plot generators, a registry-based approach for plot type management, and a suite of basic and smart plot implementations with improved error handling and customization.

Core architecture and extensibility

  • Added a new PlotGenerator base class in base_generator.py that validates input data, manages plot suggestions, and registers plot types using a registry pattern. This enables extensible and type-safe plot generation based on suggestions.
  • Introduced BasicPlotGenerator in basic_generator.py that maps common plot types (bar, box, histogram, scatter, etc.) to their respective functions for easy extension and use.

Basic plot implementations

  • Implemented individual basic plot functions (bar, barh, box, ecdf, hist, kde, pie, scatter, violin, hexbin) with clear input validation, error handling, and customizable labels/titles. [1] [2] [3] [4] [5] [6] [7] [8] [9] [10]

Smart/advanced plot implementations

  • Added enhanced "smart" plot functions for boxplots, ECDF, histograms, and KDE that handle both univariate and grouped (bivariate) cases, including robust NaN filtering and group-wise plotting for categorical variables. [1] [2] [3] [4]

Utilities and helpers

  • Introduced a helper function set_labels in helpers.py to standardize axis labeling for plots, improving code reuse and consistency.

API cleanup

  • Updated the main module import in __init__.py to only expose the high-level plotgen function, removing direct exposure of the generator class for a cleaner API.

…LLM` querying with strategy-based execution, parallel model handling, multimodal message building, and weighted model scoring
…coding functions for `matplotlib` integration
…` models with endpoint, key validation, and model listing
…orting text and multimodal queries with validation
…point with query, list_models, and key validation
…th query, list_models, and key validation
…PI` with query, list_models, and key validation
…providers, manage `API` keys, and handle queries
…order until success, with optional success tracking
…ghest-performance models with fallback to lower tiers
… provider/model pairs with iteration-aware selection
…ace` and `ProviderManager` with strategy-based model selection, remove `Groq`-specific hardcoding, and unify image handling
…add new `AI/LLM` packages; update `setup.py` to read `README` safely and include additional dependencies
…arams (strategy, models, iterations, interactivity, timeout)
… switch to registry-based unified plotgen `API` using `Basic/Smart` generators
@DYung26 DYung26 changed the base branch from main to develop October 31, 2025 06:46
… into structured visualization recommendations
…ting model querying, parsing, and ensemble scoring
…gic to dedicated `recommender` module

- Removed the inlined `VisualizationRecommender` class from `suggestions.py` and imported it from `visual_suggestion.recommender`
- Simplified `suggestions.py` to serve as a lightweight interface for visualization recommendation
- Updated `__init__.py` imports to correctly expose `VisualizationRecommender` from its new package
- Enhanced `recommender()` function to support:
  - `StrategyName` parameter for configurable model selection strategy
  - `selected_models`, `interactive`, and `timeout` arguments for flexible runtime behavior
- Improved module clarity and reduced redundancy by centralizing model, API, and ensemble logic under the recommender system
@DYung26 DYung26 force-pushed the refactor/recommender-modular-structure branch from fcae811 to 57a605a Compare October 31, 2025 19:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant