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: