Skip to content

Instantly share code, notes, and snippets.

@mwalzer
Last active April 21, 2022 10:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mwalzer/56c7362f8940b679174b8c52593e028b to your computer and use it in GitHub Desktop.
Save mwalzer/56c7362f8940b679174b8c52593e028b to your computer and use it in GitHub Desktop.
a python one-off script to get the normalised intensities of target proteins in proteomicsdb
import json
import pprint
import time
import requests
import pandas as pd
api_target = "https://www.proteomicsdb.org/proteomicsdb/logic/api/proteinexpression.xsodata/InputParams(PROTEINFILTER='{prot_acc}',MS_LEVEL=1,TISSUE_ID_SELECTION='',TISSUE_CATEGORY_SELECTION='tissue;fluid',SCOPE_SELECTION=1,GROUP_BY_TISSUE=1,CALCULATION_METHOD=0,EXP_ID=-1)/Results?$select=UNIQUE_IDENTIFIER,TISSUE_ID,TISSUE_NAME,TISSUE_SAP_SYNONYM,SAMPLE_ID,SAMPLE_NAME,AFFINITY_PURIFICATION,EXPERIMENT_ID,EXPERIMENT_NAME,EXPERIMENT_SCOPE,EXPERIMENT_SCOPE_NAME,PROJECT_ID,PROJECT_NAME,PROJECT_STATUS,UNNORMALIZED_INTENSITY,NORMALIZED_INTENSITY,MIN_NORMALIZED_INTENSITY,MAX_NORMALIZED_INTENSITY,SAMPLES&$format=json"
results = list()
no_joy = list()
#register targets
#target_proteins = ['P04217','Q9NQ94','P01023']
with open('/tmp/test_api.txt', 'r') as f:
target_proteins = f.readlines()
target_proteins = list(filter(None, [x.strip() for x in target_proteins]))
# loop over protein targets
for pa in target_proteins:
# request
try:
data = requests.get(api_target.format(prot_acc = pa))
assert(data.status_code == requests.codes.ok, True)
except:
time.sleep(3)
try:
data = requests.get(api_target.format(prot_acc = pa))
except:
no_joy.append((pa,'net'))
continue
try:
# parse to row
parsed = [{'UniProt': x['UNIQUE_IDENTIFIER'],
'tissue': x['TISSUE_NAME'],
'normalised intensity': x['NORMALIZED_INTENSITY']} \
for x in data.json()['d']['results']]
# store to list and add to crash-recovery backup
results.extend(parsed)
with open('Proteomicsdb_API_response.tmp','a') as file:
file.write(json.dumps(parsed)+'\n')
except:
no_joy.append((pa,'res'))
time.sleep(1)
#export result and no_joy
export = pd.DataFrame(results)
export.to_csv('Proteomicsdb_API_response.tsv', sep='\t')
pd.DataFrame(no_joy).to_csv('Proteomicsdb_API_fails.tsv', sep='\t')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment