Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -70,7 +70,7 @@ mutation_site_headers = [
|
|
| 70 |
st.title("ASCII & Binary Label Converter")
|
| 71 |
|
| 72 |
# Create tabs
|
| 73 |
-
tab1, tab2 = st.tabs(["Text to Binary Labels", "Image to Binary Labels"])
|
| 74 |
|
| 75 |
with tab1:
|
| 76 |
st.write("Enter text to see its ASCII codes and corresponding binary labels:")
|
|
@@ -119,8 +119,8 @@ with tab2:
|
|
| 119 |
img = Image.open(uploaded_file)
|
| 120 |
st.image(img, caption="Uploaded Image", use_column_width=True)
|
| 121 |
|
| 122 |
-
st.subheader("Crop the image with drag and select")
|
| 123 |
-
cropped_img = st_cropper(img, realtime_update=True, box_color='blue', aspect_ratio=
|
| 124 |
|
| 125 |
st.image(cropped_img, caption="Cropped Image", use_column_width=True)
|
| 126 |
|
|
@@ -155,4 +155,34 @@ with tab2:
|
|
| 155 |
mime="text/csv"
|
| 156 |
)
|
| 157 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 158 |
# Future: integrate DNA editor mapping for each mutation site here
|
|
|
|
| 70 |
st.title("ASCII & Binary Label Converter")
|
| 71 |
|
| 72 |
# Create tabs
|
| 73 |
+
tab1, tab2, tab3 = st.tabs(["Text to Binary Labels", "Image to Binary Labels", "EF -> Binary"])
|
| 74 |
|
| 75 |
with tab1:
|
| 76 |
st.write("Enter text to see its ASCII codes and corresponding binary labels:")
|
|
|
|
| 119 |
img = Image.open(uploaded_file)
|
| 120 |
st.image(img, caption="Uploaded Image", use_column_width=True)
|
| 121 |
|
| 122 |
+
st.subheader("Crop the image with drag and select (1:1 aspect ratio)")
|
| 123 |
+
cropped_img = st_cropper(img, realtime_update=True, box_color='blue', aspect_ratio=1.0)
|
| 124 |
|
| 125 |
st.image(cropped_img, caption="Cropped Image", use_column_width=True)
|
| 126 |
|
|
|
|
| 155 |
mime="text/csv"
|
| 156 |
)
|
| 157 |
|
| 158 |
+
with tab3:
|
| 159 |
+
st.write("Upload an Editing Frequency CSV or fill in manually:")
|
| 160 |
+
threshold_file = st.file_uploader("Upload Column Threshold CSV", type=["csv"], key="threshold")
|
| 161 |
+
ef_file = st.file_uploader("Upload Editing Frequency CSV", type=["csv"], key="ef")
|
| 162 |
+
|
| 163 |
+
if threshold_file:
|
| 164 |
+
thresholds_df = pd.read_csv(threshold_file, index_col=0)
|
| 165 |
+
thresholds = thresholds_df.squeeze()
|
| 166 |
+
|
| 167 |
+
if ef_file:
|
| 168 |
+
ef_df = pd.read_csv(ef_file)
|
| 169 |
+
else:
|
| 170 |
+
ef_df = pd.DataFrame(columns=thresholds.index if threshold_file else [])
|
| 171 |
+
|
| 172 |
+
edited_df = st.data_editor(ef_df, num_rows="dynamic")
|
| 173 |
+
|
| 174 |
+
if st.button("Convert to Binary Labels"):
|
| 175 |
+
if threshold_file:
|
| 176 |
+
binary_df = edited_df.ge(thresholds).astype(int)
|
| 177 |
+
st.subheader("Binary Labels")
|
| 178 |
+
st.dataframe(binary_df)
|
| 179 |
+
st.download_button(
|
| 180 |
+
label="Download Binary Labels Table as CSV",
|
| 181 |
+
data=binary_df.to_csv(index=False),
|
| 182 |
+
file_name="ef_binary_labels_table.csv",
|
| 183 |
+
mime="text/csv"
|
| 184 |
+
)
|
| 185 |
+
else:
|
| 186 |
+
st.error("Please upload the threshold CSV file first.")
|
| 187 |
+
|
| 188 |
# Future: integrate DNA editor mapping for each mutation site here
|