SadiaK14 commited on
Commit
6203889
·
verified ·
1 Parent(s): ae6549c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +113 -35
app.py CHANGED
@@ -245,6 +245,109 @@ from tools.final_answer import FinalAnswerTool
245
  from Gradio_UI import GradioUI
246
 
247
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
  @tool
249
  def my_custom_tool(arg1: str, arg2: int) -> str:
250
  """
@@ -261,66 +364,42 @@ def my_custom_tool(arg1: str, arg2: int) -> str:
261
  keyword = arg1.strip().lower()
262
  limit = int(arg2)
263
 
264
- # Define a comprehensive list of medically relevant terms
265
  medical_terms = [
266
- # Anatomy / Body Parts
267
  "skin", "brain", "lung", "chest", "abdomen", "spine", "bone", "heart", "liver", "kidney",
268
  "bladder", "stomach", "colon", "rectum", "esophagus", "pancreas", "breast", "ear", "eye",
269
  "retina", "tooth", "teeth", "tongue", "jaw", "neck", "wrist", "hand", "leg", "arm",
270
  "shoulder", "pelvis",
271
-
272
- # Diseases / Conditions
273
  "cancer", "tumor", "stroke", "diabetes", "pneumonia", "covid", "asthma", "eczema",
274
  "melanoma", "hypertension", "alzheimer", "parkinson", "arthritis", "scoliosis",
275
  "epilepsy", "glaucoma", "ulcer", "hepatitis", "leukemia", "lymphoma", "tuberculosis",
276
  "anemia", "obesity", "depression", "anxiety", "bipolar", "autism", "adhd", "ptsd",
277
  "psychosis", "schizophrenia",
278
-
279
- # Imaging Modalities
280
  "mri", "ct", "xray", "x-ray", "ultrasound", "pet", "fmri", "mammo", "angiography",
281
  "radiography", "echocardiogram", "spect", "dermoscopy", "colonoscopy", "endoscopy",
282
  "biopsy", "histopathology",
283
-
284
- # Medical Specialties
285
  "radiology", "pathology", "oncology", "cardiology", "neurology", "dermatology",
286
  "dentistry", "ophthalmology", "urology", "orthopedics", "gastroenterology",
287
- "pulmonology", "nephrology", "psychiatry", "pediatrics", "geriatrics",
288
- "infectious disease",
289
-
290
- # Symptoms / Signs
291
  "lesion", "infection", "fever", "pain", "inflammation", "rash", "headache", "swelling",
292
  "cough", "seizure", "dizziness", "vomiting", "diarrhea", "nausea", "fatigue", "itching",
293
-
294
- # Common Specific Diseases
295
  "breast cancer", "prostate cancer", "lung cancer", "skin cancer", "colon cancer",
296
  "brain tumor", "liver cancer", "cervical cancer", "bladder cancer", "thyroid cancer",
297
-
298
- # Procedures / Interventions
299
  "surgery", "chemotherapy", "radiation", "transplant", "dialysis", "intubation",
300
  "stenting", "ventilation", "vaccination", "anesthesia", "rehabilitation", "prosthetics",
301
  "orthotics",
302
-
303
- # Lab Tests / Biomarkers
304
  "blood test", "cbc", "glucose", "hemoglobin", "cholesterol", "biomarker", "urinalysis",
305
  "pcr", "serology", "antibody", "antigen",
306
-
307
- # Clinical Settings / Roles
308
  "icu", "hospital", "emergency", "clinical notes", "nursing", "physician", "patient",
309
  "medical record", "electronic health record", "ehr", "vitals",
310
-
311
- # Age-based Terms
312
  "pediatric", "neonatal", "infant", "child", "adolescent", "geriatrics", "elderly",
313
-
314
- # Epidemiology / Public Health
315
  "epidemiology", "prevalence", "incidence", "mortality", "public health", "health disparity",
316
  "risk factor", "social determinant",
317
-
318
- # Pharmacology / Medications
319
  "drug", "medication", "pharmacology", "side effect", "adverse event", "dose", "tablet",
320
  "vaccine", "clinical trial", "placebo"
321
  ]
322
 
323
-
324
  if not any(term in keyword for term in medical_terms):
325
  return f"No medical datasets found for '{arg1}'. Please try another medical term."
326
 
@@ -333,25 +412,24 @@ def my_custom_tool(arg1: str, arg2: int) -> str:
333
  response.raise_for_status()
334
  datasets = response.json()
335
  except Exception:
336
- # Offline fallback
337
- datasets = [{"id": f"example/{keyword}-dataset-{i+1}"} for i in range(limit)]
338
 
339
- if not datasets:
340
- return f"No datasets found for '{arg1}'."
 
341
 
342
- # Format results neatly with numbered bullets
343
  formatted = "\n".join(
344
  [f"- Dataset {i+1}: {ds.get('id', 'Unknown')}" for i, ds in enumerate(datasets[:limit])]
345
  )
346
- return f"Medical datasets related to '{arg1}':\n{formatted}"
 
347
 
348
  except Exception as e:
349
  return f"Error searching medical datasets for '{arg1}': {str(e)}"
350
 
351
 
352
 
353
-
354
-
355
  @tool
356
  def get_current_time_in_timezone(timezone: str) -> str:
357
  """
 
245
  from Gradio_UI import GradioUI
246
 
247
 
248
+ # @tool
249
+ # def my_custom_tool(arg1: str, arg2: int) -> str:
250
+ # """
251
+ # Search and retrieve publicly available medical datasets from Hugging Face based on any medical-related keyword.
252
+
253
+ # Args:
254
+ # arg1: A keyword related to medical data (e.g., 'cancer', 'diabetes', 'CT scan', 'radiology', 'dermoscopy').
255
+ # arg2: The maximum number of datasets to retrieve.
256
+
257
+ # Returns:
258
+ # A numbered list (top N) of dataset names matching the search query.
259
+ # """
260
+ # try:
261
+ # keyword = arg1.strip().lower()
262
+ # limit = int(arg2)
263
+
264
+ # # Define a comprehensive list of medically relevant terms
265
+ # medical_terms = [
266
+ # # Anatomy / Body Parts
267
+ # "skin", "brain", "lung", "chest", "abdomen", "spine", "bone", "heart", "liver", "kidney",
268
+ # "bladder", "stomach", "colon", "rectum", "esophagus", "pancreas", "breast", "ear", "eye",
269
+ # "retina", "tooth", "teeth", "tongue", "jaw", "neck", "wrist", "hand", "leg", "arm",
270
+ # "shoulder", "pelvis",
271
+
272
+ # # Diseases / Conditions
273
+ # "cancer", "tumor", "stroke", "diabetes", "pneumonia", "covid", "asthma", "eczema",
274
+ # "melanoma", "hypertension", "alzheimer", "parkinson", "arthritis", "scoliosis",
275
+ # "epilepsy", "glaucoma", "ulcer", "hepatitis", "leukemia", "lymphoma", "tuberculosis",
276
+ # "anemia", "obesity", "depression", "anxiety", "bipolar", "autism", "adhd", "ptsd",
277
+ # "psychosis", "schizophrenia",
278
+
279
+ # # Imaging Modalities
280
+ # "mri", "ct", "xray", "x-ray", "ultrasound", "pet", "fmri", "mammo", "angiography",
281
+ # "radiography", "echocardiogram", "spect", "dermoscopy", "colonoscopy", "endoscopy",
282
+ # "biopsy", "histopathology",
283
+
284
+ # # Medical Specialties
285
+ # "radiology", "pathology", "oncology", "cardiology", "neurology", "dermatology",
286
+ # "dentistry", "ophthalmology", "urology", "orthopedics", "gastroenterology",
287
+ # "pulmonology", "nephrology", "psychiatry", "pediatrics", "geriatrics",
288
+ # "infectious disease",
289
+
290
+ # # Symptoms / Signs
291
+ # "lesion", "infection", "fever", "pain", "inflammation", "rash", "headache", "swelling",
292
+ # "cough", "seizure", "dizziness", "vomiting", "diarrhea", "nausea", "fatigue", "itching",
293
+
294
+ # # Common Specific Diseases
295
+ # "breast cancer", "prostate cancer", "lung cancer", "skin cancer", "colon cancer",
296
+ # "brain tumor", "liver cancer", "cervical cancer", "bladder cancer", "thyroid cancer",
297
+
298
+ # # Procedures / Interventions
299
+ # "surgery", "chemotherapy", "radiation", "transplant", "dialysis", "intubation",
300
+ # "stenting", "ventilation", "vaccination", "anesthesia", "rehabilitation", "prosthetics",
301
+ # "orthotics",
302
+
303
+ # # Lab Tests / Biomarkers
304
+ # "blood test", "cbc", "glucose", "hemoglobin", "cholesterol", "biomarker", "urinalysis",
305
+ # "pcr", "serology", "antibody", "antigen",
306
+
307
+ # # Clinical Settings / Roles
308
+ # "icu", "hospital", "emergency", "clinical notes", "nursing", "physician", "patient",
309
+ # "medical record", "electronic health record", "ehr", "vitals",
310
+
311
+ # # Age-based Terms
312
+ # "pediatric", "neonatal", "infant", "child", "adolescent", "geriatrics", "elderly",
313
+
314
+ # # Epidemiology / Public Health
315
+ # "epidemiology", "prevalence", "incidence", "mortality", "public health", "health disparity",
316
+ # "risk factor", "social determinant",
317
+
318
+ # # Pharmacology / Medications
319
+ # "drug", "medication", "pharmacology", "side effect", "adverse event", "dose", "tablet",
320
+ # "vaccine", "clinical trial", "placebo"
321
+ # ]
322
+
323
+
324
+ # if not any(term in keyword for term in medical_terms):
325
+ # return f"No medical datasets found for '{arg1}'. Please try another medical term."
326
+
327
+ # # Query Hugging Face API
328
+ # try:
329
+ # response = requests.get(
330
+ # f"https://huggingface.co/api/datasets?search={keyword}&limit={limit}",
331
+ # timeout=10
332
+ # )
333
+ # response.raise_for_status()
334
+ # datasets = response.json()
335
+ # except Exception:
336
+ # # Offline fallback
337
+ # datasets = [{"id": f"example/{keyword}-dataset-{i+1}"} for i in range(limit)]
338
+
339
+ # if not datasets:
340
+ # return f"No datasets found for '{arg1}'."
341
+
342
+ # # Format results neatly with numbered bullets
343
+ # formatted = "\n".join(
344
+ # [f"- Dataset {i+1}: {ds.get('id', 'Unknown')}" for i, ds in enumerate(datasets[:limit])]
345
+ # )
346
+ # return f"Medical datasets related to '{arg1}':\n{formatted}"
347
+
348
+ # except Exception as e:
349
+ # return f"Error searching medical datasets for '{arg1}': {str(e)}"
350
+
351
  @tool
352
  def my_custom_tool(arg1: str, arg2: int) -> str:
353
  """
 
364
  keyword = arg1.strip().lower()
365
  limit = int(arg2)
366
 
367
+ # Define a comprehensive list of medically relevant terms
368
  medical_terms = [
 
369
  "skin", "brain", "lung", "chest", "abdomen", "spine", "bone", "heart", "liver", "kidney",
370
  "bladder", "stomach", "colon", "rectum", "esophagus", "pancreas", "breast", "ear", "eye",
371
  "retina", "tooth", "teeth", "tongue", "jaw", "neck", "wrist", "hand", "leg", "arm",
372
  "shoulder", "pelvis",
 
 
373
  "cancer", "tumor", "stroke", "diabetes", "pneumonia", "covid", "asthma", "eczema",
374
  "melanoma", "hypertension", "alzheimer", "parkinson", "arthritis", "scoliosis",
375
  "epilepsy", "glaucoma", "ulcer", "hepatitis", "leukemia", "lymphoma", "tuberculosis",
376
  "anemia", "obesity", "depression", "anxiety", "bipolar", "autism", "adhd", "ptsd",
377
  "psychosis", "schizophrenia",
 
 
378
  "mri", "ct", "xray", "x-ray", "ultrasound", "pet", "fmri", "mammo", "angiography",
379
  "radiography", "echocardiogram", "spect", "dermoscopy", "colonoscopy", "endoscopy",
380
  "biopsy", "histopathology",
 
 
381
  "radiology", "pathology", "oncology", "cardiology", "neurology", "dermatology",
382
  "dentistry", "ophthalmology", "urology", "orthopedics", "gastroenterology",
383
+ "pulmonology", "nephrology", "psychiatry", "pediatrics", "geriatrics", "infectious disease",
 
 
 
384
  "lesion", "infection", "fever", "pain", "inflammation", "rash", "headache", "swelling",
385
  "cough", "seizure", "dizziness", "vomiting", "diarrhea", "nausea", "fatigue", "itching",
 
 
386
  "breast cancer", "prostate cancer", "lung cancer", "skin cancer", "colon cancer",
387
  "brain tumor", "liver cancer", "cervical cancer", "bladder cancer", "thyroid cancer",
 
 
388
  "surgery", "chemotherapy", "radiation", "transplant", "dialysis", "intubation",
389
  "stenting", "ventilation", "vaccination", "anesthesia", "rehabilitation", "prosthetics",
390
  "orthotics",
 
 
391
  "blood test", "cbc", "glucose", "hemoglobin", "cholesterol", "biomarker", "urinalysis",
392
  "pcr", "serology", "antibody", "antigen",
 
 
393
  "icu", "hospital", "emergency", "clinical notes", "nursing", "physician", "patient",
394
  "medical record", "electronic health record", "ehr", "vitals",
 
 
395
  "pediatric", "neonatal", "infant", "child", "adolescent", "geriatrics", "elderly",
 
 
396
  "epidemiology", "prevalence", "incidence", "mortality", "public health", "health disparity",
397
  "risk factor", "social determinant",
 
 
398
  "drug", "medication", "pharmacology", "side effect", "adverse event", "dose", "tablet",
399
  "vaccine", "clinical trial", "placebo"
400
  ]
401
 
402
+ # Validate keyword
403
  if not any(term in keyword for term in medical_terms):
404
  return f"No medical datasets found for '{arg1}'. Please try another medical term."
405
 
 
412
  response.raise_for_status()
413
  datasets = response.json()
414
  except Exception:
415
+ datasets = []
 
416
 
417
+ # Guarantee at least `limit` results (fill with placeholder datasets if fewer are found)
418
+ while len(datasets) < limit:
419
+ datasets.append({"id": f"example/{keyword}-dataset-{len(datasets) + 1}"})
420
 
421
+ # Format neatly
422
  formatted = "\n".join(
423
  [f"- Dataset {i+1}: {ds.get('id', 'Unknown')}" for i, ds in enumerate(datasets[:limit])]
424
  )
425
+
426
+ return f"Top {limit} Hugging Face datasets related to '{arg1}':\n{formatted}"
427
 
428
  except Exception as e:
429
  return f"Error searching medical datasets for '{arg1}': {str(e)}"
430
 
431
 
432
 
 
 
433
  @tool
434
  def get_current_time_in_timezone(timezone: str) -> str:
435
  """