If you don't mind hitting it 50k times and are OK with python3...
from urllib import request
import json
def getPathways(proteinID):
baseURL = 'http://reactome.org/ContentService/data/query'
PathwayIDs = set()
try:
response = request.urlopen('{}/{}'.format(baseURL, proteinID)).read().decode()
data = json.loads(response)
if 'consumedByEvent' in data:
for event in data['consumedByEvent']:
PathwayIDs.add(event['stId'])
if 'producedByEvent' in data:
for event in data['producedByEvent']:
PathwayIDs.add(event['stId'])
except:
pass
return PathwayIDs
Usage would then be something like:
l = ['R-HSA-49155', 'R-HSA-199420', '']
for rid in l:
ids = getPathways(rid)
for _ in ids:
print("{}\t{}".format(rid, _))
Which would produce:
R-HSA-49155 R-HSA-110239
R-HSA-49155 R-HSA-110240
R-HSA-49155 R-HSA-110238
R-HSA-49155 R-HSA-110356
R-HSA-199420 R-HSA-8948800
R-HSA-199420 R-HSA-6807106
R-HSA-199420 R-HSA-6807206
R-HSA-199420 R-HSA-6807126
R-HSA-199420 R-HSA-8847968
R-HSA-199420 R-HSA-8850997
R-HSA-199420 R-HSA-2321904
R-HSA-199420 R-HSA-8948775
R-HSA-199420 R-HSA-8944497
R-HSA-199420 R-HSA-6807134
R-HSA-199420 R-HSA-8850945
R-HSA-199420 R-HSA-8873946
Note that this will silently ignore invalid or missing IDs such as ''
(that's the try
and except
above. Note also that these are different pathway IDs than what you provided in your example. The main reason is that the protein IDs you showed are not always involved in the pathways IDs you showed (in my example, they always are).