Source code for maayanlab_bioinformatics.api.speedrichr

import requests
import typing as t
import pandas as pd

[docs] def speedenrich(userlist: t.List[str], libraries: t.List[str]=None, background: t.List[str]=None, description='Example gene list', base_url='https://maayanlab.cloud/speedrichr'): ''' Perform enrichment analysis using speedrichr. :param userlist: A list of genes (e.g. ['PHF14', 'RBM3', 'MSL1', ...]) :param libraries: One or more Enrichr Libraries (https://maayanlab.cloud/Enrichr/#libraries) (e.g. ["TRANSFAC_and_JASPAR_PWMs"]) :param background: An optional background geneset for background correction (e.g. ['PHF14', 'RBM3', 'MSL1', ...]) :param base_url: If using a different enrichr instance than the public one, specify the base prefix :return: A pandas dataframe with enrichment results ''' userlist_response = requests.post( base_url+'/api/addList', files=dict( list=(None, '\n'.join(userlist)), description=(None, description), ) ).json() if background: background_response = requests.post( base_url+'/api/addbackground', data=dict(background='\n'.join(background)), ).json() results = {} for library in set(libraries): results.update( requests.post( base_url+'/api/backgroundenrich', data=dict( userListId=userlist_response['userListId'], backgroundid=background_response['backgroundid'], backgroundType=library, ) ).json() ) else: results = {} for library in set(libraries): results.update( requests.get( base_url+'/api/enrich', params=dict( userListId=userlist_response['userListId'], backgroundType=library, ), ).json() ) return pd.DataFrame([ [l, *r] for l, result in results.items() for r in result ], columns=['library', 'rank', 'term', 'pvalue', 'oddsratio', 'combined score', 'overlap', 'adj pvalue', 'legacy_0', 'legacy_1']).sort_values('rank', ascending=True)