awacke1's picture
Update app.py
6ee0977 verified
raw
history blame
11.9 kB
# How can I add row to an iterable dataset
#πŸ€—Datasets
#This is the first time xbilek25 has posted β€” let’s welcome them to our community!
#xbilek25
#2
#9h
#I need any working option to add row to a dataset, where streaming=True. While working with normal dataset I define new item and use code like this:
#tmp_dataset = tmp_dataset.add_item(new_item), but i can’t figure out how to do this while my dataset is streaming=True.
#Can anyone help me to find solution, please?
import streamlit as st
st.set_page_config(page_icon="πŸ“", page_title="πŸ“AI-EIO-EditorπŸ“Š", layout="wide")
if st.checkbox('Show Anatomy Table'):
st.markdown("""
## Anatomy Head to Toe Table with Body Organs Costly Conditions, Spending, CPT Codes and Frequency
| Table Num | Body Part | Organ/Part | Description | πŸ“ˆ Costly Condition | πŸ’° Spending (billions) | CPT Range Start | CPT Range Finish | Frequency |
|-----------|------------------|----------------------|-------------------------------|------------------------------|------------------------|-----------------|------------------|----------------|
| 1 | 🧠 Head | 🧠 Brain | Controls mental processes | 😨 Anxiety & Depression | 210 | 90791 | 90899 | 1 in 5 |
| 2 | πŸ‘€ Eyes | πŸ‘οΈ Optic Nerve | Vision | πŸ‘“ Cataracts | 10.7 | 92002 | 92499 | 1 in 6 (over 40 years) |
| 3 | πŸ‘‚ Ears | 🐚 Cochlea | Hearing | πŸ“’ Hearing Loss | 7.1 | 92502 | 92700 | 1 in 8 (over 12 years) |
| 4 | πŸ‘ƒ Nose | πŸ‘ƒ Olfactory Bulb | Smell | 🀧 Allergies | 25 | 31231 | 31294 | 1 in 3 |
| 5 | πŸ‘„ Mouth | πŸ‘… Tongue | Taste | 🦷 Dental Issues | 130 | 00100 | 00192 | 1 in 2 |
| 6 | 🫁 Neck | πŸ¦‹ Thyroid | Metabolism | 🦠 Hypothyroidism | 3.1 | 60210 | 60271 | 1 in 20 |
| 7 | πŸ’ͺ Upper Body | ❀️ Heart | Circulation | πŸ’” Heart Disease | 230 | 92920 | 93799 | 1 in 4 (over 65 years) |
| 8 | πŸ’ͺ Upper Body | 🫁 Lungs | Respiration | 😷 Chronic Obstructive Pulmonary Disease | 70 | 94002 | 94799 | 1 in 20 (over 45 years) |
| 9 | πŸ’ͺ Upper Body | 🍷 Liver | Detoxification | 🍺 Liver Disease | 40 | 47000 | 47999 | 1 in 10 |
| 10 | πŸ’ͺ Upper Body | 🍹 Kidneys | Filtration | 🌊 Chronic Kidney Disease | 110 | 50010 | 50999 | 1 in 7 |
| 11 | πŸ’ͺ Upper Body | πŸ’‰ Pancreas | Insulin secretion | 🍬 Diabetes | 327 | 48100 | 48999 | 1 in 10 |
| 12 | πŸ’ͺ Upper Body | 🍽️ Stomach | Digestion | πŸ”₯ Gastroesophageal Reflux Disease | 17 | 43200 | 43289 | 1 in 5 |
| 13 | πŸ’ͺ Upper Body | πŸ›‘οΈ Spleen | Immune functions | 🩸 Anemia | 5.6 | 38100 | 38199 | 1 in 6 |
| 14 | πŸ’ͺ Upper Body | πŸ«€ Blood Vessels | Circulation of blood | πŸš‘ Hypertension | 55 | 40110 | 40599 | 1 in 3 |
| 15 | 🦡 Lower Body | 🍝 Colon | Absorption of water, minerals | 🌟 Colorectal Cancer | 14 | 45378 | 45378 | 1 in 23 |
| 16 | 🦡 Lower Body | 🚽 Bladder | Urine excretion | πŸ’§ Urinary Incontinence | 8 | 51700 | 51798 | 1 in 4 (over 65 years) |
| 17 | 🦡 Lower Body | πŸ’ž Reproductive Organs | Sex hormone secretion | πŸŽ—οΈ Endometriosis | 22 | 56405 | 58999 | 1 in 10 (women) |
| 18 | 🦢 Feet | 🎯 Nerve endings | Balance and movement | πŸ€• Peripheral Neuropathy | 19 | 95900 | 96004 | 1 in 30 |
| 19 | 🦢 Feet | 🌑️ Skin | Temperature regulation | 🌞 Skin Cancer | 8.1 | 96910 | 96999 | 1 in 5 |
| 20 | 🦢 Feet | πŸ’ͺ Muscles | Movement and strength | πŸ‹οΈβ€β™‚οΈ Musculoskeletal Disorders | 176 | 97110 | 97799 | 1 in 2 |
""")
import streamlit as st
import pandas as pd
import traceback
import sys
from st_aggrid import AgGrid
from st_aggrid.grid_options_builder import GridOptionsBuilder
from st_aggrid.shared import JsCode
from st_aggrid import GridUpdateMode, DataReturnMode
def parse(file, condition, data=[], ind_append=False):
for line in file:
st.write(line)
data.append(line)
return data
def read_csv_any_file(file):
dropBlanks=True
logResult=True
logResultStartSymbol = "["
if file is not None:
data = []
df = pd.DataFrame()
for line in file:
if line == b' \r\n':
if dropBlanks == False:
st.write(line.decode('UTF-8'))
else:
if logResult:
st.write(line.decode('UTF-8'))
data.append(line.decode('UTF-8'))
df = pd.DataFrame(data, columns=['InputLines'])
return df
# Style
def _max_width_():
max_width_str = f"max-width: 1800px;"
st.markdown(
f"""
<style>
.reportview-container .main .block-container{{
{max_width_str}
}}
</style>
""",
unsafe_allow_html=True,
)
# Title Bar with Images and Icons
col1, col2, col3 = st.columns([1,6,1])
with col1:
st.image("https://cdnb.artstation.com/p/assets/images/images/054/910/875/large/aaron-wacker-cyberpunk-computer-brain-design.jpg?1665656558",width=64,)
with col2:
st.title("πŸ“Double Line AI EditorπŸ“Š")
with col3:
st.image("https://cdna.artstation.com/p/assets/images/images/054/910/878/large/aaron-wacker-cyberpunk-computer-devices-iot.jpg?1665656564",width=64,)
# Upload
c29, c30, c31 = st.columns([1, 6, 1])
with c30:
uploaded_file = st.file_uploader("", key="1", help="To activate 'wide mode', go to the menu > Settings > turn on 'wide mode'",)
if uploaded_file is not None:
file_container = st.expander("Check your uploaded .csv")
#try:
shows = read_csv_any_file(uploaded_file)
#shows = pd.read_csv(uploaded_file)
#except:
# print(sys.exc_info()[2])
uploaded_file.seek(0)
file_container.write(shows)
else:
st.info(f"""⬆️Upload a πŸ“.CSV file. Examples: [Chatbot](https://huggingface.co/datasets/awacke1/Carddata.csv) [Mindfulness](https://huggingface.co/datasets/awacke1/MindfulStory.csv) [Wikipedia](https://huggingface.co/datasets/awacke1/WikipediaSearch)""")
st.stop()
# DisplayGrid
#gb = GridOptionsBuilder.from_dataframe(shows)
#z = [[" ".join(i.split()[:2]),str(i.split()[2])] for i in shows]
#df = pd.DataFrame(z,columns=['Str','Str2'])
gb = GridOptionsBuilder.from_dataframe(shows)
gb.configure_default_column(enablePivot=True, enableValue=True, enableRowGroup=True)
gb.configure_selection(selection_mode="multiple", use_checkbox=True)
gb.configure_side_bar()
gridOptions = gb.build()
st.success(f"""πŸ’‘ Tip! Hold shift key when selecting rows to select multiple rows at once.""")
response = AgGrid(
shows,
gridOptions=gridOptions,
enable_enterprise_modules=True,
update_mode=GridUpdateMode.MODEL_CHANGED,
data_return_mode=DataReturnMode.FILTERED_AND_SORTED,
fit_columns_on_grid_load=False,
)
# Filters
df = pd.DataFrame(response["selected_rows"])
st.subheader("Filtered data will appear below πŸ“Š ")
st.text("")
st.table(df)
st.text("")
import base64
import pandas as pd
# Example DataFrame
data = {'Column1': [1, 2], 'Column2': [3, 4]}
df = pd.DataFrame(data)
# Function to convert DataFrame to CSV and then encode to base64
def to_base64_csv(df):
csv = df.to_csv(index=False)
b64 = base64.b64encode(csv.encode()).decode()
return f"data:text/csv;base64,{b64}"
# Function to convert DataFrame to TXT and then encode to base64
def to_base64_txt(df):
txt = df.to_csv(index=False, sep='\t')
b64 = base64.b64encode(txt.encode()).decode()
return f"data:text/plain;base64,{b64}"
# Generate base64 encoded links
csv_link = to_base64_csv(df)
txt_link = to_base64_txt(df)
# Markdown format for hyperlinks in bold font with emojis
markdown_csv_link = f"**[πŸ“₯ Download Dataset as CSV]({csv_link})**"
markdown_txt_link = f"**[πŸ“₯ Download Dataset as TXT]({txt_link})**"
# Display as markdown (hypothetical, depends on how you render markdown in your application)
print(markdown_csv_link)
print(markdown_txt_link)
st.markdown(markdown_csv_link, unsafe_allow_html=True)
st.markdown(markdown_txt_link, unsafe_allow_html=True)
#-----------------------------------------------------------------------
import streamlit as st
import pandas as pd
# Load dataset
def load_data():
return pd.read_csv('anatomy_dataset.csv')
# Save dataset
def save_data(df):
df.to_csv('anatomy_dataset.csv', index=False)
# CRUD Operations
def add_data(df):
# Add a row to the dataframe (Example)
# You can modify this function to take input from the user
new_row = {'Table Num': 21, 'Body Part': 'New Part', 'Organ/Part': 'New Organ', 'Description': 'New Description',
'Costly Condition': 'New Condition', 'Spending (billions)': 0, 'CPT Range Start': 0, 'CPT Range Finish': 0,
'Frequency': 'New Frequency'}
df = df.append(new_row, ignore_index=True)
return df
def update_data(df):
# Update a row in the dataframe (Example)
# Implement the update logic based on your requirements
if not df.empty:
df.at[0, 'Description'] = 'Updated Description'
return df
def delete_data(df):
# Delete a row from the dataframe (Example)
# Implement the delete logic based on your requirements
if not df.empty:
df = df.drop(df.index[0])
return df
# Streamlit UI
st.title("Anatomy Head to Toe CRUD Operations")
# Display the table if checkbox is checked
if st.checkbox('Show Anatomy Table as Dataframe'):
df = load_data()
st.markdown("## Anatomy Head to Toe Table with Body Organs Costly Conditions, Spending, CPT Codes and Frequency")
st.dataframe(df)
# CRUD operation buttons
col1, col2, col3, col4 = st.columns(4)
if col1.button('βž• Add'):
df = load_data()
df = add_data(df)
save_data(df)
if col2.button('πŸ”„ Update'):
df = load_data()
df = update_data(df)
save_data(df)
if col3.button('❌ Delete'):
df = load_data()
df = delete_data(df)
save_data(df)
if col4.button('πŸ’Ύ Save'):
df = load_data()
save_data(df)
st.success("Data saved to CSV!")