Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -0,0 +1,187 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
import streamlit as st
|
2 |
+
# import wikipedia
|
3 |
+
from streamlit_lottie import st_lottie
|
4 |
+
import regex as re
|
5 |
+
from streamlit_js_eval import streamlit_js_eval
|
6 |
+
# from common.utils import *
|
7 |
+
from data_collector import *
|
8 |
+
# from langchain_community.llms import Ollama
|
9 |
+
|
10 |
+
# from langchain_community.llms import Ollama
|
11 |
+
import pandas as pd
|
12 |
+
import json
|
13 |
+
st.set_page_config(layout="wide")
|
14 |
+
screen_width = streamlit_js_eval(label="screen.width",js_expressions='screen.width')
|
15 |
+
screen_height = streamlit_js_eval(label="screen.height",js_expressions='screen.height')
|
16 |
+
|
17 |
+
|
18 |
+
condition_capture = st.session_state
|
19 |
+
if 'schema' not in condition_capture:
|
20 |
+
condition_capture['schema'] = {}
|
21 |
+
if 'prompt' not in condition_capture:
|
22 |
+
condition_capture['prompt'] = ""
|
23 |
+
if "count" not in condition_capture:
|
24 |
+
condition_capture['count'] = 0
|
25 |
+
if "prev_schema" not in condition_capture:
|
26 |
+
condition_capture['prev_schema'] = {}
|
27 |
+
if "textual_value" not in condition_capture:
|
28 |
+
condition_capture['textual_value'] = {}
|
29 |
+
textual_value=None
|
30 |
+
|
31 |
+
|
32 |
+
|
33 |
+
schema=condition_capture['schema']
|
34 |
+
|
35 |
+
|
36 |
+
|
37 |
+
|
38 |
+
column1,column2 = st.columns(2)
|
39 |
+
with column2:
|
40 |
+
|
41 |
+
|
42 |
+
|
43 |
+
if len(condition_capture['schema'])!=0 and len(condition_capture['textual_value'])==0:
|
44 |
+
# condition_capture['prev_schema'] = condition_capture['schema']
|
45 |
+
condition_capture['textual_value']=relevent_value(str(condition_capture['schema']).lower(),50)
|
46 |
+
if len(condition_capture['schema'])!=0:
|
47 |
+
html_page = condition_capture['textual_value'][1]
|
48 |
+
textual_value = condition_capture['textual_value'][0]
|
49 |
+
st.write("<br>",unsafe_allow_html=True)
|
50 |
+
|
51 |
+
with st.container(border=True,height=int(screen_height/2.3)):
|
52 |
+
st.header("Wikipedia insights")
|
53 |
+
updated_schema = st.button("Start processing")
|
54 |
+
selector=st.empty()
|
55 |
+
write =st.empty()
|
56 |
+
start_page= selector.select_slider("Select a range of color wavelength",options=[i for i in html_page],key="start_page")
|
57 |
+
write.write(html_page[start_page],unsafe_allow_html=True)
|
58 |
+
|
59 |
+
|
60 |
+
|
61 |
+
|
62 |
+
|
63 |
+
# )
|
64 |
+
|
65 |
+
|
66 |
+
|
67 |
+
|
68 |
+
|
69 |
+
|
70 |
+
|
71 |
+
|
72 |
+
with column1:
|
73 |
+
|
74 |
+
if str(schema)!=str({}):
|
75 |
+
tabs = st.tabs(["Schema","Data Generation"])
|
76 |
+
with tabs[0]:
|
77 |
+
if str(schema)!=str({}):
|
78 |
+
|
79 |
+
schema_column1,schema_column2 = st.columns(2)
|
80 |
+
with schema_column1:
|
81 |
+
edited_df = st.data_editor([str(i) for index,i in enumerate(schema)],hide_index=True,use_container_width=True,num_rows='dynamic',height=int(screen_height/3))
|
82 |
+
|
83 |
+
with schema_column2:
|
84 |
+
number = st.number_input("Number of rows",min_value=1,max_value=1000,value=10)
|
85 |
+
if number!=condition_capture['count'] and updated_schema:
|
86 |
+
condition_capture['count'] = number
|
87 |
+
|
88 |
+
|
89 |
+
with open("/home/user/app/animation/edit_file.json") as animate:
|
90 |
+
url_json=json.load(animate)
|
91 |
+
st_lottie(url_json,height = int(screen_height/3))
|
92 |
+
|
93 |
+
|
94 |
+
with tabs[1]:
|
95 |
+
with open("/home/user/app/animation/no data animation.json") as animate:
|
96 |
+
url_json=json.load(animate)
|
97 |
+
dataframe=st.empty()
|
98 |
+
|
99 |
+
if condition_capture['count']==0:
|
100 |
+
st_lottie(url_json,height = int(screen_height/3))
|
101 |
+
|
102 |
+
else:
|
103 |
+
smart_append=[]
|
104 |
+
if condition_capture['prev_schema'] != condition_capture['schema']:
|
105 |
+
condition_capture['prev_schema'] = condition_capture['schema']
|
106 |
+
condition_capture['current_append']={}
|
107 |
+
|
108 |
+
for text_indexing,store in enumerate(actual_value(textual_value,schema)):
|
109 |
+
dummy_value =dictionary_formatting(store)
|
110 |
+
for keys in dummy_value:
|
111 |
+
while len(dummy_value[keys])>=2:
|
112 |
+
dummy_value[keys].pop(0)
|
113 |
+
dummy_value = dictionary_formatting(dummy_value)
|
114 |
+
|
115 |
+
if dummy_value != None:
|
116 |
+
|
117 |
+
|
118 |
+
smart_append.append(dummy_value)
|
119 |
+
print(dummy_value)
|
120 |
+
for keys in dummy_value:
|
121 |
+
if keys not in condition_capture['current_append']:
|
122 |
+
condition_capture['current_append'][str(keys)]=[]
|
123 |
+
condition_capture['current_append'][str(keys)].append(str([i for i in dummy_value[keys]]))
|
124 |
+
dataframe.dataframe(condition_capture['current_append'])
|
125 |
+
|
126 |
+
|
127 |
+
if len(condition_capture['current_append'][[i for i in condition_capture['current_append']][-1]])>=condition_capture['count']:
|
128 |
+
break
|
129 |
+
|
130 |
+
# print(dummy_value)
|
131 |
+
# if smart_check(dummy_value)!=True:
|
132 |
+
# smart_value=verification(dummy_value)
|
133 |
+
# if statement(condition_capture['schema'],smart_value):
|
134 |
+
# st.dataframe(smart_value)
|
135 |
+
condition_capture['current_append']={}
|
136 |
+
if len(smart_append)==0:
|
137 |
+
|
138 |
+
ranger=len(condition_capture['current_append'][[i for i in condition_capture['current_append']][0]])
|
139 |
+
for indexing in range(ranger):
|
140 |
+
working_dict = {}
|
141 |
+
for j in condition_capture['current_append']:
|
142 |
+
|
143 |
+
working_dict[j]=condition_capture['current_append'][j][indexing][0]
|
144 |
+
smart_append.append(working_dict)
|
145 |
+
smart_movement = sorting(smart_append)
|
146 |
+
|
147 |
+
for keys in smart_movement:
|
148 |
+
value=eval(keys)
|
149 |
+
for keys in value:
|
150 |
+
if keys not in condition_capture['current_append']:
|
151 |
+
condition_capture['current_append'][str(keys)]=[]
|
152 |
+
condition_capture['current_append'][str(keys)].append([str(i) for i in value[keys]])
|
153 |
+
dataframe.dataframe(condition_capture['current_append'])
|
154 |
+
for indexing,j in enumerate(smart_movement):
|
155 |
+
try:
|
156 |
+
# Convert string to dictionary
|
157 |
+
dummy_value = eval(j)
|
158 |
+
|
159 |
+
# Process dictionary values
|
160 |
+
for key in dummy_value:
|
161 |
+
while len(dummy_value[key]) >= 2:
|
162 |
+
dummy_value[key].pop(0)
|
163 |
+
|
164 |
+
# Format dictionary
|
165 |
+
formatted = dictionary_formatting(dummy_value)
|
166 |
+
print(formatted)
|
167 |
+
# Verify and store result
|
168 |
+
verification_result = verification(formatted) if formatted else None
|
169 |
+
for j in verification_result:
|
170 |
+
if j in condition_capture['current_append']:
|
171 |
+
condition_capture['current_append'][j][indexing]=[str(i) for i in verification_result[j]]
|
172 |
+
dataframe.dataframe(condition_capture['current_append'])
|
173 |
+
|
174 |
+
except:
|
175 |
+
pass
|
176 |
+
|
177 |
+
|
178 |
+
|
179 |
+
prompt = st.text_input(label="Please use prompt to generate data",value=condition_capture['prompt'])
|
180 |
+
if prompt != str(condition_capture['prompt']):
|
181 |
+
|
182 |
+
condition_capture['prompt'] = prompt
|
183 |
+
schema = schema_generator(prompt)
|
184 |
+
condition_capture['schema'] = schema
|
185 |
+
condition_capture['current_append']={}
|
186 |
+
|
187 |
+
st.rerun()
|