2019-07-24 03:27:54 -07:00
|
|
|
import json
|
|
|
|
|
import requests
|
|
|
|
|
import progressbar
|
|
|
|
|
import sys
|
|
|
|
|
|
2021-04-08 08:41:16 -07:00
|
|
|
|
|
|
|
|
def update_protein(gene_seq, gene):
|
|
|
|
|
t = 0
|
|
|
|
|
while(t != 2):
|
2019-07-24 03:27:54 -07:00
|
|
|
try:
|
|
|
|
|
server = "https://rest.ensembl.org"
|
2021-04-08 08:41:16 -07:00
|
|
|
ext = "/sequence/id/" + \
|
|
|
|
|
str(gene)+"?type=protein;multiple_sequences=1"
|
2019-07-24 03:27:54 -07:00
|
|
|
|
2021-04-08 08:41:16 -07:00
|
|
|
r = requests.get(
|
|
|
|
|
server+ext, headers={"Content-Type": "application/json"})
|
2019-07-24 03:27:54 -07:00
|
|
|
|
|
|
|
|
if not r.ok:
|
|
|
|
|
r.raise_for_status()
|
|
|
|
|
sys.exit()
|
2021-04-08 08:41:16 -07:00
|
|
|
r = r.json()
|
|
|
|
|
if len(r) == 1:
|
|
|
|
|
r = dict(r[0])
|
|
|
|
|
gene_seq[gene] = str(r["seq"])
|
2019-07-24 03:27:54 -07:00
|
|
|
return
|
|
|
|
|
else:
|
2021-04-08 08:41:16 -07:00
|
|
|
maxi = 0
|
|
|
|
|
maxlen = 0
|
2019-07-24 03:27:54 -07:00
|
|
|
for i in range(len(r)):
|
2021-04-08 08:41:16 -07:00
|
|
|
m = r[i]
|
|
|
|
|
m = dict(m)
|
|
|
|
|
if len(m["seq"]) > maxlen:
|
|
|
|
|
maxi = i
|
|
|
|
|
r = dict(r[maxi])
|
|
|
|
|
gene_seq[gene] = str(r["seq"])
|
2019-07-24 03:27:54 -07:00
|
|
|
return
|
2021-04-08 08:41:16 -07:00
|
|
|
except Exception:
|
|
|
|
|
t += 1
|
|
|
|
|
# print("\nError:",e)
|
2019-07-24 03:27:54 -07:00
|
|
|
continue
|
2021-04-08 08:41:16 -07:00
|
|
|
gene_seq[gene] = ""
|
|
|
|
|
|
2019-07-24 03:27:54 -07:00
|
|
|
|
2021-04-08 08:41:16 -07:00
|
|
|
def update_rest_protein(data, fname):
|
|
|
|
|
gids = {}
|
|
|
|
|
with open("processed/not_found_"+fname+".json", "r") as file:
|
|
|
|
|
gids = dict(json.load(file))
|
2019-07-24 03:27:54 -07:00
|
|
|
|
2021-04-08 08:41:16 -07:00
|
|
|
gids = list(gids.keys())
|
2019-07-24 03:27:54 -07:00
|
|
|
|
2021-04-08 08:41:16 -07:00
|
|
|
geneseq = {}
|
2019-07-24 03:27:54 -07:00
|
|
|
|
|
|
|
|
server = "https://rest.ensembl.org"
|
|
|
|
|
ext = "/sequence/id?type=protein"
|
2021-04-08 08:41:16 -07:00
|
|
|
headers = {"Content-Type": "application/json",
|
|
|
|
|
"Accept": "application/json"}
|
2019-07-24 03:27:54 -07:00
|
|
|
|
2021-04-08 08:41:16 -07:00
|
|
|
for i in progressbar.progressbar(range(0, len(gids)-50, 50)):
|
|
|
|
|
ids = dict(ids=list(gids[i:i+50]))
|
2019-07-24 03:27:54 -07:00
|
|
|
while(1):
|
|
|
|
|
try:
|
2021-04-08 08:41:16 -07:00
|
|
|
r = requests.post(server+ext, headers=headers,
|
|
|
|
|
data=str(json.dumps(ids)))
|
2019-07-24 03:27:54 -07:00
|
|
|
if not r.ok:
|
|
|
|
|
r.raise_for_status()
|
2021-04-08 08:41:16 -07:00
|
|
|
gs = r.json()
|
|
|
|
|
tgs = {}
|
2019-07-24 03:27:54 -07:00
|
|
|
for g in gs:
|
2021-04-08 08:41:16 -07:00
|
|
|
tgs[g["query"]] = g["seq"]
|
2019-07-24 03:27:54 -07:00
|
|
|
geneseq.update(tgs)
|
|
|
|
|
break
|
|
|
|
|
except Exception as e:
|
2021-04-08 08:41:16 -07:00
|
|
|
print("Error:", e)
|
2019-07-24 03:27:54 -07:00
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
data.update(geneseq)
|
|
|
|
|
for genes in gids:
|
|
|
|
|
try:
|
2021-04-08 08:41:16 -07:00
|
|
|
_ = data[genes]
|
|
|
|
|
except Exception:
|
2019-07-24 03:27:54 -07:00
|
|
|
print(genes)
|
2021-04-08 08:41:16 -07:00
|
|
|
update_protein(data, genes)
|
2019-07-24 03:27:54 -07:00
|
|
|
|
2019-08-23 02:55:59 -07:00
|
|
|
print("Protein Sequences Updated Successfully")
|
2019-07-24 03:27:54 -07:00
|
|
|
return data
|
2021-04-08 08:41:16 -07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def update(gene_seq, gene):
|
|
|
|
|
t = 0
|
|
|
|
|
while(t != 2):
|
2019-07-24 03:27:54 -07:00
|
|
|
try:
|
|
|
|
|
server = "https://rest.ensembl.org"
|
2019-08-23 02:55:59 -07:00
|
|
|
ext = "/sequence/id/"+str(gene)+"?type=cds;multiple_sequences=1"
|
2019-07-24 03:27:54 -07:00
|
|
|
|
2021-04-08 08:41:16 -07:00
|
|
|
r = requests.get(
|
|
|
|
|
server+ext, headers={"Content-Type": "application/json"})
|
2019-07-24 03:27:54 -07:00
|
|
|
|
|
|
|
|
if not r.ok:
|
|
|
|
|
r.raise_for_status()
|
|
|
|
|
sys.exit()
|
2021-04-08 08:41:16 -07:00
|
|
|
r = r.json()
|
|
|
|
|
if len(r) == 1:
|
|
|
|
|
r = dict(r[0])
|
|
|
|
|
gene_seq[gene] = str(r["seq"])
|
2019-07-24 03:27:54 -07:00
|
|
|
return
|
|
|
|
|
else:
|
2021-04-08 08:41:16 -07:00
|
|
|
maxi = 0
|
|
|
|
|
maxlen = 0
|
2019-07-24 03:27:54 -07:00
|
|
|
for i in range(len(r)):
|
2021-04-08 08:41:16 -07:00
|
|
|
m = r[i]
|
|
|
|
|
m = dict(m)
|
|
|
|
|
if len(m["seq"]) > maxlen:
|
|
|
|
|
maxi = i
|
|
|
|
|
r = dict(r[maxi])
|
|
|
|
|
gene_seq[gene] = str(r["seq"])
|
2019-07-24 03:27:54 -07:00
|
|
|
return
|
2021-04-08 08:41:16 -07:00
|
|
|
except Exception:
|
|
|
|
|
t += 1
|
|
|
|
|
# print("\nError:",e)
|
2019-07-24 03:27:54 -07:00
|
|
|
continue
|
2021-04-08 08:41:16 -07:00
|
|
|
gene_seq[gene] = ""
|
|
|
|
|
|
2019-07-24 03:27:54 -07:00
|
|
|
|
2021-04-08 08:41:16 -07:00
|
|
|
def update_rest(data, fname):
|
|
|
|
|
gids = {}
|
|
|
|
|
with open("processed/not_found_"+fname+".json", "r") as file:
|
|
|
|
|
gids = dict(json.load(file))
|
2019-07-24 03:27:54 -07:00
|
|
|
|
2021-04-08 08:41:16 -07:00
|
|
|
gids = list(gids.keys())
|
2019-07-24 03:27:54 -07:00
|
|
|
|
2021-04-08 08:41:16 -07:00
|
|
|
geneseq = {}
|
2019-07-24 03:27:54 -07:00
|
|
|
|
|
|
|
|
server = "https://rest.ensembl.org"
|
|
|
|
|
ext = "/sequence/id?type=cds"
|
2021-04-08 08:41:16 -07:00
|
|
|
headers = {"Content-Type": "application/json",
|
|
|
|
|
"Accept": "application/json"}
|
2019-07-24 03:27:54 -07:00
|
|
|
|
2021-04-08 08:41:16 -07:00
|
|
|
for i in progressbar.progressbar(range(0, len(gids)-50, 50)):
|
|
|
|
|
ids = dict(ids=list(gids[i:i+50]))
|
2019-07-24 03:27:54 -07:00
|
|
|
while(1):
|
|
|
|
|
try:
|
2021-04-08 08:41:16 -07:00
|
|
|
r = requests.post(server+ext, headers=headers,
|
|
|
|
|
data=str(json.dumps(ids)))
|
2019-07-24 03:27:54 -07:00
|
|
|
if not r.ok:
|
|
|
|
|
r.raise_for_status()
|
2021-04-08 08:41:16 -07:00
|
|
|
gs = r.json()
|
|
|
|
|
tgs = {}
|
2019-07-24 03:27:54 -07:00
|
|
|
for g in gs:
|
2021-04-08 08:41:16 -07:00
|
|
|
tgs[g["query"]] = g["seq"]
|
2019-07-24 03:27:54 -07:00
|
|
|
geneseq.update(tgs)
|
|
|
|
|
break
|
|
|
|
|
except Exception as e:
|
2021-04-08 08:41:16 -07:00
|
|
|
print("Error:", e)
|
2019-07-24 03:27:54 -07:00
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
data.update(geneseq)
|
|
|
|
|
for genes in gids:
|
|
|
|
|
try:
|
2021-04-08 08:41:16 -07:00
|
|
|
_ = data[genes]
|
|
|
|
|
except Exception:
|
2019-07-24 03:27:54 -07:00
|
|
|
print(genes)
|
2021-04-08 08:41:16 -07:00
|
|
|
update(data, genes)
|
2019-07-24 03:27:54 -07:00
|
|
|
|
|
|
|
|
print("Gene Sequences Updated Successfully")
|
2021-04-08 08:41:16 -07:00
|
|
|
return data
|