text: user931: I have a list of about 50k 'Protein IDs' from Reactome. Is there a simple way to get all the corresponding 'Pathway IDs' for each protein? What is the best service to use? (I'm guessing I can use the Reactome API, but I don't necessarily want to hit that 50k times...).
  Protein IDs from reactome look like this:
  R-HSA-49155
  R-HSA-199420
  
  The corresponding Reactome 'Pathway IDs' for those Protein IDs would be:
  R-HSA-49155  R-HSA-110331
  R-HSA-49155  R-HSA-110330
  R-HSA-49155  R-HSA-110357
  R-HSA-199420 R-HSA-1660499
  R-HSA-199420 R-HSA-202424
  R-HSA-199420 R-HSA-199418
  
  
  user939: On Reactome website they have at the download page mapping files (uniprot, ensembl, etc.), but unfortunately not for the protein IDs you are using (stable identifiers).
  I had contact with their helpdesk, and they sent me a file containing all protein IDs to the pathways. Exactly what you need. I have asked them if they wanted to put it on their download page as well, but not sure if they want to do this. Meanwhile you can ask for the file as well, or get it from my google drive.
  I assume you know how to get your Protein IDs and pathways from this file, using e.g., R?
  
  user77: 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).
  
original_text: 931: <p>I have a list of about 50k 'Protein IDs' from Reactome. Is there a simple way to get all the corresponding 'Pathway IDs' for each protein? What is the best service to use? (I'm guessing I can use the Reactome API, but I don't necessarily want to hit that 50k times...).</p>
  
  <p>Protein IDs from reactome look like this:</p>
  
  <pre><code>R-HSA-49155
  R-HSA-199420
  </code></pre>
  
  <p>The corresponding Reactome 'Pathway IDs' for those Protein IDs would be:</p>
  
  <pre><code>R-HSA-49155  R-HSA-110331
  R-HSA-49155  R-HSA-110330
  R-HSA-49155  R-HSA-110357
  R-HSA-199420 R-HSA-1660499
  R-HSA-199420 R-HSA-202424
  R-HSA-199420 R-HSA-199418
  </code></pre>
   939: <p>On Reactome website they have at the download <a href="http://reactome.org/pages/download-data/" rel="nofollow noreferrer">page</a> mapping files (uniprot, ensembl, etc.), but unfortunately not for the protein IDs you are using (stable identifiers).</p>
  
  <p>I had contact with their helpdesk, and they sent me a file containing all protein IDs to the pathways. Exactly what you need. I have asked them if they wanted to put it on their download page as well, but not sure if they want to do this. Meanwhile you can ask for the file as well, or get it from my google <a href="https://drive.google.com/open?id=0ByVMqlqqt462enVaNkZZSU9iMjg" rel="nofollow noreferrer">drive</a>.</p>
  
  <p>I assume you know how to get your Protein IDs and pathways from this file, using e.g., R?</p>
   77: <p>If you don't mind hitting it 50k times and are OK with python3...</p>
  
  <pre class="lang-py prettyprint-override"><code>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
  </code></pre>
  
  <p>Usage would then be something like:</p>
  
  <pre class="lang-py prettyprint-override"><code>l = ['R-HSA-49155', 'R-HSA-199420', '']
  for rid in l:
      ids = getPathways(rid)
      for _ in ids:
          print("{}\t{}".format(rid, _))
  </code></pre>
  
  <p>Which would produce:</p>
  
  <pre><code>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
  </code></pre>
  
  <p>Note that this will silently ignore invalid or missing IDs such as <code>''</code> (that's the <code>try</code> and <code>except</code> 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).</p>
  