#python
#python
Вопрос:
Я пытаюсь получить полную структуру списка транскриптов, то есть геномные координаты их 5’UTR, экзонов, интронов и 3 ‘UTR. Я могу сделать это вручную, например, в Ensembl для ENST00000515408.5: http://jan2020.archive.ensembl.org/Homo_sapiens/Transcript/Exons?db=core;g=ENSG00000172795;r=5:112976702-113020123;t=ENST00000515408
Что я хотел бы сделать, так это сделать это в масштабе программно. Я понимаю, что это можно легко сделать в perl с помощью REST API Ensembl. Однако у меня возникли проблемы с установкой DBI (который требуется для perl) на моем компьютере (macOS). Я также попытался установить локальную копию perl через perlbrew, но это тоже проблематично. Пока я пытаюсь устранить эти проблемы, я попытался заставить это работать на python со следующим тестовым кодом:
import requests, sys, json
from pprint import pprint
server = "http://e99.rest.ensembl.org"
ext = "/lookup/id/ENSG00000157764"
r = requests.get(server ext, headers={ "Content-Type" : "application/json"})
if not r.ok:
r.raise_for_status()
decoded = r.json()
pprint (decoded)
Однако это возвращает ошибку:
---------------------------------------------------------------------------
JSONDecodeError Traceback (most recent call last)
<ipython-input-42-493d32b7b032> in <module>
10 r.raise_for_status()
11
---> 12 decoded = r.json()
13
14 pprint (decoded)
~/opt/miniconda3/lib/python3.9/site-packages/requests/models.py in json(self, **kwargs)
908 # used.
909 pass
--> 910 return complexjson.loads(self.text, **kwargs)
911
912 @property
~/opt/miniconda3/lib/python3.9/site-packages/simplejson/__init__.py in loads(s, encoding, cls, object_hook, parse_float, parse_int, parse_constant, object_pairs_hook, use_decimal, **kw)
523 parse_constant is None and object_pairs_hook is None
524 and not use_decimal and not kw):
--> 525 return _default_decoder.decode(s)
526 if cls is None:
527 cls = JSONDecoder
~/opt/miniconda3/lib/python3.9/site-packages/simplejson/decoder.py in decode(self, s, _w, _PY3)
368 if _PY3 and isinstance(s, bytes):
369 s = str(s, self.encoding)
--> 370 obj, end = self.raw_decode(s)
371 end = _w(s, end).end()
372 if end != len(s):
~/opt/miniconda3/lib/python3.9/site-packages/simplejson/decoder.py in raw_decode(self, s, idx, _w, _PY3)
398 elif ord0 == 0xef and s[idx:idx 3] == 'xefxbbxbf':
399 idx = 3
--> 400 return self.scan_once(s, idx=_w(s, idx).end())
JSONDecodeError: Expecting value: line 1 column 1 (char 0)
Это потому, что я пытаюсь получить доступ к архивной версии Ensembl? Был бы признателен за любую помощь в этом.