Source code for idmd.ui.uploader_generator_ui

import time

import pandas as pd
import streamlit as st

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


[docs] class FileGeneratorUI(Component): """Provides UI for data generation.""" def __init__(self, position: int = 0) -> None: """ Initializes the FileGeneratorUI component with a specific position. Args: position (int): The column position of the component. Defaults to 0. """ super().__init__(position)
[docs] def render(self) -> None: st.header("File Generation") selected_distribution = st.selectbox("Dataset Generation", options=["normal", "uniform", "random"]) sample_count = st.number_input("Sample Size", min_value=1, step=1) column_count = st.number_input("Column Size", min_value=1, step=1) size = (sample_count, column_count) params: dict[str, int | float] = {} if selected_distribution == "normal": params["normal_mean"] = st.number_input("Mean") params["normal_sd"] = st.number_input("Standard Deviation", min_value=0) elif selected_distribution == "uniform": params["uni_lb"] = st.number_input("Lower Bound") params["uni_ub"] = st.number_input("Upper Bound") elif selected_distribution == "random": params["rnd_lb"] = st.number_input("Lower Bound", step=1) params["rnd_ub"] = st.number_input("Upper Bound", step=1) data: pd.DataFrame if st.button("Generate Dataset"): if selected_distribution == "normal": data = DatasetGenerator.generate_normal_distribution(size, params["normal_mean"], params["normal_sd"]) elif selected_distribution == "uniform": data = DatasetGenerator.generate_uniform_distribution(size, params["uni_lb"], params["uni_ub"]) elif selected_distribution == "random": data = DatasetGenerator.generate_random_integers(size, params["rnd_lb"], params["rnd_ub"]) st.session_state["original_df"] = data.copy() st.session_state["df"] = data.copy() st.session_state["uploaded_file_name"] = f"{selected_distribution}_{time.time_ns()}.csv"