Singularity666 commited on
Commit
fa5e471
·
1 Parent(s): 7176925

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -30
app.py CHANGED
@@ -56,6 +56,13 @@ model = CLIPModel().to(device)
56
  model.load_state_dict(torch.load("weights.pt", map_location=torch.device('cpu')))
57
  text_embeddings = torch.load('saved_text_embeddings.pt', map_location=device)
58
 
 
 
 
 
 
 
 
59
  def download_link(content, filename, link_text):
60
  b64 = base64.b64encode(content).decode()
61
  href = f'<a href="data:application/octet-stream;base64,{b64}" download="{filename}">{link_text}</a>'
@@ -91,6 +98,9 @@ def save_as_docx(text, filename):
91
  output.seek(0)
92
  return output.getvalue()
93
 
 
 
 
94
  st.title("RadiXGPT: An Evolution of machine doctors towards Radiology")
95
 
96
  # Collect user's personal information
@@ -107,34 +117,38 @@ if uploaded_file is not None:
107
  st.image(image, caption="Uploaded Image", use_column_width=True)
108
  st.write("")
109
 
110
- if st.button("Generate Caption"):
111
- with st.spinner("Generating caption..."):
112
- image_np = np.array(image)
113
- caption = show_predicted_caption(image_np)[0]
114
-
115
- st.success(f"Caption: {caption}")
116
-
117
- # Generate the radiology report
118
- radiology_report = generate_radiology_report(f"Write Complete Radiology Report for this with clinical info, subjective, Assessment, Finding, Impressions, Conclusion and more in proper order : {caption}")
119
-
120
- # Add personal information to the radiology report
121
- radiology_report_with_personal_info = f"Patient Name: {first_name} {last_name}\nAge: {age}\nGender: {gender}\n\n{radiology_report}"
122
-
123
- st.header("Radiology Report")
124
- st.write(radiology_report_with_personal_info)
125
- st.markdown(download_link(save_as_docx(radiology_report_with_personal_info, "radiology_report.docx"), "radiology_report.docx", "Download Report as DOCX"), unsafe_allow_html=True)
126
-
 
 
 
127
  feedback_options = ["Satisfied", "Not Satisfied"]
128
- selected_feedback = st.radio("Please provide feedback on the generated report:", feedback_options)
129
-
130
- if selected_feedback == "Not Satisfied":
131
- if st.button("Regenerate Report"):
132
- with st.spinner("Regenerating report..."):
133
- alternative_caption = get_alternative_caption(image_np, model, text_embeddings, testing_df["caption"])
134
- regenerated_radiology_report = generate_radiology_report(f"Write Complete Radiology Report for this with clinical info, subjective, Assessment, Finding, Impressions, Conclusion and more in proper order : {alternative_caption}")
135
-
136
- regenerated_radiology_report_with_personal_info = f"Patient Name: {first_name} {last_name}\nAge: {age}\nGender: {gender}\n\n{regenerated_radiology_report}"
137
-
138
- st.header("Regenerated Radiology Report")
139
- st.write(regenerated_radiology_report_with_personal_info)
140
- st.markdown(download_link(save_as_docx(regenerated_radiology_report_with_personal_info, "regenerated_radiology_report.docx"), "regenerated_radiology_report.docx", "Download Regenerated Report as DOCX"), unsafe_allow_html=True)
 
 
56
  model.load_state_dict(torch.load("weights.pt", map_location=torch.device('cpu')))
57
  text_embeddings = torch.load('saved_text_embeddings.pt', map_location=device)
58
 
59
+ # Add this function to reset the session state
60
+ def reset_session_state():
61
+ st.session_state.caption = None
62
+ st.session_state.report = None
63
+ st.session_state.feedback = None
64
+ st.session_state.regenerated_report = None
65
+
66
  def download_link(content, filename, link_text):
67
  b64 = base64.b64encode(content).decode()
68
  href = f'<a href="data:application/octet-stream;base64,{b64}" download="{filename}">{link_text}</a>'
 
98
  output.seek(0)
99
  return output.getvalue()
100
 
101
+ # Call reset_session_state() at the beginning of the script
102
+ reset_session_state()
103
+
104
  st.title("RadiXGPT: An Evolution of machine doctors towards Radiology")
105
 
106
  # Collect user's personal information
 
117
  st.image(image, caption="Uploaded Image", use_column_width=True)
118
  st.write("")
119
 
120
+ # Replace the 'if st.button("Generate Caption"):' block with the following code
121
+ if st.button("Generate Caption") or st.session_state.caption:
122
+ if not st.session_state.caption:
123
+ with st.spinner("Generating caption..."):
124
+ image_np = np.array(image)
125
+ st.session_state.caption = show_predicted_caption(image_np)[0]
126
+
127
+ st.success(f"Caption: {st.session_state.caption}")
128
+
129
+ # Generate the radiology report
130
+ if not st.session_state.report:
131
+ st.session_state.report = generate_radiology_report(f"Write Complete Radiology Report for this with clinical info, subjective, Assessment, Finding, Impressions, Conclusion and more in proper order : {st.session_state.caption}")
132
+
133
+ # Add personal information to the radiology report
134
+ radiology_report_with_personal_info = f"Patient Name: {first_name} {last_name}\nAge: {age}\nGender: {gender}\n\n{st.session_state.report}"
135
+
136
+ st.header("Radiology Report")
137
+ st.write(radiology_report_with_personal_info)
138
+ st.markdown(download_link(save_as_docx(radiology_report_with_personal_info, "radiology_report.docx"), "radiology_report.docx", "Download Report as DOCX"), unsafe_allow_html=True)
139
+
140
  feedback_options = ["Satisfied", "Not Satisfied"]
141
+ st.session_state.feedback = st.radio("Please provide feedback on the generated report:", feedback_options, key="feedback")
142
+
143
+ if st.session_state.feedback == "Not Satisfied":
144
+ if st.button("Regenerate Report") or st.session_state.regenerated_report:
145
+ if not st.session_state.regenerated_report:
146
+ with st.spinner("Regenerating report..."):
147
+ alternative_caption = get_alternative_caption(image_np, model, text_embeddings, testing_df["caption"])
148
+ st.session_state.regenerated_report = generate_radiology_report(f"Write Complete Radiology Report for this with clinical info, subjective, Assessment, Finding, Impressions, Conclusion and more in proper order : {alternative_caption}")
149
+
150
+ regenerated_radiology_report_with_personal_info = f"Patient Name: {first_name} {last_name}\nAge: {age}\nGender: {gender}\n\n{st.session_state.regenerated_report}"
151
+
152
+ st.header("Regenerated Radiology Report")
153
+ st.write(regenerated_radiology_report_with_personal_info)
154
+ st.markdown(download_link(save_as_docx(regenerated_radiology_report_with_personal_info, "regenerated_radiology_report.docx"), "regenerated_radiology_report.docx", "Download Regenerated Report as DOCX"), unsafe_allow_html=True)