TEZv commited on
Commit
ebc1d64
·
verified ·
1 Parent(s): 221713b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +15 -48
app.py CHANGED
@@ -531,10 +531,10 @@ def a3_run(hgvs: str):
531
  today = datetime.date.today().isoformat()
532
  hgvs = hgvs.strip()
533
  if not hgvs:
534
- return "Please enter an HGVS notation (e.g. NM_007294.4:c.5266dupC)"
 
 
535
 
536
- result_parts = []
537
-
538
  # ClinVar
539
  clinvar_cached = cache_get("clinvar", hgvs)
540
  if clinvar_cached is None:
@@ -546,13 +546,13 @@ def a3_run(hgvs: str):
546
  timeout=10
547
  )
548
  r.raise_for_status()
549
- ids = r.json()["esearchresult"]["idlist"]
550
- clinvar_cached = ids
551
- cache_set("clinvar", hgvs, ids)
552
  except Exception:
553
- clinvar_cached = None
554
 
555
- if clinvar_cached and len(clinvar_cached) > 0:
556
  try:
557
  time.sleep(0.34)
558
  r2 = requests.get(
@@ -588,25 +588,14 @@ def a3_run(hgvs: str):
588
  "> ⚠️ Not in database. Do not interpret."
589
  )
590
 
591
- # ── gnomAD: спочатку спробуємо як variant_id, потім як HGVS ──
592
- # Перевіряємо, чи вхідний рядок схожий на variant_id (наприклад, "17-43124023-G-A")
593
- if re.match(r"^\d+-\d+-[ACGT]+-[ACGT]+$", hgvs):
594
- # Якщо це variant_id, використовуємо його безпосередньо
595
- variant_id = hgvs
596
- else:
597
- # Інакше намагаємося конвертувати HGVS у variant_id (спрощено)
598
- # Наприклад, "NM_007294.4:c.5266dupC" → потрібно знайти координати
599
- # Для демонстрації використаємо фіксований приклад
600
- variant_id = None
601
- # Тут можна додати логіку конвертації, але для простоти залишимо так
602
-
603
  gnomad_cached = cache_get("gnomad", hgvs)
604
  if gnomad_cached is None:
605
  try:
606
- # GraphQL запит до gnomad
607
- gql = """
608
- query VariantSearch($variantId: String!, $dataset: DatasetId!) {
609
- variant(variantId: $variantId, dataset: $dataset) {
610
  variant_id
611
  rsids
612
  exome { af }
@@ -614,26 +603,9 @@ def a3_run(hgvs: str):
614
  }
615
  }
616
  """
617
- # Якщо variant_id не вдалося визначити, пробуємо пошук за HGVS через пошук
618
- if variant_id is None:
619
- # Використовуємо variantSearch з HGVS як пошуковий запит
620
- gql = """
621
- query VariantSearch($query: String!, $dataset: DatasetId!) {
622
- variantSearch(query: $query, dataset: $dataset) {
623
- variant_id
624
- rsids
625
- exome { af }
626
- genome { af }
627
- }
628
- }
629
- """
630
- variables = {"query": hgvs, "dataset": "gnomad_r4"}
631
- else:
632
- variables = {"variantId": variant_id, "dataset": "gnomad_r4"}
633
-
634
  r3 = requests.post(
635
  GNOMAD_GQL,
636
- json={"query": gql, "variables": variables},
637
  timeout=15
638
  )
639
  r3.raise_for_status()
@@ -643,12 +615,7 @@ def a3_run(hgvs: str):
643
  gnomad_cached = None
644
 
645
  if gnomad_cached and "data" in gnomad_cached:
646
- # Якщо використовували variantSearch, результати в data["variantSearch"]
647
- if "variantSearch" in gnomad_cached["data"]:
648
- variants = gnomad_cached["data"]["variantSearch"]
649
- else:
650
- variants = [gnomad_cached["data"]["variant"]] if gnomad_cached["data"]["variant"] else []
651
-
652
  if variants:
653
  gn_rows = []
654
  for v in variants[:3]:
 
531
  today = datetime.date.today().isoformat()
532
  hgvs = hgvs.strip()
533
  if not hgvs:
534
+ return "❌ **Error:** Please enter an HGVS notation (e.g. NM_007294.4:c.5266dupC)"
535
+
536
+ result_parts = [f"## 🔍 Real Variant Lookup: `{hgvs}`"]
537
 
 
 
538
  # ClinVar
539
  clinvar_cached = cache_get("clinvar", hgvs)
540
  if clinvar_cached is None:
 
546
  timeout=10
547
  )
548
  r.raise_for_status()
549
+ ids = r.json().get("esearchresult", {}).get("idlist", [])
550
+ clinvar_cached = ids if ids else []
551
+ cache_set("clinvar", hgvs, clinvar_cached)
552
  except Exception:
553
+ clinvar_cached = []
554
 
555
+ if clinvar_cached:
556
  try:
557
  time.sleep(0.34)
558
  r2 = requests.get(
 
588
  "> ⚠️ Not in database. Do not interpret."
589
  )
590
 
591
+ # gnomAD
 
 
 
 
 
 
 
 
 
 
 
592
  gnomad_cached = cache_get("gnomad", hgvs)
593
  if gnomad_cached is None:
594
  try:
595
+ # Спочатку спробуємо variantSearch (шукає за HGVS)
596
+ gql_search = """
597
+ query VariantSearch($query: String!, $dataset: DatasetId!) {
598
+ variantSearch(query: $query, dataset: $dataset) {
599
  variant_id
600
  rsids
601
  exome { af }
 
603
  }
604
  }
605
  """
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
606
  r3 = requests.post(
607
  GNOMAD_GQL,
608
+ json={"query": gql_search, "variables": {"query": hgvs, "dataset": "gnomad_r4"}},
609
  timeout=15
610
  )
611
  r3.raise_for_status()
 
615
  gnomad_cached = None
616
 
617
  if gnomad_cached and "data" in gnomad_cached:
618
+ variants = gnomad_cached["data"].get("variantSearch", [])
 
 
 
 
 
619
  if variants:
620
  gn_rows = []
621
  for v in variants[:3]: