Source code for idmd.ui.generator_ui

"""Module for data generator component."""

import streamlit as st

from ..data.generator import DatasetGenerator
from .base import Component


[docs] class DataGeneratorUI(Component): """Provides UI for generating sample datasets."""
[docs] def render(self) -> None: """ Renders the dataset generator UI in the Streamlit interface. Allows users to generate datasets with different distributions. """ st.header("Generate Sample Dataset") distribution = st.selectbox( "Select Distribution", ["Normal Distribution", "Uniform Distribution", "Random Integers"], key="distribution_selector", ) size = st.number_input("Number of Samples", min_value=1, value=100, step=1, key="size_input") if distribution == "Normal Distribution": self._render_normal_distribution(size) elif distribution == "Uniform Distribution": self._render_uniform_distribution(size) elif distribution == "Random Integers": self._render_random_integers(size)
def _render_normal_distribution(self, size: int) -> None: """ Renders the UI for generating a normal distribution dataset. Args: size (int): Number of samples. """ mean = st.number_input("Mean", value=0.0, step=0.1, key="normal_mean_input") std = st.number_input("Standard Deviation", value=1.0, step=0.1, key="normal_std_input") if st.button("Generate Normal Distribution"): df = DatasetGenerator.generate_normal_distribution(size=(size, 1), mean=mean, std=std) st.session_state.df = df st.success("Normal distribution dataset generated!") st.dataframe(df.head()) def _render_uniform_distribution(self, size: int) -> None: """ Renders the UI for generating a uniform distribution dataset. Args: size (int): Number of samples. """ low = st.number_input("Lower Bound", value=0.0, step=0.1, key="uniform_low_input") high = st.number_input("Upper Bound", value=1.0, step=0.1, key="uniform_high_input") if st.button("Generate Uniform Distribution"): df = DatasetGenerator.generate_uniform_distribution(size=(size, 1), low=low, high=high) st.session_state.df = df st.success("Uniform distribution dataset generated!") st.dataframe(df.head()) def _render_random_integers(self, size: int) -> None: """ Renders the UI for generating a random integers dataset. Args: size (int): Number of samples. """ low = st.number_input("Lower Bound", value=0, step=1, key="random_low_input") high = st.number_input("Upper Bound", value=100, step=1, key="random_high_input") if st.button("Generate Random Integers"): df = DatasetGenerator.generate_random_integers(size=(size, 1), low=low, high=high) st.session_state.df = df st.success("Random integers dataset generated!") st.dataframe(df.head())