Data-Generator-MVP / generate /intra_node.py
rana22
refactor
f3c80e5
Raw History Blame Contribute Delete
1.87 kB
import pandas as pd
import gradio as gr
from generator import SyntheticDataGenerator
from analyze.intra_node import (
run_intra_node_analysis,
PairwiseRelationshipEvaluator
)
from render.table.component import (
render_generated_tables
)
def generate_node_data(
weights_state,
schema_state,
data_state,
selected_node,
num_rows,
cross_node_validation=None,
):
try:
if not schema_state:
raise gr.Error("Load schema first.")
if not selected_node:
raise gr.Error("Select a node.")
# get schema
schema = next((s for s in schema_state if s.name == selected_node), None)
if schema is None:
raise gr.Error(f"Schema not found for node '{selected_node}'.")
# get real data
df = data_state.get(selected_node)
print(f"selected node {selected_node}, data length {len(df)}")
if df is None or df.empty:
raise gr.Error(f"No data found for node '{selected_node}'.")
# run relationship analysis first
engine = PairwiseRelationshipEvaluator(schema, weights_state)
results = engine.evaluate_all_pairs(df)
if results.empty:
raise gr.Error("No relationships found. Cannot generate synthetic data.")
# generate synthetic data
gen = SyntheticDataGenerator(
real_rows=df,
relationships=results,
schema=schema,
synth_df=None
)
synth_df = gen.generate(int(num_rows))
valid_df, invalid_df = gen.validate_rows(synth_df)
if cross_node_validation is not None:
return results, valid_df, invalid_df
return render_generated_tables(results, valid_df, invalid_df)
except Exception as e:
return [], [], [], f"error while generating data - app\n {str(e)}"