AliArshad commited on
Commit
51a4d3c
·
verified ·
1 Parent(s): d6d2c8d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +46 -31
app.py CHANGED
@@ -9,6 +9,7 @@ from datetime import datetime, timedelta
9
  import os
10
  from qwen_agent.agents import Assistant
11
  from qwen_agent.gui.web_ui import WebUI
 
12
 
13
  @dataclass
14
  class PatientMetadata:
@@ -68,6 +69,49 @@ class BreastCancerAgent(Assistant):
68
  "SIATCN/vit_tumor_radius_detection_finetuned"
69
  )
70
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  def _process_image(self, image: Image.Image) -> Image.Image:
72
  """Process input image for model consumption."""
73
  if image.mode != 'RGB':
@@ -116,36 +160,6 @@ class BreastCancerAgent(Assistant):
116
  hormone_therapy=hormone_therapy
117
  )
118
 
119
- def run(self, image_path: str) -> str:
120
- """Run analysis on an image."""
121
- try:
122
- image = Image.open(image_path)
123
- processed_image = self._process_image(image)
124
- analysis = self._analyze_image(processed_image)
125
-
126
- report = f"""MICROWAVE IMAGING ANALYSIS:
127
- • Detection: {'Positive' if analysis.has_tumor else 'Negative'}
128
- • Size: {analysis.tumor_size} cm
129
-
130
- PATIENT INFO:
131
- • Age: {analysis.metadata.age} years
132
- • Risk Factors: {', '.join([
133
- 'family history' if analysis.metadata.family_history else '',
134
- analysis.metadata.smoking_status.lower(),
135
- 'hormone therapy' if analysis.metadata.hormone_therapy else '',
136
- ]).strip(', ')}
137
-
138
- REPORT:
139
- {'Abnormal scan showing potential mass.' if analysis.has_tumor else 'Normal scan with no significant findings.'}
140
- Confidence level: {analysis.confidence:.1%}
141
-
142
- RECOMMENDATION:
143
- {('Immediate follow-up imaging recommended.' if analysis.tumor_size in ['1.0', '1.5'] else 'Follow-up imaging in 6 months recommended.') if analysis.has_tumor else 'Continue routine screening per protocol.'}"""
144
-
145
- return report
146
- except Exception as e:
147
- return f"Error during analysis: {str(e)}"
148
-
149
  def run_interface():
150
  """Create and run the WebUI interface."""
151
  agent = BreastCancerAgent()
@@ -157,7 +171,8 @@ def run_interface():
157
  {'text': 'Can you analyze this mammogram?'},
158
  {'text': 'What should I look for in the results?'},
159
  {'text': 'How reliable is the detection?'}
160
- ]
 
161
  }
162
 
163
  app = WebUI(agent, chatbot_config=chatbot_config)
 
9
  import os
10
  from qwen_agent.agents import Assistant
11
  from qwen_agent.gui.web_ui import WebUI
12
+ from qwen_agent.llm.schema import ROLE, CONTENT, USER, ASSISTANT, IMAGE, Message
13
 
14
  @dataclass
15
  class PatientMetadata:
 
69
  "SIATCN/vit_tumor_radius_detection_finetuned"
70
  )
71
 
72
+ def chat(self, message: str, history: Optional[List[Message]] = None) -> str:
73
+ """Handle chat messages and image analysis."""
74
+ if not history:
75
+ return "Hello! Please upload a breast microwave image for analysis."
76
+
77
+ last_message = history[-1]
78
+ if last_message[ROLE] != USER:
79
+ return "Please provide an image for analysis."
80
+
81
+ # Check for image in the message
82
+ image_item = next((item for item in last_message[CONTENT] if IMAGE in item), None)
83
+ if not image_item:
84
+ return "Please upload an image for analysis. I can only process breast microwave images."
85
+
86
+ try:
87
+ image_path = image_item[IMAGE].replace('file://', '')
88
+ image = Image.open(image_path)
89
+ processed_image = self._process_image(image)
90
+ analysis = self._analyze_image(processed_image)
91
+
92
+ report = f"""MICROWAVE IMAGING ANALYSIS:
93
+ • Detection: {'Positive' if analysis.has_tumor else 'Negative'}
94
+ • Size: {analysis.tumor_size} cm
95
+
96
+ PATIENT INFO:
97
+ • Age: {analysis.metadata.age} years
98
+ • Risk Factors: {', '.join([
99
+ 'family history' if analysis.metadata.family_history else '',
100
+ analysis.metadata.smoking_status.lower(),
101
+ 'hormone therapy' if analysis.metadata.hormone_therapy else '',
102
+ ]).strip(', ')}
103
+
104
+ REPORT:
105
+ {'Abnormal scan showing potential mass.' if analysis.has_tumor else 'Normal scan with no significant findings.'}
106
+ Confidence level: {analysis.confidence:.1%}
107
+
108
+ RECOMMENDATION:
109
+ {('Immediate follow-up imaging recommended.' if analysis.tumor_size in ['1.0', '1.5'] else 'Follow-up imaging in 6 months recommended.') if analysis.has_tumor else 'Continue routine screening per protocol.'}"""
110
+
111
+ return report
112
+ except Exception as e:
113
+ return f"Error analyzing image: {str(e)}"
114
+
115
  def _process_image(self, image: Image.Image) -> Image.Image:
116
  """Process input image for model consumption."""
117
  if image.mode != 'RGB':
 
160
  hormone_therapy=hormone_therapy
161
  )
162
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
163
  def run_interface():
164
  """Create and run the WebUI interface."""
165
  agent = BreastCancerAgent()
 
171
  {'text': 'Can you analyze this mammogram?'},
172
  {'text': 'What should I look for in the results?'},
173
  {'text': 'How reliable is the detection?'}
174
+ ],
175
+ 'verbose': True
176
  }
177
 
178
  app = WebUI(agent, chatbot_config=chatbot_config)