dbd5ff960fd0321d74d1c995752cbe919eb14f72
lrnassar
  Fri Mar 10 15:07:34 2023 -0800
Committing a change that Max made some time ago to have the otto job be more resillient when panelApp is being weird. No RM.

diff --git src/hg/utils/otto/panelApp/genes.py src/hg/utils/otto/panelApp/genes.py
index 0b94665..d1db5db 100755
--- src/hg/utils/otto/panelApp/genes.py
+++ src/hg/utils/otto/panelApp/genes.py
@@ -1,17 +1,18 @@
 import os
 import requests
+import time
 import json 
 import pandas as pd 
 import sys 
 import argparse
 import re
 import gzip
 import logging
 
 '''
 download panelApp data via its API (somewhat slow)
 '''
 
 # originally from /cluster/home/bnguy/trackhub/panel/bigBedConversion/final_version/panel_app.py
 # Written by a project student, Beagan, in 2020/2021, fixed up by Max
 
@@ -76,31 +77,42 @@
     return list(syms)
 
 def getGenesLocations(jsonFh):
     hg19_dict = dict()
     hg38_dict = dict()
     repeat19 = list()
     repeat38 = list()
     continuous_count = 0
     genes_missing_info = list()
     genes_no_location = list()
 
     syms = getGeneSymbols()
 
     for sym in syms:
         url = "https://panelapp.genomicsengland.co.uk/api/v1/genes/{}?format=json".format(sym)
+
+        count = 0
+        while True:
+            try:
                 myResponse = requests.get(url)
+                break
+            except:
+                logging.error("HTTP error on %s, retrying after 1 minute (trial %d)" % (url, count))
+                time.sleep(60)
+                count += 1
+                if count > 10:
+                    assert(False) # cannot get URL
 
         if not (myResponse.ok):
             assert(False)
 
         jsonData = myResponse.content
         #jData = myResponse.json()
         jData = json.loads(jsonData.decode())
 
         jsonFh.write(jsonData)
         jsonFh.write("\n".encode())
 
         res = jData['results']
         num_gene_variant = len(res)
         count = 0
         while count != num_gene_variant: