In [ ]:
def procRequest(request):
    j = json.loads(request.text)
    h = j[j.keys()[0]]
    l = list(e[0] for e in enumerate(h.items()))
    for e in enumerate(h.items()):
        o = io.StringIO(e[1][1])
        l[e[0]] = {e[1][0]: pd.read_csv(o, sep='\t',prefix=e[1][0])}
    return(l)

In [133]:
import json
import io
import pandas as pd
import requests

#This function processed API requests for individual proteins into a list of dictionary objects with key = tool, val = Pandas DF
def procRequest(request):
    j = json.loads(request.text)
    h = j[j.keys()[0]]
    l = list(e[0] for e in enumerate(h.items()))
    for e in enumerate(h.items()):
        o = io.StringIO(e[1][1])
        df = pd.read_csv(o, sep='\t')
        for c in df.columns:
            if c not in ['allele','peptide']:
                df = df.rename(columns={c: str(e[1][0]) + c})
        l[e[0]] = {e[1][0]: df}
    return(l)

#This function takes the generated list from the procRequest function and generates a merged DF in JSON format
def genMergedTable(l):
    for e in enumerate(l):
        if e[0] == 0:
            df = l[e[0]].values()[0]
        else:
            df = pd.merge(df, l[e[0]].values()[0], on=['peptide', 'allele'], how='outer')
    return(df.to_json)

#Example use:

request = requests.get('http://api.imetric.io/query/MAAAGSRKRRLAELTVDEFLASGFDSESESESENSPQAETREAREAARSPDKPGGSPSAS')
l = procRequest(request)
jsonDF = genMergedTable(l)

In [137]:
j = json.loads(request.text)

In [140]:
j.keys()[0]


Out[140]:
u'MAAAGSRKRRLAELTVDEFLASGFDSESESESENSPQAETREAREAARSPDKPGGSPSAS'

In [ ]: